--- a/drivers/usb/host/adm5120-hcd.c +++ b/drivers/usb/host/adm5120-hcd.c @@ -32,6 +32,7 @@ #include #include #include +#include #include #include #include @@ -43,8 +44,6 @@ #include #include -#include "../core/hcd.h" -#include "../core/hub.h" #define DRIVER_VERSION "0.27.0" #define DRIVER_AUTHOR "Gabor Juhos " @@ -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);