* [PATCH v4 1/4] clk: en7523: Rework clock handling for different clock numbers
@ 2025-01-05 14:41 Christian Marangi
2025-01-05 14:41 ` [PATCH v4 2/4] dt-bindings: clock: drop NUM_CLOCKS define for EN7581 Christian Marangi
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: Christian Marangi @ 2025-01-05 14:41 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>
---
Changes v4:
- Move to patch 1 (improve bisectability)
Changes v3:
- Rework num_clocks for en7523
Changes v2:
- Add this patch
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..596847446b14 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,21 +699,24 @@ 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);
r = soc_data->hw_init(pdev, clk_data);
if (r)
return r;
+ clk_data->num = soc_data->num_clocks;
return of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
}
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 [flat|nested] 5+ messages in thread
* [PATCH v4 2/4] dt-bindings: clock: drop NUM_CLOCKS define for EN7581
2025-01-05 14:41 [PATCH v4 1/4] clk: en7523: Rework clock handling for different clock numbers Christian Marangi
@ 2025-01-05 14:41 ` Christian Marangi
2025-01-06 6:22 ` Krzysztof Kozlowski
2025-01-05 14:42 ` [PATCH v4 3/4] dt-bindings: clock: add ID for eMMC " Christian Marangi
2025-01-05 14:42 ` [PATCH v4 4/4] clk: en7523: Add clock " Christian Marangi
2 siblings, 1 reply; 5+ messages in thread
From: Christian Marangi @ 2025-01-05 14:41 UTC (permalink / raw)
To: Michael Turquette, Stephen Boyd, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, linux-clk, linux-kernel,
devicetree, upstream
Cc: Christian Marangi
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>
---
Changes v4:
- Move to patch 2 (improves bisectability)
Changes v3:
- Add this patch
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 [flat|nested] 5+ messages in thread
* [PATCH v4 3/4] dt-bindings: clock: add ID for eMMC for EN7581
2025-01-05 14:41 [PATCH v4 1/4] clk: en7523: Rework clock handling for different clock numbers Christian Marangi
2025-01-05 14:41 ` [PATCH v4 2/4] dt-bindings: clock: drop NUM_CLOCKS define for EN7581 Christian Marangi
@ 2025-01-05 14:42 ` Christian Marangi
2025-01-05 14:42 ` [PATCH v4 4/4] clk: en7523: Add clock " Christian Marangi
2 siblings, 0 replies; 5+ messages in thread
From: Christian Marangi @ 2025-01-05 14:42 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>
---
Changes v4:
- Move to patch 3
Changes v3:
- Add ack tag
Changes v2:
- Drop additional define for EN7581_NUM_CLOCKS
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 [flat|nested] 5+ messages in thread
* [PATCH v4 4/4] clk: en7523: Add clock for eMMC for EN7581
2025-01-05 14:41 [PATCH v4 1/4] clk: en7523: Rework clock handling for different clock numbers Christian Marangi
2025-01-05 14:41 ` [PATCH v4 2/4] dt-bindings: clock: drop NUM_CLOCKS define for EN7581 Christian Marangi
2025-01-05 14:42 ` [PATCH v4 3/4] dt-bindings: clock: add ID for eMMC " Christian Marangi
@ 2025-01-05 14:42 ` Christian Marangi
2 siblings, 0 replies; 5+ messages in thread
From: Christian Marangi @ 2025-01-05 14:42 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>
---
Changes v4:
- Move to patch 4
Changes v2:
- Rename emmc_base to emmc7581_base to make it more clear
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 596847446b14..b36445359b5a 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 [flat|nested] 5+ messages in thread
* Re: [PATCH v4 2/4] dt-bindings: clock: drop NUM_CLOCKS define for EN7581
2025-01-05 14:41 ` [PATCH v4 2/4] dt-bindings: clock: drop NUM_CLOCKS define for EN7581 Christian Marangi
@ 2025-01-06 6:22 ` Krzysztof Kozlowski
0 siblings, 0 replies; 5+ messages in thread
From: Krzysztof Kozlowski @ 2025-01-06 6:22 UTC (permalink / raw)
To: Christian Marangi
Cc: Michael Turquette, Stephen Boyd, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, linux-clk, linux-kernel,
devicetree, upstream
On Sun, Jan 05, 2025 at 03:41:59PM +0100, Christian Marangi wrote:
> 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>
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2025-01-06 6:22 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-01-05 14:41 [PATCH v4 1/4] clk: en7523: Rework clock handling for different clock numbers Christian Marangi
2025-01-05 14:41 ` [PATCH v4 2/4] dt-bindings: clock: drop NUM_CLOCKS define for EN7581 Christian Marangi
2025-01-06 6:22 ` Krzysztof Kozlowski
2025-01-05 14:42 ` [PATCH v4 3/4] dt-bindings: clock: add ID for eMMC " Christian Marangi
2025-01-05 14:42 ` [PATCH v4 4/4] clk: en7523: Add clock " Christian Marangi
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®