lkml.org 
[lkml]   [2019]   [Dec]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v3 12/16] usb: phy: tegra: Move utmip_pad_count checking under lock
    Date
    It's unlikely that two drivers could manage PHY's state simultaneously in
    practice, nevertheless the utmip_pad_count checking should be under lock,
    for consistency.

    Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
    ---
    drivers/usb/phy/phy-tegra-usb.c | 21 +++++++++++----------
    1 file changed, 11 insertions(+), 10 deletions(-)

    diff --git a/drivers/usb/phy/phy-tegra-usb.c b/drivers/usb/phy/phy-tegra-usb.c
    index f7e7df812f83..72825d207840 100644
    --- a/drivers/usb/phy/phy-tegra-usb.c
    +++ b/drivers/usb/phy/phy-tegra-usb.c
    @@ -351,30 +351,31 @@ static int utmip_pad_power_off(struct tegra_usb_phy *phy)
    void __iomem *base = phy->pad_regs;
    unsigned long flags;
    u32 val;
    - int err;
    + int ret;
    +
    + ret = clk_prepare_enable(phy->pad_clk);
    + if (ret)
    + return ret;
    +
    + spin_lock_irqsave(&utmip_pad_lock, flags);

    if (!utmip_pad_count) {
    dev_err(phy->u_phy.dev, "UTMIP pad already powered off\n");
    - return -EINVAL;
    + ret = -EINVAL;
    + goto ulock;
    }

    - err = clk_prepare_enable(phy->pad_clk);
    - if (err)
    - return err;
    -
    - spin_lock_irqsave(&utmip_pad_lock, flags);
    -
    if (--utmip_pad_count == 0) {
    val = readl_relaxed(base + UTMIP_BIAS_CFG0);
    val |= UTMIP_OTGPD | UTMIP_BIASPD;
    writel_relaxed(val, base + UTMIP_BIAS_CFG0);
    }
    -
    +ulock:
    spin_unlock_irqrestore(&utmip_pad_lock, flags);

    clk_disable_unprepare(phy->pad_clk);

    - return 0;
    + return ret;
    }

    static int utmi_wait_register(void __iomem *reg, u32 mask, u32 result)
    --
    2.24.0
    \
     
     \ /
      Last update: 2019-12-28 21:37    [W:3.564 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site