Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/arch/arm32 Restore the other files needed for cats build...
details: https://anonhg.NetBSD.org/src/rev/70786287d378
branches: trunk
changeset: 521952:70786287d378
user: chris <chris%NetBSD.org@localhost>
date: Sat Feb 09 11:43:27 2002 +0000
description:
Restore the other files needed for cats build, should really move these elsewhere.
diffstat:
sys/arch/arm32/isa/dsrtc.c | 267 ++++++++++++++++++++++++++++++++++++
sys/arch/arm32/isa/sysbeep_isa.c | 85 +++++++++++
sys/arch/arm32/pci/pcib.c | 140 ++++++++++++++++++
sys/arch/arm32/pci/pciide_machdep.c | 78 ++++++++++
4 files changed, 570 insertions(+), 0 deletions(-)
diffs (truncated from 586 to 300 lines):
diff -r 4bae0103d17b -r 70786287d378 sys/arch/arm32/isa/dsrtc.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/arch/arm32/isa/dsrtc.c Sat Feb 09 11:43:27 2002 +0000
@@ -0,0 +1,267 @@
+/* $NetBSD: dsrtc.c,v 1.5 2002/02/09 11:43:27 chris Exp $ */
+
+/*
+ * Copyright (c) 1998 Mark Brinicombe.
+ * Copyright (c) 1998 Causality Limited.
+ * All rights reserved.
+ *
+ * Written by Mark Brinicombe, Causality Limited
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Mark Brinicombe
+ * for the NetBSD Project.
+ * 4. The name of the company nor the name of the author may be used to
+ * endorse or promote products derived from this software without specific
+ * prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY CAUASLITY LIMITED ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL CAUSALITY LIMITED OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/kernel.h>
+#include <sys/conf.h>
+#include <sys/device.h>
+
+#include <machine/rtc.h>
+
+#include <arm32/dev/todclockvar.h>
+#include <arm32/isa/ds1687reg.h>
+
+#include <dev/isa/isavar.h>
+
+#define NRTC_PORTS 2
+
+struct dsrtc_softc {
+ struct device sc_dev;
+ bus_space_tag_t sc_iot;
+ bus_space_handle_t sc_ioh;
+};
+
+void dsrtcattach __P((struct device *parent, struct device *self, void *aux));
+int dsrtcmatch __P((struct device *parent, struct cfdata *cf, void *aux));
+int ds1687_read __P((struct dsrtc_softc *sc, int addr));
+void ds1687_write __P((struct dsrtc_softc *sc, int addr, int data));
+int ds1687_ram_read __P((struct dsrtc_softc *sc, int addr));
+void ds1687_ram_write __P((struct dsrtc_softc *sc, int addr, int data));
+static void ds1687_bank_select __P((struct dsrtc_softc *, int));
+static int dsrtc_write __P((void *, rtc_t *));
+static int dsrtc_read __P((void *, rtc_t *));
+
+int
+ds1687_read(sc, addr)
+ struct dsrtc_softc *sc;
+ int addr;
+{
+
+ bus_space_write_1(sc->sc_iot, sc->sc_ioh, RTC_ADDR_REG, addr);
+ return(bus_space_read_1(sc->sc_iot, sc->sc_ioh, RTC_DATA_REG));
+}
+
+void
+ds1687_write(sc, addr, data)
+ struct dsrtc_softc *sc;
+ int addr;
+ int data;
+{
+
+ bus_space_write_1(sc->sc_iot, sc->sc_ioh, RTC_ADDR_REG, addr);
+ bus_space_write_1(sc->sc_iot, sc->sc_ioh, RTC_DATA_REG, data);
+}
+
+static void
+ds1687_bank_select(sc, bank)
+ struct dsrtc_softc *sc;
+ int bank;
+{
+ int data;
+
+ data = ds1687_read(sc, RTC_REG_A);
+ data &= ~RTC_REG_A_BANK_MASK;
+ if (bank)
+ data |= RTC_REG_A_BANK1;
+ ds1687_write(sc, RTC_REG_A, data);
+}
+
+#if 0
+/* Nothing uses these yet */
+int
+ds1687_ram_read(sc, addr)
+ struct dsrtc_softc *sc;
+ int addr;
+{
+ if (addr < RTC_PC_RAM_SIZE)
+ return(ds1687_read(sc, RTC_PC_RAM_START + addr));
+
+ addr -= RTC_PC_RAM_SIZE;
+ if (addr < RTC_BANK0_RAM_SIZE)
+ return(ds1687_read(sc, RTC_BANK0_RAM_START + addr));
+
+ addr -= RTC_BANK0_RAM_SIZE;
+ if (addr < RTC_EXT_RAM_SIZE) {
+ int data;
+
+ ds1687_bank_select(sc, 1);
+ ds1687_write(sc, RTC_EXT_RAM_ADDRESS, addr);
+ data = ds1687_read(sc, RTC_EXT_RAM_DATA);
+ ds1687_bank_select(sc, 0);
+ return(data);
+ }
+ return(-1);
+}
+
+void
+ds1687_ram_write(sc, addr, val)
+ struct dsrtc_softc *sc;
+ int addr;
+ int val;
+{
+ if (addr < RTC_PC_RAM_SIZE)
+ return(ds1687_write(sc, RTC_PC_RAM_START + addr, val));
+
+ addr -= RTC_PC_RAM_SIZE;
+ if (addr < RTC_BANK0_RAM_SIZE)
+ return(ds1687_write(sc, RTC_BANK0_RAM_START + addr, val));
+
+ addr -= RTC_BANK0_RAM_SIZE;
+ if (addr < RTC_EXT_RAM_SIZE) {
+ ds1687_bank_select(sc, 1);
+ ds1687_write(sc, RTC_EXT_RAM_ADDRESS, addr);
+ ds1687_write(sc, RTC_EXT_RAM_DATA, val);
+ ds1687_bank_select(sc, 0);
+ }
+}
+#endif
+
+static int
+dsrtc_write(arg, rtc)
+ void *arg;
+ rtc_t *rtc;
+{
+ struct dsrtc_softc *sc = arg;
+
+ ds1687_write(sc, RTC_SECONDS, rtc->rtc_sec);
+ ds1687_write(sc, RTC_MINUTES, rtc->rtc_min);
+ ds1687_write(sc, RTC_HOURS, rtc->rtc_hour);
+ ds1687_write(sc, RTC_DAYOFMONTH, rtc->rtc_day);
+ ds1687_write(sc, RTC_MONTH, rtc->rtc_mon);
+ ds1687_write(sc, RTC_YEAR, rtc->rtc_year);
+ ds1687_bank_select(sc, 1);
+ ds1687_write(sc, RTC_CENTURY, rtc->rtc_cen);
+ ds1687_bank_select(sc, 0);
+ return(1);
+}
+
+static int
+dsrtc_read(arg, rtc)
+ void *arg;
+ rtc_t *rtc;
+{
+ struct dsrtc_softc *sc = arg;
+
+ rtc->rtc_micro = 0;
+ rtc->rtc_centi = 0;
+ rtc->rtc_sec = ds1687_read(sc, RTC_SECONDS);
+ rtc->rtc_min = ds1687_read(sc, RTC_MINUTES);
+ rtc->rtc_hour = ds1687_read(sc, RTC_HOURS);
+ rtc->rtc_day = ds1687_read(sc, RTC_DAYOFMONTH);
+ rtc->rtc_mon = ds1687_read(sc, RTC_MONTH);
+ rtc->rtc_year = ds1687_read(sc, RTC_YEAR);
+ ds1687_bank_select(sc, 1);
+ rtc->rtc_cen = ds1687_read(sc, RTC_CENTURY);
+ ds1687_bank_select(sc, 0);
+
+ return(1);
+}
+
+/* device and attach structures */
+struct cfattach dsrtc_ca = {
+ sizeof(struct dsrtc_softc), dsrtcmatch, dsrtcattach
+};
+
+/*
+ * dsrtcmatch()
+ *
+ * Validate the IIC address to make sure its an RTC we understand
+ */
+
+int
+dsrtcmatch(parent, cf, aux)
+ struct device *parent;
+ struct cfdata *cf;
+ void *aux;
+{
+ struct isa_attach_args *ia = aux;
+
+ if (ia->ia_nio < 1 ||
+ ia->ia_io[0].ir_addr == ISACF_PORT_DEFAULT)
+ return (0);
+
+ ia->ia_nio = 1;
+ ia->ia_io[0].ir_size = NRTC_PORTS;
+
+ ia->ia_niomem = 0;
+ ia->ia_nirq = 0;
+ ia->ia_ndrq = 0;
+
+ return(1);
+}
+
+/*
+ * dsrtcattach()
+ *
+ * Attach the rtc device
+ */
+
+void
+dsrtcattach(parent, self, aux)
+ struct device *parent;
+ struct device *self;
+ void *aux;
+{
+ struct dsrtc_softc *sc = (struct dsrtc_softc *)self;
+ struct isa_attach_args *ia = aux;
+ struct todclock_attach_args ta;
+
+ sc->sc_iot = ia->ia_iot;
+ if (bus_space_map(sc->sc_iot, ia->ia_io[0].ir_addr,
+ ia->ia_io[0].ir_size, 0, &sc->sc_ioh)) {
+ printf(": cannot map I/O space\n");
+ return;
+ }
+
+ ds1687_write(sc, RTC_REG_A, RTC_REG_A_DV1);
+ ds1687_write(sc, RTC_REG_B, RTC_REG_B_BINARY | RTC_REG_B_24_HOUR);
+
+ if (!(ds1687_read(sc, RTC_REG_D) & RTC_REG_D_VRT))
+ printf(": lithium cell is dead, RTC unreliable");
+ printf("\n");
+
+ ta.ta_name = "todclock";
+ ta.ta_rtc_arg = sc;
+ ta.ta_rtc_write = dsrtc_write;
+ ta.ta_rtc_read = dsrtc_read;
+ ta.ta_flags = 0;
+ config_found(self, &ta, NULL);
+}
+
+/* End of dsrtc.c */
diff -r 4bae0103d17b -r 70786287d378 sys/arch/arm32/isa/sysbeep_isa.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/arch/arm32/isa/sysbeep_isa.c Sat Feb 09 11:43:27 2002 +0000
@@ -0,0 +1,85 @@
+/* $NetBSD: sysbeep_isa.c,v 1.3 2002/02/09 11:43:28 chris Exp $ */
+
+/*-
+ * Copyright (c) 1998 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Mark Brinicombe of Causality Limited.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the NetBSD
+ * Foundation, Inc. and its contributors.
+ * 4. Neither the name of The NetBSD Foundation nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
Home |
Main Index |
Thread Index |
Old Index