Module Name: src
Committed By: rkujawa
Date: Fri Jun 1 09:41:35 UTC 2012
Modified Files:
src/sys/arch/amiga/include: bus.h pci_machdep.h
src/sys/arch/amiga/pci: empb.c
Added Files:
src/sys/arch/amiga/pci: empb_bsm.c empbvar.h
Log Message:
More work on PCI memory accesses on empb(4).
To generate a diff of this commit:
cvs rdiff -u -r1.26 -r1.27 src/sys/arch/amiga/include/bus.h
cvs rdiff -u -r1.5 -r1.6 src/sys/arch/amiga/include/pci_machdep.h
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/amiga/pci/empb.c
cvs rdiff -u -r0 -r1.1 src/sys/arch/amiga/pci/empb_bsm.c \
src/sys/arch/amiga/pci/empbvar.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/amiga/include/bus.h
diff -u src/sys/arch/amiga/include/bus.h:1.26 src/sys/arch/amiga/include/bus.h:1.27
--- src/sys/arch/amiga/include/bus.h:1.26 Mon May 7 18:16:38 2012
+++ src/sys/arch/amiga/include/bus.h Fri Jun 1 09:41:35 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: bus.h,v 1.26 2012/05/07 18:16:38 tsutsui Exp $ */
+/* $NetBSD: bus.h,v 1.27 2012/06/01 09:41:35 rkujawa Exp $ */
/*
* Copyright (c) 1996 Leo Weppelman. All rights reserved.
@@ -279,6 +279,7 @@ extern const struct amiga_bus_space_meth
extern const struct amiga_bus_space_methods amiga_bus_stride_4;
extern const struct amiga_bus_space_methods amiga_bus_stride_4swap;
extern const struct amiga_bus_space_methods amiga_bus_stride_16;
+extern const struct amiga_bus_space_methods empb_bus_swap;
/*
* XXX
Index: src/sys/arch/amiga/include/pci_machdep.h
diff -u src/sys/arch/amiga/include/pci_machdep.h:1.5 src/sys/arch/amiga/include/pci_machdep.h:1.6
--- src/sys/arch/amiga/include/pci_machdep.h:1.5 Mon May 7 18:16:38 2012
+++ src/sys/arch/amiga/include/pci_machdep.h Fri Jun 1 09:41:35 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: pci_machdep.h,v 1.5 2012/05/07 18:16:38 tsutsui Exp $ */
+/* $NetBSD: pci_machdep.h,v 1.6 2012/06/01 09:41:35 rkujawa Exp $ */
/*-
* Copyright (c) 2011 The NetBSD Foundation, Inc.
@@ -86,6 +86,8 @@ struct amiga_pci_chipset {
/* PCI configuration data register */
bus_space_tag_t pci_conf_datat;
bus_space_handle_t pci_conf_datah;
+
+ void *cookie; /* used in some implementations */
};
Index: src/sys/arch/amiga/pci/empb.c
diff -u src/sys/arch/amiga/pci/empb.c:1.2 src/sys/arch/amiga/pci/empb.c:1.3
--- src/sys/arch/amiga/pci/empb.c:1.2 Thu May 31 21:29:02 2012
+++ src/sys/arch/amiga/pci/empb.c Fri Jun 1 09:41:35 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: empb.c,v 1.2 2012/05/31 21:29:02 rkujawa Exp $ */
+/* $NetBSD: empb.c,v 1.3 2012/06/01 09:41:35 rkujawa Exp $ */
/*-
* Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -46,14 +46,11 @@
#include <machine/bus.h>
#include <machine/cpu.h>
-#include <m68k/bus_dma.h>
#include <amiga/dev/zbusvar.h>
#include <amiga/pci/empbreg.h>
+#include <amiga/pci/empbvar.h>
#include <amiga/pci/emmemvar.h>
-#include <dev/pci/pcivar.h>
-#include <dev/pci/pcireg.h>
-#include <dev/pci/pcidevs.h>
#include <dev/pci/pciconf.h>
#include "opt_pci.h"
@@ -66,27 +63,6 @@
#define WINDOW_LOCK(s) (s) = splhigh()
#define WINDOW_UNLOCK(s) splx((s))
-struct empb_softc {
- device_t sc_dev;
-
- struct bus_space_tag setup_area;
- bus_space_tag_t setup_area_t;
- bus_space_handle_t setup_area_h;
-
- struct bus_space_tag pci_confio_area;
- bus_space_tag_t pci_confio_t;
- bus_space_handle_t pci_confio_h;
- uint8_t pci_confio_mode;
-
- struct bus_space_tag pci_mem_win;
- uint32_t pci_mem_win_size;
- bus_addr_t pci_mem_win_pos;
- uint16_t pci_mem_win_mask;
-
- struct amiga_pci_chipset apc;
-
-};
-
static int empb_match(struct device *, struct cfdata *, void *);
static void empb_attach(struct device *, struct device *, void *);
@@ -94,7 +70,6 @@ static void empb_callback(device_t self)
static void empb_find_mem(struct empb_softc *sc);
static void empb_switch_bridge(struct empb_softc *sc, uint8_t mode);
-static void empb_switch_window(struct empb_softc *sc, bus_addr_t address);
pcireg_t empb_pci_conf_read(pci_chipset_tag_t, pcitag_t, int);
void empb_pci_conf_write(pci_chipset_tag_t, pcitag_t, int, pcireg_t);
@@ -317,7 +292,7 @@ empb_find_mem(struct empb_softc *sc)
/*
* Switch memory window position.
*/
-static void
+void
empb_switch_window(struct empb_softc *sc, bus_addr_t address)
{
int s;
Added files:
Index: src/sys/arch/amiga/pci/empb_bsm.c
diff -u /dev/null src/sys/arch/amiga/pci/empb_bsm.c:1.1
--- /dev/null Fri Jun 1 09:41:36 2012
+++ src/sys/arch/amiga/pci/empb_bsm.c Fri Jun 1 09:41:35 2012
@@ -0,0 +1,95 @@
+/* $NetBSD: empb_bsm.c,v 1.1 2012/06/01 09:41:35 rkujawa Exp $ */
+
+/*-
+ * Copyright (c) 2012 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Radoslaw Kujawa.
+ *
+ * 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``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 THE FOUNDATION 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.
+ */
+
+/*
+ * Special bus space methods handling PCI memory window.
+ */
+
+#include <sys/bus.h>
+#include <sys/null.h>
+#include <sys/param.h>
+#include <sys/device.h>
+#include <sys/systm.h>
+
+#include <amiga/pci/empbreg.h>
+#include <amiga/pci/empbvar.h>
+#include <amiga/pci/emmemvar.h>
+
+
+
+
+const struct amiga_bus_space_methods empb_bus_swap = {
+ /*.bsm = empb_bsm,
+ .bsms = empb_bsms,
+ .bsu = empb_bsu,
+ .bsa = NULL,
+ .bsf = NULL,
+
+ .bsr1 = empb_bsr1,
+ .bsw1 = empb_bsw1,
+ .bsrm1 = empb_bsrm1,
+ .bswm1 = empb_bswm1,
+ .bsrr1 = empb_bsrr1,
+ .bswr1 = empb_bswr1,
+ .bssr1 = empb_bssr1,
+ .bscr1 = empb_bscr1,
+
+ .bsr2 = oabs(bsr2_), // XXX swap?
+ .bsw2 = oabs(bsw2_), // XXX swap?
+ .bsrs2 = oabs(bsr2_),
+ .bsws2 = oabs(bsw2_),
+ .bsrm2 = oabs(bsrm2_swap_),
+ .bswm2 = oabs(bswm2_swap_),
+ .bsrms2 = oabs(bsrm2_),
+ .bswms2 = oabs(bswm2_),
+ .bsrr2 = oabs(bsrr2_), // XXX swap?
+ .bswr2 = oabs(bswr2_), // XXX swap?
+ .bsrrs2 = oabs(bsrr2_),
+ .bswrs2 = oabs(bswr2_),
+ .bssr2 = oabs(bssr2_), // XXX swap?
+ .bscr2 = oabs(bscr2_), // XXX swap?
+
+ .bsr4 = oabs(bsr4_swap_),
+ .bsw4 = oabs(bsw4_swap_),
+ .bsrs4 = oabs(bsr4_),
+ .bsws4 = oabs(bsw4_),
+ .bsrm4 = oabs(bsrm4_), // XXX swap?
+ .bswm4 = oabs(bswm4_), // XXX swap?
+ .bsrms4 = oabs(bsrm4_),
+ .bswms4 = oabs(bswm4_),
+ .bsrr4 = oabs(bsrr4_), // XXX swap?
+ .bswr4 = oabs(bswr4_), // XXX swap?
+ .bsrrs4 = oabs(bsrr4_),
+ .bswrs4 = oabs(bswr4_),
+ .bssr4 = oabs(bssr4_), // XXX swap?
+ .bscr4 = oabs(bscr4_) // XXX swap? */
+};
+
Index: src/sys/arch/amiga/pci/empbvar.h
diff -u /dev/null src/sys/arch/amiga/pci/empbvar.h:1.1
--- /dev/null Fri Jun 1 09:41:36 2012
+++ src/sys/arch/amiga/pci/empbvar.h Fri Jun 1 09:41:35 2012
@@ -0,0 +1,64 @@
+/* $NetBSD: empbvar.h,v 1.1 2012/06/01 09:41:35 rkujawa Exp $ */
+
+/*-
+ * Copyright (c) 2012 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Radoslaw Kujawa.
+ *
+ * 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``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 THE FOUNDATION 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/types.h>
+#include <sys/device.h>
+#include <sys/bus.h>
+
+#include <dev/pci/pcivar.h>
+#include <dev/pci/pcireg.h>
+#include <dev/pci/pcidevs.h>
+
+#include <machine/pci_machdep.h>
+
+struct empb_softc {
+ device_t sc_dev;
+
+ struct bus_space_tag setup_area;
+ bus_space_tag_t setup_area_t;
+ bus_space_handle_t setup_area_h;
+
+ struct bus_space_tag pci_confio_area;
+ bus_space_tag_t pci_confio_t;
+ bus_space_handle_t pci_confio_h;
+ uint8_t pci_confio_mode;
+
+ struct bus_space_tag pci_mem_win;
+ uint32_t pci_mem_win_size;
+ bus_addr_t pci_mem_win_pos;
+ uint16_t pci_mem_win_mask;
+
+ struct amiga_pci_chipset apc;
+
+};
+
+
+void empb_switch_window(struct empb_softc *sc, bus_addr_t address);