* [PATCH v6 0/4] clk: en7523: cleanup + eMMC clk for EN7581
@ 2025-01-13 23:10 Christian Marangi
2025-01-13 23:10 ` [PATCH v6 1/4] clk: en7523: Rework clock handling for different clock numbers Christian Marangi
` (3 more replies)
0 siblings, 4 replies; 9+ messages in thread
From: Christian Marangi @ 2025-01-13 23:10 UTC (permalink / raw)
To: Michael Turquette, Stephen Boyd, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, linux-clk, linux-kernel, devicetree, upstream
Cc: Christian Marangi
This small series have some simple cleanup and the additional clock
needed to support eMMC on EN7581 SoC.
Changes v6:
- Add base-commit info
- Rebase on top of clk-next
Cumulative changes before cover letter:
Changes v5:
- Set clk_data->num before accessing hws to follow counted_by
- Add ack tag
Changes v4:
- Reorder patch
Changes v3:
- Rework num_clocks for en7523
- Add ack tag
Changes v2:
- Rename emmc_base to emmc7581_base to make it more clear
- Drop additional define for EN7581_NUM_CLOCKS
Christian Marangi (4):
clk: en7523: Rework clock handling for different clock numbers
dt-bindings: clock: drop NUM_CLOCKS define for EN7581
dt-bindings: clock: add ID for eMMC for EN7581
clk: en7523: Add clock for eMMC for EN7581
drivers/clk/clk-en7523.c | 24 ++++++++++++++++++------
include/dt-bindings/clock/en7523-clk.h | 2 +-
2 files changed, 19 insertions(+), 7 deletions(-)
base-commit: 58ad39edcabc988aefe0482b6e0579b93b0a4301
--
2.45.2
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v6 1/4] clk: en7523: Rework clock handling for different clock numbers
2025-01-13 23:10 [PATCH v6 0/4] clk: en7523: cleanup + eMMC clk for EN7581 Christian Marangi
@ 2025-01-13 23:10 ` Christian Marangi
2025-01-13 23:54 ` Stephen Boyd
2025-01-13 23:10 ` [PATCH v6 2/4] dt-bindings: clock: drop NUM_CLOCKS define for EN7581 Christian Marangi
` (2 subsequent siblings)
3 siblings, 1 reply; 9+ messages in thread
From: Christian Marangi @ 2025-01-13 23:10 UTC (permalink / raw)
To: Michael Turquette, Stephen Boyd, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, linux-clk, linux-kernel, devicetree, upstream
Cc: Christian Marangi
Airoha EN7581 SoC have additional clock compared to EN7523 but current
driver permits to only support up to EN7523 clock numbers.
To handle this, rework the clock handling and permit to declare the
clocks number in match_data and alloca clk_data based on the compatible
match_data.
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
---
drivers/clk/clk-en7523.c | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/drivers/clk/clk-en7523.c b/drivers/clk/clk-en7523.c
index 495c0d607c7d..3a4b7ed40af4 100644
--- a/drivers/clk/clk-en7523.c
+++ b/drivers/clk/clk-en7523.c
@@ -75,6 +75,7 @@ struct en_rst_data {
};
struct en_clk_soc_data {
+ u32 num_clocks;
const struct clk_ops pcie_ops;
int (*hw_init)(struct platform_device *pdev,
struct clk_hw_onecell_data *clk_data);
@@ -504,8 +505,6 @@ static void en7523_register_clocks(struct device *dev, struct clk_hw_onecell_dat
u32 rate;
int i;
- clk_data->num = EN7523_NUM_CLOCKS;
-
for (i = 0; i < ARRAY_SIZE(en7523_base_clks); i++) {
const struct en_clk_desc *desc = &en7523_base_clks[i];
u32 reg = desc->div_reg ? desc->div_reg : desc->base_reg;
@@ -587,8 +586,6 @@ static void en7581_register_clocks(struct device *dev, struct clk_hw_onecell_dat
hw = en7523_register_pcie_clk(dev, base);
clk_data->hws[EN7523_CLK_PCIE] = hw;
-
- clk_data->num = EN7523_NUM_CLOCKS;
}
static int en7523_reset_update(struct reset_controller_dev *rcdev,
@@ -702,13 +699,15 @@ static int en7523_clk_probe(struct platform_device *pdev)
struct clk_hw_onecell_data *clk_data;
int r;
+ soc_data = device_get_match_data(&pdev->dev);
+
clk_data = devm_kzalloc(&pdev->dev,
- struct_size(clk_data, hws, EN7523_NUM_CLOCKS),
+ struct_size(clk_data, hws, soc_data->num_clocks),
GFP_KERNEL);
if (!clk_data)
return -ENOMEM;
- soc_data = device_get_match_data(&pdev->dev);
+ clk_data->num = soc_data->num_clocks;
r = soc_data->hw_init(pdev, clk_data);
if (r)
return r;
@@ -717,6 +716,7 @@ static int en7523_clk_probe(struct platform_device *pdev)
}
static const struct en_clk_soc_data en7523_data = {
+ .num_clocks = ARRAY_SIZE(en7523_base_clks) + 1,
.pcie_ops = {
.is_enabled = en7523_pci_is_enabled,
.prepare = en7523_pci_prepare,
@@ -726,6 +726,8 @@ static const struct en_clk_soc_data en7523_data = {
};
static const struct en_clk_soc_data en7581_data = {
+ /* We increment num_clocks by 1 to account for additional PCIe clock */
+ .num_clocks = ARRAY_SIZE(en7581_base_clks) + 1,
.pcie_ops = {
.is_enabled = en7581_pci_is_enabled,
.enable = en7581_pci_enable,
--
2.45.2
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v6 2/4] dt-bindings: clock: drop NUM_CLOCKS define for EN7581
2025-01-13 23:10 [PATCH v6 0/4] clk: en7523: cleanup + eMMC clk for EN7581 Christian Marangi
2025-01-13 23:10 ` [PATCH v6 1/4] clk: en7523: Rework clock handling for different clock numbers Christian Marangi
@ 2025-01-13 23:10 ` Christian Marangi
2025-01-13 23:55 ` Stephen Boyd
2025-01-13 23:10 ` [PATCH v6 3/4] dt-bindings: clock: add ID for eMMC " Christian Marangi
2025-01-13 23:10 ` [PATCH v6 4/4] clk: en7523: Add clock " Christian Marangi
3 siblings, 1 reply; 9+ messages in thread
From: Christian Marangi @ 2025-01-13 23:10 UTC (permalink / raw)
To: Michael Turquette, Stephen Boyd, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, linux-clk, linux-kernel, devicetree, upstream
Cc: Christian Marangi, Krzysztof Kozlowski
Drop NUM_CLOCKS define for EN7581 include. This is not a binding and
should not be placed here. Value is derived internally in the user
driver.
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
---
include/dt-bindings/clock/en7523-clk.h | 2 --
1 file changed, 2 deletions(-)
diff --git a/include/dt-bindings/clock/en7523-clk.h b/include/dt-bindings/clock/en7523-clk.h
index 717d23a5e5ae..28e56745ccff 100644
--- a/include/dt-bindings/clock/en7523-clk.h
+++ b/include/dt-bindings/clock/en7523-clk.h
@@ -12,6 +12,4 @@
#define EN7523_CLK_CRYPTO 6
#define EN7523_CLK_PCIE 7
-#define EN7523_NUM_CLOCKS 8
-
#endif /* _DT_BINDINGS_CLOCK_AIROHA_EN7523_H_ */
--
2.45.2
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v6 3/4] dt-bindings: clock: add ID for eMMC for EN7581
2025-01-13 23:10 [PATCH v6 0/4] clk: en7523: cleanup + eMMC clk for EN7581 Christian Marangi
2025-01-13 23:10 ` [PATCH v6 1/4] clk: en7523: Rework clock handling for different clock numbers Christian Marangi
2025-01-13 23:10 ` [PATCH v6 2/4] dt-bindings: clock: drop NUM_CLOCKS define for EN7581 Christian Marangi
@ 2025-01-13 23:10 ` Christian Marangi
2025-01-13 23:55 ` Stephen Boyd
2025-01-13 23:10 ` [PATCH v6 4/4] clk: en7523: Add clock " Christian Marangi
3 siblings, 1 reply; 9+ messages in thread
From: Christian Marangi @ 2025-01-13 23:10 UTC (permalink / raw)
To: Michael Turquette, Stephen Boyd, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, linux-clk, linux-kernel, devicetree, upstream
Cc: Christian Marangi, Conor Dooley
Add ID for eMMC for EN7581. This is to control clock selection of eMMC
between 200MHz and 150MHz.
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
Acked-by: Conor Dooley <conor.dooley@microchip.com>
---
include/dt-bindings/clock/en7523-clk.h | 2 ++
1 file changed, 2 insertions(+)
diff --git a/include/dt-bindings/clock/en7523-clk.h b/include/dt-bindings/clock/en7523-clk.h
index 28e56745ccff..edfa64045f52 100644
--- a/include/dt-bindings/clock/en7523-clk.h
+++ b/include/dt-bindings/clock/en7523-clk.h
@@ -12,4 +12,6 @@
#define EN7523_CLK_CRYPTO 6
#define EN7523_CLK_PCIE 7
+#define EN7581_CLK_EMMC 8
+
#endif /* _DT_BINDINGS_CLOCK_AIROHA_EN7523_H_ */
--
2.45.2
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v6 4/4] clk: en7523: Add clock for eMMC for EN7581
2025-01-13 23:10 [PATCH v6 0/4] clk: en7523: cleanup + eMMC clk for EN7581 Christian Marangi
` (2 preceding siblings ...)
2025-01-13 23:10 ` [PATCH v6 3/4] dt-bindings: clock: add ID for eMMC " Christian Marangi
@ 2025-01-13 23:10 ` Christian Marangi
2025-01-13 23:55 ` Stephen Boyd
3 siblings, 1 reply; 9+ messages in thread
From: Christian Marangi @ 2025-01-13 23:10 UTC (permalink / raw)
To: Michael Turquette, Stephen Boyd, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, linux-clk, linux-kernel, devicetree, upstream
Cc: Christian Marangi
Add clock for eMMC for EN7581. This is used to give info of the current
eMMC source clock and to switch it from 200MHz or 150MHz.
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
---
drivers/clk/clk-en7523.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/drivers/clk/clk-en7523.c b/drivers/clk/clk-en7523.c
index 3a4b7ed40af4..6a763bc9ac1a 100644
--- a/drivers/clk/clk-en7523.c
+++ b/drivers/clk/clk-en7523.c
@@ -91,6 +91,7 @@ static const u32 emi7581_base[] = { 540000000, 480000000, 400000000, 300000000 }
static const u32 bus7581_base[] = { 600000000, 540000000 };
static const u32 npu7581_base[] = { 800000000, 750000000, 720000000, 600000000 };
static const u32 crypto_base[] = { 540000000, 480000000 };
+static const u32 emmc7581_base[] = { 200000000, 150000000 };
static const struct en_clk_desc en7523_base_clks[] = {
{
@@ -281,6 +282,15 @@ static const struct en_clk_desc en7581_base_clks[] = {
.base_shift = 0,
.base_values = crypto_base,
.n_base_values = ARRAY_SIZE(crypto_base),
+ }, {
+ .id = EN7581_CLK_EMMC,
+ .name = "emmc",
+
+ .base_reg = REG_CRYPTO_CLKSRC2,
+ .base_bits = 1,
+ .base_shift = 12,
+ .base_values = emmc7581_base,
+ .n_base_values = ARRAY_SIZE(emmc7581_base),
}
};
--
2.45.2
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v6 1/4] clk: en7523: Rework clock handling for different clock numbers
2025-01-13 23:10 ` [PATCH v6 1/4] clk: en7523: Rework clock handling for different clock numbers Christian Marangi
@ 2025-01-13 23:54 ` Stephen Boyd
0 siblings, 0 replies; 9+ messages in thread
From: Stephen Boyd @ 2025-01-13 23:54 UTC (permalink / raw)
To: Christian Marangi, Conor Dooley, Krzysztof Kozlowski,
Michael Turquette, Rob Herring, devicetree, linux-clk,
linux-kernel, upstream
Cc: Christian Marangi
Quoting Christian Marangi (2025-01-13 15:10:02)
> Airoha EN7581 SoC have additional clock compared to EN7523 but current
> driver permits to only support up to EN7523 clock numbers.
>
> To handle this, rework the clock handling and permit to declare the
> clocks number in match_data and alloca clk_data based on the compatible
> match_data.
>
> Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
> ---
Applied to clk-next
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v6 2/4] dt-bindings: clock: drop NUM_CLOCKS define for EN7581
2025-01-13 23:10 ` [PATCH v6 2/4] dt-bindings: clock: drop NUM_CLOCKS define for EN7581 Christian Marangi
@ 2025-01-13 23:55 ` Stephen Boyd
0 siblings, 0 replies; 9+ messages in thread
From: Stephen Boyd @ 2025-01-13 23:55 UTC (permalink / raw)
To: Christian Marangi, Conor Dooley, Krzysztof Kozlowski,
Michael Turquette, Rob Herring, devicetree, linux-clk,
linux-kernel, upstream
Cc: Christian Marangi, Krzysztof Kozlowski
Quoting Christian Marangi (2025-01-13 15:10:03)
> Drop NUM_CLOCKS define for EN7581 include. This is not a binding and
> should not be placed here. Value is derived internally in the user
> driver.
>
> Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
> Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
> ---
Applied to clk-next
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v6 3/4] dt-bindings: clock: add ID for eMMC for EN7581
2025-01-13 23:10 ` [PATCH v6 3/4] dt-bindings: clock: add ID for eMMC " Christian Marangi
@ 2025-01-13 23:55 ` Stephen Boyd
0 siblings, 0 replies; 9+ messages in thread
From: Stephen Boyd @ 2025-01-13 23:55 UTC (permalink / raw)
To: Christian Marangi, Conor Dooley, Krzysztof Kozlowski,
Michael Turquette, Rob Herring, devicetree, linux-clk,
linux-kernel, upstream
Cc: Christian Marangi, Conor Dooley
Quoting Christian Marangi (2025-01-13 15:10:04)
> Add ID for eMMC for EN7581. This is to control clock selection of eMMC
> between 200MHz and 150MHz.
>
> Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
> Acked-by: Conor Dooley <conor.dooley@microchip.com>
> ---
Applied to clk-next
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v6 4/4] clk: en7523: Add clock for eMMC for EN7581
2025-01-13 23:10 ` [PATCH v6 4/4] clk: en7523: Add clock " Christian Marangi
@ 2025-01-13 23:55 ` Stephen Boyd
0 siblings, 0 replies; 9+ messages in thread
From: Stephen Boyd @ 2025-01-13 23:55 UTC (permalink / raw)
To: Christian Marangi, Conor Dooley, Krzysztof Kozlowski,
Michael Turquette, Rob Herring, devicetree, linux-clk,
linux-kernel, upstream
Cc: Christian Marangi
Quoting Christian Marangi (2025-01-13 15:10:05)
> Add clock for eMMC for EN7581. This is used to give info of the current
> eMMC source clock and to switch it from 200MHz or 150MHz.
>
> Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
> ---
Applied to clk-next
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2025-01-13 23:55 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-01-13 23:10 [PATCH v6 0/4] clk: en7523: cleanup + eMMC clk for EN7581 Christian Marangi
2025-01-13 23:10 ` [PATCH v6 1/4] clk: en7523: Rework clock handling for different clock numbers Christian Marangi
2025-01-13 23:54 ` Stephen Boyd
2025-01-13 23:10 ` [PATCH v6 2/4] dt-bindings: clock: drop NUM_CLOCKS define for EN7581 Christian Marangi
2025-01-13 23:55 ` Stephen Boyd
2025-01-13 23:10 ` [PATCH v6 3/4] dt-bindings: clock: add ID for eMMC " Christian Marangi
2025-01-13 23:55 ` Stephen Boyd
2025-01-13 23:10 ` [PATCH v6 4/4] clk: en7523: Add clock " Christian Marangi
2025-01-13 23:55 ` Stephen Boyd
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).