• Tony Lindgren's avatar
    phy: mapphone-mdm6600: Improve phy related runtime PM calls · 2ad2af08
    Tony Lindgren authored
    I noticed that phy_pm_runtime_get_sync() and phy_pm_runtime_put() are not
    currently doing anything for phy-mapphone-mdm6600, only the sysfs interface
    for works for "auto" and "on".
    
    This is because of the shared GPIO pins between mdm6600 USB port and n_gsm
    port. We have not enabled runtime PM for the phy driver until after we've
    booted up mdm6600 properly to the USB mode. Otherwise phy_create() would
    have called pm_runtime_enable() and pm_runtime_no_callbacks() automatically
    on init.
    
    Let's fix this by registering the phy a bit later after we've powered up
    the mdm6600 USB port.
    
    And as the PM runtime support is only needed for the n_gsm mode and not for
    USB, we can allow the device to idle between phy_mdm6600_power_on() and
    phy_mdm6600_power_off(). Note that for suspend, runtime_pm is already
    disabled for the phy so we need to check for pm_runtime_enabled().
    
    Cc: Johan Hovold <jhovold@gmail.com>
    Cc: Pavel Machek <pavel@ucw.cz>
    Cc: Sebastian Reichel <sre@kernel.org>
    Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
    Signed-off-by: default avatarKishon Vijay Abraham I <kishon@ti.com>
    2ad2af08
phy-mapphone-mdm6600.c 17.7 KB