Use notifier chain in otg_transceiver instead of own notifier chain. This patch depends on another patch which change otg_transceiver notifier chain to atomic one, please see: https://lkml.org/lkml/2011/1/19/72 Signed-off-by: Yang Ruirui <ruirui.r.yang@xxxxxxxxx> Reviewed-by: Felipe Balbi <balbi@xxxxxx> --- drivers/usb/otg/langwell_otg.c | 7 +++---- include/linux/usb/intel_mid_otg.h | 17 ----------------- 2 files changed, 3 insertions(+), 21 deletions(-) --- linux-2.6.orig/drivers/usb/otg/langwell_otg.c 2010-12-15 15:43:36.000000000 +0800 +++ linux-2.6/drivers/usb/otg/langwell_otg.c 2011-01-20 13:33:28.346040564 +0800 @@ -2124,12 +2124,11 @@ static int langwell_otg_probe(struct pci } init_timer(&lnw->hsm_timer); - ATOMIC_INIT_NOTIFIER_HEAD(&lnw->iotg.iotg_notifier); + ATOMIC_INIT_NOTIFIER_HEAD(&lnw->iotg.otg.notifier); lnw->iotg_notifier.notifier_call = langwell_otg_iotg_notify; - retval = intel_mid_otg_register_notifier(&lnw->iotg, - &lnw->iotg_notifier); + retval = otg_register_notifier(&lnw->iotg.otg, &lnw->iotg_notifier); if (retval) { dev_dbg(lnw->dev, "Failed to register notifier\n"); goto err; @@ -2187,7 +2186,7 @@ static void langwell_otg_remove(struct p flush_workqueue(lnw->qwork); destroy_workqueue(lnw->qwork); } - intel_mid_otg_unregister_notifier(&lnw->iotg, &lnw->iotg_notifier); + otg_unregister_notifier(&lnw->iotg.otg, &lnw->iotg_notifier); langwell_otg_free_timers(); /* disable OTGSC interrupt as OTGSC doesn't change in reset */ --- linux-2.6.orig/include/linux/usb/intel_mid_otg.h 2010-12-15 15:43:38.000000000 +0800 +++ linux-2.6/include/linux/usb/intel_mid_otg.h 2011-01-20 13:23:48.809375229 +0800 @@ -117,9 +117,6 @@ struct intel_mid_otg_xceiv { /* ops to access ulpi */ struct iotg_ulpi_access_ops ulpi_ops; - /* atomic notifier for interrupt context */ - struct atomic_notifier_head iotg_notifier; - /* start/stop USB Host function */ int (*start_host)(struct intel_mid_otg_xceiv *iotg); int (*stop_host)(struct intel_mid_otg_xceiv *iotg); @@ -163,18 +160,4 @@ struct intel_mid_otg_xceiv *otg_to_mid_x #define MID_OTG_NOTIFY_CLIENTADD 0x0009 #define MID_OTG_NOTIFY_CLIENTREMOVE 0x000a -static inline int -intel_mid_otg_register_notifier(struct intel_mid_otg_xceiv *iotg, - struct notifier_block *nb) -{ - return atomic_notifier_chain_register(&iotg->iotg_notifier, nb); -} - -static inline void -intel_mid_otg_unregister_notifier(struct intel_mid_otg_xceiv *iotg, - struct notifier_block *nb) -{ - atomic_notifier_chain_unregister(&iotg->iotg_notifier, nb); -} - #endif /* __INTEL_MID_OTG_H */ -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html