Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/arch/amiga/pci Fix Mediator 1200 memory space support. N...



details:   https://anonhg.NetBSD.org/src/rev/8573e79c3082
branches:  trunk
changeset: 779915:8573e79c3082
user:      rkujawa <rkujawa%NetBSD.org@localhost>
date:      Wed Jun 27 18:53:03 2012 +0000

description:
Fix Mediator 1200 memory space support. Now it's good enough to drive a Voodoo 3.

diffstat:

 sys/arch/amiga/pci/empb.c     |   4 +-
 sys/arch/amiga/pci/empb_bsm.c |  99 +++++++++++++++++++++++++-----------------
 2 files changed, 61 insertions(+), 42 deletions(-)

diffs (truncated from 369 to 300 lines):

diff -r 8e8a3e1f2d13 -r 8573e79c3082 sys/arch/amiga/pci/empb.c
--- a/sys/arch/amiga/pci/empb.c Wed Jun 27 17:22:58 2012 +0000
+++ b/sys/arch/amiga/pci/empb.c Wed Jun 27 18:53:03 2012 +0000
@@ -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))
diff -r 8e8a3e1f2d13 -r 8573e79c3082 sys/arch/amiga/pci/empb_bsm.c
--- a/sys/arch/amiga/pci/empb_bsm.c     Wed Jun 27 17:22:58 2012 +0000
+++ b/sys/arch/amiga/pci/empb_bsm.c     Wed Jun 27 18:53:03 2012 +0000
@@ -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 @@
                        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 @@
        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 @@
        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 @@
        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 @@
        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 @@
        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 @@
        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 @@
        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 @@
 
        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 @@
 
        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 @@
        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 @@
        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 @@
 
        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 @@
 
        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 @@
 
        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 @@
 
        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 @@
        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 @@
        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 @@
 
        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 @@
        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 @@
        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 @@
 
        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 @@
 
        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 @@
        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 @@
        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 @@
 
        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 @@
 
        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 @@
 
        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) {



Home | Main Index | Thread Index | Old Index