Module Name: src Committed By: rkujawa Date: Wed Jun 27 18:53:04 UTC 2012
Modified Files: src/sys/arch/amiga/pci: empb.c empb_bsm.c Log Message: Fix Mediator 1200 memory space support. Now it's good enough to drive a Voodoo 3. To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/sys/arch/amiga/pci/empb.c cvs rdiff -u -r1.4 -r1.5 src/sys/arch/amiga/pci/empb_bsm.c 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/pci/empb.c diff -u src/sys/arch/amiga/pci/empb.c:1.6 src/sys/arch/amiga/pci/empb.c:1.7 --- src/sys/arch/amiga/pci/empb.c:1.6 Mon Jun 4 19:45:50 2012 +++ src/sys/arch/amiga/pci/empb.c Wed Jun 27 18:53:03 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: empb.c,v 1.6 2012/06/04 19:45:50 rkujawa Exp $ */ +/* $NetBSD: empb.c,v 1.7 2012/06/27 18:53:03 rkujawa Exp $ */ /*- * Copyright (c) 2012 The NetBSD Foundation, Inc. @@ -55,7 +55,7 @@ #include "opt_pci.h" -/* #define EMPB_DEBUG 1 */ +/*#define EMPB_DEBUG 1 */ #define PCI_CONF_LOCK(s) (s) = splhigh() #define PCI_CONF_UNLOCK(s) splx((s)) Index: src/sys/arch/amiga/pci/empb_bsm.c diff -u src/sys/arch/amiga/pci/empb_bsm.c:1.4 src/sys/arch/amiga/pci/empb_bsm.c:1.5 --- src/sys/arch/amiga/pci/empb_bsm.c:1.4 Mon Jun 4 19:45:50 2012 +++ src/sys/arch/amiga/pci/empb_bsm.c Wed Jun 27 18:53:03 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: empb_bsm.c,v 1.4 2012/06/04 19:45:50 rkujawa Exp $ */ +/* $NetBSD: empb_bsm.c,v 1.5 2012/06/27 18:53:03 rkujawa Exp $ */ /*- * Copyright (c) 2012 The NetBSD Foundation, Inc. @@ -142,11 +142,8 @@ empb_bsm(bus_space_tag_t space, bus_addr return -1; /* Fail miserably if the driver wants linear space. */ - if (flags & BUS_SPACE_MAP_LINEAR) - { - aprint_error("empb: linear space mapping not possible\n"); - return -1; - } + if ( (flags & BUS_SPACE_MAP_LINEAR) && (size > 8*1024*1024)) + aprint_error("empb: linear space mapping might not work\n"); /* * Just store the desired PCI bus address as handlep. Don't make things @@ -183,7 +180,7 @@ empb_bsr1(bus_space_handle_t handle, bus wp = empb_switch_window(empb_sc, handle); /* window address + (PCI mem address - window position) */ - p = (uint8_t*)((empb_sc->pci_mem_win_t->base) + (handle - wp)); + p = (uint8_t*)((empb_sc->pci_mem_win_t->base) + (handle - wp) + offset); x = *p; return x; @@ -196,7 +193,7 @@ empb_bsw1(bus_space_handle_t handle, bus bus_addr_t wp; wp = empb_switch_window(empb_sc, handle); - p = (uint8_t*)((empb_sc->pci_mem_win_t->base) + (handle - wp)); + p = (uint8_t*)((empb_sc->pci_mem_win_t->base) + (handle - wp) + offset); *p = value; } @@ -208,7 +205,8 @@ empb_bsrm1(bus_space_handle_t handle, bu bus_addr_t wp; wp = empb_switch_window(empb_sc, handle); - p = (volatile u_int8_t *)((empb_sc->pci_mem_win_t->base)+(handle - wp)); + p = (volatile u_int8_t *) ((empb_sc->pci_mem_win_t->base) + + (handle - wp) + offset); while (count > 0) { *pointer++ = *p; @@ -225,7 +223,8 @@ empb_bswm1(bus_space_handle_t handle, bu bus_addr_t wp; wp = empb_switch_window(empb_sc, handle); - p = (volatile u_int8_t *)((empb_sc->pci_mem_win_t->base)+(handle - wp)); + p = (volatile u_int8_t *) ((empb_sc->pci_mem_win_t->base) + + (handle - wp) + offset); while (count > 0) { *p = *pointer++; @@ -242,7 +241,8 @@ empb_bsrr1(bus_space_handle_t handle, bu bus_addr_t wp; wp = empb_switch_window(empb_sc, handle); - p = (volatile u_int8_t *)((empb_sc->pci_mem_win_t->base)+(handle - wp)); + p = (volatile u_int8_t *) ((empb_sc->pci_mem_win_t->base) + + (handle - wp) + offset); while (count > 0) { *pointer++ = *p; @@ -260,7 +260,8 @@ empb_bswr1(bus_space_handle_t handle, bu bus_addr_t wp; wp = empb_switch_window(empb_sc, handle); - p = (volatile u_int8_t *)((empb_sc->pci_mem_win_t->base)+(handle - wp)); + p = (volatile u_int8_t *) ((empb_sc->pci_mem_win_t->base) + + (handle - wp) + offset); while (count > 0) { *p = *pointer++; @@ -278,7 +279,8 @@ empb_bssr1(bus_space_handle_t handle, bu bus_addr_t wp; wp = empb_switch_window(empb_sc, handle); - p = (volatile u_int8_t *)((empb_sc->pci_mem_win_t->base)+(handle - wp)); + p = (volatile u_int8_t *) ((empb_sc->pci_mem_win_t->base) + + (handle - wp) + offset); while (count > 0) { *p = value; @@ -322,7 +324,8 @@ empb_bsr2(bus_space_handle_t handle, bus wp = empb_switch_window(empb_sc, handle); - p = (uint16_t*)((empb_sc->pci_mem_win_t->base) + (handle - wp)); + p = (uint16_t*) ((empb_sc->pci_mem_win_t->base) + (handle - wp) + + offset); x = *p; return x; @@ -337,7 +340,8 @@ empb_bsr2_swap(bus_space_handle_t handle wp = empb_switch_window(empb_sc, handle); - p = (uint16_t*)((empb_sc->pci_mem_win_t->base) + (handle - wp)); + p = (uint16_t*) ((empb_sc->pci_mem_win_t->base) + (handle - wp) + + offset); x = *p; return bswap16(x); @@ -351,7 +355,8 @@ empb_bsw2(bus_space_handle_t handle, bus bus_addr_t wp; wp = empb_switch_window(empb_sc, handle); - p = (uint16_t*)((empb_sc->pci_mem_win_t->base) + (handle - wp)); + p = (uint16_t*)((empb_sc->pci_mem_win_t->base) + (handle - wp) + + offset); *p = value; } @@ -362,7 +367,8 @@ empb_bsw2_swap(bus_space_handle_t handle bus_addr_t wp; wp = empb_switch_window(empb_sc, handle); - p = (uint16_t*)((empb_sc->pci_mem_win_t->base) + (handle - wp)); + p = (uint16_t*)((empb_sc->pci_mem_win_t->base) + (handle - wp) + + offset); *p = bswap16(value); } @@ -375,7 +381,7 @@ empb_bsrm2(bus_space_handle_t handle, bu wp = empb_switch_window(empb_sc, handle); p = (volatile uint16_t *) ((empb_sc->pci_mem_win_t->base) + - (handle - wp)); + (handle - wp) + offset); while (count > 0) { *pointer++ = *p; @@ -393,7 +399,7 @@ empb_bsrm2_swap(bus_space_handle_t handl wp = empb_switch_window(empb_sc, handle); p = (volatile uint16_t *) ((empb_sc->pci_mem_win_t->base) + - (handle - wp)); + (handle - wp) + offset); while (count > 0) { *pointer++ = bswap16(*p); @@ -411,7 +417,7 @@ empb_bswm2(bus_space_handle_t handle, bu wp = empb_switch_window(empb_sc, handle); p = (volatile uint16_t *) ((empb_sc->pci_mem_win_t->base) + - (handle - wp)); + (handle - wp) + offset); while (count > 0) { *p = *pointer++; @@ -429,7 +435,7 @@ empb_bswm2_swap(bus_space_handle_t handl wp = empb_switch_window(empb_sc, handle); p = (volatile uint16_t *) ((empb_sc->pci_mem_win_t->base) + - (handle - wp)); + (handle - wp) + offset); while (count > 0) { *p = bswap16(*pointer++); @@ -446,7 +452,8 @@ empb_bsrr2(bus_space_handle_t handle, bu bus_addr_t wp; wp = empb_switch_window(empb_sc, handle); - p = (volatile uint16_t *)((empb_sc->pci_mem_win_t->base)+(handle - wp)); + p = (volatile uint16_t *) ((empb_sc->pci_mem_win_t->base) + + (handle - wp) + offset); while (count > 0) { *pointer++ = *p; @@ -464,7 +471,8 @@ empb_bsrr2_swap(bus_space_handle_t handl bus_addr_t wp; wp = empb_switch_window(empb_sc, handle); - p = (volatile uint16_t *)((empb_sc->pci_mem_win_t->base)+(handle - wp)); + p = (volatile uint16_t *) ((empb_sc->pci_mem_win_t->base) + + (handle - wp) + offset); while (count > 0) { *pointer++ = bswap16(*p); @@ -483,7 +491,7 @@ empb_bssr2_swap(bus_space_handle_t handl wp = empb_switch_window(empb_sc, handle); p = (volatile uint16_t *) ((empb_sc->pci_mem_win_t->base) + - (handle - wp)); + (handle - wp) + offset); while (count > 0) { *p = bswap16(value); @@ -501,7 +509,8 @@ empb_bswr2(bus_space_handle_t handle, bu bus_addr_t wp; wp = empb_switch_window(empb_sc, handle); - p = (volatile u_int16_t *)((empb_sc->pci_mem_win_t->base)+(handle - wp)); + p = (volatile u_int16_t *) ((empb_sc->pci_mem_win_t->base) + + (handle - wp) + offset); while (count > 0) { *p = *pointer++; @@ -519,7 +528,8 @@ empb_bswr2_swap(bus_space_handle_t handl bus_addr_t wp; wp = empb_switch_window(empb_sc, handle); - p = (volatile u_int16_t *)((empb_sc->pci_mem_win_t->base)+(handle - wp)); + p = (volatile u_int16_t *) ((empb_sc->pci_mem_win_t->base) + + (handle - wp) + offset); while (count > 0) { *p = bswap16(*pointer++); @@ -563,7 +573,8 @@ empb_bsr4(bus_space_handle_t handle, bus wp = empb_switch_window(empb_sc, handle); - p = (uint32_t*)((empb_sc->pci_mem_win_t->base) + (handle - wp)); + p = (uint32_t*) ((empb_sc->pci_mem_win_t->base) + + (handle - wp) + offset); x = *p; return x; @@ -578,7 +589,8 @@ empb_bsr4_swap(bus_space_handle_t handle wp = empb_switch_window(empb_sc, handle); - p = (uint32_t*)((empb_sc->pci_mem_win_t->base) + (handle - wp)); + p = (uint32_t*) ((empb_sc->pci_mem_win_t->base) + (handle - wp) + + offset); x = *p; return bswap32(x); @@ -592,7 +604,8 @@ empb_bsw4(bus_space_handle_t handle, bus bus_addr_t wp; wp = empb_switch_window(empb_sc, handle); - p = (uint32_t*)((empb_sc->pci_mem_win_t->base) + (handle - wp)); + p = (uint32_t*)((empb_sc->pci_mem_win_t->base) + (handle - wp) + + offset); *p = value; } @@ -603,7 +616,8 @@ empb_bsw4_swap(bus_space_handle_t handle bus_addr_t wp; wp = empb_switch_window(empb_sc, handle); - p = (uint32_t*)((empb_sc->pci_mem_win_t->base) + (handle - wp)); + p = (uint32_t*)((empb_sc->pci_mem_win_t->base) + (handle - wp) + + offset); *p = bswap32(value); } @@ -616,7 +630,7 @@ empb_bsrm4(bus_space_handle_t handle, bu wp = empb_switch_window(empb_sc, handle); p = (volatile uint32_t *) ((empb_sc->pci_mem_win_t->base) + - (handle - wp)); + (handle - wp) + offset); while (count > 0) { *pointer++ = *p; @@ -634,7 +648,7 @@ empb_bsrm4_swap(bus_space_handle_t handl wp = empb_switch_window(empb_sc, handle); p = (volatile uint32_t *) ((empb_sc->pci_mem_win_t->base) + - (handle - wp)); + (handle - wp) + offset); while (count > 0) { *pointer++ = bswap32(*p); @@ -652,7 +666,7 @@ empb_bswm4(bus_space_handle_t handle, bu wp = empb_switch_window(empb_sc, handle); p = (volatile uint32_t *) ((empb_sc->pci_mem_win_t->base) + - (handle - wp)); + (handle - wp) + offset); while (count > 0) { *p = *pointer++; @@ -670,7 +684,7 @@ empb_bswm4_swap(bus_space_handle_t handl wp = empb_switch_window(empb_sc, handle); p = (volatile uint32_t *) ((empb_sc->pci_mem_win_t->base) + - (handle - wp)); + (handle - wp) + offset); while (count > 0) { *p = bswap32(*pointer++); @@ -687,7 +701,8 @@ empb_bsrr4(bus_space_handle_t handle, bu bus_addr_t wp; wp = empb_switch_window(empb_sc, handle); - p = (volatile uint32_t *)((empb_sc->pci_mem_win_t->base)+(handle - wp)); + p = (volatile uint32_t *) ((empb_sc->pci_mem_win_t->base) + + (handle - wp) + offset); while (count > 0) { *pointer++ = *p; @@ -705,7 +720,8 @@ empb_bsrr4_swap(bus_space_handle_t handl bus_addr_t wp; wp = empb_switch_window(empb_sc, handle); - p = (volatile uint32_t *)((empb_sc->pci_mem_win_t->base)+(handle - wp)); + p = (volatile uint32_t *) ((empb_sc->pci_mem_win_t->base) + + (handle - wp) + offset); while (count > 0) { *pointer++ = bswap32(*p); @@ -724,7 +740,7 @@ empb_bssr4_swap(bus_space_handle_t handl wp = empb_switch_window(empb_sc, handle); p = (volatile uint32_t *) ((empb_sc->pci_mem_win_t->base) + - (handle - wp)); + (handle - wp) + offset); while (count > 0) { *p = bswap32(value); @@ -742,7 +758,8 @@ empb_bswr4(bus_space_handle_t handle, bu bus_addr_t wp; wp = empb_switch_window(empb_sc, handle); - p = (volatile uint32_t *)((empb_sc->pci_mem_win_t->base)+(handle - wp)); + p = (volatile uint32_t *) ((empb_sc->pci_mem_win_t->base) + + (handle - wp) + offset); while (count > 0) { *p = *pointer++; @@ -760,7 +777,8 @@ empb_bswr4_swap(bus_space_handle_t handl bus_addr_t wp; wp = empb_switch_window(empb_sc, handle); - p = (volatile uint32_t *)((empb_sc->pci_mem_win_t->base)+(handle - wp)); + p = (volatile uint32_t *) ((empb_sc->pci_mem_win_t->base) + + (handle - wp) + offset); while (count > 0) { *p = bswap32(*pointer++); @@ -842,7 +860,8 @@ const struct amiga_bus_space_methods emp .bsrrs4 = empb_bsrr4, .bswrs4 = empb_bswr4, .bssr4 = empb_bssr4_swap, - .bscr4 = empb_bscr4 /* swap? */ + .bscr4 = empb_bscr4 /* swap? */ + };