r3610 - developers/sameo/patches/ar6k-atheros
sameo at sita.openmoko.org
sameo at sita.openmoko.org
Fri Dec 7 02:13:35 CET 2007
Author: sameo
Date: 2007-12-07 02:13:30 +0100 (Fri, 07 Dec 2007)
New Revision: 3610
Modified:
developers/sameo/patches/ar6k-atheros/common_atheros_sdiostack.patch
developers/sameo/patches/ar6k-atheros/common_atheros_sdiostack_ar6000_wlan.patch
developers/sameo/patches/ar6k-atheros/common_atheros_sdiostack_functions.patch
developers/sameo/patches/ar6k-atheros/common_atheros_sdiostack_shcd.patch
developers/sameo/patches/ar6k-atheros/gta02_wifi_defconfig
developers/sameo/patches/ar6k-atheros/mach-gta02_wifi.patch
developers/sameo/patches/ar6k-atheros/pnp_fixes_2.6.22.5.patch
developers/sameo/patches/ar6k-atheros/s3c24xx_hcd_atheros.patch
Log:
ar6k-atheros: DMA support.
We now use DMA for all IO xfers.
The udelay bug is now fixed as well: We are missing a RSPFIN interrupt
and getting an RFDET/TXDET one instead.
Modified: developers/sameo/patches/ar6k-atheros/common_atheros_sdiostack.patch
===================================================================
--- developers/sameo/patches/ar6k-atheros/common_atheros_sdiostack.patch 2007-12-06 17:35:26 UTC (rev 3609)
+++ developers/sameo/patches/ar6k-atheros/common_atheros_sdiostack.patch 2007-12-07 01:13:30 UTC (rev 3610)
@@ -60,7 +60,7 @@
Index: linux-2.6.22/include/linux/sdio/_sdio_defs.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/include/linux/sdio/_sdio_defs.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/include/linux/sdio/_sdio_defs.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,632 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: _sdio_defs.h
@@ -697,7 +697,7 @@
Index: linux-2.6.22/include/linux/sdio/ctsystem.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/include/linux/sdio/ctsystem.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/include/linux/sdio/ctsystem.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,110 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: cpsystem.h
@@ -812,7 +812,7 @@
Index: linux-2.6.22/include/linux/sdio/ctsystem_linux.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/include/linux/sdio/ctsystem_linux.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/include/linux/sdio/ctsystem_linux.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,959 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: ctsystem_linux.h
@@ -1776,7 +1776,7 @@
Index: linux-2.6.22/include/linux/sdio/mmc_defs.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/include/linux/sdio/mmc_defs.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/include/linux/sdio/mmc_defs.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,99 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: mmc_defs.h
@@ -1880,7 +1880,7 @@
Index: linux-2.6.22/include/linux/sdio/sdio_busdriver.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/include/linux/sdio/sdio_busdriver.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/include/linux/sdio/sdio_busdriver.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,1431 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: sdio_busdriver.h
@@ -3315,8 +3315,8 @@
+#endif /* __SDIO_BUSDRIVER_H___ */
Index: linux-2.6.22/drivers/Kconfig
===================================================================
---- linux-2.6.22.orig/drivers/Kconfig 2007-11-28 16:37:55.000000000 +0100
-+++ linux-2.6.22/drivers/Kconfig 2007-11-28 16:38:00.000000000 +0100
+--- linux-2.6.22.orig/drivers/Kconfig 2007-11-29 20:54:44.000000000 +0100
++++ linux-2.6.22/drivers/Kconfig 2007-11-29 20:54:57.000000000 +0100
@@ -68,6 +68,8 @@
source "drivers/usb/Kconfig"
@@ -3329,7 +3329,7 @@
Index: linux-2.6.22/drivers/sdio/Kconfig
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/Kconfig 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/Kconfig 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,18 @@
+#
+# SDIO driver and host controller support
@@ -3352,7 +3352,7 @@
Index: linux-2.6.22/drivers/sdio/Makefile
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/Makefile 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/Makefile 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,6 @@
+#Makefile for SDIO stack
+obj-$(CONFIG_SDIO) += lib/
@@ -3363,7 +3363,7 @@
Index: linux-2.6.22/drivers/sdio/lib/Makefile
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/lib/Makefile 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/lib/Makefile 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,6 @@
+#
+# SDIO stack library Makefile
@@ -3374,7 +3374,7 @@
Index: linux-2.6.22/drivers/sdio/lib/sdio_lib_c.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/lib/sdio_lib_c.c 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/lib/sdio_lib_c.c 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,903 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: sdio_lib_c.c
@@ -4282,7 +4282,7 @@
Index: linux-2.6.22/drivers/sdio/lib/sdio_lib_os.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/lib/sdio_lib_os.c 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/lib/sdio_lib_os.c 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,254 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: sdio_function_os.c
@@ -4541,7 +4541,7 @@
Index: linux-2.6.22/drivers/sdio/busdriver/Makefile
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/busdriver/Makefile 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/busdriver/Makefile 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,7 @@
+#
+# SDIO stack bus drivers
@@ -4553,7 +4553,7 @@
Index: linux-2.6.22/drivers/sdio/busdriver/_busdriver.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/busdriver/_busdriver.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/busdriver/_busdriver.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,462 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: _busdriver.h
@@ -5020,7 +5020,7 @@
Index: linux-2.6.22/drivers/sdio/busdriver/sdio_bus.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/busdriver/sdio_bus.c 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/busdriver/sdio_bus.c 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,2119 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: sdio_bus.c
@@ -7144,7 +7144,7 @@
Index: linux-2.6.22/drivers/sdio/busdriver/sdio_bus_events.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/busdriver/sdio_bus_events.c 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/busdriver/sdio_bus_events.c 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,1073 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: sdio_bus_events.c
@@ -8222,7 +8222,7 @@
Index: linux-2.6.22/drivers/sdio/busdriver/sdio_bus_misc.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/busdriver/sdio_bus_misc.c 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/busdriver/sdio_bus_misc.c 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,3192 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: sdio_bus_misc.c
@@ -11419,7 +11419,7 @@
Index: linux-2.6.22/drivers/sdio/busdriver/sdio_bus_os.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/busdriver/sdio_bus_os.c 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/busdriver/sdio_bus_os.c 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,807 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: sdio_bus_os.c
@@ -12231,7 +12231,7 @@
Index: linux-2.6.22/drivers/sdio/busdriver/sdio_function.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/busdriver/sdio_function.c 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/busdriver/sdio_function.c 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,713 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: sdio_function.c
@@ -12949,7 +12949,7 @@
Index: linux-2.6.22/drivers/sdio/hcd/Kconfig
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/hcd/Kconfig 2007-11-29 20:54:03.000000000 +0100
++++ linux-2.6.22/drivers/sdio/hcd/Kconfig 2007-12-04 21:34:41.000000000 +0100
@@ -0,0 +1,56 @@
+#
+#
@@ -13010,7 +13010,7 @@
Index: linux-2.6.22/drivers/sdio/hcd/Makefile
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/hcd/Makefile 2007-11-29 20:54:03.000000000 +0100
++++ linux-2.6.22/drivers/sdio/hcd/Makefile 2007-12-04 21:34:41.000000000 +0100
@@ -0,0 +1,8 @@
+# SDIO stack host controller Makefile
+obj-$(CONFIG_SDIO_STDHCD) += stdhost/
@@ -13023,7 +13023,7 @@
Index: linux-2.6.22/drivers/sdio/hcd/pci_ellen/Makefile
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/hcd/pci_ellen/Makefile 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/hcd/pci_ellen/Makefile 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,7 @@
+#
+# SDIO pci_ellen host controller makefile
@@ -13035,7 +13035,7 @@
Index: linux-2.6.22/drivers/sdio/hcd/pci_ellen/sdio_hcd.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/hcd/pci_ellen/sdio_hcd.c 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/hcd/pci_ellen/sdio_hcd.c 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,1238 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: sdio_hcd.c
@@ -14278,7 +14278,7 @@
Index: linux-2.6.22/drivers/sdio/hcd/pci_ellen/sdio_hcd_linux.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/hcd/pci_ellen/sdio_hcd_linux.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/hcd/pci_ellen/sdio_hcd_linux.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,185 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: sdio_hcd_linux.h
@@ -14468,7 +14468,7 @@
Index: linux-2.6.22/drivers/sdio/hcd/pci_ellen/sdio_hcd_os.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/hcd/pci_ellen/sdio_hcd_os.c 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/hcd/pci_ellen/sdio_hcd_os.c 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,781 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: sdio_hcd_os.c
@@ -15254,7 +15254,7 @@
Index: linux-2.6.22/drivers/sdio/hcd/pci_ellen/sdio_pciellen_hcd.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/hcd/pci_ellen/sdio_pciellen_hcd.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/hcd/pci_ellen/sdio_pciellen_hcd.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,253 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: sdio_pciellen_hcd.h
@@ -15512,7 +15512,7 @@
Index: linux-2.6.22/drivers/sdio/hcd/mx21/Makefile
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/hcd/mx21/Makefile 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/hcd/mx21/Makefile 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,7 @@
+#
+# SDIO mx21 host controller makefile
@@ -15524,7 +15524,7 @@
Index: linux-2.6.22/drivers/sdio/hcd/mx21/sdio_mx21.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/hcd/mx21/sdio_mx21.c 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/hcd/mx21/sdio_mx21.c 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,1286 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: sdio_mx21c
@@ -16815,7 +16815,7 @@
Index: linux-2.6.22/drivers/sdio/hcd/mx21/sdio_mx21.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/hcd/mx21/sdio_mx21.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/hcd/mx21/sdio_mx21.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,210 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: sdio_mx21.h
@@ -17030,7 +17030,7 @@
Index: linux-2.6.22/drivers/sdio/hcd/mx21/sdio_mx21_linux.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/hcd/mx21/sdio_mx21_linux.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/hcd/mx21/sdio_mx21_linux.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,105 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: sdio_mx21_linux.h
@@ -17140,7 +17140,7 @@
Index: linux-2.6.22/drivers/sdio/hcd/mx21/sdio_mx21_os.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/hcd/mx21/sdio_mx21_os.c 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/hcd/mx21/sdio_mx21_os.c 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,435 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: sdio_hcd_os.c
@@ -17580,7 +17580,7 @@
Index: linux-2.6.22/drivers/sdio/hcd/omap/Makefile
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/hcd/omap/Makefile 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/hcd/omap/Makefile 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,3 @@
+# SDIO omap host controller makefile
+sdio_omap_hcd-objs := sdio_hcd_os.o sdio_hcd_os_2_6.o
@@ -17588,7 +17588,7 @@
Index: linux-2.6.22/drivers/sdio/hcd/omap/sdio_hcd.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/hcd/omap/sdio_hcd.c 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/hcd/omap/sdio_hcd.c 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,1337 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: sdio_hcd.c
@@ -18930,7 +18930,7 @@
Index: linux-2.6.22/drivers/sdio/hcd/omap/sdio_hcd_linux.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/hcd/omap/sdio_hcd_linux.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/hcd/omap/sdio_hcd_linux.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,165 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: sdio_hcd_linux.h
@@ -19100,7 +19100,7 @@
Index: linux-2.6.22/drivers/sdio/hcd/omap/sdio_hcd_os_2_6.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/hcd/omap/sdio_hcd_os_2_6.c 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/hcd/omap/sdio_hcd_os_2_6.c 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,574 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: sdio_hcd_os_2_6.c
@@ -19679,7 +19679,7 @@
Index: linux-2.6.22/drivers/sdio/hcd/omap/sdio_omap_hcd.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/hcd/omap/sdio_omap_hcd.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/hcd/omap/sdio_omap_hcd.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,372 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: sdio_pmap_hcd.h
@@ -20056,7 +20056,7 @@
Index: linux-2.6.22/drivers/sdio/hcd/omap_2420/Makefile
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/hcd/omap_2420/Makefile 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/hcd/omap_2420/Makefile 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,3 @@
+# SDIO omap host controller makefile
+obj-m += sdio_omap_hcd.o
@@ -20064,7 +20064,7 @@
Index: linux-2.6.22/drivers/sdio/hcd/omap_2420/sdio_hcd.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/hcd/omap_2420/sdio_hcd.c 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/hcd/omap_2420/sdio_hcd.c 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,1363 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: sdio_hcd.c
@@ -21432,7 +21432,7 @@
Index: linux-2.6.22/drivers/sdio/hcd/omap_2420/sdio_hcd_linux.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/hcd/omap_2420/sdio_hcd_linux.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/hcd/omap_2420/sdio_hcd_linux.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,147 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: sdio_hcd_linux.h
@@ -21584,7 +21584,7 @@
Index: linux-2.6.22/drivers/sdio/hcd/omap_2420/sdio_hcd_os.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/hcd/omap_2420/sdio_hcd_os.c 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/hcd/omap_2420/sdio_hcd_os.c 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,608 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: sdio_hcd_os.c
@@ -22197,7 +22197,7 @@
Index: linux-2.6.22/drivers/sdio/hcd/omap_2420/sdio_hcd_os_2_6.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/hcd/omap_2420/sdio_hcd_os_2_6.c 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/hcd/omap_2420/sdio_hcd_os_2_6.c 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,731 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: sdio_hcd_os_2_6.c
@@ -22933,7 +22933,7 @@
Index: linux-2.6.22/drivers/sdio/hcd/omap_2420/sdio_omap_hcd.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/hcd/omap_2420/sdio_omap_hcd.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/hcd/omap_2420/sdio_omap_hcd.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,370 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: sdio_pmap_hcd.h
@@ -23308,7 +23308,7 @@
Index: linux-2.6.22/drivers/sdio/hcd/pxa255/Makefile
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/hcd/pxa255/Makefile 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/hcd/pxa255/Makefile 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,5 @@
+#
+# SDIO pxa255 host controller
@@ -23318,7 +23318,7 @@
Index: linux-2.6.22/drivers/sdio/hcd/pxa255/sdio_hcd.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/hcd/pxa255/sdio_hcd.c 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/hcd/pxa255/sdio_hcd.c 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,914 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: sdio_hcd.c
@@ -24237,7 +24237,7 @@
Index: linux-2.6.22/drivers/sdio/hcd/pxa255/sdio_hcd_linux.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/hcd/pxa255/sdio_hcd_linux.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/hcd/pxa255/sdio_hcd_linux.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,136 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: sdio_hcd_linux.h
@@ -24378,7 +24378,7 @@
Index: linux-2.6.22/drivers/sdio/hcd/pxa255/sdio_hcd_os.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/hcd/pxa255/sdio_hcd_os.c 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/hcd/pxa255/sdio_hcd_os.c 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,589 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: sdio_hcd_os.c
@@ -24972,7 +24972,7 @@
Index: linux-2.6.22/drivers/sdio/hcd/pxa255/sdio_pxa255hcd.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/hcd/pxa255/sdio_pxa255hcd.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/hcd/pxa255/sdio_pxa255hcd.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,227 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: sdio_pxa255hcd.h
@@ -25204,7 +25204,7 @@
Index: linux-2.6.22/drivers/sdio/hcd/pxa270/Makefile
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/hcd/pxa270/Makefile 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/hcd/pxa270/Makefile 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,5 @@
+#
+# SDIO pxa270 host controller
@@ -25214,7 +25214,7 @@
Index: linux-2.6.22/drivers/sdio/hcd/pxa270/sdio_hcd.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/hcd/pxa270/sdio_hcd.c 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/hcd/pxa270/sdio_hcd.c 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,1087 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: sdio_hcd.c
@@ -26306,7 +26306,7 @@
Index: linux-2.6.22/drivers/sdio/hcd/pxa270/sdio_hcd_linux.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/hcd/pxa270/sdio_hcd_linux.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/hcd/pxa270/sdio_hcd_linux.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,150 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: sdio_hcd_linux.h
@@ -26461,7 +26461,7 @@
Index: linux-2.6.22/drivers/sdio/hcd/pxa270/sdio_hcd_os.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/hcd/pxa270/sdio_hcd_os.c 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/hcd/pxa270/sdio_hcd_os.c 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,1084 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: sdio_hcd_os.c
@@ -27550,7 +27550,7 @@
Index: linux-2.6.22/drivers/sdio/hcd/pxa270/sdio_pxa270hcd.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/hcd/pxa270/sdio_pxa270hcd.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/hcd/pxa270/sdio_pxa270hcd.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,273 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: sdio_pxa270hcd.h
@@ -27827,8 +27827,8 @@
+#endif /* __SDIO_PXA255HCD_H___ */
Index: linux-2.6.22/drivers/Makefile
===================================================================
---- linux-2.6.22.orig/drivers/Makefile 2007-11-28 16:37:55.000000000 +0100
-+++ linux-2.6.22/drivers/Makefile 2007-11-28 16:38:00.000000000 +0100
+--- linux-2.6.22.orig/drivers/Makefile 2007-11-29 20:54:44.000000000 +0100
++++ linux-2.6.22/drivers/Makefile 2007-11-29 20:54:57.000000000 +0100
@@ -71,6 +71,7 @@
obj-$(CONFIG_EISA) += eisa/
obj-$(CONFIG_CPU_FREQ) += cpufreq/
@@ -27840,7 +27840,7 @@
Index: linux-2.6.22/include/linux/sdio/sdlist.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/include/linux/sdio/sdlist.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/include/linux/sdio/sdlist.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,137 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: sdlist.h
@@ -27982,7 +27982,7 @@
Index: linux-2.6.22/include/linux/sdio/sdio_hcd_defs.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/include/linux/sdio/sdio_hcd_defs.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/include/linux/sdio/sdio_hcd_defs.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,215 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: sdio_hcd_defs.h
@@ -28202,7 +28202,7 @@
Index: linux-2.6.22/include/linux/sdio/sdio_lib.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/include/linux/sdio/sdio_lib.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/include/linux/sdio/sdio_lib.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,262 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: sdio_lib.h
@@ -28468,8 +28468,8 @@
+#endif /* __SDIO_LIB_H___*/
Index: linux-2.6.22/arch/arm/Kconfig
===================================================================
---- linux-2.6.22.orig/arch/arm/Kconfig 2007-11-28 16:37:55.000000000 +0100
-+++ linux-2.6.22/arch/arm/Kconfig 2007-11-28 16:38:00.000000000 +0100
+--- linux-2.6.22.orig/arch/arm/Kconfig 2007-11-29 20:54:44.000000000 +0100
++++ linux-2.6.22/arch/arm/Kconfig 2007-11-29 20:54:57.000000000 +0100
@@ -971,6 +971,8 @@
source "drivers/pnp/Kconfig"
Modified: developers/sameo/patches/ar6k-atheros/common_atheros_sdiostack_ar6000_wlan.patch
===================================================================
--- developers/sameo/patches/ar6k-atheros/common_atheros_sdiostack_ar6000_wlan.patch 2007-12-06 17:35:26 UTC (rev 3609)
+++ developers/sameo/patches/ar6k-atheros/common_atheros_sdiostack_ar6000_wlan.patch 2007-12-07 01:13:30 UTC (rev 3610)
@@ -4,7 +4,7 @@
drivers/pnp/driver.c | 2
drivers/sdio/function/wlan/Makefile | 4
drivers/sdio/function/wlan/ar6000/Makefile | 29
- drivers/sdio/function/wlan/ar6000/ar6000/ar6000_drv.c | 5850 ++++++++++
+ drivers/sdio/function/wlan/ar6000/ar6000/ar6000_drv.c | 5862 ++++++++++
drivers/sdio/function/wlan/ar6000/ar6000/ar6000_drv.h | 133
drivers/sdio/function/wlan/ar6000/bmi/Makefile | 1
drivers/sdio/function/wlan/ar6000/bmi/bmi.c | 473
@@ -19,7 +19,7 @@
drivers/sdio/function/wlan/ar6000/hif/hif.c | 664 +
drivers/sdio/function/wlan/ar6000/hif/hif_internal.h | 85
drivers/sdio/function/wlan/ar6000/htc/Makefile | 5
- drivers/sdio/function/wlan/ar6000/htc/htc.c | 433
+ drivers/sdio/function/wlan/ar6000/htc/htc.c | 441
drivers/sdio/function/wlan/ar6000/htc/htc_events.c | 1056 +
drivers/sdio/function/wlan/ar6000/htc/htc_internal.h | 464
drivers/sdio/function/wlan/ar6000/htc/htc_recv.c | 211
@@ -59,12 +59,12 @@
drivers/sdio/function/wlan/ar6000/wlan/wlan_recv_beacon.c | 169
drivers/sdio/function/wlan/ar6000/wlan/wlan_utils.c | 56
drivers/sdio/function/wlan/ar6000/wmi/wmi.c | 2881 ++++
- 60 files changed, 23219 insertions(+), 7 deletions(-)
+ 60 files changed, 23239 insertions(+), 7 deletions(-)
Index: linux-2.6.22/drivers/sdio/function/wlan/Makefile
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/Makefile 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/Makefile 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,4 @@
+#
+# SDIO wlan ar600 card function driver
@@ -73,7 +73,7 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/Makefile
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/Makefile 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/Makefile 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,29 @@
+#
+# AR6K Kernel Module makefile.
@@ -107,7 +107,7 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/bmi.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/bmi.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/bmi.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,76 @@
+/*
+ * Copyright (c) 2004-2006 Atheros Communications Inc.
@@ -188,7 +188,7 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/ar6000/ar6000_drv.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/ar6000/ar6000_drv.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/ar6000/ar6000_drv.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,133 @@
+/*
+ * Copyright (c) 2004-2006 Atheros Communications Inc.
@@ -326,7 +326,7 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/ar6000_api.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/ar6000_api.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/ar6000_api.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) 2004-2006 Atheros Communications Inc.
@@ -415,7 +415,7 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/athdrv.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/athdrv.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/athdrv.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,598 @@
+/*
+ * Copyright (c) 2004-2006 Atheros Communications Inc.
@@ -1018,7 +1018,7 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/athtypes.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/athtypes.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/athtypes.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2003-2006 Atheros Communications, Inc.
@@ -1066,7 +1066,7 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/ieee80211.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/ieee80211.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/ieee80211.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,333 @@
+/*-
+ * Copyright (c) 2001 Atsushi Onoe
@@ -1404,7 +1404,7 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/ieee80211_ioctl.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/ieee80211_ioctl.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/ieee80211_ioctl.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,120 @@
+/*
+ * Copyright (c) 2004-2006 Atheros Communications Inc.
@@ -1529,7 +1529,7 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/ieee80211_node.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/ieee80211_node.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/ieee80211_node.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2001 Atsushi Onoe
@@ -1608,7 +1608,7 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/osapi_linux.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/osapi_linux.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/osapi_linux.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,167 @@
+/*
+ * Copyright 2003-2006 Atheros Communications, Inc.
@@ -1780,7 +1780,7 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/wmi_host.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/wmi_host.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/wmi_host.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,75 @@
+/*
+ * Copyright (c) 2004-2006 Atheros Communications Inc.
@@ -1860,7 +1860,7 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/bmi/bmi_internal.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/bmi/bmi_internal.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/bmi/bmi_internal.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2004-2006 Atheros Communications Inc.
@@ -1896,7 +1896,7 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/hif/hif.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/hif/hif.c 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/hif/hif.c 2007-12-03 19:42:50.000000000 +0100
@@ -0,0 +1,664 @@
+/*
+ * Copyright (c) 2004-2005 Atheros Communications Inc.
@@ -2428,7 +2428,7 @@
+ * issues the first command after switching on dragon. Need to
+ * investigate this a bit more - TODO
+ */
-+ A_MDELAY(1000);
++// A_MDELAY(1000);
+
+ /* Inform HTC */
+ if ((htcCallbacks.deviceInsertedHandler(device)) != A_OK) {
@@ -2565,8 +2565,8 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/htc/htc.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/htc/htc.c 2007-11-28 16:38:00.000000000 +0100
-@@ -0,0 +1,433 @@
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/htc/htc.c 2007-12-03 21:16:59.000000000 +0100
+@@ -0,0 +1,441 @@
+/*
+ * Copyright (c) 2004-2006 Atheros Communications Inc.
+ *
@@ -2698,11 +2698,19 @@
+ size negotiation with the target has completed. Furthermore, we have
+ to do it only once during the lifetime of the target detection */
+ if (!target->ready) {
++ int i;
++
++ for (i = 0; i < 5; i++) {
++ mdelay(100);
++ }
+ AR_DEBUG_PRINTF(ATH_DEBUG_INF,
+ ("Waiting for the block size negotiation to finish\n"));
++ wait_event_interruptible_timeout(htcEvent,
++ (target->ready == TRUE), 60 * HZ);
++#if 0
+ A_WAIT_EVENT_INTERRUPTIBLE_TIMEOUT(htcEvent, (target->ready == TRUE),
+ HTC_TARGET_RESPONSE_TIMEOUT);
-+
++#endif
+ if (target->ready) {
+ status = A_OK;
+ } else {
@@ -3003,7 +3011,7 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/htc/htc_events.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/htc/htc_events.c 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/htc/htc_events.c 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,1056 @@
+/*
+ * Copyright (c) 2004-2006 Atheros Communications Inc.
@@ -4064,7 +4072,7 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/htc/htc_internal.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/htc/htc_internal.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/htc/htc_internal.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,464 @@
+/*
+ * Copyright (c) 2004-2005 Atheros Communications Inc.
@@ -4533,7 +4541,7 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/htc/htc_recv.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/htc/htc_recv.c 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/htc/htc_recv.c 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,211 @@
+/*
+ * Copyright (c) 2004-2006 Atheros Communications Inc.
@@ -4749,7 +4757,7 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/htc/htc_send.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/htc/htc_send.c 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/htc/htc_send.c 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,395 @@
+/*
+ * Copyright (c) 2004-2006 Atheros Communications Inc.
@@ -5149,7 +5157,7 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/htc/htc_utils.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/htc/htc_utils.c 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/htc/htc_utils.c 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,375 @@
+/*
+ * Copyright (c) 2004-2006 Atheros Communications Inc.
@@ -5529,7 +5537,7 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/dset_api.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/dset_api.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/dset_api.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2005-2006 Atheros Communications, Inc.
@@ -5583,7 +5591,7 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/gpio_api.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/gpio_api.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/gpio_api.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2005-2006 Atheros Communications, Inc.
@@ -5652,7 +5660,7 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/hif.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/hif.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/hif.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,207 @@
+/*
+ * Copyright (c) 2004-2006 Atheros Communications Inc.
@@ -5864,7 +5872,7 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/host_version.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/host_version.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/host_version.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2004-2006 Atheros Communications Inc.
@@ -5917,7 +5925,7 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/htc.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/htc.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/htc.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,120 @@
+/*
+ * Copyright (c) 2006 Atheros Communications, Inc.
@@ -6042,7 +6050,7 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/osapi.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/osapi.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/osapi.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,63 @@
+/*
+ * Copyright 2003-2006 Atheros Communications, Inc.
@@ -6110,7 +6118,7 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/queue.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/queue.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/queue.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,552 @@
+/*
+ * Copyright (c) 1991, 1993
@@ -6667,7 +6675,7 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/wlan_api.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/wlan_api.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/wlan_api.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,90 @@
+/*
+ * Copyright (c) 2004-2006 Atheros Communications Inc.
@@ -6762,7 +6770,7 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/wmi_api.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/wmi_api.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/wmi_api.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,173 @@
+/*
+ * Copyright (c) 2004-2006 Atheros Communications Inc.
@@ -6940,7 +6948,7 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/wlan/wlan_node.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/wlan/wlan_node.c 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/wlan/wlan_node.c 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,285 @@
+/*
+ * Copyright (c) 2001 Atsushi Onoe
@@ -7230,7 +7238,7 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/wlan/wlan_utils.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/wlan/wlan_utils.c 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/wlan/wlan_utils.c 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2004-2006 Atheros Communications Inc.
@@ -7291,7 +7299,7 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/wmi/wmi.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/wmi/wmi.c 2007-11-29 19:03:09.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/wmi/wmi.c 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,2881 @@
+/*
+ * Copyright (c) 2004-2006 Atheros Communications Inc.
@@ -10177,8 +10185,8 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/ar6000/ar6000_drv.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/ar6000/ar6000_drv.c 2007-11-28 16:38:00.000000000 +0100
-@@ -0,0 +1,5850 @@
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/ar6000/ar6000_drv.c 2007-12-03 20:24:33.000000000 +0100
+@@ -0,0 +1,5862 @@
+/*
+ * Copyright (c) 2004-2006 Atheros Communications Inc.
+ *
@@ -10987,19 +10995,22 @@
+ if(HTCEventReg(ar->arHtcTarget, endpoint[i], HTC_BUFFER_RECEIVED,
+ ar6000_rx, ar) != A_OK)
+ {
-+ return(-EIO);
++// printk("%s() failed 1\n", __FUNCTION__);
++ return(-EIO);
+ }
+
+ if(HTCEventReg(ar->arHtcTarget, endpoint[i], HTC_DATA_AVAILABLE,
+ ar6000_rx_refill, ar) != A_OK)
+ {
-+ return(-EIO);
++// printk("%s() failed 2\n", __FUNCTION__);
++ return(-EIO);
+ }
+
+ if(HTCEventReg(ar->arHtcTarget, endpoint[i], HTC_BUFFER_SENT,
-+ ar6000_tx_complete, ar) != A_OK)
++ ar6000_tx_complete, ar) != A_OK)
+ {
-+ return(-EIO);
++// printk("%s() failed 3\n", __FUNCTION__);
++ return(-EIO);
+ }
+ }
+
@@ -11028,23 +11039,32 @@
+ /* initialized prior to enabling HTC. */
+ ar6000_cookie_init(ar);
+
++// printk("%s() start\n", __FUNCTION__);
++
+ /* Enable the target and the interrupts associated with it */
+ status = HTCStart(ar->arHtcTarget);
+
++ // printk("%s() done\n", __FUNCTION__);
++
+ if (status != A_OK) {
+ if (ar->arWmiEnabled == TRUE) {
+ wmi_shutdown(ar->arWmi);
+ ar->arWmiEnabled = FALSE;
+ ar->arWmi = NULL;
+ }
++// printk("%s() failed 4\n", __FUNCTION__);
++
+ ar6000_cookie_cleanup(ar);
+ return -EIO;
+ }
+
+ if (!bypasswmi) {
++ int i;
++// printk("%s() 0\n", __FUNCTION__);
++
+ /*Wait for Wmi event to be ready */
-+ timeleft = wait_event_interruptible_timeout(arEvent,
-+ (ar->arWmiReady == TRUE), 1 * HZ);
++ timeleft = wait_event_interruptible_timeout(arEvent,
++ (ar->arWmiReady == TRUE), 60 * HZ);
+
+ if(!timeleft || signal_pending(current))
+ {
@@ -13101,7 +13121,7 @@
+ AR_SOFTC_T *ar = (AR_SOFTC_T *)dev->priv;
+ TARGET_STATS *pStats = &ar->arTargetStats;
+ struct iw_statistics * pIwStats = &ar->arIwStats;
-+ u32 counter;
++// u32 counter;
+
+ printk("%s()\n", __FUNCTION__);
+
@@ -16032,7 +16052,7 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/bmi/bmi.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/bmi/bmi.c 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/bmi/bmi.c 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,473 @@
+/*
+ * Copyright (c) 2004-2006 Atheros Communications Inc.
@@ -16510,14 +16530,14 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/hif/Makefile
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/hif/Makefile 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/hif/Makefile 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,2 @@
+obj-$(CONFIG_SDIO_AR6000_WLAN) += hif.o
+
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/hif/cf/Makefile
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/hif/cf/Makefile 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/hif/cf/Makefile 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,11 @@
+#
+# hif for compact flash
@@ -16533,7 +16553,7 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/hif/cf/ar6000_cs.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/hif/cf/ar6000_cs.c 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/hif/cf/ar6000_cs.c 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,1001 @@
+/*
+ * Copyright (c) 2004-2006 Atheros Communications Inc.
@@ -17539,7 +17559,7 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/hif/cf/ar6000_cs.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/hif/cf/ar6000_cs.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/hif/cf/ar6000_cs.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,110 @@
+/*
+ * Copyright (c) 2004-2006 Atheros Communications Inc.
@@ -17654,7 +17674,7 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/hif/cf/ar6000_cs_internal.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/hif/cf/ar6000_cs_internal.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/hif/cf/ar6000_cs_internal.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 2004-2006 Atheros Communications Inc.
@@ -17721,7 +17741,7 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/hif/cf/hif.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/hif/cf/hif.c 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/hif/cf/hif.c 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,390 @@
+/*
+ * Copyright (c) 2004-2006 Atheros Communications Inc.
@@ -18116,7 +18136,7 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/hif/cf/hif_internal.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/hif/cf/hif_internal.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/hif/cf/hif_internal.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,78 @@
+/*
+ * Copyright (c) 2004-2006 Atheros Communications Inc.
@@ -18199,13 +18219,13 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/bmi/Makefile
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/bmi/Makefile 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/bmi/Makefile 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1 @@
+obj-$(CONFIG_SDIO_AR6000_WLAN) += bmi.o
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/hif/hif_internal.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/hif/hif_internal.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/hif/hif_internal.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,85 @@
+/*
+ * Copyright (c) 2004-2006 Atheros Communications Inc.
@@ -18295,7 +18315,7 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/htc/Makefile
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/htc/Makefile 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/htc/Makefile 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,5 @@
+#
+# SDIO ar6000 wlan htc function driver
@@ -18305,14 +18325,14 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/wlan/Makefile
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/wlan/Makefile 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/wlan/Makefile 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,2 @@
+obj-$(CONFIG_SDIO_AR6000_WLAN) += wlan_node.o wlan_recv_beacon.o wlan_utils.o
+
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/wlan/wlan_recv_beacon.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/wlan/wlan_recv_beacon.c 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/wlan/wlan_recv_beacon.c 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,169 @@
+/*
+ * Copyright (c) 2001 Atsushi Onoe
@@ -18486,7 +18506,7 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/hw/mbox_reg.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/hw/mbox_reg.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/hw/mbox_reg.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,550 @@
+/*
+ * Copyright 2006 Atheros Communications, Inc.
@@ -19041,7 +19061,7 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/hw/mc_reg.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/hw/mc_reg.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/hw/mc_reg.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,1129 @@
+/*
+ * Copyright 2006 Atheros Communications, Inc.
@@ -20175,7 +20195,7 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/hw/rtc_reg.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/hw/rtc_reg.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/hw/rtc_reg.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,1204 @@
+/*
+ * Copyright 2006 Atheros Communications, Inc.
@@ -21384,7 +21404,7 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/athdefs.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/athdefs.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/athdefs.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,82 @@
+
+#ifndef __ATHDEFS_H__
@@ -21471,7 +21491,7 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/hw/mbox_host_reg.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/hw/mbox_host_reg.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/hw/mbox_host_reg.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,416 @@
+/*
+ * Copyright 2006 Atheros Communications, Inc.
@@ -21892,7 +21912,7 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/AR6000_bmi.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/AR6000_bmi.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/AR6000_bmi.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,136 @@
+/*
+ * Copyright 2006 Atheros Communications, Inc.
@@ -22033,7 +22053,7 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/AR6000_version.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/AR6000_version.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/AR6000_version.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2006 Atheros Communications, Inc.
@@ -22084,7 +22104,7 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/AR6000_gpio.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/AR6000_gpio.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/AR6000_gpio.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2005-2006 Atheros Communications, Inc.
@@ -22128,7 +22148,7 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/app/dset.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/app/dset.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/app/dset.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,77 @@
+#ifndef _DSET_H_
+#define _DSET_H_
@@ -22210,7 +22230,7 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/wmi.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/wmi.h 2007-11-29 15:54:17.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/wmi.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,1150 @@
+/*
+ * Copyright (c) 2004-2006 Atheros Communications Inc.
@@ -23365,7 +23385,7 @@
Index: linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/wmix.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/wmix.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/wlan/ar6000/include/wmix.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,197 @@
+/*
+ * Copyright (c) 2004-2005 Atheros Communications Inc.
@@ -23566,8 +23586,8 @@
+#endif /* _WMIX_H_ */
Index: linux-2.6.22/drivers/pnp/core.c
===================================================================
---- linux-2.6.22.orig/drivers/pnp/core.c 2007-11-28 16:37:41.000000000 +0100
-+++ linux-2.6.22/drivers/pnp/core.c 2007-11-28 16:38:00.000000000 +0100
+--- linux-2.6.22.orig/drivers/pnp/core.c 2007-11-29 20:54:27.000000000 +0100
++++ linux-2.6.22/drivers/pnp/core.c 2007-11-29 20:54:57.000000000 +0100
@@ -169,14 +169,12 @@
*
* this function will free all mem used by dev
@@ -23595,8 +23615,8 @@
-#endif /* 0 */
Index: linux-2.6.22/drivers/pnp/driver.c
===================================================================
---- linux-2.6.22.orig/drivers/pnp/driver.c 2007-11-28 16:37:41.000000000 +0100
-+++ linux-2.6.22/drivers/pnp/driver.c 2007-11-28 16:38:00.000000000 +0100
+--- linux-2.6.22.orig/drivers/pnp/driver.c 2007-11-29 20:54:27.000000000 +0100
++++ linux-2.6.22/drivers/pnp/driver.c 2007-11-29 20:54:57.000000000 +0100
@@ -243,8 +243,6 @@
EXPORT_SYMBOL(pnp_register_driver);
@@ -23608,8 +23628,8 @@
EXPORT_SYMBOL(pnp_device_detach);
Index: linux-2.6.22/drivers/pnp/Kconfig
===================================================================
---- linux-2.6.22.orig/drivers/pnp/Kconfig 2007-11-28 16:37:41.000000000 +0100
-+++ linux-2.6.22/drivers/pnp/Kconfig 2007-11-28 16:38:00.000000000 +0100
+--- linux-2.6.22.orig/drivers/pnp/Kconfig 2007-11-29 20:54:27.000000000 +0100
++++ linux-2.6.22/drivers/pnp/Kconfig 2007-11-29 20:54:57.000000000 +0100
@@ -7,7 +7,7 @@
config PNP
Modified: developers/sameo/patches/ar6k-atheros/common_atheros_sdiostack_functions.patch
===================================================================
--- developers/sameo/patches/ar6k-atheros/common_atheros_sdiostack_functions.patch 2007-12-06 17:35:26 UTC (rev 3609)
+++ developers/sameo/patches/ar6k-atheros/common_atheros_sdiostack_functions.patch 2007-12-07 01:13:30 UTC (rev 3610)
@@ -21,7 +21,7 @@
Index: linux-2.6.22/drivers/sdio/function/gps/Makefile
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/gps/Makefile 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/gps/Makefile 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,5 @@
+#
+# SDIO GPS function driver
@@ -31,7 +31,7 @@
Index: linux-2.6.22/drivers/sdio/function/gps/gps.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/gps/gps.c 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/gps/gps.c 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,392 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: gps.c
@@ -428,7 +428,7 @@
Index: linux-2.6.22/drivers/sdio/function/gps/gps.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/gps/gps.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/gps/gps.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,194 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: gps.h
@@ -627,7 +627,7 @@
Index: linux-2.6.22/drivers/sdio/function/gps/gps_linux.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/gps/gps_linux.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/gps/gps_linux.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,63 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: gps_linux.h
@@ -695,7 +695,7 @@
Index: linux-2.6.22/drivers/sdio/function/gps/gps_os.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/gps/gps_os.c 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/gps/gps_os.c 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,633 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: gps_os.c
@@ -1333,7 +1333,7 @@
Index: linux-2.6.22/drivers/sdio/function/bluetooth/Makefile
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/bluetooth/Makefile 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/bluetooth/Makefile 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,5 @@
+#
+# SDIO bluetooth functiondriver
@@ -1343,7 +1343,7 @@
Index: linux-2.6.22/drivers/sdio/function/bluetooth/sdio_bt.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/bluetooth/sdio_bt.c 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/bluetooth/sdio_bt.c 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,769 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: sdio_bt.c
@@ -2117,7 +2117,7 @@
Index: linux-2.6.22/drivers/sdio/function/bluetooth/sdio_bt.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/bluetooth/sdio_bt.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/bluetooth/sdio_bt.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,176 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: sdio_bt.h
@@ -2298,7 +2298,7 @@
Index: linux-2.6.22/drivers/sdio/function/bluetooth/sdio_bt_linux.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/bluetooth/sdio_bt_linux.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/bluetooth/sdio_bt_linux.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,70 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: sdio_bt_linux.h
@@ -2373,7 +2373,7 @@
Index: linux-2.6.22/drivers/sdio/function/bluetooth/sdio_bt_os.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/bluetooth/sdio_bt_os.c 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/bluetooth/sdio_bt_os.c 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,584 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: sdio_bt_os.c
@@ -2962,7 +2962,7 @@
Index: linux-2.6.22/drivers/sdio/function/memory/Makefile
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/memory/Makefile 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/memory/Makefile 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,5 @@
+#
+# SDIO memory card function driver
@@ -2972,7 +2972,7 @@
Index: linux-2.6.22/drivers/sdio/function/memory/sdio_memory.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/memory/sdio_memory.c 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/memory/sdio_memory.c 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,926 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: sdio_memory.c
@@ -3903,7 +3903,7 @@
Index: linux-2.6.22/drivers/sdio/function/memory/sdio_memory.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/memory/sdio_memory.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/memory/sdio_memory.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,98 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: function.h
@@ -4006,7 +4006,7 @@
Index: linux-2.6.22/drivers/sdio/function/memory/sdio_memory_linux.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/memory/sdio_memory_linux.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/memory/sdio_memory_linux.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,80 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: sdio_memory_linux.h
@@ -4091,7 +4091,7 @@
Index: linux-2.6.22/drivers/sdio/function/memory/sdio_memory_os.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/memory/sdio_memory_os.c 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/memory/sdio_memory_os.c 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,1036 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: sdio_memory_os.c
@@ -5132,7 +5132,7 @@
Index: linux-2.6.22/drivers/sdio/function/Kconfig
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/Kconfig 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/Kconfig 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,32 @@
+
+menu "SDIO function drivers"
@@ -5169,7 +5169,7 @@
Index: linux-2.6.22/drivers/sdio/function/Makefile
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/function/Makefile 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/function/Makefile 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,7 @@
+#
+# SDIO function drivers Makefile
Modified: developers/sameo/patches/ar6k-atheros/common_atheros_sdiostack_shcd.patch
===================================================================
--- developers/sameo/patches/ar6k-atheros/common_atheros_sdiostack_shcd.patch 2007-12-06 17:35:26 UTC (rev 3609)
+++ developers/sameo/patches/ar6k-atheros/common_atheros_sdiostack_shcd.patch 2007-12-07 01:13:30 UTC (rev 3610)
@@ -12,7 +12,7 @@
Index: linux-2.6.22/drivers/sdio/hcd/pci_std/Makefile
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/hcd/pci_std/Makefile 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/hcd/pci_std/Makefile 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,4 @@
+obj-m += sdio_pcistd_hcd.o
+
@@ -21,7 +21,7 @@
Index: linux-2.6.22/drivers/sdio/hcd/pci_std/sdio_hcd_os.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/hcd/pci_std/sdio_hcd_os.c 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/hcd/pci_std/sdio_hcd_os.c 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,569 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: sdio_hcd_os.c
@@ -595,7 +595,7 @@
Index: linux-2.6.22/drivers/sdio/hcd/stdhost/Makefile
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/hcd/stdhost/Makefile 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/hcd/stdhost/Makefile 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,7 @@
+#
+# SDIO standard host controller makefile
@@ -607,7 +607,7 @@
Index: linux-2.6.22/drivers/sdio/hcd/stdhost/sdio_std_hcd.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/hcd/stdhost/sdio_std_hcd.c 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/hcd/stdhost/sdio_std_hcd.c 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,1663 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: sdio_std_hcd.c
@@ -2275,7 +2275,7 @@
Index: linux-2.6.22/drivers/sdio/hcd/stdhost/sdio_std_hcd.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/hcd/stdhost/sdio_std_hcd.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/hcd/stdhost/sdio_std_hcd.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,330 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: sdio_std_hcd.h
@@ -2610,7 +2610,7 @@
Index: linux-2.6.22/drivers/sdio/hcd/stdhost/sdio_std_hcd_linux.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/hcd/stdhost/sdio_std_hcd_linux.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/hcd/stdhost/sdio_std_hcd_linux.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,132 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: sdio_std_hcd_linux.h
@@ -2747,7 +2747,7 @@
Index: linux-2.6.22/drivers/sdio/hcd/stdhost/sdio_std_hcd_linux_lib.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/hcd/stdhost/sdio_std_hcd_linux_lib.h 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/hcd/stdhost/sdio_std_hcd_linux_lib.h 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,79 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: sdio_std_hcd_linux_lib.h
@@ -2831,7 +2831,7 @@
Index: linux-2.6.22/drivers/sdio/hcd/stdhost/sdio_std_hcd_os.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/hcd/stdhost/sdio_std_hcd_os.c 2007-11-28 16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/hcd/stdhost/sdio_std_hcd_os.c 2007-11-29 20:54:57.000000000 +0100
@@ -0,0 +1,826 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ at file: sdio_std_hcd_os.c
Modified: developers/sameo/patches/ar6k-atheros/gta02_wifi_defconfig
===================================================================
--- developers/sameo/patches/ar6k-atheros/gta02_wifi_defconfig 2007-12-06 17:35:26 UTC (rev 3609)
+++ developers/sameo/patches/ar6k-atheros/gta02_wifi_defconfig 2007-12-07 01:13:30 UTC (rev 3610)
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.22.5
-# Thu Nov 22 15:33:15 2007
+# Tue Dec 4 02:10:32 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -666,7 +666,7 @@
CONFIG_MTD_NAND_S3C2410_BBT=y
# CONFIG_MTD_NAND_S3C2410_DEBUG is not set
CONFIG_MTD_NAND_S3C2410_HWECC=y
-CONFIG_MTD_NAND_S3C2410_CLKSTOP=y
+# CONFIG_MTD_NAND_S3C2410_CLKSTOP is not set
# CONFIG_MTD_NAND_DISKONCHIP is not set
# CONFIG_MTD_NAND_NANDSIM is not set
# CONFIG_MTD_NAND_PLATFORM is not set
@@ -702,6 +702,7 @@
# Host Controllers
#
CONFIG_SDIO_S3C24XX=y
+CONFIG_SDIO_S3C24XX_DMA=y
# CONFIG_SDIO_SPI is not set
#
Modified: developers/sameo/patches/ar6k-atheros/mach-gta02_wifi.patch
===================================================================
--- developers/sameo/patches/ar6k-atheros/mach-gta02_wifi.patch 2007-12-06 17:35:26 UTC (rev 3609)
+++ developers/sameo/patches/ar6k-atheros/mach-gta02_wifi.patch 2007-12-07 01:13:30 UTC (rev 3610)
@@ -4,8 +4,8 @@
Index: linux-2.6.22/arch/arm/mach-s3c2440/mach-gta02.c
===================================================================
---- linux-2.6.22.orig/arch/arm/mach-s3c2440/mach-gta02.c 2007-11-28 16:37:29.000000000 +0100
-+++ linux-2.6.22/arch/arm/mach-s3c2440/mach-gta02.c 2007-11-28 19:06:57.000000000 +0100
+--- linux-2.6.22.orig/arch/arm/mach-s3c2440/mach-gta02.c 2007-11-29 20:54:19.000000000 +0100
++++ linux-2.6.22/arch/arm/mach-s3c2440/mach-gta02.c 2007-11-29 20:54:57.000000000 +0100
@@ -305,6 +305,35 @@
},
};
Modified: developers/sameo/patches/ar6k-atheros/pnp_fixes_2.6.22.5.patch
===================================================================
--- developers/sameo/patches/ar6k-atheros/pnp_fixes_2.6.22.5.patch 2007-12-06 17:35:26 UTC (rev 3609)
+++ developers/sameo/patches/ar6k-atheros/pnp_fixes_2.6.22.5.patch 2007-12-07 01:13:30 UTC (rev 3610)
@@ -4,8 +4,8 @@
Index: linux-2.6.22/drivers/pnp/resource.c
===================================================================
---- linux-2.6.22.orig/drivers/pnp/resource.c 2007-11-28 16:37:31.000000000 +0100
-+++ linux-2.6.22/drivers/pnp/resource.c 2007-11-28 16:38:00.000000000 +0100
+--- linux-2.6.22.orig/drivers/pnp/resource.c 2007-11-29 20:54:23.000000000 +0100
++++ linux-2.6.22/drivers/pnp/resource.c 2007-11-29 20:54:57.000000000 +0100
@@ -447,6 +447,7 @@
}
}
Modified: developers/sameo/patches/ar6k-atheros/s3c24xx_hcd_atheros.patch
===================================================================
--- developers/sameo/patches/ar6k-atheros/s3c24xx_hcd_atheros.patch 2007-12-06 17:35:26 UTC (rev 3609)
+++ developers/sameo/patches/ar6k-atheros/s3c24xx_hcd_atheros.patch 2007-12-07 01:13:30 UTC (rev 3610)
@@ -1,16 +1,16 @@
---
- drivers/sdio/hcd/Kconfig | 8
+ drivers/sdio/hcd/Kconfig | 14
drivers/sdio/hcd/Makefile | 1
drivers/sdio/hcd/s3c24xx/Makefile | 2
- drivers/sdio/hcd/s3c24xx/s3c24xx_hcd.c | 1301 +++++++++++++++++++++++++++++++++
- drivers/sdio/hcd/s3c24xx/s3c24xx_hcd.h | 63 +
- 5 files changed, 1375 insertions(+)
+ drivers/sdio/hcd/s3c24xx/s3c24xx_hcd.c | 1481 +++++++++++++++++++++++++++++++++
+ drivers/sdio/hcd/s3c24xx/s3c24xx_hcd.h | 66 +
+ 5 files changed, 1564 insertions(+)
-Index: linux-2.6.22/drivers/sdio/hcd/Kconfig
+Index: linux-2.6.22.5-openmoko-dma-wifi/drivers/sdio/hcd/Kconfig
===================================================================
---- linux-2.6.22.orig/drivers/sdio/hcd/Kconfig 2007-11-28 19:04:34.000000000 +0100
-+++ linux-2.6.22/drivers/sdio/hcd/Kconfig 2007-11-28 19:31:56.000000000 +0100
-@@ -46,6 +46,14 @@
+--- linux-2.6.22.5-openmoko-dma-wifi.orig/drivers/sdio/hcd/Kconfig 2007-12-05 18:54:42.000000000 +0100
++++ linux-2.6.22.5-openmoko-dma-wifi/drivers/sdio/hcd/Kconfig 2007-12-05 18:56:13.000000000 +0100
+@@ -46,6 +46,20 @@
help
good luck.
@@ -21,38 +21,57 @@
+ help
+ good luck.
+
++config SDIO_S3C24XX_DMA
++ bool "Samsung s3c24xx host controller DMA I/O"
++ depends on SDIO_S3C24XX
++ default n
++ help
++ good luck.
+
config SDIO_SPI
tristate "SPI host controller"
depends on SPI
-Index: linux-2.6.22/drivers/sdio/hcd/Makefile
+Index: linux-2.6.22.5-openmoko-dma-wifi/drivers/sdio/hcd/Makefile
===================================================================
---- linux-2.6.22.orig/drivers/sdio/hcd/Makefile 2007-11-28 19:04:34.000000000 +0100
-+++ linux-2.6.22/drivers/sdio/hcd/Makefile 2007-11-28 19:31:56.000000000 +0100
+--- linux-2.6.22.5-openmoko-dma-wifi.orig/drivers/sdio/hcd/Makefile 2007-12-05 18:54:42.000000000 +0100
++++ linux-2.6.22.5-openmoko-dma-wifi/drivers/sdio/hcd/Makefile 2007-12-05 18:56:13.000000000 +0100
@@ -6,3 +6,4 @@
obj-$(CONFIG_ARCH_OMAP24XX) += omap_2420/
obj-$(CONFIG_PXA27x) += pxa270/
obj-$(CONFIG_PXA255) += pxa255/
+obj-$(CONFIG_PLAT_S3C24XX) += s3c24xx/
-Index: linux-2.6.22/drivers/sdio/hcd/s3c24xx/Makefile
+Index: linux-2.6.22.5-openmoko-dma-wifi/drivers/sdio/hcd/s3c24xx/Makefile
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/hcd/s3c24xx/Makefile 2007-11-28 19:31:56.000000000 +0100
++++ linux-2.6.22.5-openmoko-dma-wifi/drivers/sdio/hcd/s3c24xx/Makefile 2007-12-05 18:56:13.000000000 +0100
@@ -0,0 +1,2 @@
+obj-$(CONFIG_PLAT_S3C24XX) += sdio_s3c24xx_hcd.o
+sdio_s3c24xx_hcd-objs := s3c24xx_hcd.o
-Index: linux-2.6.22/drivers/sdio/hcd/s3c24xx/s3c24xx_hcd.c
+Index: linux-2.6.22.5-openmoko-dma-wifi/drivers/sdio/hcd/s3c24xx/s3c24xx_hcd.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/hcd/s3c24xx/s3c24xx_hcd.c 2007-11-29 20:24:25.000000000 +0100
-@@ -0,0 +1,1301 @@
++++ linux-2.6.22.5-openmoko-dma-wifi/drivers/sdio/hcd/s3c24xx/s3c24xx_hcd.c 2007-12-07 01:56:31.000000000 +0100
+@@ -0,0 +1,1481 @@
+/*
-+ * s3c24xx_hcd.c - Samsung S3C MCI driver
++ * s3c24xx_hcd.c - Samsung S3C MCI driver, Atheros SDIO API compatible.
+ *
++ * Copyright (C) 2007 by OpenMoko, Inc.
++ * Written by Samuel Ortiz <sameo at openedhand.com>
++ * All Rights Reserved
+ *
+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License along
++ * with this program; if not, write to the Free Software Foundation, Inc.,
++ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#include <linux/kernel.h>
@@ -68,6 +87,8 @@
+#include <linux/workqueue.h>
+#include <linux/completion.h>
+#include <linux/delay.h>
++#include <linux/seq_file.h>
++#include <linux/debugfs.h>
+
+#include <linux/sdio/ctsystem.h>
+#include <linux/sdio/sdio_busdriver.h>
@@ -97,6 +118,22 @@
+
+extern struct platform_device s3c_device_sdi;
+
++static void dump_request(struct s3c24xx_hcd_context * context)
++{
++ if (context->hcd.pCurrentRequest != NULL) {
++ DBG_PRINT(SDDBG_ERROR, ("Current Request Command:%d, ARG:0x%8.8X flags: 0x%04x\n",
++ context->hcd.pCurrentRequest->Command, context->hcd.pCurrentRequest->Argument,
++ GET_SDREQ_RESP_TYPE(context->hcd.pCurrentRequest->Flags)));
++ if (IS_SDREQ_DATA_TRANS(context->hcd.pCurrentRequest->Flags)) {
++ DBG_PRINT(SDDBG_ERROR, ("Data %s, Blocks: %d, BlockLen:%d Remaining: %d \n",
++ IS_SDREQ_WRITE_DATA(context->hcd.pCurrentRequest->Flags) ? "WRITE":"READ",
++ context->hcd.pCurrentRequest->BlockCount,
++ context->hcd.pCurrentRequest->BlockLen,
++ context->hcd.pCurrentRequest->DataRemaining));
++ }
++ }
++}
++
+static void s3c24xx_dump_regs(struct s3c24xx_hcd_context * context)
+{
+ u32 con, pre, cmdarg, cmdcon, cmdsta, r0, r1, r2, r3, timer, bsize;
@@ -139,11 +176,15 @@
+
+static inline void s3c24xx_hcd_clear_imask(struct s3c24xx_hcd_context * context)
+{
-+ if (context->int_sdio)
++ /* UGLY UGLY UGLY */
++// udelay(20);
++
++ if (context->int_sdio) {
+ writel(S3C2410_SDIIMSK_SDIOIRQ | S3C2410_SDIIMSK_READWAIT,
+ context->base + S3C2440_SDIIMSK);
-+ else
++ } else {
+ writel(0, context->base + S3C2440_SDIIMSK);
++ }
+}
+
+static inline void s3c24xx_hcd_set_imask(struct s3c24xx_hcd_context * context)
@@ -227,7 +268,7 @@
+ writel(fsta, context->base + S3C2410_SDIFSTA);
+}
+
-+
++#if 0
+static void s3c24xx_hcd_reset(struct s3c24xx_hcd_context * context)
+{
+ u32 con, counter;
@@ -252,6 +293,7 @@
+
+ spin_unlock_irqrestore(&context->lock, flags);
+}
++#endif
+
+static SDIO_STATUS s3c24xx_hcd_clock_enable(struct s3c24xx_hcd_context * context,
+ unsigned int clock_rate,
@@ -333,11 +375,9 @@
+}
+
+
-+static void s3c24xx_hcd_pio_complete(struct s3c24xx_hcd_context * context)
++static void s3c24xx_hcd_dma_complete(struct s3c24xx_hcd_context * context)
+{
-+ u32 fsta, dsta, counter;
-+ u8 *ptr;
-+ int fifo_count;
++ u32 dsta, counter, i;
+ PSDREQUEST req;
+ SDIO_STATUS status = SDIO_STATUS_ERROR;
+
@@ -347,71 +387,91 @@
+ return;
+ }
+
-+ ptr = req->pDataBuffer;
++ if (context->complete == S3C24XX_HCD_DATA_READ) {
++ /* DMA READ completion */
++ if (context->latest_xfer_size != req->DataRemaining) {
++ DBG_PRINT(SDDBG_ERROR, ("Unexpected read xfer size: %d <-> %d\n",
++ context->latest_xfer_size, req->DataRemaining));
++ status = SDIO_STATUS_BUS_WRITE_ERROR;
++ }
+
-+ if (context->dma_en) {
-+ /* Start DMA */
-+// printk("Starting DMA\n");
-+// s3c2410_dma_ctrl(context->dma_channel, S3C2410_DMAOP_START);
-+
-+ printk("Waiting for DMA to complete\n");
-+ wait_for_completion(&context->dma_complete);
-+ printk("DMA done\n");
-+
-+ if (context->complete == S3C24XX_HCD_DATA_READ) {
-+ /* DMA READ completion */
-+ if (context->latest_xfer_size != req->DataRemaining) {
-+ DBG_PRINT(SDDBG_ERROR, ("Unexpected read xfer size: %d <-> %d\n",
-+ context->latest_xfer_size, req->DataRemaining));
-+ status = SDIO_STATUS_BUS_WRITE_ERROR;
++ counter = 0;
++ dsta = readl(context->base + S3C2410_SDIDSTA);
++ while (!(dsta & S3C2410_SDIDSTA_XFERFINISH)) {
++ if (counter > 500) {
++ printk("read xfer timed out\n");
++ s3c24xx_dump_regs(context);
++ memcpy(req->pDataBuffer, context->io_buffer,
++ req->BlockCount * req->BlockLen);
++ printk("Transfer: %dx%d\n", req->BlockCount, req->BlockLen);
++ for (i = 0; i < req->DataRemaining; i++)
++ printk("0x%x ", *(((char *)context->io_buffer) + i));
++ printk("\n");
++ status = SDIO_STATUS_BUS_READ_TIMEOUT;
++ goto out;
+ }
+ dsta = readl(context->base + S3C2410_SDIDSTA);
-+ if (dsta & S3C2410_SDIDSTA_XFERFINISH) {
-+ int i;
-+ printk("DMA read xfer done\n");
++ counter++;
++ mdelay(1);
++ };
+
-+ for (i = 0; i < 4; i++)
-+ printk("0x%x ", *(((char *)context->io_buffer) + i));
-+ printk("\n");
++ dma_sync_single(NULL, context->io_buffer_dma,
++ req->BlockCount * req->BlockLen, DMA_BIDIRECTIONAL);
+
-+ writel(S3C2410_SDIDSTA_XFERFINISH, context->base + S3C2410_SDIDSTA);
-+ memcpy(req->pDataBuffer, context->io_buffer,
-+ req->BlockCount * req->BlockLen);
-+ req->DataRemaining = 0;
-+ status = SDIO_STATUS_SUCCESS;
-+ } else {
-+ int i;
++ writel(S3C2410_SDIDSTA_XFERFINISH, context->base + S3C2410_SDIDSTA);
+
-+ printk("DMA read xfer unfinished\n");
-+ for (i = 0; i < 4; i++)
-+ printk("0x%x ", *(((char *)context->io_buffer) + i));
-+ printk("\n");
++ memcpy(req->pDataBuffer, context->io_buffer,
++ req->BlockCount * req->BlockLen);
+
-+ status = SDIO_STATUS_BUS_READ_TIMEOUT;
-+ }
-+ } else if (context->complete == S3C24XX_HCD_DATA_WRITE) {
-+ /* DMA WRITE completion */
-+ if (context->latest_xfer_size != req->DataRemaining) {
-+ DBG_PRINT(SDDBG_ERROR, ("Unexpected write xfer size: %d <-> %d\n",
-+ context->latest_xfer_size, req->DataRemaining));
++ req->DataRemaining = 0;
++ status = SDIO_STATUS_SUCCESS;
++
++ } else if (context->complete == S3C24XX_HCD_DATA_WRITE) {
++ /* DMA WRITE completion */
++ if (context->latest_xfer_size != req->DataRemaining) {
++ DBG_PRINT(SDDBG_ERROR, ("Unexpected write xfer size: %d <-> %d\n",
++ context->latest_xfer_size, req->DataRemaining));
++ status = SDIO_STATUS_BUS_WRITE_ERROR;
++ }
++
++ dsta = readl(context->base + S3C2410_SDIDSTA);
++ counter = 0;
++ while (!(dsta & S3C2410_SDIDSTA_XFERFINISH)) {
++ if (counter > 500) {
++ printk("write xfer timed out\n");
+ status = SDIO_STATUS_BUS_WRITE_ERROR;
++ goto out;
+ }
-+
+ dsta = readl(context->base + S3C2410_SDIDSTA);
-+ if (dsta & S3C2410_SDIDSTA_XFERFINISH) {
-+ printk("DMA write xfer done\n");
-+ writel(S3C2410_SDIDSTA_XFERFINISH, context->base + S3C2410_SDIDSTA);
-+ req->DataRemaining = 0;
-+ status = SDIO_STATUS_SUCCESS;
-+ } else {
-+ printk("DMA write xfer unfinished\n");
-+ status = SDIO_STATUS_BUS_WRITE_ERROR;
-+ }
-+ }
++ counter++;
++ mdelay(1);
++ };
+
-+ goto out;
++ writel(S3C2410_SDIDSTA_XFERFINISH, context->base + S3C2410_SDIDSTA);
++ req->DataRemaining = 0;
++ status = SDIO_STATUS_SUCCESS;
+ }
+
++ out:
++ req->Status = status;
++}
++
++static void s3c24xx_hcd_pio_complete(struct s3c24xx_hcd_context * context)
++{
++ u32 fsta, counter;
++ u8 *ptr;
++ int fifo_count;
++ PSDREQUEST req;
++ SDIO_STATUS status = SDIO_STATUS_ERROR;
++
++ req = GET_CURRENT_REQUEST(&context->hcd);
++ if (req == NULL) {
++ DBG_PRINT(SDDBG_ERROR, ("%s(): No current request\n", __FUNCTION__));
++ return;
++ }
++
++ ptr = req->pDataBuffer;
++
+ if (context->complete == S3C24XX_HCD_DATA_READ) {
+ counter = 0;
+ DBG_PRINT(SDDBG_TRACE, ("Data read..."));
@@ -424,7 +484,6 @@
+ status = SDIO_STATUS_BUS_READ_TIMEOUT;
+ s3c24xx_dump_regs(context);
+ goto out;
-+ break;
+ }
+ } while(!(fsta & S3C2410_SDIFSTA_RFDET));
+ DBG_PRINT(SDDBG_TRACE, ("RX detected\n"));
@@ -459,6 +518,7 @@
+
+ ptr += context->data_size;
+ fifo_count -= context->data_size;
++
+ }
+
+ if (!req->DataRemaining) {
@@ -497,15 +557,9 @@
+ } while(!(fsta & S3C2410_SDIFSTA_TFDET));
+ DBG_PRINT(SDDBG_TRACE, ("TX detected\n"));
+
-+
-+// while ((fifo_count = (63 -
-+// (readl(context->base + S3C2410_SDIFSTA) & S3C2410_SDIFSTA_COUNTMASK)))) {
-+// printk("%s(): We can write %d bytes\n", __FUNCTION__, fifo_count);
-+
-+
+ while (1) {
+ counter = 0;
-+ fifo_count = 63 - readl(context->base + S3C2410_SDIFSTA) & S3C2410_SDIFSTA_COUNTMASK;
++ fifo_count = 63 - (readl(context->base + S3C2410_SDIFSTA) & S3C2410_SDIFSTA_COUNTMASK);
+ while (!fifo_count) {
+ counter++;
+ mdelay(1);
@@ -514,7 +568,7 @@
+ DBG_PRINT(SDDBG_ERROR, ("No more space in FIFO\n"));
+ goto out;
+ }
-+ fifo_count = 63 - readl(context->base + S3C2410_SDIFSTA) & S3C2410_SDIFSTA_COUNTMASK;
++ fifo_count = 63 - (readl(context->base + S3C2410_SDIFSTA) & S3C2410_SDIFSTA_COUNTMASK);
+ }
+
+ if (fifo_count > req->DataRemaining)
@@ -561,20 +615,18 @@
+ req->Status = status;
+}
+
-+static void s3c24xx_hcd_pio_work(struct work_struct *work)
++static void s3c24xx_hcd_io_work(struct work_struct *work)
+{
+ PSDREQUEST req;
+ struct s3c24xx_hcd_context * context =
-+ container_of(work, struct s3c24xx_hcd_context, pio_work);
++ container_of(work, struct s3c24xx_hcd_context, io_work);
+
++ disable_irq(context->io_irq);
++
+ req = GET_CURRENT_REQUEST(&context->hcd);
+ if (req == NULL) {
-+ if (context->int_sdio_pending) {
-+ SDIO_HandleHcdEvent(&context->hcd, EVENT_HCD_SDIO_IRQ_PENDING);
-+ context->int_sdio_pending = 0;
-+ } else {
-+ DBG_PRINT(SDDBG_ERROR, ("%s(): No current request\n", __FUNCTION__));
-+ }
++ DBG_PRINT(SDDBG_ERROR, ("%s(): No current request\n", __FUNCTION__));
++ enable_irq(context->io_irq);
+ return;
+ }
+
@@ -585,13 +637,6 @@
+ goto out;
+ }
+
-+ if (context->int_sdio_pending) {
-+ SDIO_HandleHcdEvent(&context->hcd, EVENT_HCD_SDIO_IRQ_PENDING);
-+ context->int_sdio_pending = 0;
-+ }
-+
-+ spin_lock(&context->lock);
-+
+ if (context->complete == S3C24XX_HCD_NO_RESPONSE &&
+ req->Status == SDIO_STATUS_SUCCESS) {
+ DBG_PRINT(SDDBG_TRACE, ("CMD done, Status: %d\n", req->Status));
@@ -616,6 +661,7 @@
+ memcpy(&req->Response[1], (u8*)resp, 4);
+ req->Response[5] = (readl(context->base + S3C2410_SDICMDSTAT) & 0xff);
+ } else {
++ printk("LONG response: 0x%08x\n", resp[0]);
+ DBG_PRINT(SDDBG_TRACE, ("LONG response: 0x%08x\n", resp[0]));
+ memcpy(&req->Response[1], (u8*)resp, 16);
+ //req->Response[17] = (readl(context->base + S3C2410_SDICMDSTAT) & 0xff);
@@ -623,8 +669,18 @@
+
+ /* There is a data stage */
+ if (context->complete == S3C24XX_HCD_DATA_READ ||
-+ context->complete == S3C24XX_HCD_DATA_WRITE)
-+ s3c24xx_hcd_pio_complete(context);
++ context->complete == S3C24XX_HCD_DATA_WRITE) {
++ if (context->dma_en) {
++
++ s3c2410_dma_ctrl(context->dma_channel, S3C2410_DMAOP_START);
++
++ wait_for_completion(&context->dma_complete);
++
++ s3c24xx_hcd_dma_complete(context);
++ } else {
++ s3c24xx_hcd_pio_complete(context);
++ }
++ }
+ }
+
+ out:
@@ -634,7 +690,7 @@
+ writel(0, context->base + S3C2410_SDICMDARG);
+ writel(0, context->base + S3C2410_SDICMDCON);
+
-+ spin_unlock(&context->lock);
++ enable_irq(context->io_irq);
+
+ SDIO_HandleHcdEvent(&context->hcd, EVENT_HCD_TRANSFER_DONE);
+}
@@ -645,7 +701,11 @@
+ struct s3c24xx_hcd_context * context =
+ (struct s3c24xx_hcd_context *) buf_id;
+
-+ printk("DMA done\n");
++ if (result != S3C2410_RES_OK) {
++ DBG_PRINT(SDDBG_ERROR, ("%s(): DMA xfer failed: %d\n", __FUNCTION__, result));
++ s3c24xx_dump_regs(context);
++ }
++
+ context->latest_xfer_size = size;
+ complete(&context->dma_complete);
+}
@@ -676,20 +736,24 @@
+ if(!IS_SDREQ_WRITE_DATA(req->Flags)) {
+ read = 1;
+ source = S3C2410_DMASRC_HW;
-+ hwcfg = S3C2410_DISRCC_APB;
++ hwcfg = S3C2410_DISRCC_APB | 1;
+ } else {
+ memcpy(context->io_buffer, req->pDataBuffer, req->DataRemaining);
++ dma_sync_single(NULL, context->io_buffer_dma,
++ req->BlockCount * req->BlockLen, DMA_BIDIRECTIONAL);
++
+ }
+
+ s3c2410_dma_devconfig(context->dma_channel, source, hwcfg,
+ (unsigned long)context->mem->start + S3C2440_SDIDATA);
+
-+ s3c2410_dma_config(context->dma_channel, 1,
-+ (S3C2410_DCON_HWTRIG | S3C2410_DCON_CH0_SDI));
++ s3c2410_dma_config(context->dma_channel, context->data_size,
++ S3C2410_DCON_CH0_SDI);
++ //(S3C2410_DCON_HWTRIG | S3C2410_DCON_CH0_SDI));
+
+ s3c2410_dma_set_buffdone_fn(context->dma_channel, s3c24xx_hcd_dma_done);
+
-+ s3c2410_dma_setflags(context->dma_channel, S3C2410_DMAF_AUTOSTART);
++// s3c2410_dma_setflags(context->dma_channel, S3C2410_DMAF_AUTOSTART);
+
+ s3c2410_dma_ctrl(context->dma_channel, S3C2410_DMAOP_FLUSH);
+
@@ -703,7 +767,7 @@
+
+static irqreturn_t s3c24xx_hcd_irq(int irq, void *dev_id)
+{
-+ u32 cmdsta, dsta;
++ u32 cmdsta, dsta, fsta;
+ unsigned long flags;
+ PSDREQUEST req;
+ struct s3c24xx_hcd_context * context =
@@ -715,27 +779,29 @@
+
+ cmdsta = readl(context->base + S3C2410_SDICMDSTAT);
+ dsta = readl(context->base + S3C2410_SDIDSTA);
++ fsta = readl(context->base + S3C2410_SDIFSTA);
++
++ context->cmdsta = cmdsta;
++ context->dsta = dsta;
++ context->fsta = fsta;
++
+ s3c24xx_hcd_clear_csta(context);
+
+ if (dsta & S3C2410_SDIDSTA_SDIOIRQDETECT) {
+ writel(S3C2410_SDIDSTA_SDIOIRQDETECT, context->base + S3C2410_SDIDSTA);
+
-+ if (context->int_sdio &&
-+ !context->int_sdio_reported &&
-+ !context->int_sdio_pending) {
++ if (context->int_sdio) {
+ u32 imask;
+
-+// printk("Got SDIO IRQ\n");
-+
+ context->int_sdio = 0;
-+ context->int_sdio_reported = 1;
-+ context->int_sdio_pending = 1;
+
+ imask = readl(context->base + S3C2440_SDIIMSK);
+ imask &= ~S3C2410_SDIIMSK_SDIOIRQ;
+ writel(imask, context->base + S3C2440_SDIIMSK);
-+ schedule_work(&context->pio_work);
++ SDIO_HandleHcdEvent(&context->hcd, EVENT_HCD_SDIO_IRQ_PENDING);
+ }
++
++ writel(S3C2410_SDIDSTA_SDIOIRQDETECT, context->base + S3C2410_SDIDSTA);
+ }
+
+ req = GET_CURRENT_REQUEST(&context->hcd);
@@ -747,27 +813,79 @@
+ if (cmdsta & S3C2410_SDICMDSTAT_CMDTIMEOUT) {
+ DBG_PRINT(SDDBG_ERROR, ("TIMEOUT\n"));
+ req->Status = SDIO_STATUS_BUS_RESP_TIMEOUT;
-+ schedule_work(&context->pio_work);
++ writel(S3C2410_SDICMDSTAT_CMDTIMEOUT, context->base + S3C2410_SDICMDSTAT);
++ schedule_work(&context->io_work);
+ }
+
++ if (cmdsta & S3C2410_SDICMDSTAT_CRCFAIL) {
++ DBG_PRINT(SDDBG_ERROR, ("CRCFAIL 0x%x\n", cmdsta));
++ req->Status = SDIO_STATUS_BUS_RESP_CRC_ERR;
++ dump_request(context);
++ writel(S3C2410_SDICMDSTAT_CRCFAIL, context->base + S3C2410_SDICMDSTAT);
++ schedule_work(&context->io_work);
++ }
++
++
+ if (cmdsta & S3C2410_SDICMDSTAT_CMDSENT) {
++ writel(S3C2410_SDICMDSTAT_CMDSENT, context->base + S3C2410_SDICMDSTAT);
++
+ if (context->complete == S3C24XX_HCD_NO_RESPONSE) {
+ req->Status = SDIO_STATUS_SUCCESS;
-+ schedule_work(&context->pio_work);
++ schedule_work(&context->io_work);
+ }
+ }
+
-+ if (cmdsta & S3C2410_SDICMDSTAT_RSPFIN) {
++ if (cmdsta & S3C2410_SDICMDSTAT_RSPFIN ||
++ (IS_SDREQ_WRITE_DATA(req->Flags) && (fsta & S3C2410_SDIFSTA_TFDET)) ||
++ (!IS_SDREQ_WRITE_DATA(req->Flags) && (fsta & S3C2410_SDIFSTA_RFDET))) {
++
++ writel(S3C2410_SDICMDSTAT_RSPFIN, context->base + S3C2410_SDICMDSTAT);
++
+ if (context->complete == S3C24XX_HCD_RESPONSE_SHORT ||
+ context->complete == S3C24XX_HCD_RESPONSE_LONG ||
+ context->complete == S3C24XX_HCD_DATA_READ ||
+ context->complete == S3C24XX_HCD_DATA_WRITE) {
+ req->Status = SDIO_STATUS_SUCCESS;
-+ schedule_work(&context->pio_work);
++ schedule_work(&context->io_work);
+ }
+ }
+
+ out:
++ if (dsta & S3C2410_SDIDSTA_RDYWAITREQ) {
++ printk("S3C2410_SDIDSTA_RDYWAITREQ\n");
++ //writel(S3C2410_SDIDSTA_RDYWAITREQ, context->base + S3C2410_SDIDSTA);
++ }
++
++ if (dsta & S3C2410_SDIDSTA_FIFOFAIL) {
++ printk("S3C2410_SDIDSTA_FIFOFAIL\n");
++ writel(S3C2410_SDIDSTA_FIFOFAIL, context->base + S3C2410_SDIDSTA);
++ }
++
++ if (dsta & S3C2410_SDIDSTA_CRCFAIL) {
++ printk("S3C2410_SDIDSTA_CRCFAIL\n");
++ writel(S3C2410_SDIDSTA_CRCFAIL, context->base + S3C2410_SDIDSTA);
++ }
++
++ if (dsta & S3C2410_SDIDSTA_RXCRCFAIL) {
++ printk("S3C2410_SDIDSTA_RXCRCFAIL\n");
++ writel(S3C2410_SDIDSTA_RXCRCFAIL, context->base + S3C2410_SDIDSTA);
++ }
++
++ if (dsta & S3C2410_SDIDSTA_DATATIMEOUT) {
++ printk("S3C2410_SDIDSTA_DATATIMEOUT\n");
++ writel(S3C2410_SDIDSTA_DATATIMEOUT, context->base + S3C2410_SDIDSTA);
++ }
++
++ if (dsta & S3C2410_SDIDSTA_BUSYFINISH) {
++ printk("S3C2410_SDIDSTA_BUSYFINISH\n");
++ writel(S3C2410_SDIDSTA_BUSYFINISH, context->base + S3C2410_SDIDSTA);
++ }
++
++ if (dsta & S3C2410_SDIDSTA_SBITERR) {
++ printk("S3C2410_SDIDSTA_SBIERR\n");
++ writel(S3C2410_SDIDSTA_SBITERR, context->base + S3C2410_SDIDSTA);
++ }
++
+ spin_unlock_irqrestore(&context->lock, flags);
+ return IRQ_HANDLED;
+}
@@ -775,7 +893,8 @@
+
+SDIO_STATUS s3c24xx_hcd_config(PSDHCD hcd, PSDCONFIG config)
+{
-+ u32 con, imsk, dsta;
++ u32 con, imsk;
++ unsigned long flags;
+ SDIO_STATUS status = SDIO_STATUS_SUCCESS;
+ PSDCONFIG_SDIO_INT_CTRL_DATA int_data;
+ struct s3c24xx_hcd_context * context = (struct s3c24xx_hcd_context *)hcd->pContext;
@@ -816,14 +935,12 @@
+ printk("SDIO_INT_CTRL enable IRQ\n");
+ DBG_PRINT(SDDBG_TRACE, ("SDIO_INT_CTRL enable IRQ\n"));
+ context->int_sdio = 1;
-+ context->int_sdio_reported = 0;
+ imsk |= S3C2410_SDIIMSK_SDIOIRQ;
+ writel(imsk, context->base + S3C2440_SDIIMSK);
+ } else {
+ printk("SDIO_INT_CTRL disable IRQ\n");
+ DBG_PRINT(SDDBG_TRACE, ("SDIO_INT_CTRL disable IRQ\n"));
+ context->int_sdio = 0;
-+ context->int_sdio_reported = 0;
+ imsk &= ~S3C2410_SDIIMSK_SDIOIRQ;
+ writel(imsk, context->base + S3C2440_SDIIMSK);
+ }
@@ -832,15 +949,15 @@
+ break;
+ case SDCONFIG_SDIO_REARM_INT:
+ DBG_PRINT(SDDBG_TRACE, ("config SDIO_REARM_INT\n"));
++ spin_lock_irqsave(&context->lock,flags);
++
+ context->int_sdio = 1;
-+ context->int_sdio_reported = 0;
+ imsk = readl(context->base + S3C2440_SDIIMSK);
+ imsk |= S3C2410_SDIIMSK_SDIOIRQ;
+ writel(imsk, context->base + S3C2440_SDIIMSK);
-+ dsta = readl(context->base + S3C2410_SDIDSTA);
-+ if (dsta & S3C2410_SDIDSTA_SDIOIRQDETECT) {
-+ context->int_sdio_pending = 1;
-+ }
++
++ spin_unlock_irqrestore(&context->lock,flags);
++
+ status = SDIO_STATUS_SUCCESS;
+ break;
+ case SDCONFIG_FUNC_CHANGE_BUS_MODE:
@@ -871,23 +988,7 @@
+ return SDIOErrorToOSError(status);
+}
+
-+static void dump_request(struct s3c24xx_hcd_context * context)
-+{
-+ if (context->hcd.pCurrentRequest != NULL) {
-+ DBG_PRINT(SDDBG_ERROR, ("Current Request Command:%d, ARG:0x%8.8X flags: 0x%04x\n",
-+ context->hcd.pCurrentRequest->Command, context->hcd.pCurrentRequest->Argument,
-+ GET_SDREQ_RESP_TYPE(context->hcd.pCurrentRequest->Flags)));
-+ if (IS_SDREQ_DATA_TRANS(context->hcd.pCurrentRequest->Flags)) {
-+ DBG_PRINT(SDDBG_ERROR, ("Data %s, Blocks: %d, BlockLen:%d Remaining: %d \n",
-+ IS_SDREQ_WRITE_DATA(context->hcd.pCurrentRequest->Flags) ? "WRITE":"READ",
-+ context->hcd.pCurrentRequest->BlockCount,
-+ context->hcd.pCurrentRequest->BlockLen,
-+ context->hcd.pCurrentRequest->DataRemaining));
-+ }
-+ }
-+}
+
-+
+SDIO_STATUS s3c24xx_hcd_request(PSDHCD hcd)
+{
+ SDIO_STATUS status = SDIO_STATUS_PENDING;
@@ -910,7 +1011,8 @@
+ writel(0xFFFFFFFF, context->base + S3C2410_SDIFSTA);
+
+ /* Enabling irqs */
-+ imask = S3C2410_SDIIMSK_READWAIT | S3C2410_SDIIMSK_SDIOIRQ;
++ imask = S3C2410_SDIIMSK_READWAIT;
++// imask = S3C2410_SDIIMSK_READWAIT | S3C2410_SDIIMSK_SDIOIRQ;
+
+ cmdcon = readl(context->base + S3C2410_SDICMDCON);
+
@@ -942,38 +1044,33 @@
+
+ }
+
-+ /* Check if there is a data part */
-+ if (IS_SDREQ_DATA_TRANS(req->Flags) &&
-+ !IS_SDREQ_WRITE_DATA(req->Flags)) {
-+ /* Data read */
-+ u32 dcon;
++ /* There is a data part */
++ if (IS_SDREQ_DATA_TRANS(req->Flags)) {
++ u32 dcon = 0;
+
-+ DBG_PRINT(SDDBG_TRACE, ("Start data read, block count=%d, block size=%d\n",
-+ req->BlockCount, req->BlockLen));
++ if (readl(context->base + S3C2410_SDIDSTA) &
++ (S3C2410_SDIDSTA_TXDATAON | S3C2410_SDIDSTA_RXDATAON)) {
++ printk("##### DATA ON: 0x%x ######\n", readl(context->base + S3C2410_SDIDSTA));
++ }
+
+ /* Setting timer */
+ writel(0x7fffff, context->base + S3C2410_SDITIMER);
+
+ /* Block size */
+ writel(req->BlockLen, context->base + S3C2410_SDIBSIZE);
++ /* Number of blocks */
++ dcon |= (0xfff & req->BlockCount);
+
-+ /* Data configuration: receive after cmd, block mode*/
-+ dcon = S3C2410_SDIDCON_RXAFTERCMD | S3C2410_SDIDCON_BLOCKMODE;
+ if (context->bus_width == 4)
+ dcon |= S3C2410_SDIDCON_WIDEBUS;
+
-+ /* Number of blocks */
-+ dcon |= (0xfff & req->BlockCount);
-+
+ req->DataRemaining = req->BlockCount * req->BlockLen;
+
-+ /* This is a read */
-+ dcon |= S3C2410_SDIDCON_XFER_RXSTART;
-+
+ /* Set data size, and start the transfer */
+ if (!(req->DataRemaining % 4)) {
+ context->data_size = 4;
+ dcon |= S3C2440_SDIDCON_DS_WORD;
++ dcon |= (1 << 24);
+ } else if (!(req->DataRemaining % 2)) {
+ context->data_size = 2;
+ dcon |= S3C2440_SDIDCON_DS_HALFWORD;
@@ -981,81 +1078,60 @@
+ context->data_size = 1;
+ dcon |= S3C2440_SDIDCON_DS_BYTE;
+ }
++
++#ifdef CONFIG_SDIO_S3C24XX_DMA
++ context->dma_en = 1;
++#else
++ context->dma_en = 0;
+ context->data_size = 1;
+ dcon |= S3C2440_SDIDCON_DS_BYTE;
++#endif
+
-+ dcon |= S3C2440_SDIDCON_DATSTART;
-+
+ if (context->dma_en) {
+ dcon |= S3C2410_SDIDCON_DMAEN;
+ s3c24xx_hcd_prepare_dma(context);
+ }
+
-+ writel(dcon, context->base + S3C2410_SDIDCON);
++ if (IS_SDREQ_WRITE_DATA(req->Flags)) {
++ /* Data write */
++ DBG_PRINT(SDDBG_TRACE, ("Start data write, block count=%d, block size=%d\n",
++ req->BlockCount, req->BlockLen));
+
-+ imask |= S3C2410_SDIIMSK_RXFIFOHALF | S3C2410_SDIIMSK_RXFIFOLAST |
-+ S3C2410_SDIIMSK_FIFOFAIL | S3C2410_SDIIMSK_DATACRC |
-+ S3C2410_SDIIMSK_DATATIMEOUT | S3C2410_SDIIMSK_DATAFINISH;
++ /* Data configuration: transmit after resp, block mode*/
++ dcon |= S3C2410_SDIDCON_TXAFTERRESP | S3C2410_SDIDCON_BLOCKMODE;
+
-+ cmdcon |= S3C2410_SDICMDCON_WITHDATA;
++ /* This is a write */
++ dcon |= S3C2410_SDIDCON_XFER_TXSTART;
+
-+ context->complete = S3C24XX_HCD_DATA_READ;
-+ } else if (IS_SDREQ_DATA_TRANS(req->Flags) &&
-+ IS_SDREQ_WRITE_DATA(req->Flags)) {
-+ /* Data write */
-+ u32 dcon;
++ imask |= S3C2410_SDIIMSK_TXFIFOHALF | S3C2410_SDIIMSK_TXFIFOEMPTY |
++ S3C2410_SDIIMSK_FIFOFAIL | S3C2410_SDIIMSK_DATACRC |
++ S3C2410_SDIIMSK_DATATIMEOUT | S3C2410_SDIIMSK_DATAFINISH;
+
-+ DBG_PRINT(SDDBG_TRACE, ("Start data write, block count=%d, block size=%d\n",
-+ req->BlockCount, req->BlockLen));
++ context->complete = S3C24XX_HCD_DATA_WRITE;
++ } else {
++ /* Data read */
++ DBG_PRINT(SDDBG_TRACE, ("Start data read, block count=%d, block size=%d\n",
++ req->BlockCount, req->BlockLen));
+
-+ /* Setting timer */
-+ writel(0x7fffff, context->base + S3C2410_SDITIMER);
++ /* Data configuration: receive after cmd, block mode*/
++ dcon |= S3C2410_SDIDCON_RXAFTERCMD | S3C2410_SDIDCON_BLOCKMODE;
+
-+ /* Block size */
-+ writel(req->BlockLen, context->base + S3C2410_SDIBSIZE);
++ /* This is a read */
++ dcon |= S3C2410_SDIDCON_XFER_RXSTART;
+
-+ /* Data configuration: receive after cmd, block mode*/
-+ dcon = S3C2410_SDIDCON_TXAFTERRESP | S3C2410_SDIDCON_BLOCKMODE;
-+ if (context->bus_width == 4)
-+ dcon |= S3C2410_SDIDCON_WIDEBUS;
++ imask |= S3C2410_SDIIMSK_RXFIFOHALF | S3C2410_SDIIMSK_RXFIFOLAST |
++ S3C2410_SDIIMSK_FIFOFAIL | S3C2410_SDIIMSK_DATACRC |
++ S3C2410_SDIIMSK_DATATIMEOUT | S3C2410_SDIIMSK_DATAFINISH;
+
-+ /* Number of blocks */
-+ dcon |= (0xfff & req->BlockCount);
-+
-+ /* This is a write */
-+ dcon |= S3C2410_SDIDCON_XFER_TXSTART;
-+
-+ req->DataRemaining = req->BlockCount * req->BlockLen;
-+
-+ /* Start data size, and start the transfer */
-+ if (!(req->DataRemaining % 4)) {
-+ context->data_size = 4;
-+ dcon |= S3C2440_SDIDCON_DS_WORD;
-+ } else if (!(req->DataRemaining % 2)) {
-+ context->data_size = 2;
-+ dcon |= S3C2440_SDIDCON_DS_HALFWORD;
-+ } else {
-+ context->data_size = 1;
-+ dcon |= S3C2440_SDIDCON_DS_BYTE;
++ context->complete = S3C24XX_HCD_DATA_READ;
+ }
-+ context->data_size = 1;
-+ dcon |= S3C2440_SDIDCON_DS_BYTE;
+
+ dcon |= S3C2440_SDIDCON_DATSTART;
+
-+ if (context->dma_en) {
-+ dcon |= S3C2410_SDIDCON_DMAEN;
-+ s3c24xx_hcd_prepare_dma(context);
-+ }
-+
+ writel(dcon, context->base + S3C2410_SDIDCON);
+
-+ imask |= S3C2410_SDIIMSK_TXFIFOHALF | S3C2410_SDIIMSK_TXFIFOEMPTY |
-+ S3C2410_SDIIMSK_FIFOFAIL | S3C2410_SDIIMSK_DATACRC |
-+ S3C2410_SDIIMSK_DATATIMEOUT | S3C2410_SDIIMSK_DATAFINISH;
++ cmdcon |= S3C2410_SDICMDCON_WITHDATA;
+
-+ cmdcon |= S3C2410_SDICMDCON_WITHDATA;
-+ context->complete = S3C24XX_HCD_DATA_WRITE;
+ } else {
+ cmdcon &= ~S3C2410_SDICMDCON_WITHDATA;
+ }
@@ -1138,10 +1214,10 @@
+
+ /* DMA */
+ context->io_buffer_size = 4 * 4096;
-+ context->io_buffer = dma_alloc_coherent(&context->pdev->dev,
-+ context->io_buffer_size,
-+ &context->io_buffer_dma,
-+ GFP_KERNEL);
++ context->io_buffer = dma_alloc_writecombine(&context->pdev->dev,
++ context->io_buffer_size,
++ &context->io_buffer_dma,
++ GFP_KERNEL | GFP_DMA);
+
+ if (context->io_buffer == NULL) {
+ DBG_PRINT(SDDBG_ERROR, ("failed to allocate DMA buffer\n"));
@@ -1180,8 +1256,8 @@
+ return SDIOErrorToOSError(status);
+
+ out_free_dma:
-+ dma_free_coherent(&context->pdev->dev,context->io_buffer_size,
-+ context->io_buffer, context->io_buffer_dma);
++ dma_free_writecombine(&context->pdev->dev,context->io_buffer_size,
++ context->io_buffer, context->io_buffer_dma);
+
+ out_free_irq:
+ free_irq(context->io_irq, context);
@@ -1204,8 +1280,8 @@
+ free_irq(context->io_irq, context);
+ iounmap(context->base);
+ release_mem_region(context->mem->start, RESSIZE(context->mem));
-+ dma_free_coherent(&context->pdev->dev,context->io_buffer_size,
-+ context->io_buffer, context->io_buffer_dma);
++ dma_free_writecombine(&context->pdev->dev,context->io_buffer_size,
++ context->io_buffer, context->io_buffer_dma);
+}
+
+static int s3c24xx_hcd_pnp_probe(struct pnp_dev *pBusDevice, const struct pnp_device_id *pId)
@@ -1292,15 +1368,16 @@
+ hcd_context.dma_en = 0;
+
+ hcd_context.int_sdio = 0;
-+ hcd_context.int_sdio_reported = 0;
-+ hcd_context.int_sdio_pending = 0;
+
+ spin_lock_init(&hcd_context.lock);
+
+ init_completion(&hcd_context.dma_complete);
++ init_completion(&hcd_context.xfer_complete);
+
-+ INIT_WORK(&hcd_context.pio_work, s3c24xx_hcd_pio_work);
++ INIT_WORK(&hcd_context.io_work, s3c24xx_hcd_io_work);
+
++ mdelay(100);
++
+ status = SDIO_BusAddOSDevice(&hcd_context.device.dma,
+ &hcd_context.device.pnp_driver,
+ &hcd_context.device.pnp_device);
@@ -1327,9 +1404,118 @@
+ .remove = s3c24xx_hcd_remove,
+};
+
++#ifdef CONFIG_DEBUG_FS
++static struct dentry *debugfs_dir;
+
++static int s3c24xx_hcd_debugfs_show(struct seq_file *s, void *data)
++{
++ PSDREQUEST req;
++ u32 con, pre, cmdarg, cmdcon, cmdsta, r0, r1, r2, r3, timer, bsize;
++ u32 datcon, datcnt, datsta, fsta, imask;
++ struct s3c24xx_hcd_context * context = &hcd_context;
++
++
++ con = readl(context->base + S3C2410_SDICON);
++ pre = readl(context->base + S3C2410_SDIPRE);
++ cmdarg = readl(context->base + S3C2410_SDICMDARG);
++ cmdcon = readl(context->base + S3C2410_SDICMDCON);
++ cmdsta = readl(context->base + S3C2410_SDICMDSTAT);
++ r0 = readl(context->base + S3C2410_SDIRSP0);
++ r1 = readl(context->base + S3C2410_SDIRSP1);
++ r2 = readl(context->base + S3C2410_SDIRSP2);
++ r3 = readl(context->base + S3C2410_SDIRSP3);
++ timer = readl(context->base + S3C2410_SDITIMER);
++ bsize = readl(context->base + S3C2410_SDIBSIZE);
++ datcon = readl(context->base + S3C2410_SDIDCON);
++ datcnt = readl(context->base + S3C2410_SDIDCNT);
++ datsta = readl(context->base + S3C2410_SDIDSTA);
++ fsta = readl(context->base + S3C2410_SDIFSTA);
++ imask = readl(context->base + S3C2440_SDIIMSK);
++
++ seq_printf(s, "SDICON: 0x%08x\n", con);
++ seq_printf(s, "SDIPRE: 0x%08x\n", pre);
++ seq_printf(s, "SDICmdArg: 0x%08x\n", cmdarg);
++ seq_printf(s, "SDICmdCon: 0x%08x\n", cmdcon);
++ seq_printf(s, "SDICmdSta: 0x%08x\n", cmdsta);
++ seq_printf(s, "SDIRSP0: 0x%08x\n", r0);
++ seq_printf(s, "SDIRSP1: 0x%08x\n", r1);
++ seq_printf(s, "SDIRSP2: 0x%08x\n", r2);
++ seq_printf(s, "SDIRSP3: 0x%08x\n", r3);
++ seq_printf(s, "SDIDTimer: 0x%08x\n", timer);
++ seq_printf(s, "SDIBSize: 0x%08x\n", bsize);
++ seq_printf(s, "SDIDatCon: 0x%08x\n", datcon);
++ seq_printf(s, "SDIDatCnt: 0x%08x\n", datcnt);
++ seq_printf(s, "SDIDatSta: 0x%08x\n", datsta);
++ seq_printf(s, "SDIFSta: 0x%08x\n", fsta);
++ seq_printf(s, "SDIIntMsk: 0x%08x\n", imask);
++ seq_printf(s, "\n");
++
++ seq_printf(s, "Current REQ: \n");
++ req = GET_CURRENT_REQUEST(&context->hcd);
++ if (req == NULL) {
++ seq_printf(s, " No current request\n");
++ } else {
++ seq_printf(s, " Command: %d\n", req->Command);
++ seq_printf(s, " Args: 0x%x\n", req->Argument);
++ seq_printf(s, " Flags: 0x%x\n", req->Flags);
++ seq_printf(s, " %d blocks x %d bytes\n", req->BlockCount, req->BlockLen);
++ seq_printf(s, " %d bytes remaining\n", req->DataRemaining);
++ }
++
++ seq_printf(s, "Context: \n");
++ seq_printf(s, " INT mask: 0x%x\n", context->int_mask);
++ seq_printf(s, " sdio INT: %d\n", context->int_sdio);
++ seq_printf(s, " cmdsta: 0x%x\n", context->cmdsta);
++ seq_printf(s, " dsta: 0x%x\n", context->dsta);
++ seq_printf(s, " fsta: 0x%x\n", context->fsta);
++
++ return 0;
++}
++
++static int s3c24xx_hcd_debugfs_open(struct inode *inode,
++ struct file *file)
++{
++ return single_open(file, s3c24xx_hcd_debugfs_show, NULL);
++}
++
++static const struct file_operations s3c24xx_hcd_debugfs_fops = {
++ .open = s3c24xx_hcd_debugfs_open,
++ .read = seq_read,
++ .llseek = seq_lseek,
++ .release = single_release,
++ .owner = THIS_MODULE,
++};
++
++
++static int s3c24xx_debugfs_init(struct s3c24xx_hcd_context * context)
++{
++ debugfs_dir = debugfs_create_dir("s3c24xx_sdio", NULL);
++
++ debugfs_create_file("registers", 0444, debugfs_dir,
++ (void *)context,
++ &s3c24xx_hcd_debugfs_fops);
++
++ return 0;
++}
++
++#else
++
++static int s3c24xx_debugfs_init(struct s3c24xx_hcd_context * context)
++{
++ return 0;
++}
++
++#endif
++
+static int __init s3c24xx_hcd_init(void)
+{
++ int ret;
++
++ ret = s3c24xx_debugfs_init(&hcd_context);
++ if (!ret) {
++ printk("%s(): debugfs init failed\n", __FUNCTION__);
++ }
++
+ platform_driver_register(&s3c24xx_hcd_sdio);
+
+ return 0;
@@ -1347,11 +1533,11 @@
+
+module_init(s3c24xx_hcd_init);
+module_exit(s3c24xx_hcd_exit);
-Index: linux-2.6.22/drivers/sdio/hcd/s3c24xx/s3c24xx_hcd.h
+Index: linux-2.6.22.5-openmoko-dma-wifi/drivers/sdio/hcd/s3c24xx/s3c24xx_hcd.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/hcd/s3c24xx/s3c24xx_hcd.h 2007-11-29 10:53:03.000000000 +0100
-@@ -0,0 +1,63 @@
++++ linux-2.6.22.5-openmoko-dma-wifi/drivers/sdio/hcd/s3c24xx/s3c24xx_hcd.h 2007-12-07 01:55:33.000000000 +0100
+@@ -0,0 +1,66 @@
+#ifndef __SDIO_S3C24XX_HCD_H___
+#define __SDIO_S3C24XX_HCD_H___
+
@@ -1396,17 +1582,20 @@
+ UINT32 dma_channel;
+ UINT32 dma_en;
+ struct completion dma_complete;
++ struct completion xfer_complete;
+
+ UINT32 int_mask;
+ UINT32 int_sdio; /* Do we have SDIO interrupt on ? */
-+ UINT32 int_sdio_reported;
-+ UINT32 int_sdio_pending;
+
+ UINT32 complete;
+
++ UINT32 cmdsta;
++ UINT32 dsta;
++ UINT32 fsta;
++
+ spinlock_t lock;
+
-+ struct work_struct pio_work;
++ struct work_struct io_work;
+};
+
+SDIO_STATUS s3c24xx_hcd_config(PSDHCD hcd, PSDCONFIG config);
More information about the commitlog
mailing list