Skip to content
  • Stephan Gerhold's avatar
    phy: qcom-usb-hs: Fix extcon double register after power cycle · 64f86b99
    Stephan Gerhold authored
    Commit f0b5c2c9 ("phy: qcom-usb-hs: Replace the extcon API")
    switched from extcon_register_notifier() to the resource-managed
    API, i.e. devm_extcon_register_notifier().
    
    This is problematic in this case, because the extcon notifier
    is dynamically registered/unregistered whenever the PHY is powered
    on/off. The resource-managed API does not unregister the notifier
    until the driver is removed, so as soon as the PHY is power cycled,
    attempting to register the notifier again results in:
    
    	double register detected
    	WARNING: CPU: 1 PID: 182 at kernel/notifier.c:26 notifier_chain_register+0x74/0xa0
    	Call trace:
    	 ...
    	 extcon_register_notifier+0x74/0xb8
    	 devm_extcon_register_notifier+0x54/0xb8
    	 qcom_usb_hs_phy_power_on+0x1fc/0x208
    	 ...
    
    ... and USB stops working after plugging the cable out and in
    another time.
    
    The easiest way to fix this is to make a partial revert of
    commit f0b5c2c9 ("phy: qcom-usb-hs: Replace the extcon API")
    and avoid using the resource-managed API in this case.
    
    Fixes: f0b5c2c9
    
     ("phy: qcom-usb-hs: Replace the extcon API")
    Signed-off-by: default avatarStephan Gerhold <stephan@gerhold.net>
    Signed-off-by: default avatarKishon Vijay Abraham I <kishon@ti.com>
    64f86b99