lkml.org 
[lkml]   [2021]   [Jul]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 6/9] phy: phy-mtk-ufs: use clock bulk to get clocks
    Date
    Use clock bulk helpers to get/enable/disable clocks

    Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
    ---
    drivers/phy/mediatek/phy-mtk-ufs.c | 44 ++++++++----------------------
    1 file changed, 11 insertions(+), 33 deletions(-)

    diff --git a/drivers/phy/mediatek/phy-mtk-ufs.c b/drivers/phy/mediatek/phy-mtk-ufs.c
    index 769b00b038d8..a6af06941203 100644
    --- a/drivers/phy/mediatek/phy-mtk-ufs.c
    +++ b/drivers/phy/mediatek/phy-mtk-ufs.c
    @@ -31,11 +31,12 @@
    #define FRC_CDR_ISO_EN BIT(19)
    #define CDR_ISO_EN BIT(20)

    +#define UFSPHY_CLKS_CNT 2
    +
    struct ufs_mtk_phy {
    struct device *dev;
    void __iomem *mmio;
    - struct clk *mp_clk;
    - struct clk *unipro_clk;
    + struct clk_bulk_data clks[UFSPHY_CLKS_CNT];
    };

    static inline u32 mphy_readl(struct ufs_mtk_phy *phy, u32 reg)
    @@ -74,20 +75,11 @@ static struct ufs_mtk_phy *get_ufs_mtk_phy(struct phy *generic_phy)
    static int ufs_mtk_phy_clk_init(struct ufs_mtk_phy *phy)
    {
    struct device *dev = phy->dev;
    + struct clk_bulk_data *clks = phy->clks;

    - phy->unipro_clk = devm_clk_get(dev, "unipro");
    - if (IS_ERR(phy->unipro_clk)) {
    - dev_err(dev, "failed to get clock: unipro");
    - return PTR_ERR(phy->unipro_clk);
    - }
    -
    - phy->mp_clk = devm_clk_get(dev, "mp");
    - if (IS_ERR(phy->mp_clk)) {
    - dev_err(dev, "failed to get clock: mp");
    - return PTR_ERR(phy->mp_clk);
    - }
    -
    - return 0;
    + clks[0].id = "unipro";
    + clks[1].id = "mp";
    + return devm_clk_bulk_get(dev, UFSPHY_CLKS_CNT, clks);
    }

    static void ufs_mtk_phy_set_active(struct ufs_mtk_phy *phy)
    @@ -150,26 +142,13 @@ static int ufs_mtk_phy_power_on(struct phy *generic_phy)
    struct ufs_mtk_phy *phy = get_ufs_mtk_phy(generic_phy);
    int ret;

    - ret = clk_prepare_enable(phy->unipro_clk);
    - if (ret) {
    - dev_err(phy->dev, "unipro_clk enable failed %d\n", ret);
    - goto out;
    - }
    -
    - ret = clk_prepare_enable(phy->mp_clk);
    - if (ret) {
    - dev_err(phy->dev, "mp_clk enable failed %d\n", ret);
    - goto out_unprepare_unipro_clk;
    - }
    + ret = clk_bulk_prepare_enable(UFSPHY_CLKS_CNT, phy->clks);
    + if (ret)
    + return ret;

    ufs_mtk_phy_set_active(phy);

    return 0;
    -
    -out_unprepare_unipro_clk:
    - clk_disable_unprepare(phy->unipro_clk);
    -out:
    - return ret;
    }

    static int ufs_mtk_phy_power_off(struct phy *generic_phy)
    @@ -178,8 +157,7 @@ static int ufs_mtk_phy_power_off(struct phy *generic_phy)

    ufs_mtk_phy_set_deep_hibern(phy);

    - clk_disable_unprepare(phy->unipro_clk);
    - clk_disable_unprepare(phy->mp_clk);
    + clk_bulk_disable_unprepare(UFSPHY_CLKS_CNT, phy->clks);

    return 0;
    }
    --
    2.18.0
    \
     
     \ /
      Last update: 2021-07-28 09:59    [W:4.212 / U:0.308 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site