From: florian <florian@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Date: Wed, 4 Apr 2012 15:53:09 +0000 (+0000)
Subject: [adm5120] fix support for 2.6.38 kernel
X-Git-Url: https://git.rohieb.name/openwrt.git/commitdiff_plain/002c3c665289b52eb20fd899fd3561e7f9d9e073

[adm5120] fix support for 2.6.38 kernel

This patch fixes the following issues I encountered while compiling kernel 2.6.38.8 for my Omnima Embedded Controller/Edimax BR6104KP:
    - kernel comes up with machine selection during build, even though everything was properly set in menuconfig
    - USB api changes
Successfully built and tested with r29755.

Signed-off-by: Hartmut Knaack <knaack.h [at] gmx.de>

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@31194 3c298f89-4303-0410-b956-a3cf2f4a3e73
---

diff --git a/target/linux/adm5120/patches-2.6.38/010-adm5120_usb_new_api.patch b/target/linux/adm5120/patches-2.6.38/010-adm5120_usb_new_api.patch
new file mode 100644
index 000000000..14c54bbd5
--- /dev/null
+++ b/target/linux/adm5120/patches-2.6.38/010-adm5120_usb_new_api.patch
@@ -0,0 +1,53 @@
+--- a/drivers/usb/host/adm5120-hcd.c
++++ b/drivers/usb/host/adm5120-hcd.c
+@@ -32,6 +32,7 @@
+ #include <linux/list.h>
+ #include <linux/usb.h>
+ #include <linux/usb/otg.h>
++#include <linux/usb/hcd.h>
+ #include <linux/dma-mapping.h>
+ #include <linux/dmapool.h>
+ #include <linux/reboot.h>
+@@ -43,8 +44,6 @@
+ #include <asm/unaligned.h>
+ #include <asm/byteorder.h>
+ 
+-#include "../core/hcd.h"
+-#include "../core/hub.h"
+ 
+ #define DRIVER_VERSION	"0.27.0"
+ #define DRIVER_AUTHOR	"Gabor Juhos <juhosg@openwrt.org>"
+@@ -571,7 +570,7 @@ static int admhc_run(struct admhcd *ahcd
+ 	periodic_reinit(ahcd);
+ 
+ 	/* use rhsc irqs after khubd is fully initialized */
+-	hcd->poll_rh = 1;
++	set_bit(HCD_FLAG_POLL_RH, &hcd->flags);
+ 	hcd->uses_new_polling = 1;
+ 
+ #if 0
+@@ -688,7 +687,7 @@ static irqreturn_t admhc_irq(struct usb_
+ 		 */
+ 		admhc_vdbg(ahcd, "Resume Detect\n");
+ 		admhc_intr_ack(ahcd, ADMHC_INTR_RESI);
+-		hcd->poll_rh = 1;
++		set_bit(HCD_FLAG_POLL_RH, &hcd->flags);
+ 		if (ahcd->autostop) {
+ 			spin_lock(&ahcd->lock);
+ 			admhc_rh_resume(ahcd);
+--- a/drivers/usb/host/adm5120-hub.c
++++ b/drivers/usb/host/adm5120-hub.c
+@@ -106,8 +106,11 @@ admhc_hub_status_data(struct usb_hcd *hc
+ 		}
+ 	}
+ 
+-	hcd->poll_rh = admhc_root_hub_state_changes(ahcd, changed,
+-			any_connected);
++	if (admhc_root_hub_state_changes(ahcd, changed,
++			any_connected))
++		set_bit(HCD_FLAG_POLL_RH, &hcd->flags);
++	else
++		clear_bit(HCD_FLAG_POLL_RH, &hcd->flags);
+ 
+ done:
+ 	spin_unlock_irqrestore(&ahcd->lock, flags);
diff --git a/target/linux/adm5120/router_be/config-2.6.38 b/target/linux/adm5120/router_be/config-2.6.38
index be61186bf..d2d20da66 100644
--- a/target/linux/adm5120/router_be/config-2.6.38
+++ b/target/linux/adm5120/router_be/config-2.6.38
@@ -48,6 +48,7 @@ CONFIG_ARCH_SUSPEND_POSSIBLE=y
 CONFIG_ARM_AMBA=y
 # CONFIG_ARM_SP805_WATCHDOG is not set
 CONFIG_ATA=m
+# CONFIG_ATH79 is not set
 # CONFIG_BCM47XX is not set
 # CONFIG_BCM63XX is not set
 CONFIG_BITREVERSE=y
diff --git a/target/linux/adm5120/router_le/config-2.6.38 b/target/linux/adm5120/router_le/config-2.6.38
index be61186bf..d2d20da66 100644
--- a/target/linux/adm5120/router_le/config-2.6.38
+++ b/target/linux/adm5120/router_le/config-2.6.38
@@ -48,6 +48,7 @@ CONFIG_ARCH_SUSPEND_POSSIBLE=y
 CONFIG_ARM_AMBA=y
 # CONFIG_ARM_SP805_WATCHDOG is not set
 CONFIG_ATA=m
+# CONFIG_ATH79 is not set
 # CONFIG_BCM47XX is not set
 # CONFIG_BCM63XX is not set
 CONFIG_BITREVERSE=y