• Tony Lindgren's avatar
    phy: mapphone-mdm6600: Add runtime PM support for n_gsm on USB suspend · f7f50b2a
    Tony Lindgren authored
    We can suspend the mdm6600 over USB via sysfs and then mdm6600 enters
    a low-power idle mode. In the low-power mode, mdm6600 radio and n_gsm
    uart are functional but we need to use USB mode0 GPIO pin to send a
    wake-up pulse to the modem to talk with it over n_gsm.
    
    As the GPIO mode0 line is dual purposed and and also needed by the
    USB PHY driver to boot mdm6600 into the correct USB mode, let's also
    manage the wake-up GPIO in the USB PHY driver. For the USB PHY idle,
    there does not anything specific we need to do for runtime PM after
    getting the PHY configured. The PHY framework already idles the USB
    PHY when not in use separately from the mdm6600 state.
    
    It seems that it takes about 100 - 200ms for mdm6600 to wake up from
    the low-power idle mode. And then mdm6600 stays awake about 1.2s until
    it needs to be kicked again. The mdm6600 status GPIO pins don't seem
    to change state when mdm6600 changes between normal and idle mode.
    
    Let's manage the mdm6600 mode with runtime PM. If phy-mapphone-mdm6600
    sysfs entry for power/control is set to "on", we keep mdm6600 out of
    idle by kicking the GPIO line. If the entry is set to "auto" we let
    mdm6600 enter low-power state.
    
    Cc: Marcel Partap <mpartap@gmx.net>
    Cc: Merlijn Wajer <merlijn@wizzup.org>
    Cc: Michael Scott <hashcode0f@gmail.com>
    Cc: NeKit <nekit1000@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>
    f7f50b2a
phy-mapphone-mdm6600.c 16.8 KB