* [PATCH v3 1/4] dt-bindings: clock: add ID for eMMC for EN7581
@ 2024-12-19 12:18 Christian Marangi
2024-12-19 12:18 ` [PATCH v3 2/4] dt-bindings: clock: drop NUM_CLOCKS define " Christian Marangi
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Christian Marangi @ 2024-12-19 12:18 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 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 717d23a5e5ae..c4f8a161b981 100644
--- a/include/dt-bindings/clock/en7523-clk.h
+++ b/include/dt-bindings/clock/en7523-clk.h
@@ -12,6 +12,8 @@
#define EN7523_CLK_CRYPTO 6
#define EN7523_CLK_PCIE 7
+#define EN7581_CLK_EMMC 8
+
#define EN7523_NUM_CLOCKS 8
#endif /* _DT_BINDINGS_CLOCK_AIROHA_EN7523_H_ */
--
2.45.2
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v3 2/4] dt-bindings: clock: drop NUM_CLOCKS define for EN7581
2024-12-19 12:18 [PATCH v3 1/4] dt-bindings: clock: add ID for eMMC for EN7581 Christian Marangi
@ 2024-12-19 12:18 ` Christian Marangi
2024-12-19 12:28 ` Krzysztof Kozlowski
2024-12-19 12:18 ` [PATCH v3 3/4] clk: en7523: Rework clock handling for different clock numbers Christian Marangi
2024-12-19 12:18 ` [PATCH v3 4/4] clk: en7523: Add clock for eMMC for EN7581 Christian Marangi
2 siblings, 1 reply; 7+ messages in thread
From: Christian Marangi @ 2024-12-19 12:18 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 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 c4f8a161b981..edfa64045f52 100644
--- a/include/dt-bindings/clock/en7523-clk.h
+++ b/include/dt-bindings/clock/en7523-clk.h
@@ -14,6 +14,4 @@
#define EN7581_CLK_EMMC 8
-#define EN7523_NUM_CLOCKS 8
-
#endif /* _DT_BINDINGS_CLOCK_AIROHA_EN7523_H_ */
--
2.45.2
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v3 3/4] clk: en7523: Rework clock handling for different clock numbers
2024-12-19 12:18 [PATCH v3 1/4] dt-bindings: clock: add ID for eMMC for EN7581 Christian Marangi
2024-12-19 12:18 ` [PATCH v3 2/4] dt-bindings: clock: drop NUM_CLOCKS define " Christian Marangi
@ 2024-12-19 12:18 ` Christian Marangi
2024-12-19 12:18 ` [PATCH v3 4/4] clk: en7523: Add clock for eMMC for EN7581 Christian Marangi
2 siblings, 0 replies; 7+ messages in thread
From: Christian Marangi @ 2024-12-19 12:18 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 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 related [flat|nested] 7+ messages in thread
* [PATCH v3 4/4] clk: en7523: Add clock for eMMC for EN7581
2024-12-19 12:18 [PATCH v3 1/4] dt-bindings: clock: add ID for eMMC for EN7581 Christian Marangi
2024-12-19 12:18 ` [PATCH v3 2/4] dt-bindings: clock: drop NUM_CLOCKS define " Christian Marangi
2024-12-19 12:18 ` [PATCH v3 3/4] clk: en7523: Rework clock handling for different clock numbers Christian Marangi
@ 2024-12-19 12:18 ` Christian Marangi
2 siblings, 0 replies; 7+ messages in thread
From: Christian Marangi @ 2024-12-19 12:18 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 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 related [flat|nested] 7+ messages in thread
* Re: [PATCH v3 2/4] dt-bindings: clock: drop NUM_CLOCKS define for EN7581
2024-12-19 12:18 ` [PATCH v3 2/4] dt-bindings: clock: drop NUM_CLOCKS define " Christian Marangi
@ 2024-12-19 12:28 ` Krzysztof Kozlowski
2024-12-19 12:30 ` Christian Marangi
0 siblings, 1 reply; 7+ messages in thread
From: Krzysztof Kozlowski @ 2024-12-19 12:28 UTC (permalink / raw)
To: Christian Marangi, Michael Turquette, Stephen Boyd, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, linux-clk, linux-kernel,
devicetree, upstream
On 19/12/2024 13:18, 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>
> ---
> 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 c4f8a161b981..edfa64045f52 100644
> --- a/include/dt-bindings/clock/en7523-clk.h
> +++ b/include/dt-bindings/clock/en7523-clk.h
> @@ -14,6 +14,4 @@
>
> #define EN7581_CLK_EMMC 8
>
> -#define EN7523_NUM_CLOCKS 8
Are you sure your patchset bisects?
Also better to arrange cleanups before new clocks added, so lack of
conflict between number of clocks and new clock ID is obvious.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v3 2/4] dt-bindings: clock: drop NUM_CLOCKS define for EN7581
2024-12-19 12:28 ` Krzysztof Kozlowski
@ 2024-12-19 12:30 ` Christian Marangi
2024-12-19 12:44 ` Krzysztof Kozlowski
0 siblings, 1 reply; 7+ messages in thread
From: Christian Marangi @ 2024-12-19 12:30 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: Michael Turquette, Stephen Boyd, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, linux-clk, linux-kernel, devicetree, upstream
On Thu, Dec 19, 2024 at 01:28:59PM +0100, Krzysztof Kozlowski wrote:
> On 19/12/2024 13:18, 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>
> > ---
> > 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 c4f8a161b981..edfa64045f52 100644
> > --- a/include/dt-bindings/clock/en7523-clk.h
> > +++ b/include/dt-bindings/clock/en7523-clk.h
> > @@ -14,6 +14,4 @@
> >
> > #define EN7581_CLK_EMMC 8
> >
> > -#define EN7523_NUM_CLOCKS 8
> Are you sure your patchset bisects?
>
Well bisectability is a problem. Either this can't be dropped or the
change must be shipped with the driver change.
> Also better to arrange cleanups before new clocks added, so lack of
> conflict between number of clocks and new clock ID is obvious.
>
ok
--
Ansuel
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v3 2/4] dt-bindings: clock: drop NUM_CLOCKS define for EN7581
2024-12-19 12:30 ` Christian Marangi
@ 2024-12-19 12:44 ` Krzysztof Kozlowski
0 siblings, 0 replies; 7+ messages in thread
From: Krzysztof Kozlowski @ 2024-12-19 12:44 UTC (permalink / raw)
To: Christian Marangi
Cc: Michael Turquette, Stephen Boyd, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, linux-clk, linux-kernel, devicetree, upstream
On 19/12/2024 13:30, Christian Marangi wrote:
> On Thu, Dec 19, 2024 at 01:28:59PM +0100, Krzysztof Kozlowski wrote:
>> On 19/12/2024 13:18, 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>
>>> ---
>>> 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 c4f8a161b981..edfa64045f52 100644
>>> --- a/include/dt-bindings/clock/en7523-clk.h
>>> +++ b/include/dt-bindings/clock/en7523-clk.h
>>> @@ -14,6 +14,4 @@
>>>
>>> #define EN7581_CLK_EMMC 8
>>>
>>> -#define EN7523_NUM_CLOCKS 8
>> Are you sure your patchset bisects?
>>
>
> Well bisectability is a problem. Either this can't be dropped or the
> change must be shipped with the driver change.
No, you need to fix order of patches and maybe driver as well. There is
never a problem, if done correctly (which was happening multiple times).
Please do not send non-bisectable changes, especially in hidden way we
need to discover.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2024-12-19 12:44 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-12-19 12:18 [PATCH v3 1/4] dt-bindings: clock: add ID for eMMC for EN7581 Christian Marangi
2024-12-19 12:18 ` [PATCH v3 2/4] dt-bindings: clock: drop NUM_CLOCKS define " Christian Marangi
2024-12-19 12:28 ` Krzysztof Kozlowski
2024-12-19 12:30 ` Christian Marangi
2024-12-19 12:44 ` Krzysztof Kozlowski
2024-12-19 12:18 ` [PATCH v3 3/4] clk: en7523: Rework clock handling for different clock numbers Christian Marangi
2024-12-19 12:18 ` [PATCH v3 4/4] clk: en7523: Add clock for eMMC for EN7581 Christian Marangi
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox