diff --git a/target/linux/adm5120/patches-2.6.27/800-usb_automatically_enable_rhsc_interrupt.patch b/target/linux/adm5120/patches-2.6.27/800-usb_automatically_enable_rhsc_interrupt.patch
new file mode 100644
index 0000000000000000000000000000000000000000..5e99fffc5152056ec7233a7dbb3db8185a41ab7d
--- /dev/null
+++ b/target/linux/adm5120/patches-2.6.27/800-usb_automatically_enable_rhsc_interrupt.patch
@@ -0,0 +1,69 @@
+--- a/drivers/usb/host/adm5120-drv.c
++++ b/drivers/usb/host/adm5120-drv.c
+@@ -174,7 +174,6 @@
+ 	 */
+ 	.hub_status_data =	admhc_hub_status_data,
+ 	.hub_control =		admhc_hub_control,
+-	.hub_irq_enable =	admhc_hub_irq_enable,
+ #ifdef CONFIG_PM
+ 	.bus_suspend =		admhc_bus_suspend,
+ 	.bus_resume =		admhc_bus_resume,
+--- a/drivers/usb/host/adm5120-hub.c
++++ b/drivers/usb/host/adm5120-hub.c
+@@ -63,20 +63,6 @@
+ 
+ /*-------------------------------------------------------------------------*/
+ 
+-/* hcd->hub_irq_enable() */
+-static void admhc_hub_irq_enable(struct usb_hcd *hcd)
+-{
+-	struct admhcd	*ahcd = hcd_to_admhcd(hcd);
+-
+-	spin_lock_irq(&ahcd->lock);
+-	if (!ahcd->autostop)
+-		del_timer(&hcd->rh_timer);	/* Prevent next poll */
+-	admhc_intr_enable(ahcd, ADMHC_INTR_INSM);
+-	spin_unlock_irq(&ahcd->lock);
+-}
+-
+-/*-------------------------------------------------------------------------*/
+-
+ /* build "status change" packet (one or two bytes) from HC registers */
+ 
+ static int
+--- a/drivers/usb/host/adm5120-pm.c
++++ b/drivers/usb/host/adm5120-pm.c
+@@ -432,13 +432,17 @@
+ static int admhc_root_hub_state_changes(struct admhcd *ahcd, int changed,
+ 		int any_connected)
+ {
+-	int	poll_rh = 1;
+-
+-	/* keep on polling until RHSC is enabled */
++	/* If INSM is enabled, don't poll */
+ 	if (admhc_readl(ahcd, &ahcd->regs->int_enable) & ADMHC_INTR_INSM)
+-		poll_rh = 0;
++		return 0;
++
++	/* If no status changes are pending, enable status-change interrupts */
++	if (!changed) {
++		admhc_intr_enable(ahcd, ADMHC_INTR_INSM);
++		return 0;
++	}
+ 
+-	return poll_rh;
++	return 1;
+ }
+ 
+ #endif	/* CONFIG_PM */
+--- a/drivers/usb/host/adm5120-hcd.c
++++ b/drivers/usb/host/adm5120-hcd.c
+@@ -46,7 +46,7 @@
+ #include "../core/hcd.h"
+ #include "../core/hub.h"
+ 
+-#define DRIVER_VERSION	"0.25.0"
++#define DRIVER_VERSION	"0.27.0"
+ #define DRIVER_AUTHOR	"Gabor Juhos <juhosg@openwrt.org>"
+ #define DRIVER_DESC	"ADMtek USB 1.1 Host Controller Driver"
+