From nobody Sun Sep 22 04:34:36 2024 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7FDA6C433EF for ; Thu, 19 May 2022 07:17:30 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234675AbiESHRY (ORCPT ); Thu, 19 May 2022 03:17:24 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55404 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234527AbiESHQw (ORCPT ); Thu, 19 May 2022 03:16:52 -0400 Received: from mail-pl1-x630.google.com (mail-pl1-x630.google.com [IPv6:2607:f8b0:4864:20::630]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 574A669CC0 for ; Thu, 19 May 2022 00:16:49 -0700 (PDT) Received: by mail-pl1-x630.google.com with SMTP id n18so4018774plg.5 for ; Thu, 19 May 2022 00:16:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=w0FBumL9+mWe8S0LJRfYK91TOH/q7dfRZxbedhixRpU=; b=fxaAchKDc8EZRX6tlPQFebbZxFiN0hRMjjKrPn4XNk4qmomWUQ9836JhHJxY7NWLnK z9aGKt16PlQTrHMLAGV1NrpKPZzhLdCz8wZyq3hRdbXLmPHsTFyzKPmH4VEngHVj9Fip lSc7PJahsCT5/lOkkUCAIGzVQ0/VjBXxNiOVw= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=w0FBumL9+mWe8S0LJRfYK91TOH/q7dfRZxbedhixRpU=; b=iyygdvFQQv6pRyEubeGcdY6Aplh/9m6/mqdu0gIBCY6q+oVDpQEeq7LpNSGENgGKeV rRFV4S7cbfSP3gIH6NCgq8nw9AGELB3pNEV9QLAMYCug3pWJw3WOHWNR1vttzcH0cpEL hL0TLc+OhhwDJLVYDMyp2C/OBjV8CwiXjHSyxDLYhsVXiQSz+b4qbePrgeHQUQo6zFPk 53szBKyiSWo7vaB169BPhJHz91hegPswj2YRPqBInfrlr/GalT6UvqNjYxG7DsFGiGLi R88XZ+dP8pxJNeB7wd4B0gooLoODy0AnlcRQGwqyuZkcAXmn2n2AwcBWfH90TgAAtV+c sfuw== X-Gm-Message-State: AOAM533UgVQcalgj/POqJIYQCNb9JiPkRy5A6JdxFt6jBRAZucpeoP5m DhPg4plTfAVHg8J8E31LINZEDg== X-Google-Smtp-Source: ABdhPJzICUc18q3uxvm3a35Yvvbw2Ug7PVxLX0m/ltJm2Hi/lEvqGh5wCApJLpYaJvlmV+i6HYisPg== X-Received: by 2002:a17:90a:7026:b0:1df:4b6b:53d9 with SMTP id f35-20020a17090a702600b001df4b6b53d9mr3710746pjk.157.1652944608504; Thu, 19 May 2022 00:16:48 -0700 (PDT) Received: from wenstp920.tpe.corp.google.com ([2401:fa00:1:10:2338:2871:9320:bed0]) by smtp.gmail.com with ESMTPSA id q2-20020a170902dac200b00160c970eeb7sm2972945plx.234.2022.05.19.00.16.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 19 May 2022 00:16:48 -0700 (PDT) From: Chen-Yu Tsai To: Michael Turquette , Stephen Boyd Cc: Chen-Yu Tsai , Chun-Jie Chen , Miles Chen , Rex-BC Chen , Matthias Brugger , AngeloGioacchino Del Regno , linux-clk@vger.kernel.org, linux-mediatek@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 4/5] clk: mediatek: Switch to clk_hw provider APIs Date: Thu, 19 May 2022 15:16:09 +0800 Message-Id: <20220519071610.423372-5-wenst@chromium.org> X-Mailer: git-send-email 2.36.1.124.g0e6072fb45-goog In-Reply-To: <20220519071610.423372-1-wenst@chromium.org> References: <20220519071610.423372-1-wenst@chromium.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" As part of the effort to improve the MediaTek clk drivers, the next step is to switch from the old 'struct clk' clk prodivder APIs to the new 'struct clk_hw' ones. In a previous patch, 'struct clk_onecell_data' was replaced with 'struct clk_hw_onecell_data', with (struct clk_hw *)->clk and __clk_get_hw() bridging the new data structures and old code. Now switch from the old 'clk_(un)?register*()' APIs to the new 'clk_hw_(un)?register*()' ones. This is done with the coccinelle script below. Unfortunately this also leaves clk-mt8173.c with a compile error that would need a coccinelle script longer than the actual diff to fix. This last part is fixed up by hand. // Fix prototypes @@ identifier F =3D~ "^mtk_clk_register_"; @@ - struct clk * + struct clk_hw * F(...); // Fix calls to mtk_clk_register_ @ reg @ identifier F =3D~ "^mtk_clk_register_"; identifier FS =3D~ "^mtk_clk_register_[a-z_]*s"; identifier I; expression clk_data; expression E; @@ FS(...) { ... - struct clk *I; + struct clk_hw *hw; ... for (...;...;...) { ... ( - I + hw =3D - clk_register_fixed_rate( + clk_hw_register_fixed_rate( ... ); | - I + hw =3D - clk_register_fixed_factor( + clk_hw_register_fixed_factor( ... ); | - I + hw =3D - clk_register_divider( + clk_hw_register_divider( ... ); | - I + hw =3D F(...); ) ... if ( - IS_ERR(I) + IS_ERR(hw) ) { pr_err(..., - I + hw ,...); ... } - clk_data->hws[E] =3D __clk_get_hw(I); + clk_data->hws[E] =3D hw; } ... } @ depends on reg @ identifier reg.I; @@ return PTR_ERR( - I + hw ); // Fix mtk_clk_register_composite to return clk_hw instead of clk @@ identifier I, R; expression E; @@ - struct clk * + struct clk_hw * mtk_clk_register_composite(...) { ... - struct clk *I; + struct clk_hw *hw; ... - I =3D clk_register_composite( + hw =3D clk_hw_register_composite( ...); if (IS_ERR( - I + hw )) { ... R =3D PTR_ERR( - I + hw ); ... } return - I + hw ; ... } // Fix other mtk_clk_register_ to return clk_hw instead of clk @@ identifier F =3D~ "^mtk_clk_register_"; identifier I, D, C; expression E; @@ - struct clk * + struct clk_hw * F(...) { ... - struct clk *I; + int ret; ... - I =3D clk_register(D, E); + ret =3D clk_hw_register(D, E); ... ( - if (IS_ERR(I)) + if (ret) { kfree(C); + return ERR_PTR(ret); + } | - if (IS_ERR(I)) + if (ret) { kfree(C); - return I; + return ERR_PTR(ret); } ) - return I; + return E; } // Fix mtk_clk_unregister_ to take clk_hw instead of clk @@ identifier F =3D~ "^mtk_clk_unregister_"; identifier I, I2; @@ static void F( - struct clk *I + struct clk_hw *I2 ) { ... - struct clk_hw *I2; ... - I2 =3D __clk_get_hw(I); ... ( - clk_unregister(I); + clk_hw_unregister(I2); | - clk_unregister_composite(I); + clk_hw_unregister_composite(I2); ) ... } // Fix calls to mtk_clk_unregister_*() @@ identifier F =3D~ "^mtk_clk_unregister_"; expression I; expression E; @@ - F(I->hws[E]->clk); + F(I->hws[E]); Signed-off-by: Chen-Yu Tsai Reviewed-by: Miles Chen Reviewed-by: AngeloGioacchino Del Regno Tested-by: AngeloGioacchino Del Regno Tested-by: Miles Chen --- drivers/clk/mediatek/clk-apmixed.c | 12 +++-- drivers/clk/mediatek/clk-cpumux.c | 36 +++++++------- drivers/clk/mediatek/clk-gate.c | 36 +++++++------- drivers/clk/mediatek/clk-mt8173.c | 12 ++--- drivers/clk/mediatek/clk-mtk.c | 76 +++++++++++++++--------------- drivers/clk/mediatek/clk-mtk.h | 2 +- drivers/clk/mediatek/clk-mux.c | 36 +++++++------- drivers/clk/mediatek/clk-pll.c | 35 +++++++------- 8 files changed, 123 insertions(+), 122 deletions(-) diff --git a/drivers/clk/mediatek/clk-apmixed.c b/drivers/clk/mediatek/clk-= apmixed.c index 06400c043fe7..fc3d4146f482 100644 --- a/drivers/clk/mediatek/clk-apmixed.c +++ b/drivers/clk/mediatek/clk-apmixed.c @@ -70,12 +70,12 @@ static const struct clk_ops mtk_ref2usb_tx_ops =3D { .unprepare =3D mtk_ref2usb_tx_unprepare, }; =20 -struct clk * __init mtk_clk_register_ref2usb_tx(const char *name, +struct clk_hw * __init mtk_clk_register_ref2usb_tx(const char *name, const char *parent_name, void __iomem *reg) { struct mtk_ref2usb_tx *tx; struct clk_init_data init =3D {}; - struct clk *clk; + int ret; =20 tx =3D kzalloc(sizeof(*tx), GFP_KERNEL); if (!tx) @@ -89,12 +89,14 @@ struct clk * __init mtk_clk_register_ref2usb_tx(const c= har *name, init.parent_names =3D &parent_name; init.num_parents =3D 1; =20 - clk =3D clk_register(NULL, &tx->hw); + ret =3D clk_hw_register(NULL, &tx->hw); =20 - if (IS_ERR(clk)) + if (ret) { kfree(tx); + return ERR_PTR(ret); + } =20 - return clk; + return &tx->hw; } =20 MODULE_LICENSE("GPL"); diff --git a/drivers/clk/mediatek/clk-cpumux.c b/drivers/clk/mediatek/clk-c= pumux.c index 8e80df43e356..2b5d48591738 100644 --- a/drivers/clk/mediatek/clk-cpumux.c +++ b/drivers/clk/mediatek/clk-cpumux.c @@ -57,12 +57,12 @@ static const struct clk_ops clk_cpumux_ops =3D { .set_parent =3D clk_cpumux_set_parent, }; =20 -static struct clk * +static struct clk_hw * mtk_clk_register_cpumux(const struct mtk_composite *mux, struct regmap *regmap) { struct mtk_clk_cpumux *cpumux; - struct clk *clk; + int ret; struct clk_init_data init; =20 cpumux =3D kzalloc(sizeof(*cpumux), GFP_KERNEL); @@ -81,25 +81,24 @@ mtk_clk_register_cpumux(const struct mtk_composite *mux, cpumux->regmap =3D regmap; cpumux->hw.init =3D &init; =20 - clk =3D clk_register(NULL, &cpumux->hw); - if (IS_ERR(clk)) + ret =3D clk_hw_register(NULL, &cpumux->hw); + if (ret) { kfree(cpumux); + return ERR_PTR(ret); + } =20 - return clk; + return &cpumux->hw; } =20 -static void mtk_clk_unregister_cpumux(struct clk *clk) +static void mtk_clk_unregister_cpumux(struct clk_hw *hw) { struct mtk_clk_cpumux *cpumux; - struct clk_hw *hw; - - hw =3D __clk_get_hw(clk); if (!hw) return; =20 cpumux =3D to_mtk_clk_cpumux(hw); =20 - clk_unregister(clk); + clk_hw_unregister(hw); kfree(cpumux); } =20 @@ -108,7 +107,7 @@ int mtk_clk_register_cpumuxes(struct device_node *node, struct clk_hw_onecell_data *clk_data) { int i; - struct clk *clk; + struct clk_hw *hw; struct regmap *regmap; =20 regmap =3D device_node_to_regmap(node); @@ -126,13 +125,14 @@ int mtk_clk_register_cpumuxes(struct device_node *nod= e, continue; } =20 - clk =3D mtk_clk_register_cpumux(mux, regmap); - if (IS_ERR(clk)) { - pr_err("Failed to register clk %s: %pe\n", mux->name, clk); + hw =3D mtk_clk_register_cpumux(mux, regmap); + if (IS_ERR(hw)) { + pr_err("Failed to register clk %s: %pe\n", mux->name, + hw); goto err; } =20 - clk_data->hws[mux->id] =3D __clk_get_hw(clk); + clk_data->hws[mux->id] =3D hw; } =20 return 0; @@ -144,11 +144,11 @@ int mtk_clk_register_cpumuxes(struct device_node *nod= e, if (IS_ERR_OR_NULL(clk_data->hws[mux->id])) continue; =20 - mtk_clk_unregister_cpumux(clk_data->hws[mux->id]->clk); + mtk_clk_unregister_cpumux(clk_data->hws[mux->id]); clk_data->hws[mux->id] =3D ERR_PTR(-ENOENT); } =20 - return PTR_ERR(clk); + return PTR_ERR(hw); } =20 void mtk_clk_unregister_cpumuxes(const struct mtk_composite *clks, int num, @@ -162,7 +162,7 @@ void mtk_clk_unregister_cpumuxes(const struct mtk_compo= site *clks, int num, if (IS_ERR_OR_NULL(clk_data->hws[mux->id])) continue; =20 - mtk_clk_unregister_cpumux(clk_data->hws[mux->id]->clk); + mtk_clk_unregister_cpumux(clk_data->hws[mux->id]); clk_data->hws[mux->id] =3D ERR_PTR(-ENOENT); } } diff --git a/drivers/clk/mediatek/clk-gate.c b/drivers/clk/mediatek/clk-gat= e.c index 0955cace5b1b..421806236228 100644 --- a/drivers/clk/mediatek/clk-gate.c +++ b/drivers/clk/mediatek/clk-gate.c @@ -152,7 +152,7 @@ const struct clk_ops mtk_clk_gate_ops_no_setclr_inv =3D= { }; EXPORT_SYMBOL_GPL(mtk_clk_gate_ops_no_setclr_inv); =20 -static struct clk *mtk_clk_register_gate(const char *name, +static struct clk_hw *mtk_clk_register_gate(const char *name, const char *parent_name, struct regmap *regmap, int set_ofs, int clr_ofs, int sta_ofs, u8 bit, @@ -160,7 +160,7 @@ static struct clk *mtk_clk_register_gate(const char *na= me, unsigned long flags, struct device *dev) { struct mtk_clk_gate *cg; - struct clk *clk; + int ret; struct clk_init_data init =3D {}; =20 cg =3D kzalloc(sizeof(*cg), GFP_KERNEL); @@ -181,25 +181,24 @@ static struct clk *mtk_clk_register_gate(const char *= name, =20 cg->hw.init =3D &init; =20 - clk =3D clk_register(dev, &cg->hw); - if (IS_ERR(clk)) + ret =3D clk_hw_register(dev, &cg->hw); + if (ret) { kfree(cg); + return ERR_PTR(ret); + } =20 - return clk; + return &cg->hw; } =20 -static void mtk_clk_unregister_gate(struct clk *clk) +static void mtk_clk_unregister_gate(struct clk_hw *hw) { struct mtk_clk_gate *cg; - struct clk_hw *hw; - - hw =3D __clk_get_hw(clk); if (!hw) return; =20 cg =3D to_mtk_clk_gate(hw); =20 - clk_unregister(clk); + clk_hw_unregister(hw); kfree(cg); } =20 @@ -209,7 +208,7 @@ int mtk_clk_register_gates_with_dev(struct device_node = *node, struct device *dev) { int i; - struct clk *clk; + struct clk_hw *hw; struct regmap *regmap; =20 if (!clk_data) @@ -230,7 +229,7 @@ int mtk_clk_register_gates_with_dev(struct device_node = *node, continue; } =20 - clk =3D mtk_clk_register_gate(gate->name, gate->parent_name, + hw =3D mtk_clk_register_gate(gate->name, gate->parent_name, regmap, gate->regs->set_ofs, gate->regs->clr_ofs, @@ -238,12 +237,13 @@ int mtk_clk_register_gates_with_dev(struct device_nod= e *node, gate->shift, gate->ops, gate->flags, dev); =20 - if (IS_ERR(clk)) { - pr_err("Failed to register clk %s: %pe\n", gate->name, clk); + if (IS_ERR(hw)) { + pr_err("Failed to register clk %s: %pe\n", gate->name, + hw); goto err; } =20 - clk_data->hws[gate->id] =3D __clk_get_hw(clk); + clk_data->hws[gate->id] =3D hw; } =20 return 0; @@ -255,11 +255,11 @@ int mtk_clk_register_gates_with_dev(struct device_nod= e *node, if (IS_ERR_OR_NULL(clk_data->hws[gate->id])) continue; =20 - mtk_clk_unregister_gate(clk_data->hws[gate->id]->clk); + mtk_clk_unregister_gate(clk_data->hws[gate->id]); clk_data->hws[gate->id] =3D ERR_PTR(-ENOENT); } =20 - return PTR_ERR(clk); + return PTR_ERR(hw); } =20 int mtk_clk_register_gates(struct device_node *node, @@ -284,7 +284,7 @@ void mtk_clk_unregister_gates(const struct mtk_gate *cl= ks, int num, if (IS_ERR_OR_NULL(clk_data->hws[gate->id])) continue; =20 - mtk_clk_unregister_gate(clk_data->hws[gate->id]->clk); + mtk_clk_unregister_gate(clk_data->hws[gate->id]); clk_data->hws[gate->id] =3D ERR_PTR(-ENOENT); } } diff --git a/drivers/clk/mediatek/clk-mt8173.c b/drivers/clk/mediatek/clk-m= t8173.c index 511b4da9e727..68d3a9749316 100644 --- a/drivers/clk/mediatek/clk-mt8173.c +++ b/drivers/clk/mediatek/clk-mt8173.c @@ -993,6 +993,7 @@ static void __init mtk_apmixedsys_init(struct device_no= de *node) { struct clk_hw_onecell_data *clk_data; void __iomem *base; + struct clk_hw *hw; struct clk *clk; int r, i; =20 @@ -1013,16 +1014,13 @@ static void __init mtk_apmixedsys_init(struct devic= e_node *node) for (i =3D 0; i < ARRAY_SIZE(apmixed_usb); i++) { const struct mtk_clk_usb *cku =3D &apmixed_usb[i]; =20 - clk =3D mtk_clk_register_ref2usb_tx(cku->name, cku->parent, - base + cku->reg_ofs); - - if (IS_ERR(clk)) { - pr_err("Failed to register clk %s: %ld\n", cku->name, - PTR_ERR(clk)); + hw =3D mtk_clk_register_ref2usb_tx(cku->name, cku->parent, base + cku->r= eg_ofs); + if (IS_ERR(hw)) { + pr_err("Failed to register clk %s: %ld\n", cku->name, PTR_ERR(hw)); continue; } =20 - clk_data->hws[cku->id] =3D __clk_get_hw(clk); + clk_data->hws[cku->id] =3D hw; } =20 clk =3D clk_register_divider(NULL, "hdmi_ref", "tvdpll_594m", 0, diff --git a/drivers/clk/mediatek/clk-mtk.c b/drivers/clk/mediatek/clk-mtk.c index cfcf740e4e68..b9188000ab3c 100644 --- a/drivers/clk/mediatek/clk-mtk.c +++ b/drivers/clk/mediatek/clk-mtk.c @@ -46,7 +46,7 @@ int mtk_clk_register_fixed_clks(const struct mtk_fixed_cl= k *clks, int num, struct clk_hw_onecell_data *clk_data) { int i; - struct clk *clk; + struct clk_hw *hw; =20 if (!clk_data) return -ENOMEM; @@ -59,15 +59,16 @@ int mtk_clk_register_fixed_clks(const struct mtk_fixed_= clk *clks, int num, continue; } =20 - clk =3D clk_register_fixed_rate(NULL, rc->name, rc->parent, 0, + hw =3D clk_hw_register_fixed_rate(NULL, rc->name, rc->parent, 0, rc->rate); =20 - if (IS_ERR(clk)) { - pr_err("Failed to register clk %s: %pe\n", rc->name, clk); + if (IS_ERR(hw)) { + pr_err("Failed to register clk %s: %pe\n", rc->name, + hw); goto err; } =20 - clk_data->hws[rc->id] =3D __clk_get_hw(clk); + clk_data->hws[rc->id] =3D hw; } =20 return 0; @@ -83,7 +84,7 @@ int mtk_clk_register_fixed_clks(const struct mtk_fixed_cl= k *clks, int num, clk_data->hws[rc->id] =3D ERR_PTR(-ENOENT); } =20 - return PTR_ERR(clk); + return PTR_ERR(hw); } EXPORT_SYMBOL_GPL(mtk_clk_register_fixed_clks); =20 @@ -111,7 +112,7 @@ int mtk_clk_register_factors(const struct mtk_fixed_fac= tor *clks, int num, struct clk_hw_onecell_data *clk_data) { int i; - struct clk *clk; + struct clk_hw *hw; =20 if (!clk_data) return -ENOMEM; @@ -124,15 +125,16 @@ int mtk_clk_register_factors(const struct mtk_fixed_f= actor *clks, int num, continue; } =20 - clk =3D clk_register_fixed_factor(NULL, ff->name, ff->parent_name, + hw =3D clk_hw_register_fixed_factor(NULL, ff->name, ff->parent_name, CLK_SET_RATE_PARENT, ff->mult, ff->div); =20 - if (IS_ERR(clk)) { - pr_err("Failed to register clk %s: %pe\n", ff->name, clk); + if (IS_ERR(hw)) { + pr_err("Failed to register clk %s: %pe\n", ff->name, + hw); goto err; } =20 - clk_data->hws[ff->id] =3D __clk_get_hw(clk); + clk_data->hws[ff->id] =3D hw; } =20 return 0; @@ -148,7 +150,7 @@ int mtk_clk_register_factors(const struct mtk_fixed_fac= tor *clks, int num, clk_data->hws[ff->id] =3D ERR_PTR(-ENOENT); } =20 - return PTR_ERR(clk); + return PTR_ERR(hw); } EXPORT_SYMBOL_GPL(mtk_clk_register_factors); =20 @@ -172,10 +174,10 @@ void mtk_clk_unregister_factors(const struct mtk_fixe= d_factor *clks, int num, } EXPORT_SYMBOL_GPL(mtk_clk_unregister_factors); =20 -static struct clk *mtk_clk_register_composite(const struct mtk_composite *= mc, +static struct clk_hw *mtk_clk_register_composite(const struct mtk_composit= e *mc, void __iomem *base, spinlock_t *lock) { - struct clk *clk; + struct clk_hw *hw; struct clk_mux *mux =3D NULL; struct clk_gate *gate =3D NULL; struct clk_divider *div =3D NULL; @@ -239,18 +241,18 @@ static struct clk *mtk_clk_register_composite(const s= truct mtk_composite *mc, div_ops =3D &clk_divider_ops; } =20 - clk =3D clk_register_composite(NULL, mc->name, parent_names, num_parents, + hw =3D clk_hw_register_composite(NULL, mc->name, parent_names, num_parent= s, mux_hw, mux_ops, div_hw, div_ops, gate_hw, gate_ops, mc->flags); =20 - if (IS_ERR(clk)) { - ret =3D PTR_ERR(clk); + if (IS_ERR(hw)) { + ret =3D PTR_ERR(hw); goto err_out; } =20 - return clk; + return hw; err_out: kfree(div); kfree(gate); @@ -259,15 +261,13 @@ static struct clk *mtk_clk_register_composite(const s= truct mtk_composite *mc, return ERR_PTR(ret); } =20 -static void mtk_clk_unregister_composite(struct clk *clk) +static void mtk_clk_unregister_composite(struct clk_hw *hw) { - struct clk_hw *hw; struct clk_composite *composite; struct clk_mux *mux =3D NULL; struct clk_gate *gate =3D NULL; struct clk_divider *div =3D NULL; =20 - hw =3D __clk_get_hw(clk); if (!hw) return; =20 @@ -279,7 +279,7 @@ static void mtk_clk_unregister_composite(struct clk *cl= k) if (composite->rate_hw) div =3D to_clk_divider(composite->rate_hw); =20 - clk_unregister_composite(clk); + clk_hw_unregister_composite(hw); kfree(div); kfree(gate); kfree(mux); @@ -289,7 +289,7 @@ int mtk_clk_register_composites(const struct mtk_compos= ite *mcs, int num, void __iomem *base, spinlock_t *lock, struct clk_hw_onecell_data *clk_data) { - struct clk *clk; + struct clk_hw *hw; int i; =20 if (!clk_data) @@ -304,14 +304,15 @@ int mtk_clk_register_composites(const struct mtk_comp= osite *mcs, int num, continue; } =20 - clk =3D mtk_clk_register_composite(mc, base, lock); + hw =3D mtk_clk_register_composite(mc, base, lock); =20 - if (IS_ERR(clk)) { - pr_err("Failed to register clk %s: %pe\n", mc->name, clk); + if (IS_ERR(hw)) { + pr_err("Failed to register clk %s: %pe\n", mc->name, + hw); goto err; } =20 - clk_data->hws[mc->id] =3D __clk_get_hw(clk); + clk_data->hws[mc->id] =3D hw; } =20 return 0; @@ -323,11 +324,11 @@ int mtk_clk_register_composites(const struct mtk_comp= osite *mcs, int num, if (IS_ERR_OR_NULL(clk_data->hws[mcs->id])) continue; =20 - mtk_clk_unregister_composite(clk_data->hws[mc->id]->clk); + mtk_clk_unregister_composite(clk_data->hws[mc->id]); clk_data->hws[mc->id] =3D ERR_PTR(-ENOENT); } =20 - return PTR_ERR(clk); + return PTR_ERR(hw); } EXPORT_SYMBOL_GPL(mtk_clk_register_composites); =20 @@ -345,7 +346,7 @@ void mtk_clk_unregister_composites(const struct mtk_com= posite *mcs, int num, if (IS_ERR_OR_NULL(clk_data->hws[mc->id])) continue; =20 - mtk_clk_unregister_composite(clk_data->hws[mc->id]->clk); + mtk_clk_unregister_composite(clk_data->hws[mc->id]); clk_data->hws[mc->id] =3D ERR_PTR(-ENOENT); } } @@ -355,7 +356,7 @@ int mtk_clk_register_dividers(const struct mtk_clk_divi= der *mcds, int num, void __iomem *base, spinlock_t *lock, struct clk_hw_onecell_data *clk_data) { - struct clk *clk; + struct clk_hw *hw; int i; =20 if (!clk_data) @@ -370,16 +371,17 @@ int mtk_clk_register_dividers(const struct mtk_clk_di= vider *mcds, int num, continue; } =20 - clk =3D clk_register_divider(NULL, mcd->name, mcd->parent_name, + hw =3D clk_hw_register_divider(NULL, mcd->name, mcd->parent_name, mcd->flags, base + mcd->div_reg, mcd->div_shift, mcd->div_width, mcd->clk_divider_flags, lock); =20 - if (IS_ERR(clk)) { - pr_err("Failed to register clk %s: %pe\n", mcd->name, clk); + if (IS_ERR(hw)) { + pr_err("Failed to register clk %s: %pe\n", mcd->name, + hw); goto err; } =20 - clk_data->hws[mcd->id] =3D __clk_get_hw(clk); + clk_data->hws[mcd->id] =3D hw; } =20 return 0; @@ -391,11 +393,11 @@ int mtk_clk_register_dividers(const struct mtk_clk_di= vider *mcds, int num, if (IS_ERR_OR_NULL(clk_data->hws[mcd->id])) continue; =20 - mtk_clk_unregister_composite(clk_data->hws[mcd->id]->clk); + mtk_clk_unregister_composite(clk_data->hws[mcd->id]); clk_data->hws[mcd->id] =3D ERR_PTR(-ENOENT); } =20 - return PTR_ERR(clk); + return PTR_ERR(hw); } =20 void mtk_clk_unregister_dividers(const struct mtk_clk_divider *mcds, int n= um, diff --git a/drivers/clk/mediatek/clk-mtk.h b/drivers/clk/mediatek/clk-mtk.h index e736420170a2..adb1304d35d4 100644 --- a/drivers/clk/mediatek/clk-mtk.h +++ b/drivers/clk/mediatek/clk-mtk.h @@ -184,7 +184,7 @@ void mtk_clk_unregister_dividers(const struct mtk_clk_d= ivider *mcds, int num, struct clk_hw_onecell_data *mtk_alloc_clk_data(unsigned int clk_num); void mtk_free_clk_data(struct clk_hw_onecell_data *clk_data); =20 -struct clk *mtk_clk_register_ref2usb_tx(const char *name, +struct clk_hw *mtk_clk_register_ref2usb_tx(const char *name, const char *parent_name, void __iomem *reg); =20 void mtk_register_reset_controller(struct device_node *np, diff --git a/drivers/clk/mediatek/clk-mux.c b/drivers/clk/mediatek/clk-mux.c index 2f47e59cc528..cd5f9fd8cb98 100644 --- a/drivers/clk/mediatek/clk-mux.c +++ b/drivers/clk/mediatek/clk-mux.c @@ -143,13 +143,13 @@ const struct clk_ops mtk_mux_gate_clr_set_upd_ops = =3D { }; EXPORT_SYMBOL_GPL(mtk_mux_gate_clr_set_upd_ops); =20 -static struct clk *mtk_clk_register_mux(const struct mtk_mux *mux, +static struct clk_hw *mtk_clk_register_mux(const struct mtk_mux *mux, struct regmap *regmap, spinlock_t *lock) { struct mtk_clk_mux *clk_mux; struct clk_init_data init =3D {}; - struct clk *clk; + int ret; =20 clk_mux =3D kzalloc(sizeof(*clk_mux), GFP_KERNEL); if (!clk_mux) @@ -166,27 +166,24 @@ static struct clk *mtk_clk_register_mux(const struct = mtk_mux *mux, clk_mux->lock =3D lock; clk_mux->hw.init =3D &init; =20 - clk =3D clk_register(NULL, &clk_mux->hw); - if (IS_ERR(clk)) { + ret =3D clk_hw_register(NULL, &clk_mux->hw); + if (ret) { kfree(clk_mux); - return clk; + return ERR_PTR(ret); } =20 - return clk; + return &clk_mux->hw; } =20 -static void mtk_clk_unregister_mux(struct clk *clk) +static void mtk_clk_unregister_mux(struct clk_hw *hw) { struct mtk_clk_mux *mux; - struct clk_hw *hw; - - hw =3D __clk_get_hw(clk); if (!hw) return; =20 mux =3D to_mtk_clk_mux(hw); =20 - clk_unregister(clk); + clk_hw_unregister(hw); kfree(mux); } =20 @@ -196,7 +193,7 @@ int mtk_clk_register_muxes(const struct mtk_mux *muxes, struct clk_hw_onecell_data *clk_data) { struct regmap *regmap; - struct clk *clk; + struct clk_hw *hw; int i; =20 regmap =3D device_node_to_regmap(node); @@ -214,14 +211,15 @@ int mtk_clk_register_muxes(const struct mtk_mux *muxe= s, continue; } =20 - clk =3D mtk_clk_register_mux(mux, regmap, lock); + hw =3D mtk_clk_register_mux(mux, regmap, lock); =20 - if (IS_ERR(clk)) { - pr_err("Failed to register clk %s: %pe\n", mux->name, clk); + if (IS_ERR(hw)) { + pr_err("Failed to register clk %s: %pe\n", mux->name, + hw); goto err; } =20 - clk_data->hws[mux->id] =3D __clk_get_hw(clk); + clk_data->hws[mux->id] =3D hw; } =20 return 0; @@ -233,11 +231,11 @@ int mtk_clk_register_muxes(const struct mtk_mux *muxe= s, if (IS_ERR_OR_NULL(clk_data->hws[mux->id])) continue; =20 - mtk_clk_unregister_mux(clk_data->hws[mux->id]->clk); + mtk_clk_unregister_mux(clk_data->hws[mux->id]); clk_data->hws[mux->id] =3D ERR_PTR(-ENOENT); } =20 - return PTR_ERR(clk); + return PTR_ERR(hw); } EXPORT_SYMBOL_GPL(mtk_clk_register_muxes); =20 @@ -255,7 +253,7 @@ void mtk_clk_unregister_muxes(const struct mtk_mux *mux= es, int num, if (IS_ERR_OR_NULL(clk_data->hws[mux->id])) continue; =20 - mtk_clk_unregister_mux(clk_data->hws[mux->id]->clk); + mtk_clk_unregister_mux(clk_data->hws[mux->id]); clk_data->hws[mux->id] =3D ERR_PTR(-ENOENT); } } diff --git a/drivers/clk/mediatek/clk-pll.c b/drivers/clk/mediatek/clk-pll.c index 89350a1a158c..cabdf25a27f3 100644 --- a/drivers/clk/mediatek/clk-pll.c +++ b/drivers/clk/mediatek/clk-pll.c @@ -314,12 +314,12 @@ static const struct clk_ops mtk_pll_ops =3D { .set_rate =3D mtk_pll_set_rate, }; =20 -static struct clk *mtk_clk_register_pll(const struct mtk_pll_data *data, +static struct clk_hw *mtk_clk_register_pll(const struct mtk_pll_data *data, void __iomem *base) { struct mtk_clk_pll *pll; struct clk_init_data init =3D {}; - struct clk *clk; + int ret; const char *parent_name =3D "clk26m"; =20 pll =3D kzalloc(sizeof(*pll), GFP_KERNEL); @@ -354,26 +354,26 @@ static struct clk *mtk_clk_register_pll(const struct = mtk_pll_data *data, init.parent_names =3D &parent_name; init.num_parents =3D 1; =20 - clk =3D clk_register(NULL, &pll->hw); + ret =3D clk_hw_register(NULL, &pll->hw); =20 - if (IS_ERR(clk)) + if (ret) { kfree(pll); + return ERR_PTR(ret); + } =20 - return clk; + return &pll->hw; } =20 -static void mtk_clk_unregister_pll(struct clk *clk) +static void mtk_clk_unregister_pll(struct clk_hw *hw) { - struct clk_hw *hw; struct mtk_clk_pll *pll; =20 - hw =3D __clk_get_hw(clk); if (!hw) return; =20 pll =3D to_mtk_clk_pll(hw); =20 - clk_unregister(clk); + clk_hw_unregister(hw); kfree(pll); } =20 @@ -383,7 +383,7 @@ int mtk_clk_register_plls(struct device_node *node, { void __iomem *base; int i; - struct clk *clk; + struct clk_hw *hw; =20 base =3D of_iomap(node, 0); if (!base) { @@ -400,14 +400,15 @@ int mtk_clk_register_plls(struct device_node *node, continue; } =20 - clk =3D mtk_clk_register_pll(pll, base); + hw =3D mtk_clk_register_pll(pll, base); =20 - if (IS_ERR(clk)) { - pr_err("Failed to register clk %s: %pe\n", pll->name, clk); + if (IS_ERR(hw)) { + pr_err("Failed to register clk %s: %pe\n", pll->name, + hw); goto err; } =20 - clk_data->hws[pll->id] =3D __clk_get_hw(clk); + clk_data->hws[pll->id] =3D hw; } =20 return 0; @@ -416,13 +417,13 @@ int mtk_clk_register_plls(struct device_node *node, while (--i >=3D 0) { const struct mtk_pll_data *pll =3D &plls[i]; =20 - mtk_clk_unregister_pll(clk_data->hws[pll->id]->clk); + mtk_clk_unregister_pll(clk_data->hws[pll->id]); clk_data->hws[pll->id] =3D ERR_PTR(-ENOENT); } =20 iounmap(base); =20 - return PTR_ERR(clk); + return PTR_ERR(hw); } EXPORT_SYMBOL_GPL(mtk_clk_register_plls); =20 @@ -457,7 +458,7 @@ void mtk_clk_unregister_plls(const struct mtk_pll_data = *plls, int num_plls, */ base =3D mtk_clk_pll_get_base(clk_data->hws[pll->id], pll); =20 - mtk_clk_unregister_pll(clk_data->hws[pll->id]->clk); + mtk_clk_unregister_pll(clk_data->hws[pll->id]); clk_data->hws[pll->id] =3D ERR_PTR(-ENOENT); } =20 --=20 2.36.1.124.g0e6072fb45-goog