• Tony Lindgren's avatar
    usb: musb: core: Fix pm runtime for deferred probe · 4d055910
    Tony Lindgren authored
    If musb_init_controller fails at musb_platform_init, we have already
    called pm_runtime_irq_safe for musb and that causes the pm runtime count
    to be enabled for parent before the parent has completed initialization.
    This causes pm to stop working as on unload nothing gets idled.
    
    This issue can be reproduced at least with:
    
    # modprobe omap2430
    HS USB OTG: no transceiver configured
    musb-hdrc musb-hdrc.0.auto: musb_init_controller failed with status -517
    # modprobe phy-twl4030-usb
    # rmmod omap2430
    
    And after the steps above omap2430 will block deeper idle states on
    omap3.
    
    To fix this, let's not enable pm runtime until we need to and the
    parent has been initialized. Note that this does not fix the issue of
    PM being broken for musb during runtime.
    Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
    Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
    4d055910
musb_core.c 70.5 KB