Sun Mar 8 09:18:34 2020 UTC ()
Pull up following revision(s) (requested by is in ticket #1724):

	sys/arch/amiga/dev/gayle_pcmcia.c: revision 1.32

The Gayle interface uses swapped (little-endian) word accesses, so we
need to use the amiga_bus_stride_1swap methods for the word accesses.

Analyzed and submitted via port-amiga@ by Martin �berg.

Tested on formerly working hardware
- by Jukka Andberg	with Dlink DE-660+		(ne)
- by Frank Wille	with D-Link DFE-670TXD		(ne)

Tested on formerly not working hardware:
- by Martin		with 3Com 3c589 Etherling III	(ep)
- by Martin and Frank	with CompactFlash cards		(wdc)


(martin)
diff -r1.29.4.2 -r1.29.4.3 src/sys/arch/amiga/dev/gayle_pcmcia.c

cvs diff -r1.29.4.2 -r1.29.4.3 src/sys/arch/amiga/dev/gayle_pcmcia.c (expand / switch to unified diff)

--- src/sys/arch/amiga/dev/gayle_pcmcia.c 2015/02/16 12:48:32 1.29.4.2
+++ src/sys/arch/amiga/dev/gayle_pcmcia.c 2020/03/08 09:18:34 1.29.4.3
@@ -1,19 +1,19 @@ @@ -1,19 +1,19 @@
1/* $NetBSD: gayle_pcmcia.c,v 1.29.4.2 2015/02/16 12:48:32 martin Exp $ */ 1/* $NetBSD: gayle_pcmcia.c,v 1.29.4.3 2020/03/08 09:18:34 martin Exp $ */
2 2
3/* public domain */ 3/* public domain */
4 4
5#include <sys/cdefs.h> 5#include <sys/cdefs.h>
6__KERNEL_RCSID(0, "$NetBSD: gayle_pcmcia.c,v 1.29.4.2 2015/02/16 12:48:32 martin Exp $"); 6__KERNEL_RCSID(0, "$NetBSD: gayle_pcmcia.c,v 1.29.4.3 2020/03/08 09:18:34 martin Exp $");
7 7
8/* PCMCIA front-end driver for A1200's and A600's. */ 8/* PCMCIA front-end driver for A1200's and A600's. */
9 9
10#include <sys/param.h> 10#include <sys/param.h>
11#include <sys/device.h> 11#include <sys/device.h>
12#include <sys/kernel.h> 12#include <sys/kernel.h>
13#include <sys/kthread.h> 13#include <sys/kthread.h>
14#include <sys/systm.h> 14#include <sys/systm.h>
15 15
16#include <uvm/uvm.h> 16#include <uvm/uvm.h>
17 17
18#include <dev/pcmcia/pcmciareg.h> 18#include <dev/pcmcia/pcmciareg.h>
19#include <dev/pcmcia/pcmciavar.h> 19#include <dev/pcmcia/pcmciavar.h>
@@ -121,27 +121,27 @@ pccard_attach(device_t parent, device_t  @@ -121,27 +121,27 @@ pccard_attach(device_t parent, device_t
121 0, UVM_KMF_VAONLY | UVM_KMF_NOWAIT); 121 0, UVM_KMF_VAONLY | UVM_KMF_NOWAIT);
122 if (pcmcia_base == 0) { 122 if (pcmcia_base == 0) {
123 printf("attach failed (no virtual memory)\n"); 123 printf("attach failed (no virtual memory)\n");
124 return; 124 return;
125 } 125 }
126 126
127 for (i = GAYLE_PCMCIA_START; i < GAYLE_PCMCIA_END; i += PAGE_SIZE) 127 for (i = GAYLE_PCMCIA_START; i < GAYLE_PCMCIA_END; i += PAGE_SIZE)
128 pmap_enter(vm_map_pmap(kernel_map), 128 pmap_enter(vm_map_pmap(kernel_map),
129 i - GAYLE_PCMCIA_START + pcmcia_base, i, 129 i - GAYLE_PCMCIA_START + pcmcia_base, i,
130 VM_PROT_READ | VM_PROT_WRITE, true); 130 VM_PROT_READ | VM_PROT_WRITE, true);
131 pmap_update(vm_map_pmap(kernel_map)); 131 pmap_update(vm_map_pmap(kernel_map));
132 132
133 /* override the one-byte access methods for I/O space */ 133 /* override the one-byte access methods for I/O space */
134 pcmio_bs_methods = amiga_bus_stride_1; 134 pcmio_bs_methods = amiga_bus_stride_1swap;
135 pcmio_bs_methods.bsr1 = pcmio_bsr1; 135 pcmio_bs_methods.bsr1 = pcmio_bsr1;
136 pcmio_bs_methods.bsw1 = pcmio_bsw1; 136 pcmio_bs_methods.bsw1 = pcmio_bsw1;
137 pcmio_bs_methods.bsrm1 = pcmio_bsrm1; 137 pcmio_bs_methods.bsrm1 = pcmio_bsrm1;
138 pcmio_bs_methods.bswm1 = pcmio_bswm1; 138 pcmio_bs_methods.bswm1 = pcmio_bswm1;
139 pcmio_bs_methods.bsrr1 = pcmio_bsrr1; 139 pcmio_bs_methods.bsrr1 = pcmio_bsrr1;
140 pcmio_bs_methods.bswr1 = pcmio_bswr1; 140 pcmio_bs_methods.bswr1 = pcmio_bswr1;
141 pcmio_bs_methods.bssr1 = pcmio_bssr1; 141 pcmio_bs_methods.bssr1 = pcmio_bssr1;
142 pcmio_bs_methods.bscr1 = pcmio_bscr1; 142 pcmio_bs_methods.bscr1 = pcmio_bscr1;
143 143
144 reset_card_reg = (u_int8_t *) pcmcia_base + 144 reset_card_reg = (u_int8_t *) pcmcia_base +
145 (GAYLE_PCMCIA_RESET - GAYLE_PCMCIA_START); 145 (GAYLE_PCMCIA_RESET - GAYLE_PCMCIA_START);
146 146
147 sc->io_space.base = (bus_addr_t) pcmcia_base + 147 sc->io_space.base = (bus_addr_t) pcmcia_base +