kernel: bump 6.1 to 6.1.89
Changelogs: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.1.67 https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.1.68 https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.1.69 Upstreamed patches: target/linux/generic/backport-6.1/740-v6.9-01-netfilter-flowtable-validate-pppoe-header.patch [1] target/linux/generic/backport-6.1/740-v6.9-02-netfilter-flowtable-incorrect-pppoe-tuple.patch [2] target/linux/generic/backport-6.1/790-48-STABLE-net-dsa-mt7530-trap-link-local-frames-regardless-of-.patch [3] target/linux/generic/backport-6.1/790-50-v6.10-net-dsa-mt7530-fix-mirroring-frames-received-on-loca.patch [4] target/linux/generic/backport-6.1/790-16-v6.4-net-dsa-mt7530-set-all-CPU-ports-in-MT7531_CPU_PMAP.patch [5] target/linux/generic/backport-6.1/790-46-v6.9-net-dsa-mt7530-fix-improper-frames-on-all-25MHz-and-.patch [6] target/linux/generic/backport-6.1/790-47-v6.10-net-dsa-mt7530-fix-enabling-EEE-on-MT7531-switch-on-.patch [7] target/linux/mediatek/patches-6.1/220-v6.3-clk-mediatek-clk-gate-Propagate-struct-device-with-m.patch [8] target/linux/mediatek/patches-6.1/222-v6.3-clk-mediatek-clk-mtk-Propagate-struct-device-for-com.patch [9] target/linux/mediatek/patches-6.1/223-v6.3-clk-mediatek-clk-mux-Propagate-struct-device-for-mtk.patch [10] target/linux/mediatek/patches-6.1/226-v6.3-clk-mediatek-clk-mtk-Extend-mtk_clk_simple_probe.patch [11] Symbol changes: MITIGATION_SPECTRE_BHI (new) [12] SPECTRE_BHI_{ON,OFF} (deprecated) [12] References: [1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.1.89&id=8bf7c76a2a207ca2b4cfda0a279192adf27678d7 [2] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.1.89&id=f1c3c61701a0b12f4906152c1626a5de580ea3d2 [3] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.1.89&id=19643bf8c9b5bb5eea5163bf2f6a3eee6fb5b99b [4] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.1.89&id=e86c9db58eba290e858e2bb80efcde9e3973a5ef [5] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.1.89&id=013c787d231188a6408e2991150d3c9bf9a2aa0b [6] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.1.89&id=41a004ffba9b1fd8a5a7128ebd0dfa3ed39c3316 [7] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.1.89&id=7d51db455ca03e5270cc585a75a674abd063fa6c [8] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.1.89&id=082b831488a41257b7ac7ffa1d80a0b60d98394d [9] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.1.89&id=6f5f72a684a2823f21efbfd20c7e4b528c44a781 [10] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.1.89&id=a4fe8813a7868ba5867e42e60de7a2b8baac30ff [11] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.1.89&id=c1d87d56af063c87961511ee25f6b07a5676d27d [12] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.1.89&id=d844df110084ef8bd950a52194865f3f63b561ca Signed-off-by: Shiji Yang <yangshiji66@qq.com>
This commit is contained in:
committed by
Hauke Mehrtens
parent
dcdcb9228b
commit
9e86e0b33b
@@ -1,536 +0,0 @@
|
||||
From fe5c8d03f3de89ae058e365b783f8c1314f47490 Mon Sep 17 00:00:00 2001
|
||||
From: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
|
||||
Date: Fri, 20 Jan 2023 10:20:33 +0100
|
||||
Subject: [PATCH 01/15] clk: mediatek: clk-gate: Propagate struct device with
|
||||
mtk_clk_register_gates()
|
||||
|
||||
Commit e4c23e19aa2a ("clk: mediatek: Register clock gate with device")
|
||||
introduces a helper function for the sole purpose of propagating a
|
||||
struct device pointer to the clk API when registering the mtk-gate
|
||||
clocks to take advantage of Runtime PM when/where needed and where
|
||||
a power domain is defined in devicetree.
|
||||
|
||||
Function mtk_clk_register_gates() then becomes a wrapper around the
|
||||
new mtk_clk_register_gates_with_dev() function that will simply pass
|
||||
NULL as struct device: this is essential when registering drivers
|
||||
with CLK_OF_DECLARE instead of as a platform device, as there will
|
||||
be no struct device to pass... but we can as well simply have only
|
||||
one function that always takes such pointer as a param and pass NULL
|
||||
when unavoidable.
|
||||
|
||||
This commit removes the mtk_clk_register_gates() wrapper and renames
|
||||
mtk_clk_register_gates_with_dev() to the former and all of the calls
|
||||
to either of the two functions were fixed in all drivers in order to
|
||||
reflect this change; also, to improve consistency with other kernel
|
||||
functions, the pointer to struct device was moved as the first param.
|
||||
|
||||
Since a lot of MediaTek clock drivers are actually registering as a
|
||||
platform device, but were still registering the mtk-gate clocks
|
||||
without passing any struct device to the clock framework, they've
|
||||
been changed to pass a valid one now, as to make all those platforms
|
||||
able to use runtime power management where available.
|
||||
|
||||
While at it, some much needed indentation changes were also done.
|
||||
|
||||
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
|
||||
Reviewed-by: Chen-Yu Tsai <wenst@chromium.org>
|
||||
Reviewed-by: Markus Schneider-Pargmann <msp@baylibre.com>
|
||||
Tested-by: Miles Chen <miles.chen@mediatek.com>
|
||||
Link: https://lore.kernel.org/r/20230120092053.182923-4-angelogioacchino.delregno@collabora.com
|
||||
Tested-by: Mingming Su <mingming.su@mediatek.com>
|
||||
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
|
||||
|
||||
[daniel@makrotopia.org: dropped parts not relevant for OpenWrt]
|
||||
---
|
||||
drivers/clk/mediatek/clk-gate.c | 23 +++++++---------------
|
||||
drivers/clk/mediatek/clk-gate.h | 7 +------
|
||||
drivers/clk/mediatek/clk-mt2701-aud.c | 4 ++--
|
||||
drivers/clk/mediatek/clk-mt2701-eth.c | 4 ++--
|
||||
drivers/clk/mediatek/clk-mt2701-g3d.c | 2 +-
|
||||
drivers/clk/mediatek/clk-mt2701-hif.c | 4 ++--
|
||||
drivers/clk/mediatek/clk-mt2701-mm.c | 4 ++--
|
||||
drivers/clk/mediatek/clk-mt2701.c | 12 +++++------
|
||||
drivers/clk/mediatek/clk-mt2712-mm.c | 4 ++--
|
||||
drivers/clk/mediatek/clk-mt2712.c | 12 +++++------
|
||||
drivers/clk/mediatek/clk-mt7622-aud.c | 4 ++--
|
||||
drivers/clk/mediatek/clk-mt7622-eth.c | 8 ++++----
|
||||
drivers/clk/mediatek/clk-mt7622-hif.c | 8 ++++----
|
||||
drivers/clk/mediatek/clk-mt7622.c | 14 ++++++-------
|
||||
drivers/clk/mediatek/clk-mt7629-eth.c | 7 ++++---
|
||||
drivers/clk/mediatek/clk-mt7629-hif.c | 8 ++++----
|
||||
drivers/clk/mediatek/clk-mt7629.c | 10 +++++-----
|
||||
drivers/clk/mediatek/clk-mt7986-eth.c | 10 +++++-----
|
||||
drivers/clk/mediatek/clk-mt7986-infracfg.c | 4 ++--
|
||||
19 files changed, 68 insertions(+), 81 deletions(-)
|
||||
|
||||
--- a/drivers/clk/mediatek/clk-gate.c
|
||||
+++ b/drivers/clk/mediatek/clk-gate.c
|
||||
@@ -152,12 +152,12 @@ const struct clk_ops mtk_clk_gate_ops_no
|
||||
};
|
||||
EXPORT_SYMBOL_GPL(mtk_clk_gate_ops_no_setclr_inv);
|
||||
|
||||
-static struct clk_hw *mtk_clk_register_gate(const char *name,
|
||||
+static struct clk_hw *mtk_clk_register_gate(struct device *dev, const char *name,
|
||||
const char *parent_name,
|
||||
struct regmap *regmap, int set_ofs,
|
||||
int clr_ofs, int sta_ofs, u8 bit,
|
||||
const struct clk_ops *ops,
|
||||
- unsigned long flags, struct device *dev)
|
||||
+ unsigned long flags)
|
||||
{
|
||||
struct mtk_clk_gate *cg;
|
||||
int ret;
|
||||
@@ -202,10 +202,9 @@ static void mtk_clk_unregister_gate(stru
|
||||
kfree(cg);
|
||||
}
|
||||
|
||||
-int mtk_clk_register_gates_with_dev(struct device_node *node,
|
||||
- const struct mtk_gate *clks, int num,
|
||||
- struct clk_hw_onecell_data *clk_data,
|
||||
- struct device *dev)
|
||||
+int mtk_clk_register_gates(struct device *dev, struct device_node *node,
|
||||
+ const struct mtk_gate *clks, int num,
|
||||
+ struct clk_hw_onecell_data *clk_data)
|
||||
{
|
||||
int i;
|
||||
struct clk_hw *hw;
|
||||
@@ -229,13 +228,13 @@ int mtk_clk_register_gates_with_dev(stru
|
||||
continue;
|
||||
}
|
||||
|
||||
- hw = mtk_clk_register_gate(gate->name, gate->parent_name,
|
||||
+ hw = mtk_clk_register_gate(dev, gate->name, gate->parent_name,
|
||||
regmap,
|
||||
gate->regs->set_ofs,
|
||||
gate->regs->clr_ofs,
|
||||
gate->regs->sta_ofs,
|
||||
gate->shift, gate->ops,
|
||||
- gate->flags, dev);
|
||||
+ gate->flags);
|
||||
|
||||
if (IS_ERR(hw)) {
|
||||
pr_err("Failed to register clk %s: %pe\n", gate->name,
|
||||
@@ -261,14 +260,6 @@ err:
|
||||
|
||||
return PTR_ERR(hw);
|
||||
}
|
||||
-EXPORT_SYMBOL_GPL(mtk_clk_register_gates_with_dev);
|
||||
-
|
||||
-int mtk_clk_register_gates(struct device_node *node,
|
||||
- const struct mtk_gate *clks, int num,
|
||||
- struct clk_hw_onecell_data *clk_data)
|
||||
-{
|
||||
- return mtk_clk_register_gates_with_dev(node, clks, num, clk_data, NULL);
|
||||
-}
|
||||
EXPORT_SYMBOL_GPL(mtk_clk_register_gates);
|
||||
|
||||
void mtk_clk_unregister_gates(const struct mtk_gate *clks, int num,
|
||||
--- a/drivers/clk/mediatek/clk-gate.h
|
||||
+++ b/drivers/clk/mediatek/clk-gate.h
|
||||
@@ -50,15 +50,10 @@ struct mtk_gate {
|
||||
#define GATE_MTK(_id, _name, _parent, _regs, _shift, _ops) \
|
||||
GATE_MTK_FLAGS(_id, _name, _parent, _regs, _shift, _ops, 0)
|
||||
|
||||
-int mtk_clk_register_gates(struct device_node *node,
|
||||
+int mtk_clk_register_gates(struct device *dev, struct device_node *node,
|
||||
const struct mtk_gate *clks, int num,
|
||||
struct clk_hw_onecell_data *clk_data);
|
||||
|
||||
-int mtk_clk_register_gates_with_dev(struct device_node *node,
|
||||
- const struct mtk_gate *clks, int num,
|
||||
- struct clk_hw_onecell_data *clk_data,
|
||||
- struct device *dev);
|
||||
-
|
||||
void mtk_clk_unregister_gates(const struct mtk_gate *clks, int num,
|
||||
struct clk_hw_onecell_data *clk_data);
|
||||
|
||||
--- a/drivers/clk/mediatek/clk-mt2701-aud.c
|
||||
+++ b/drivers/clk/mediatek/clk-mt2701-aud.c
|
||||
@@ -127,8 +127,8 @@ static int clk_mt2701_aud_probe(struct p
|
||||
|
||||
clk_data = mtk_alloc_clk_data(CLK_AUD_NR);
|
||||
|
||||
- mtk_clk_register_gates(node, audio_clks, ARRAY_SIZE(audio_clks),
|
||||
- clk_data);
|
||||
+ mtk_clk_register_gates(&pdev->dev, node, audio_clks,
|
||||
+ ARRAY_SIZE(audio_clks), clk_data);
|
||||
|
||||
r = of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
|
||||
if (r) {
|
||||
--- a/drivers/clk/mediatek/clk-mt2701-eth.c
|
||||
+++ b/drivers/clk/mediatek/clk-mt2701-eth.c
|
||||
@@ -51,8 +51,8 @@ static int clk_mt2701_eth_probe(struct p
|
||||
|
||||
clk_data = mtk_alloc_clk_data(CLK_ETHSYS_NR);
|
||||
|
||||
- mtk_clk_register_gates(node, eth_clks, ARRAY_SIZE(eth_clks),
|
||||
- clk_data);
|
||||
+ mtk_clk_register_gates(&pdev->dev, node, eth_clks,
|
||||
+ ARRAY_SIZE(eth_clks), clk_data);
|
||||
|
||||
r = of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
|
||||
if (r)
|
||||
--- a/drivers/clk/mediatek/clk-mt2701-g3d.c
|
||||
+++ b/drivers/clk/mediatek/clk-mt2701-g3d.c
|
||||
@@ -45,7 +45,7 @@ static int clk_mt2701_g3dsys_init(struct
|
||||
|
||||
clk_data = mtk_alloc_clk_data(CLK_G3DSYS_NR);
|
||||
|
||||
- mtk_clk_register_gates(node, g3d_clks, ARRAY_SIZE(g3d_clks),
|
||||
+ mtk_clk_register_gates(&pdev->dev, node, g3d_clks, ARRAY_SIZE(g3d_clks),
|
||||
clk_data);
|
||||
|
||||
r = of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
|
||||
--- a/drivers/clk/mediatek/clk-mt2701-hif.c
|
||||
+++ b/drivers/clk/mediatek/clk-mt2701-hif.c
|
||||
@@ -48,8 +48,8 @@ static int clk_mt2701_hif_probe(struct p
|
||||
|
||||
clk_data = mtk_alloc_clk_data(CLK_HIFSYS_NR);
|
||||
|
||||
- mtk_clk_register_gates(node, hif_clks, ARRAY_SIZE(hif_clks),
|
||||
- clk_data);
|
||||
+ mtk_clk_register_gates(&pdev->dev, node, hif_clks,
|
||||
+ ARRAY_SIZE(hif_clks), clk_data);
|
||||
|
||||
r = of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
|
||||
if (r) {
|
||||
--- a/drivers/clk/mediatek/clk-mt2701-mm.c
|
||||
+++ b/drivers/clk/mediatek/clk-mt2701-mm.c
|
||||
@@ -76,8 +76,8 @@ static int clk_mt2701_mm_probe(struct pl
|
||||
|
||||
clk_data = mtk_alloc_clk_data(CLK_MM_NR);
|
||||
|
||||
- mtk_clk_register_gates(node, mm_clks, ARRAY_SIZE(mm_clks),
|
||||
- clk_data);
|
||||
+ mtk_clk_register_gates(&pdev->dev, node, mm_clks,
|
||||
+ ARRAY_SIZE(mm_clks), clk_data);
|
||||
|
||||
r = of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
|
||||
if (r)
|
||||
--- a/drivers/clk/mediatek/clk-mt2701.c
|
||||
+++ b/drivers/clk/mediatek/clk-mt2701.c
|
||||
@@ -685,8 +685,8 @@ static int mtk_topckgen_init(struct plat
|
||||
mtk_clk_register_dividers(top_adj_divs, ARRAY_SIZE(top_adj_divs),
|
||||
base, &mt2701_clk_lock, clk_data);
|
||||
|
||||
- mtk_clk_register_gates(node, top_clks, ARRAY_SIZE(top_clks),
|
||||
- clk_data);
|
||||
+ mtk_clk_register_gates(&pdev->dev, node, top_clks,
|
||||
+ ARRAY_SIZE(top_clks), clk_data);
|
||||
|
||||
return of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
|
||||
}
|
||||
@@ -789,8 +789,8 @@ static int mtk_infrasys_init(struct plat
|
||||
}
|
||||
}
|
||||
|
||||
- mtk_clk_register_gates(node, infra_clks, ARRAY_SIZE(infra_clks),
|
||||
- infra_clk_data);
|
||||
+ mtk_clk_register_gates(&pdev->dev, node, infra_clks,
|
||||
+ ARRAY_SIZE(infra_clks), infra_clk_data);
|
||||
mtk_clk_register_factors(infra_fixed_divs, ARRAY_SIZE(infra_fixed_divs),
|
||||
infra_clk_data);
|
||||
|
||||
@@ -902,8 +902,8 @@ static int mtk_pericfg_init(struct platf
|
||||
if (!clk_data)
|
||||
return -ENOMEM;
|
||||
|
||||
- mtk_clk_register_gates(node, peri_clks, ARRAY_SIZE(peri_clks),
|
||||
- clk_data);
|
||||
+ mtk_clk_register_gates(&pdev->dev, node, peri_clks,
|
||||
+ ARRAY_SIZE(peri_clks), clk_data);
|
||||
|
||||
mtk_clk_register_composites(peri_muxs, ARRAY_SIZE(peri_muxs), base,
|
||||
&mt2701_clk_lock, clk_data);
|
||||
--- a/drivers/clk/mediatek/clk-mt2712-mm.c
|
||||
+++ b/drivers/clk/mediatek/clk-mt2712-mm.c
|
||||
@@ -117,8 +117,8 @@ static int clk_mt2712_mm_probe(struct pl
|
||||
|
||||
clk_data = mtk_alloc_clk_data(CLK_MM_NR_CLK);
|
||||
|
||||
- mtk_clk_register_gates(node, mm_clks, ARRAY_SIZE(mm_clks),
|
||||
- clk_data);
|
||||
+ mtk_clk_register_gates(&pdev->dev, node, mm_clks,
|
||||
+ ARRAY_SIZE(mm_clks), clk_data);
|
||||
|
||||
r = of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
|
||||
|
||||
--- a/drivers/clk/mediatek/clk-mt2712.c
|
||||
+++ b/drivers/clk/mediatek/clk-mt2712.c
|
||||
@@ -1324,8 +1324,8 @@ static int clk_mt2712_top_probe(struct p
|
||||
&mt2712_clk_lock, top_clk_data);
|
||||
mtk_clk_register_dividers(top_adj_divs, ARRAY_SIZE(top_adj_divs), base,
|
||||
&mt2712_clk_lock, top_clk_data);
|
||||
- mtk_clk_register_gates(node, top_clks, ARRAY_SIZE(top_clks),
|
||||
- top_clk_data);
|
||||
+ mtk_clk_register_gates(&pdev->dev, node, top_clks,
|
||||
+ ARRAY_SIZE(top_clks), top_clk_data);
|
||||
|
||||
r = of_clk_add_hw_provider(node, of_clk_hw_onecell_get, top_clk_data);
|
||||
|
||||
@@ -1344,8 +1344,8 @@ static int clk_mt2712_infra_probe(struct
|
||||
|
||||
clk_data = mtk_alloc_clk_data(CLK_INFRA_NR_CLK);
|
||||
|
||||
- mtk_clk_register_gates(node, infra_clks, ARRAY_SIZE(infra_clks),
|
||||
- clk_data);
|
||||
+ mtk_clk_register_gates(&pdev->dev, node, infra_clks,
|
||||
+ ARRAY_SIZE(infra_clks), clk_data);
|
||||
|
||||
r = of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
|
||||
|
||||
@@ -1366,8 +1366,8 @@ static int clk_mt2712_peri_probe(struct
|
||||
|
||||
clk_data = mtk_alloc_clk_data(CLK_PERI_NR_CLK);
|
||||
|
||||
- mtk_clk_register_gates(node, peri_clks, ARRAY_SIZE(peri_clks),
|
||||
- clk_data);
|
||||
+ mtk_clk_register_gates(&pdev->dev, node, peri_clks,
|
||||
+ ARRAY_SIZE(peri_clks), clk_data);
|
||||
|
||||
r = of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
|
||||
|
||||
--- a/drivers/clk/mediatek/clk-mt7622-aud.c
|
||||
+++ b/drivers/clk/mediatek/clk-mt7622-aud.c
|
||||
@@ -114,8 +114,8 @@ static int clk_mt7622_audiosys_init(stru
|
||||
|
||||
clk_data = mtk_alloc_clk_data(CLK_AUDIO_NR_CLK);
|
||||
|
||||
- mtk_clk_register_gates(node, audio_clks, ARRAY_SIZE(audio_clks),
|
||||
- clk_data);
|
||||
+ mtk_clk_register_gates(&pdev->dev, node, audio_clks,
|
||||
+ ARRAY_SIZE(audio_clks), clk_data);
|
||||
|
||||
r = of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
|
||||
if (r) {
|
||||
--- a/drivers/clk/mediatek/clk-mt7622-eth.c
|
||||
+++ b/drivers/clk/mediatek/clk-mt7622-eth.c
|
||||
@@ -69,8 +69,8 @@ static int clk_mt7622_ethsys_init(struct
|
||||
|
||||
clk_data = mtk_alloc_clk_data(CLK_ETH_NR_CLK);
|
||||
|
||||
- mtk_clk_register_gates(node, eth_clks, ARRAY_SIZE(eth_clks),
|
||||
- clk_data);
|
||||
+ mtk_clk_register_gates(&pdev->dev, node, eth_clks,
|
||||
+ ARRAY_SIZE(eth_clks), clk_data);
|
||||
|
||||
r = of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
|
||||
if (r)
|
||||
@@ -91,8 +91,8 @@ static int clk_mt7622_sgmiisys_init(stru
|
||||
|
||||
clk_data = mtk_alloc_clk_data(CLK_SGMII_NR_CLK);
|
||||
|
||||
- mtk_clk_register_gates(node, sgmii_clks, ARRAY_SIZE(sgmii_clks),
|
||||
- clk_data);
|
||||
+ mtk_clk_register_gates(&pdev->dev, node, sgmii_clks,
|
||||
+ ARRAY_SIZE(sgmii_clks), clk_data);
|
||||
|
||||
r = of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
|
||||
if (r)
|
||||
--- a/drivers/clk/mediatek/clk-mt7622-hif.c
|
||||
+++ b/drivers/clk/mediatek/clk-mt7622-hif.c
|
||||
@@ -80,8 +80,8 @@ static int clk_mt7622_ssusbsys_init(stru
|
||||
|
||||
clk_data = mtk_alloc_clk_data(CLK_SSUSB_NR_CLK);
|
||||
|
||||
- mtk_clk_register_gates(node, ssusb_clks, ARRAY_SIZE(ssusb_clks),
|
||||
- clk_data);
|
||||
+ mtk_clk_register_gates(&pdev->dev, node, ssusb_clks,
|
||||
+ ARRAY_SIZE(ssusb_clks), clk_data);
|
||||
|
||||
r = of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
|
||||
if (r)
|
||||
@@ -102,8 +102,8 @@ static int clk_mt7622_pciesys_init(struc
|
||||
|
||||
clk_data = mtk_alloc_clk_data(CLK_PCIE_NR_CLK);
|
||||
|
||||
- mtk_clk_register_gates(node, pcie_clks, ARRAY_SIZE(pcie_clks),
|
||||
- clk_data);
|
||||
+ mtk_clk_register_gates(&pdev->dev, node, pcie_clks,
|
||||
+ ARRAY_SIZE(pcie_clks), clk_data);
|
||||
|
||||
r = of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
|
||||
if (r)
|
||||
--- a/drivers/clk/mediatek/clk-mt7622.c
|
||||
+++ b/drivers/clk/mediatek/clk-mt7622.c
|
||||
@@ -621,8 +621,8 @@ static int mtk_topckgen_init(struct plat
|
||||
mtk_clk_register_dividers(top_adj_divs, ARRAY_SIZE(top_adj_divs),
|
||||
base, &mt7622_clk_lock, clk_data);
|
||||
|
||||
- mtk_clk_register_gates(node, top_clks, ARRAY_SIZE(top_clks),
|
||||
- clk_data);
|
||||
+ mtk_clk_register_gates(&pdev->dev, node, top_clks,
|
||||
+ ARRAY_SIZE(top_clks), clk_data);
|
||||
|
||||
return of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
|
||||
}
|
||||
@@ -635,8 +635,8 @@ static int mtk_infrasys_init(struct plat
|
||||
|
||||
clk_data = mtk_alloc_clk_data(CLK_INFRA_NR_CLK);
|
||||
|
||||
- mtk_clk_register_gates(node, infra_clks, ARRAY_SIZE(infra_clks),
|
||||
- clk_data);
|
||||
+ mtk_clk_register_gates(&pdev->dev, node, infra_clks,
|
||||
+ ARRAY_SIZE(infra_clks), clk_data);
|
||||
|
||||
mtk_clk_register_cpumuxes(node, infra_muxes, ARRAY_SIZE(infra_muxes),
|
||||
clk_data);
|
||||
@@ -663,7 +663,7 @@ static int mtk_apmixedsys_init(struct pl
|
||||
mtk_clk_register_plls(node, plls, ARRAY_SIZE(plls),
|
||||
clk_data);
|
||||
|
||||
- mtk_clk_register_gates(node, apmixed_clks,
|
||||
+ mtk_clk_register_gates(&pdev->dev, node, apmixed_clks,
|
||||
ARRAY_SIZE(apmixed_clks), clk_data);
|
||||
|
||||
return of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
|
||||
@@ -682,8 +682,8 @@ static int mtk_pericfg_init(struct platf
|
||||
|
||||
clk_data = mtk_alloc_clk_data(CLK_PERI_NR_CLK);
|
||||
|
||||
- mtk_clk_register_gates(node, peri_clks, ARRAY_SIZE(peri_clks),
|
||||
- clk_data);
|
||||
+ mtk_clk_register_gates(&pdev->dev, node, peri_clks,
|
||||
+ ARRAY_SIZE(peri_clks), clk_data);
|
||||
|
||||
mtk_clk_register_composites(peri_muxes, ARRAY_SIZE(peri_muxes), base,
|
||||
&mt7622_clk_lock, clk_data);
|
||||
--- a/drivers/clk/mediatek/clk-mt7629-eth.c
|
||||
+++ b/drivers/clk/mediatek/clk-mt7629-eth.c
|
||||
@@ -82,7 +82,8 @@ static int clk_mt7629_ethsys_init(struct
|
||||
if (!clk_data)
|
||||
return -ENOMEM;
|
||||
|
||||
- mtk_clk_register_gates(node, eth_clks, CLK_ETH_NR_CLK, clk_data);
|
||||
+ mtk_clk_register_gates(&pdev->dev, node, eth_clks,
|
||||
+ CLK_ETH_NR_CLK, clk_data);
|
||||
|
||||
r = of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
|
||||
if (r)
|
||||
@@ -106,8 +107,8 @@ static int clk_mt7629_sgmiisys_init(stru
|
||||
if (!clk_data)
|
||||
return -ENOMEM;
|
||||
|
||||
- mtk_clk_register_gates(node, sgmii_clks[id++], CLK_SGMII_NR_CLK,
|
||||
- clk_data);
|
||||
+ mtk_clk_register_gates(&pdev->dev, node, sgmii_clks[id++],
|
||||
+ CLK_SGMII_NR_CLK, clk_data);
|
||||
|
||||
r = of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
|
||||
if (r)
|
||||
--- a/drivers/clk/mediatek/clk-mt7629-hif.c
|
||||
+++ b/drivers/clk/mediatek/clk-mt7629-hif.c
|
||||
@@ -75,8 +75,8 @@ static int clk_mt7629_ssusbsys_init(stru
|
||||
|
||||
clk_data = mtk_alloc_clk_data(CLK_SSUSB_NR_CLK);
|
||||
|
||||
- mtk_clk_register_gates(node, ssusb_clks, ARRAY_SIZE(ssusb_clks),
|
||||
- clk_data);
|
||||
+ mtk_clk_register_gates(&pdev->dev, node, ssusb_clks,
|
||||
+ ARRAY_SIZE(ssusb_clks), clk_data);
|
||||
|
||||
r = of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
|
||||
if (r)
|
||||
@@ -97,8 +97,8 @@ static int clk_mt7629_pciesys_init(struc
|
||||
|
||||
clk_data = mtk_alloc_clk_data(CLK_PCIE_NR_CLK);
|
||||
|
||||
- mtk_clk_register_gates(node, pcie_clks, ARRAY_SIZE(pcie_clks),
|
||||
- clk_data);
|
||||
+ mtk_clk_register_gates(&pdev->dev, node, pcie_clks,
|
||||
+ ARRAY_SIZE(pcie_clks), clk_data);
|
||||
|
||||
r = of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
|
||||
if (r)
|
||||
--- a/drivers/clk/mediatek/clk-mt7629.c
|
||||
+++ b/drivers/clk/mediatek/clk-mt7629.c
|
||||
@@ -585,8 +585,8 @@ static int mtk_infrasys_init(struct plat
|
||||
if (!clk_data)
|
||||
return -ENOMEM;
|
||||
|
||||
- mtk_clk_register_gates(node, infra_clks, ARRAY_SIZE(infra_clks),
|
||||
- clk_data);
|
||||
+ mtk_clk_register_gates(&pdev->dev, node, infra_clks,
|
||||
+ ARRAY_SIZE(infra_clks), clk_data);
|
||||
|
||||
mtk_clk_register_cpumuxes(node, infra_muxes, ARRAY_SIZE(infra_muxes),
|
||||
clk_data);
|
||||
@@ -610,8 +610,8 @@ static int mtk_pericfg_init(struct platf
|
||||
if (!clk_data)
|
||||
return -ENOMEM;
|
||||
|
||||
- mtk_clk_register_gates(node, peri_clks, ARRAY_SIZE(peri_clks),
|
||||
- clk_data);
|
||||
+ mtk_clk_register_gates(&pdev->dev, node, peri_clks,
|
||||
+ ARRAY_SIZE(peri_clks), clk_data);
|
||||
|
||||
mtk_clk_register_composites(peri_muxes, ARRAY_SIZE(peri_muxes), base,
|
||||
&mt7629_clk_lock, clk_data);
|
||||
@@ -637,7 +637,7 @@ static int mtk_apmixedsys_init(struct pl
|
||||
mtk_clk_register_plls(node, plls, ARRAY_SIZE(plls),
|
||||
clk_data);
|
||||
|
||||
- mtk_clk_register_gates(node, apmixed_clks,
|
||||
+ mtk_clk_register_gates(&pdev->dev, node, apmixed_clks,
|
||||
ARRAY_SIZE(apmixed_clks), clk_data);
|
||||
|
||||
clk_prepare_enable(clk_data->hws[CLK_APMIXED_ARMPLL]->clk);
|
||||
--- a/drivers/clk/mediatek/clk-mt7986-eth.c
|
||||
+++ b/drivers/clk/mediatek/clk-mt7986-eth.c
|
||||
@@ -72,8 +72,8 @@ static void __init mtk_sgmiisys_0_init(s
|
||||
|
||||
clk_data = mtk_alloc_clk_data(ARRAY_SIZE(sgmii0_clks));
|
||||
|
||||
- mtk_clk_register_gates(node, sgmii0_clks, ARRAY_SIZE(sgmii0_clks),
|
||||
- clk_data);
|
||||
+ mtk_clk_register_gates(NULL, node, sgmii0_clks,
|
||||
+ ARRAY_SIZE(sgmii0_clks), clk_data);
|
||||
|
||||
r = of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
|
||||
if (r)
|
||||
@@ -90,8 +90,8 @@ static void __init mtk_sgmiisys_1_init(s
|
||||
|
||||
clk_data = mtk_alloc_clk_data(ARRAY_SIZE(sgmii1_clks));
|
||||
|
||||
- mtk_clk_register_gates(node, sgmii1_clks, ARRAY_SIZE(sgmii1_clks),
|
||||
- clk_data);
|
||||
+ mtk_clk_register_gates(NULL, node, sgmii1_clks,
|
||||
+ ARRAY_SIZE(sgmii1_clks), clk_data);
|
||||
|
||||
r = of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
|
||||
|
||||
@@ -109,7 +109,7 @@ static void __init mtk_ethsys_init(struc
|
||||
|
||||
clk_data = mtk_alloc_clk_data(ARRAY_SIZE(eth_clks));
|
||||
|
||||
- mtk_clk_register_gates(node, eth_clks, ARRAY_SIZE(eth_clks), clk_data);
|
||||
+ mtk_clk_register_gates(NULL, node, eth_clks, ARRAY_SIZE(eth_clks), clk_data);
|
||||
|
||||
r = of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
|
||||
|
||||
--- a/drivers/clk/mediatek/clk-mt7986-infracfg.c
|
||||
+++ b/drivers/clk/mediatek/clk-mt7986-infracfg.c
|
||||
@@ -180,8 +180,8 @@ static int clk_mt7986_infracfg_probe(str
|
||||
mtk_clk_register_factors(infra_divs, ARRAY_SIZE(infra_divs), clk_data);
|
||||
mtk_clk_register_muxes(infra_muxes, ARRAY_SIZE(infra_muxes), node,
|
||||
&mt7986_clk_lock, clk_data);
|
||||
- mtk_clk_register_gates(node, infra_clks, ARRAY_SIZE(infra_clks),
|
||||
- clk_data);
|
||||
+ mtk_clk_register_gates(&pdev->dev, node, infra_clks,
|
||||
+ ARRAY_SIZE(infra_clks), clk_data);
|
||||
|
||||
r = of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
|
||||
if (r) {
|
||||
--- a/drivers/clk/mediatek/clk-mtk.c
|
||||
+++ b/drivers/clk/mediatek/clk-mtk.c
|
||||
@@ -459,8 +459,8 @@ int mtk_clk_simple_probe(struct platform
|
||||
if (!clk_data)
|
||||
return -ENOMEM;
|
||||
|
||||
- r = mtk_clk_register_gates_with_dev(node, mcd->clks, mcd->num_clks,
|
||||
- clk_data, &pdev->dev);
|
||||
+ r = mtk_clk_register_gates(&pdev->dev, node, mcd->clks, mcd->num_clks,
|
||||
+ clk_data);
|
||||
if (r)
|
||||
goto free_data;
|
||||
|
||||
@@ -78,7 +78,7 @@ Signed-off-by: Stephen Boyd <sboyd@kernel.org>
|
||||
|
||||
--- a/drivers/clk/mediatek/clk-mt2701.c
|
||||
+++ b/drivers/clk/mediatek/clk-mt2701.c
|
||||
@@ -761,7 +761,7 @@ static void __init mtk_infrasys_init_ear
|
||||
@@ -762,7 +762,7 @@ static void __init mtk_infrasys_init_ear
|
||||
mtk_clk_register_factors(infra_fixed_divs, ARRAY_SIZE(infra_fixed_divs),
|
||||
infra_clk_data);
|
||||
|
||||
@@ -89,7 +89,7 @@ Signed-off-by: Stephen Boyd <sboyd@kernel.org>
|
||||
r = of_clk_add_hw_provider(node, of_clk_hw_onecell_get,
|
||||
--- a/drivers/clk/mediatek/clk-mt6795-infracfg.c
|
||||
+++ b/drivers/clk/mediatek/clk-mt6795-infracfg.c
|
||||
@@ -105,7 +105,8 @@ static int clk_mt6795_infracfg_probe(str
|
||||
@@ -106,7 +106,8 @@ static int clk_mt6795_infracfg_probe(str
|
||||
if (ret)
|
||||
goto free_clk_data;
|
||||
|
||||
@@ -101,7 +101,7 @@ Signed-off-by: Stephen Boyd <sboyd@kernel.org>
|
||||
|
||||
--- a/drivers/clk/mediatek/clk-mt7622.c
|
||||
+++ b/drivers/clk/mediatek/clk-mt7622.c
|
||||
@@ -638,8 +638,8 @@ static int mtk_infrasys_init(struct plat
|
||||
@@ -639,8 +639,8 @@ static int mtk_infrasys_init(struct plat
|
||||
mtk_clk_register_gates(&pdev->dev, node, infra_clks,
|
||||
ARRAY_SIZE(infra_clks), clk_data);
|
||||
|
||||
@@ -114,7 +114,7 @@ Signed-off-by: Stephen Boyd <sboyd@kernel.org>
|
||||
clk_data);
|
||||
--- a/drivers/clk/mediatek/clk-mt7629.c
|
||||
+++ b/drivers/clk/mediatek/clk-mt7629.c
|
||||
@@ -588,8 +588,8 @@ static int mtk_infrasys_init(struct plat
|
||||
@@ -589,8 +589,8 @@ static int mtk_infrasys_init(struct plat
|
||||
mtk_clk_register_gates(&pdev->dev, node, infra_clks,
|
||||
ARRAY_SIZE(infra_clks), clk_data);
|
||||
|
||||
@@ -127,8 +127,8 @@ Signed-off-by: Stephen Boyd <sboyd@kernel.org>
|
||||
clk_data);
|
||||
--- a/drivers/clk/mediatek/clk-mt8173.c
|
||||
+++ b/drivers/clk/mediatek/clk-mt8173.c
|
||||
@@ -892,8 +892,8 @@ static void __init mtk_infrasys_init(str
|
||||
clk_data);
|
||||
@@ -893,8 +893,8 @@ static void __init mtk_infrasys_init(str
|
||||
ARRAY_SIZE(infra_clks), clk_data);
|
||||
mtk_clk_register_factors(infra_divs, ARRAY_SIZE(infra_divs), clk_data);
|
||||
|
||||
- mtk_clk_register_cpumuxes(node, cpu_muxes, ARRAY_SIZE(cpu_muxes),
|
||||
|
||||
@@ -1,181 +0,0 @@
|
||||
From f23375db001ec0fe9f565be75eff43adde15407e Mon Sep 17 00:00:00 2001
|
||||
From: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
|
||||
Date: Fri, 20 Jan 2023 10:20:35 +0100
|
||||
Subject: [PATCH 03/15] clk: mediatek: clk-mtk: Propagate struct device for
|
||||
composites
|
||||
|
||||
Like done for cpumux clocks, propagate struct device for composite
|
||||
clocks registered through clk-mtk helpers to be able to get runtime
|
||||
pm support for MTK clocks.
|
||||
|
||||
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
|
||||
Tested-by: Miles Chen <miles.chen@mediatek.com>
|
||||
Link: https://lore.kernel.org/r/20230120092053.182923-6-angelogioacchino.delregno@collabora.com
|
||||
Tested-by: Mingming Su <mingming.su@mediatek.com>
|
||||
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
|
||||
|
||||
[daniel@makrotopia.org: remove parts not relevant for OpenWrt]
|
||||
---
|
||||
drivers/clk/mediatek/clk-mt2701.c | 10 ++++++----
|
||||
drivers/clk/mediatek/clk-mt2712.c | 12 ++++++++----
|
||||
drivers/clk/mediatek/clk-mt7622.c | 8 +++++---
|
||||
drivers/clk/mediatek/clk-mt7629.c | 8 +++++---
|
||||
drivers/clk/mediatek/clk-mtk.c | 11 ++++++-----
|
||||
drivers/clk/mediatek/clk-mtk.h | 3 ++-
|
||||
6 files changed, 32 insertions(+), 20 deletions(-)
|
||||
|
||||
--- a/drivers/clk/mediatek/clk-mt2701.c
|
||||
+++ b/drivers/clk/mediatek/clk-mt2701.c
|
||||
@@ -679,8 +679,9 @@ static int mtk_topckgen_init(struct plat
|
||||
mtk_clk_register_factors(top_fixed_divs, ARRAY_SIZE(top_fixed_divs),
|
||||
clk_data);
|
||||
|
||||
- mtk_clk_register_composites(top_muxes, ARRAY_SIZE(top_muxes),
|
||||
- base, &mt2701_clk_lock, clk_data);
|
||||
+ mtk_clk_register_composites(&pdev->dev, top_muxes,
|
||||
+ ARRAY_SIZE(top_muxes), base,
|
||||
+ &mt2701_clk_lock, clk_data);
|
||||
|
||||
mtk_clk_register_dividers(top_adj_divs, ARRAY_SIZE(top_adj_divs),
|
||||
base, &mt2701_clk_lock, clk_data);
|
||||
@@ -905,8 +906,9 @@ static int mtk_pericfg_init(struct platf
|
||||
mtk_clk_register_gates(&pdev->dev, node, peri_clks,
|
||||
ARRAY_SIZE(peri_clks), clk_data);
|
||||
|
||||
- mtk_clk_register_composites(peri_muxs, ARRAY_SIZE(peri_muxs), base,
|
||||
- &mt2701_clk_lock, clk_data);
|
||||
+ mtk_clk_register_composites(&pdev->dev, peri_muxs,
|
||||
+ ARRAY_SIZE(peri_muxs), base,
|
||||
+ &mt2701_clk_lock, clk_data);
|
||||
|
||||
r = of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
|
||||
if (r)
|
||||
--- a/drivers/clk/mediatek/clk-mt2712.c
|
||||
+++ b/drivers/clk/mediatek/clk-mt2712.c
|
||||
@@ -1320,8 +1320,9 @@ static int clk_mt2712_top_probe(struct p
|
||||
mtk_clk_register_factors(top_early_divs, ARRAY_SIZE(top_early_divs),
|
||||
top_clk_data);
|
||||
mtk_clk_register_factors(top_divs, ARRAY_SIZE(top_divs), top_clk_data);
|
||||
- mtk_clk_register_composites(top_muxes, ARRAY_SIZE(top_muxes), base,
|
||||
- &mt2712_clk_lock, top_clk_data);
|
||||
+ mtk_clk_register_composites(&pdev->dev, top_muxes,
|
||||
+ ARRAY_SIZE(top_muxes), base,
|
||||
+ &mt2712_clk_lock, top_clk_data);
|
||||
mtk_clk_register_dividers(top_adj_divs, ARRAY_SIZE(top_adj_divs), base,
|
||||
&mt2712_clk_lock, top_clk_data);
|
||||
mtk_clk_register_gates(&pdev->dev, node, top_clks,
|
||||
@@ -1395,8 +1396,11 @@ static int clk_mt2712_mcu_probe(struct p
|
||||
|
||||
clk_data = mtk_alloc_clk_data(CLK_MCU_NR_CLK);
|
||||
|
||||
- mtk_clk_register_composites(mcu_muxes, ARRAY_SIZE(mcu_muxes), base,
|
||||
- &mt2712_clk_lock, clk_data);
|
||||
+ r = mtk_clk_register_composites(&pdev->dev, mcu_muxes,
|
||||
+ ARRAY_SIZE(mcu_muxes), base,
|
||||
+ &mt2712_clk_lock, clk_data);
|
||||
+ if (r)
|
||||
+ dev_err(&pdev->dev, "Could not register composites: %d\n", r);
|
||||
|
||||
r = of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
|
||||
|
||||
--- a/drivers/clk/mediatek/clk-mt7622.c
|
||||
+++ b/drivers/clk/mediatek/clk-mt7622.c
|
||||
@@ -615,8 +615,9 @@ static int mtk_topckgen_init(struct plat
|
||||
mtk_clk_register_factors(top_divs, ARRAY_SIZE(top_divs),
|
||||
clk_data);
|
||||
|
||||
- mtk_clk_register_composites(top_muxes, ARRAY_SIZE(top_muxes),
|
||||
- base, &mt7622_clk_lock, clk_data);
|
||||
+ mtk_clk_register_composites(&pdev->dev, top_muxes,
|
||||
+ ARRAY_SIZE(top_muxes), base,
|
||||
+ &mt7622_clk_lock, clk_data);
|
||||
|
||||
mtk_clk_register_dividers(top_adj_divs, ARRAY_SIZE(top_adj_divs),
|
||||
base, &mt7622_clk_lock, clk_data);
|
||||
@@ -685,7 +686,8 @@ static int mtk_pericfg_init(struct platf
|
||||
mtk_clk_register_gates(&pdev->dev, node, peri_clks,
|
||||
ARRAY_SIZE(peri_clks), clk_data);
|
||||
|
||||
- mtk_clk_register_composites(peri_muxes, ARRAY_SIZE(peri_muxes), base,
|
||||
+ mtk_clk_register_composites(&pdev->dev, peri_muxes,
|
||||
+ ARRAY_SIZE(peri_muxes), base,
|
||||
&mt7622_clk_lock, clk_data);
|
||||
|
||||
r = of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
|
||||
--- a/drivers/clk/mediatek/clk-mt7629.c
|
||||
+++ b/drivers/clk/mediatek/clk-mt7629.c
|
||||
@@ -566,8 +566,9 @@ static int mtk_topckgen_init(struct plat
|
||||
mtk_clk_register_factors(top_divs, ARRAY_SIZE(top_divs),
|
||||
clk_data);
|
||||
|
||||
- mtk_clk_register_composites(top_muxes, ARRAY_SIZE(top_muxes),
|
||||
- base, &mt7629_clk_lock, clk_data);
|
||||
+ mtk_clk_register_composites(&pdev->dev, top_muxes,
|
||||
+ ARRAY_SIZE(top_muxes), base,
|
||||
+ &mt7629_clk_lock, clk_data);
|
||||
|
||||
clk_prepare_enable(clk_data->hws[CLK_TOP_AXI_SEL]->clk);
|
||||
clk_prepare_enable(clk_data->hws[CLK_TOP_MEM_SEL]->clk);
|
||||
@@ -613,7 +614,8 @@ static int mtk_pericfg_init(struct platf
|
||||
mtk_clk_register_gates(&pdev->dev, node, peri_clks,
|
||||
ARRAY_SIZE(peri_clks), clk_data);
|
||||
|
||||
- mtk_clk_register_composites(peri_muxes, ARRAY_SIZE(peri_muxes), base,
|
||||
+ mtk_clk_register_composites(&pdev->dev, peri_muxes,
|
||||
+ ARRAY_SIZE(peri_muxes), base,
|
||||
&mt7629_clk_lock, clk_data);
|
||||
|
||||
r = of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
|
||||
--- a/drivers/clk/mediatek/clk-mtk.c
|
||||
+++ b/drivers/clk/mediatek/clk-mtk.c
|
||||
@@ -197,8 +197,8 @@ void mtk_clk_unregister_factors(const st
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mtk_clk_unregister_factors);
|
||||
|
||||
-static struct clk_hw *mtk_clk_register_composite(const struct mtk_composite *mc,
|
||||
- void __iomem *base, spinlock_t *lock)
|
||||
+static struct clk_hw *mtk_clk_register_composite(struct device *dev,
|
||||
+ const struct mtk_composite *mc, void __iomem *base, spinlock_t *lock)
|
||||
{
|
||||
struct clk_hw *hw;
|
||||
struct clk_mux *mux = NULL;
|
||||
@@ -264,7 +264,7 @@ static struct clk_hw *mtk_clk_register_c
|
||||
div_ops = &clk_divider_ops;
|
||||
}
|
||||
|
||||
- hw = clk_hw_register_composite(NULL, mc->name, parent_names, num_parents,
|
||||
+ hw = clk_hw_register_composite(dev, mc->name, parent_names, num_parents,
|
||||
mux_hw, mux_ops,
|
||||
div_hw, div_ops,
|
||||
gate_hw, gate_ops,
|
||||
@@ -308,7 +308,8 @@ static void mtk_clk_unregister_composite
|
||||
kfree(mux);
|
||||
}
|
||||
|
||||
-int mtk_clk_register_composites(const struct mtk_composite *mcs, int num,
|
||||
+int mtk_clk_register_composites(struct device *dev,
|
||||
+ const struct mtk_composite *mcs, int num,
|
||||
void __iomem *base, spinlock_t *lock,
|
||||
struct clk_hw_onecell_data *clk_data)
|
||||
{
|
||||
@@ -327,7 +328,7 @@ int mtk_clk_register_composites(const st
|
||||
continue;
|
||||
}
|
||||
|
||||
- hw = mtk_clk_register_composite(mc, base, lock);
|
||||
+ hw = mtk_clk_register_composite(dev, mc, base, lock);
|
||||
|
||||
if (IS_ERR(hw)) {
|
||||
pr_err("Failed to register clk %s: %pe\n", mc->name,
|
||||
--- a/drivers/clk/mediatek/clk-mtk.h
|
||||
+++ b/drivers/clk/mediatek/clk-mtk.h
|
||||
@@ -149,7 +149,8 @@ struct mtk_composite {
|
||||
.flags = 0, \
|
||||
}
|
||||
|
||||
-int mtk_clk_register_composites(const struct mtk_composite *mcs, int num,
|
||||
+int mtk_clk_register_composites(struct device *dev,
|
||||
+ const struct mtk_composite *mcs, int num,
|
||||
void __iomem *base, spinlock_t *lock,
|
||||
struct clk_hw_onecell_data *clk_data);
|
||||
void mtk_clk_unregister_composites(const struct mtk_composite *mcs, int num,
|
||||
@@ -1,103 +0,0 @@
|
||||
From 5d911479e4c732729bfa798e4a9e3e5aec3e30a7 Mon Sep 17 00:00:00 2001
|
||||
From: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
|
||||
Date: Fri, 20 Jan 2023 10:20:36 +0100
|
||||
Subject: [PATCH 04/15] clk: mediatek: clk-mux: Propagate struct device for
|
||||
mtk-mux
|
||||
|
||||
Like done for other clocks, propagate struct device for mtk mux clocks
|
||||
registered through clk-mux helpers to enable runtime pm support.
|
||||
|
||||
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
|
||||
Tested-by: Miles Chen <miles.chen@mediatek.com>
|
||||
Link: https://lore.kernel.org/r/20230120092053.182923-7-angelogioacchino.delregno@collabora.com
|
||||
Tested-by: Mingming Su <mingming.su@mediatek.com>
|
||||
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
|
||||
|
||||
[daniel@makrotopia.org: removed parts not relevant for OpenWrt]
|
||||
---
|
||||
drivers/clk/mediatek/clk-mt7986-infracfg.c | 3 ++-
|
||||
drivers/clk/mediatek/clk-mt7986-topckgen.c | 3 ++-
|
||||
drivers/clk/mediatek/clk-mux.c | 14 ++++++++------
|
||||
drivers/clk/mediatek/clk-mux.h | 3 ++-
|
||||
4 files changed, 14 insertions(+), 9 deletions(-)
|
||||
|
||||
--- a/drivers/clk/mediatek/clk-mt7986-infracfg.c
|
||||
+++ b/drivers/clk/mediatek/clk-mt7986-infracfg.c
|
||||
@@ -178,7 +178,8 @@ static int clk_mt7986_infracfg_probe(str
|
||||
return -ENOMEM;
|
||||
|
||||
mtk_clk_register_factors(infra_divs, ARRAY_SIZE(infra_divs), clk_data);
|
||||
- mtk_clk_register_muxes(infra_muxes, ARRAY_SIZE(infra_muxes), node,
|
||||
+ mtk_clk_register_muxes(&pdev->dev, infra_muxes,
|
||||
+ ARRAY_SIZE(infra_muxes), node,
|
||||
&mt7986_clk_lock, clk_data);
|
||||
mtk_clk_register_gates(&pdev->dev, node, infra_clks,
|
||||
ARRAY_SIZE(infra_clks), clk_data);
|
||||
--- a/drivers/clk/mediatek/clk-mt7986-topckgen.c
|
||||
+++ b/drivers/clk/mediatek/clk-mt7986-topckgen.c
|
||||
@@ -303,7 +303,8 @@ static int clk_mt7986_topckgen_probe(str
|
||||
mtk_clk_register_fixed_clks(top_fixed_clks, ARRAY_SIZE(top_fixed_clks),
|
||||
clk_data);
|
||||
mtk_clk_register_factors(top_divs, ARRAY_SIZE(top_divs), clk_data);
|
||||
- mtk_clk_register_muxes(top_muxes, ARRAY_SIZE(top_muxes), node,
|
||||
+ mtk_clk_register_muxes(&pdev->dev, top_muxes,
|
||||
+ ARRAY_SIZE(top_muxes), node,
|
||||
&mt7986_clk_lock, clk_data);
|
||||
|
||||
clk_prepare_enable(clk_data->hws[CLK_TOP_SYSAXI_SEL]->clk);
|
||||
--- a/drivers/clk/mediatek/clk-mux.c
|
||||
+++ b/drivers/clk/mediatek/clk-mux.c
|
||||
@@ -154,9 +154,10 @@ const struct clk_ops mtk_mux_gate_clr_se
|
||||
};
|
||||
EXPORT_SYMBOL_GPL(mtk_mux_gate_clr_set_upd_ops);
|
||||
|
||||
-static struct clk_hw *mtk_clk_register_mux(const struct mtk_mux *mux,
|
||||
- struct regmap *regmap,
|
||||
- spinlock_t *lock)
|
||||
+static struct clk_hw *mtk_clk_register_mux(struct device *dev,
|
||||
+ const struct mtk_mux *mux,
|
||||
+ struct regmap *regmap,
|
||||
+ spinlock_t *lock)
|
||||
{
|
||||
struct mtk_clk_mux *clk_mux;
|
||||
struct clk_init_data init = {};
|
||||
@@ -177,7 +178,7 @@ static struct clk_hw *mtk_clk_register_m
|
||||
clk_mux->lock = lock;
|
||||
clk_mux->hw.init = &init;
|
||||
|
||||
- ret = clk_hw_register(NULL, &clk_mux->hw);
|
||||
+ ret = clk_hw_register(dev, &clk_mux->hw);
|
||||
if (ret) {
|
||||
kfree(clk_mux);
|
||||
return ERR_PTR(ret);
|
||||
@@ -198,7 +199,8 @@ static void mtk_clk_unregister_mux(struc
|
||||
kfree(mux);
|
||||
}
|
||||
|
||||
-int mtk_clk_register_muxes(const struct mtk_mux *muxes,
|
||||
+int mtk_clk_register_muxes(struct device *dev,
|
||||
+ const struct mtk_mux *muxes,
|
||||
int num, struct device_node *node,
|
||||
spinlock_t *lock,
|
||||
struct clk_hw_onecell_data *clk_data)
|
||||
@@ -222,7 +224,7 @@ int mtk_clk_register_muxes(const struct
|
||||
continue;
|
||||
}
|
||||
|
||||
- hw = mtk_clk_register_mux(mux, regmap, lock);
|
||||
+ hw = mtk_clk_register_mux(dev, mux, regmap, lock);
|
||||
|
||||
if (IS_ERR(hw)) {
|
||||
pr_err("Failed to register clk %s: %pe\n", mux->name,
|
||||
--- a/drivers/clk/mediatek/clk-mux.h
|
||||
+++ b/drivers/clk/mediatek/clk-mux.h
|
||||
@@ -83,7 +83,8 @@ extern const struct clk_ops mtk_mux_gate
|
||||
0, _upd_ofs, _upd, CLK_SET_RATE_PARENT, \
|
||||
mtk_mux_clr_set_upd_ops)
|
||||
|
||||
-int mtk_clk_register_muxes(const struct mtk_mux *muxes,
|
||||
+int mtk_clk_register_muxes(struct device *dev,
|
||||
+ const struct mtk_mux *muxes,
|
||||
int num, struct device_node *node,
|
||||
spinlock_t *lock,
|
||||
struct clk_hw_onecell_data *clk_data);
|
||||
@@ -21,9 +21,9 @@ Signed-off-by: Stephen Boyd <sboyd@kernel.org>
|
||||
|
||||
--- a/drivers/clk/mediatek/clk-mtk.c
|
||||
+++ b/drivers/clk/mediatek/clk-mtk.c
|
||||
@@ -18,6 +18,22 @@
|
||||
#include "clk-mtk.h"
|
||||
@@ -21,6 +21,22 @@
|
||||
#include "clk-gate.h"
|
||||
#include "clk-mux.h"
|
||||
|
||||
+const struct mtk_gate_regs cg_regs_dummy = { 0, 0, 0 };
|
||||
+EXPORT_SYMBOL_GPL(cg_regs_dummy);
|
||||
|
||||
@@ -1,189 +0,0 @@
|
||||
From 7b6183108c8ccf0dc295f39cdf78bd8078455636 Mon Sep 17 00:00:00 2001
|
||||
From: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
|
||||
Date: Fri, 20 Jan 2023 10:20:42 +0100
|
||||
Subject: [PATCH] clk: mediatek: clk-mtk: Extend mtk_clk_simple_probe()
|
||||
|
||||
As a preparation to increase probe functions commonization across
|
||||
various MediaTek SoC clock controller drivers, extend function
|
||||
mtk_clk_simple_probe() to be able to register not only gates, but
|
||||
also fixed clocks, factors, muxes and composites.
|
||||
|
||||
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
|
||||
Reviewed-by: Miles Chen <miles.chen@mediatek.com>
|
||||
Reviewed-by: Chen-Yu Tsai <wenst@chromium.org>
|
||||
Tested-by: Miles Chen <miles.chen@mediatek.com>
|
||||
Link: https://lore.kernel.org/r/20230120092053.182923-13-angelogioacchino.delregno@collabora.com
|
||||
Tested-by: Mingming Su <mingming.su@mediatek.com>
|
||||
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
|
||||
---
|
||||
drivers/clk/mediatek/clk-mtk.c | 101 ++++++++++++++++++++++++++++++---
|
||||
drivers/clk/mediatek/clk-mtk.h | 10 ++++
|
||||
2 files changed, 103 insertions(+), 8 deletions(-)
|
||||
|
||||
--- a/drivers/clk/mediatek/clk-mtk.c
|
||||
+++ b/drivers/clk/mediatek/clk-mtk.c
|
||||
@@ -11,12 +11,14 @@
|
||||
#include <linux/mfd/syscon.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/of.h>
|
||||
+#include <linux/of_address.h>
|
||||
#include <linux/of_device.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/slab.h>
|
||||
|
||||
#include "clk-mtk.h"
|
||||
#include "clk-gate.h"
|
||||
+#include "clk-mux.h"
|
||||
|
||||
const struct mtk_gate_regs cg_regs_dummy = { 0, 0, 0 };
|
||||
EXPORT_SYMBOL_GPL(cg_regs_dummy);
|
||||
@@ -466,20 +468,71 @@ int mtk_clk_simple_probe(struct platform
|
||||
const struct mtk_clk_desc *mcd;
|
||||
struct clk_hw_onecell_data *clk_data;
|
||||
struct device_node *node = pdev->dev.of_node;
|
||||
- int r;
|
||||
+ void __iomem *base;
|
||||
+ int num_clks, r;
|
||||
|
||||
mcd = of_device_get_match_data(&pdev->dev);
|
||||
if (!mcd)
|
||||
return -EINVAL;
|
||||
|
||||
- clk_data = mtk_alloc_clk_data(mcd->num_clks);
|
||||
+ /* Composite clocks needs us to pass iomem pointer */
|
||||
+ if (mcd->composite_clks) {
|
||||
+ if (!mcd->shared_io)
|
||||
+ base = devm_platform_ioremap_resource(pdev, 0);
|
||||
+ else
|
||||
+ base = of_iomap(node, 0);
|
||||
+
|
||||
+ if (IS_ERR_OR_NULL(base))
|
||||
+ return IS_ERR(base) ? PTR_ERR(base) : -ENOMEM;
|
||||
+ }
|
||||
+
|
||||
+ /* Calculate how many clk_hw_onecell_data entries to allocate */
|
||||
+ num_clks = mcd->num_clks + mcd->num_composite_clks;
|
||||
+ num_clks += mcd->num_fixed_clks + mcd->num_factor_clks;
|
||||
+ num_clks += mcd->num_mux_clks;
|
||||
+
|
||||
+ clk_data = mtk_alloc_clk_data(num_clks);
|
||||
if (!clk_data)
|
||||
return -ENOMEM;
|
||||
|
||||
- r = mtk_clk_register_gates(&pdev->dev, node, mcd->clks, mcd->num_clks,
|
||||
- clk_data);
|
||||
- if (r)
|
||||
- goto free_data;
|
||||
+ if (mcd->fixed_clks) {
|
||||
+ r = mtk_clk_register_fixed_clks(mcd->fixed_clks,
|
||||
+ mcd->num_fixed_clks, clk_data);
|
||||
+ if (r)
|
||||
+ goto free_data;
|
||||
+ }
|
||||
+
|
||||
+ if (mcd->factor_clks) {
|
||||
+ r = mtk_clk_register_factors(mcd->factor_clks,
|
||||
+ mcd->num_factor_clks, clk_data);
|
||||
+ if (r)
|
||||
+ goto unregister_fixed_clks;
|
||||
+ }
|
||||
+
|
||||
+ if (mcd->mux_clks) {
|
||||
+ r = mtk_clk_register_muxes(&pdev->dev, mcd->mux_clks,
|
||||
+ mcd->num_mux_clks, node,
|
||||
+ mcd->clk_lock, clk_data);
|
||||
+ if (r)
|
||||
+ goto unregister_factors;
|
||||
+ };
|
||||
+
|
||||
+ if (mcd->composite_clks) {
|
||||
+ /* We don't check composite_lock because it's optional */
|
||||
+ r = mtk_clk_register_composites(&pdev->dev,
|
||||
+ mcd->composite_clks,
|
||||
+ mcd->num_composite_clks,
|
||||
+ base, mcd->clk_lock, clk_data);
|
||||
+ if (r)
|
||||
+ goto unregister_muxes;
|
||||
+ }
|
||||
+
|
||||
+ if (mcd->clks) {
|
||||
+ r = mtk_clk_register_gates(&pdev->dev, node, mcd->clks,
|
||||
+ mcd->num_clks, clk_data);
|
||||
+ if (r)
|
||||
+ goto unregister_composites;
|
||||
+ }
|
||||
|
||||
r = of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
|
||||
if (r)
|
||||
@@ -497,9 +550,28 @@ int mtk_clk_simple_probe(struct platform
|
||||
return r;
|
||||
|
||||
unregister_clks:
|
||||
- mtk_clk_unregister_gates(mcd->clks, mcd->num_clks, clk_data);
|
||||
+ if (mcd->clks)
|
||||
+ mtk_clk_unregister_gates(mcd->clks, mcd->num_clks, clk_data);
|
||||
+unregister_composites:
|
||||
+ if (mcd->composite_clks)
|
||||
+ mtk_clk_unregister_composites(mcd->composite_clks,
|
||||
+ mcd->num_composite_clks, clk_data);
|
||||
+unregister_muxes:
|
||||
+ if (mcd->mux_clks)
|
||||
+ mtk_clk_unregister_muxes(mcd->mux_clks,
|
||||
+ mcd->num_mux_clks, clk_data);
|
||||
+unregister_factors:
|
||||
+ if (mcd->factor_clks)
|
||||
+ mtk_clk_unregister_factors(mcd->factor_clks,
|
||||
+ mcd->num_factor_clks, clk_data);
|
||||
+unregister_fixed_clks:
|
||||
+ if (mcd->fixed_clks)
|
||||
+ mtk_clk_unregister_fixed_clks(mcd->fixed_clks,
|
||||
+ mcd->num_fixed_clks, clk_data);
|
||||
free_data:
|
||||
mtk_free_clk_data(clk_data);
|
||||
+ if (mcd->shared_io && base)
|
||||
+ iounmap(base);
|
||||
return r;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mtk_clk_simple_probe);
|
||||
@@ -511,7 +583,20 @@ int mtk_clk_simple_remove(struct platfor
|
||||
struct device_node *node = pdev->dev.of_node;
|
||||
|
||||
of_clk_del_provider(node);
|
||||
- mtk_clk_unregister_gates(mcd->clks, mcd->num_clks, clk_data);
|
||||
+ if (mcd->clks)
|
||||
+ mtk_clk_unregister_gates(mcd->clks, mcd->num_clks, clk_data);
|
||||
+ if (mcd->composite_clks)
|
||||
+ mtk_clk_unregister_composites(mcd->composite_clks,
|
||||
+ mcd->num_composite_clks, clk_data);
|
||||
+ if (mcd->mux_clks)
|
||||
+ mtk_clk_unregister_muxes(mcd->mux_clks,
|
||||
+ mcd->num_mux_clks, clk_data);
|
||||
+ if (mcd->factor_clks)
|
||||
+ mtk_clk_unregister_factors(mcd->factor_clks,
|
||||
+ mcd->num_factor_clks, clk_data);
|
||||
+ if (mcd->fixed_clks)
|
||||
+ mtk_clk_unregister_fixed_clks(mcd->fixed_clks,
|
||||
+ mcd->num_fixed_clks, clk_data);
|
||||
mtk_free_clk_data(clk_data);
|
||||
|
||||
return 0;
|
||||
--- a/drivers/clk/mediatek/clk-mtk.h
|
||||
+++ b/drivers/clk/mediatek/clk-mtk.h
|
||||
@@ -215,7 +215,17 @@ void mtk_clk_unregister_ref2usb_tx(struc
|
||||
struct mtk_clk_desc {
|
||||
const struct mtk_gate *clks;
|
||||
size_t num_clks;
|
||||
+ const struct mtk_composite *composite_clks;
|
||||
+ size_t num_composite_clks;
|
||||
+ const struct mtk_fixed_clk *fixed_clks;
|
||||
+ size_t num_fixed_clks;
|
||||
+ const struct mtk_fixed_factor *factor_clks;
|
||||
+ size_t num_factor_clks;
|
||||
+ const struct mtk_mux *mux_clks;
|
||||
+ size_t num_mux_clks;
|
||||
const struct mtk_clk_rst_desc *rst_desc;
|
||||
+ spinlock_t *clk_lock;
|
||||
+ bool shared_io;
|
||||
};
|
||||
|
||||
int mtk_clk_simple_probe(struct platform_device *pdev);
|
||||
Reference in New Issue
Block a user