• Srinivas Kandagatla's avatar
    usb: phy: msm: Do not do runtime pm if the phy is not idle · 508ccea1
    Srinivas Kandagatla authored
    Use case is when the phy is configured in host mode and a usb device is
    attached to board before bootup. On bootup, with the existing code and
    runtime pm enabled, the driver would decrement the pm usage count
    without checking the current state of the phy. This pm usage count
    decrement would trigger the runtime pm which than would abort the
    usb enumeration which was in progress. In my case a usb stick gets
    detected and then immediatly the driver goes to low power mode which is
    not correct.
    
    log:
    [    1.631412] msm_hsusb_host 12520000.usb: EHCI Host Controller
    [    1.636556] msm_hsusb_host 12520000.usb: new USB bus registered, assigned bus number 1
    [    1.642563] msm_hsusb_host 12520000.usb: irq 220, io mem 0x12520000
    [    1.658197] msm_hsusb_host 12520000.usb: USB 2.0 started, EHCI 1.00
    [    1.659473] hub 1-0:1.0: USB hub found
    [    1.663415] hub 1-0:1.0: 1 port detected
    ...
    [    1.973352] usb 1-1: new high-speed USB device number 2 using msm_hsusb_host
    [    2.107707] usb-storage 1-1:1.0: USB Mass Storage device detected
    [    2.108993] scsi0 : usb-storage 1-1:1.0
    [    2.678341] msm_otg 12520000.phy: USB in low power mode
    [    3.168977] usb 1-1: USB disconnect, device number 2
    
    This issue was detected on IFC6410 board.
    
    This patch fixes the intial runtime pm trigger by checking the phy
    state and decrementing the pm use count only when the phy state is IDLE.
    Signed-off-by: default avatarSrinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
    508ccea1
phy-msm-usb.c 44.4 KB