phy: rockchip-inno-usb2: correct clk_ops callback
authorWilliam Wu <wulf@rock-chips.com>
Tue, 15 Nov 2016 03:54:06 +0000 (11:54 +0800)
committerWilliam Wu <wulf@rock-chips.com>
Tue, 27 Dec 2016 02:51:30 +0000 (10:51 +0800)
Since we needs to delay ~1ms to wait for 480MHz output clock
of USB2 PHY to become stable after turn on it, the delay time
is pretty long for something that's supposed to be "atomic"
like a clk_enable(). Consider that clk_enable() will disable
interrupt and that a 1ms interrupt latency is not sensible.

The 480MHz output clock should be handled in prepare callbacks
which support gate a clk if the operation may sleep.

Change-Id: I943e17f8a97d1229fefd8c1ada706e0c450c98eb
Signed-off-by: William Wu <wulf@rock-chips.com>
Reviewed-by: Douglas Anderson <dianders@chromium.org>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
drivers/phy/phy-rockchip-inno-usb2.c

index 5f8597ab0fa13a71a09d8a810bd1c5f33f506a18..1f1846db4994513b334e2413223c75d2e29194eb 100644 (file)
@@ -286,7 +286,7 @@ static inline bool property_enabled(struct rockchip_usb2phy *rphy,
        return tmp == reg->enable;
 }
 
-static int rockchip_usb2phy_clk480m_enable(struct clk_hw *hw)
+static int rockchip_usb2phy_clk480m_prepare(struct clk_hw *hw)
 {
        struct rockchip_usb2phy *rphy =
                container_of(hw, struct rockchip_usb2phy, clk480m_hw);
@@ -305,7 +305,7 @@ static int rockchip_usb2phy_clk480m_enable(struct clk_hw *hw)
        return 0;
 }
 
-static void rockchip_usb2phy_clk480m_disable(struct clk_hw *hw)
+static void rockchip_usb2phy_clk480m_unprepare(struct clk_hw *hw)
 {
        struct rockchip_usb2phy *rphy =
                container_of(hw, struct rockchip_usb2phy, clk480m_hw);
@@ -314,7 +314,7 @@ static void rockchip_usb2phy_clk480m_disable(struct clk_hw *hw)
        property_enable(rphy, &rphy->phy_cfg->clkout_ctl, false);
 }
 
-static int rockchip_usb2phy_clk480m_enabled(struct clk_hw *hw)
+static int rockchip_usb2phy_clk480m_prepared(struct clk_hw *hw)
 {
        struct rockchip_usb2phy *rphy =
                container_of(hw, struct rockchip_usb2phy, clk480m_hw);
@@ -330,9 +330,9 @@ rockchip_usb2phy_clk480m_recalc_rate(struct clk_hw *hw,
 }
 
 static const struct clk_ops rockchip_usb2phy_clkout_ops = {
-       .enable = rockchip_usb2phy_clk480m_enable,
-       .disable = rockchip_usb2phy_clk480m_disable,
-       .is_enabled = rockchip_usb2phy_clk480m_enabled,
+       .prepare = rockchip_usb2phy_clk480m_prepare,
+       .unprepare = rockchip_usb2phy_clk480m_unprepare,
+       .is_prepared = rockchip_usb2phy_clk480m_prepared,
        .recalc_rate = rockchip_usb2phy_clk480m_recalc_rate,
 };