Skip to content
  • Tony Lindgren's avatar
    phy: mapphone-mdm6600: Add USB PHY driver for MDM6600 on Droid 4 · 5d1ebbda
    Tony Lindgren authored
    
    
    Let's add support for the GPIO controlled USB PHY on the MDM6600 modem.
    It is used on some Motorola Mapphone series of phones and tablets such
    as Droid 4.
    
    The MDM6600 is hardwired to the first OHCI port in the Droid 4 case, and
    is controlled by several GPIOs. The USB PHY is integrated into the MDM6600
    device it seems. We know this as we get L3 errors from omap-usb-host if
    trying to use the PHY before MDM6600 is configured.
    
    The GPIOs controlling MDM6600 are used to power device on and off, to
    configure the USB start-up mode (normal mode versus USB flashing), and
    they also tell the state of the MDM6600 device.
    
    The two start-up mode GPIOs are dual-purposed and used for out of band
    (OOB) wake-up for USB and TS 27.010 serial mux. But we need to configure
    the USB start-up mode first to get MDM6600 booted in the right mode to
    be usable in the first place.
    
    Note that the Motorola Mapphone Linux kernel tree has a "radio-ctrl"
    driver for modems. But it really does not control the radio at all, it
    just controls the modem power and start-up mode for USB. So I came to
    the conclusion that we're better off having this done in the USB PHY
    driver. For adding support for USB flashing mode, we can later on add
    a kernel module option for flash_mode=1 or something similar.
    
    Also note that currently there is no PM runtime support for the OHCI
    on omap variant SoCs. So for low(er) power idle states, currenty both
    ohci-platform and phy-mapphone-mdm6600 must be unloaded or unbound.
    
    For reference here is what I measured for total power consumption on
    an idle Droid 4 with and without USB related MDM6600 modules:
    
    idle lcd off	phy-mapphone-mdm6600	ohci-platform
    153mW		284mW			344mW
    
    So it seems that MDM6600 is currently not yet idling even with it's
    radio turned off, but that's something that is beyond the control of
    this USB PHY driver. This patch does get us to the point where modem
    data and GPS are usable with libqmi and ModemManager for example.
    Voice calls need more audio driver work.
    
    Cc: devicetree@vger.kernel.org
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Marcel Partap <mpartap@gmx.net>
    Cc: Michael Scott <michael.scott@linaro.org>
    Cc: Rob Herring <robh+dt@kernel.org>
    Reviewed-by: default avatarRob Herring <robh@kernel.org>
    Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
    Signed-off-by: default avatarKishon Vijay Abraham I <kishon@ti.com>
    5d1ebbda