1
0
mirror of git://projects.qi-hardware.com/openwrt-xburst.git synced 2024-12-26 19:11:45 +02:00
openwrt-xburst/target/linux/adm5120/patches-2.6.38/010-adm5120_usb_new_api.patch
florian 002c3c6652 [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
2012-04-04 15:53:09 +00:00

54 lines
1.5 KiB
Diff

--- 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);