Skip to content
  • Tony Lindgren's avatar
    usb: musb: omap2430: Fix regression caused by driver core change · 8f2279d5
    Tony Lindgren authored
    Commit ddef08dd ("Driver core: wakeup the parent device before trying
    probe") started automatically ensuring the parent device is enabled when
    the child gets probed.
    
    This however caused a regression for MUSB omap2430 interface as the
    runtime PM for the parent device needs the child initialized to access
    the MUSB hardware registers.
    
    Let's delay the enabling of PM runtime for the parent until the child
    has been properly initialized as suggested in an earlier patch by
    Grygorii Strashko <grygorii.strashko@ti.com>.
    
    In addition to delaying pm_runtime_enable, we now also need to make sure
    the parent is enabled during omap2430_musb_init. We also want to propagate
    an error from omap2430_runtime_resume if struct musb is not initialized.
    
    Note that we use pm_runtime_put_noidle here for both the child and parent
    to prevent an extra runtime_suspend/resume cycle.
    
    Let's also add some comments to avoid confusion between the
    two different devices.
    
    Fixes: ddef08dd
    
     ("Driver core: wakeup the parent device before
    trying probe")
    Suggested-by: default avatarGrygorii Strashko <grygorii.strashko@ti.com>
    Reviewed-by: default avatarGrygorii Strashko <grygorii.strashko@ti.com>
    Acked-by: default avatarFelipe Balbi <balbi@ti.com>
    Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
    8f2279d5