All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/3] clk: vc5: Use `clamp()` to restrict PLL range
@ 2023-01-14 23:34 Lars-Peter Clausen
  2023-01-14 23:34 ` [PATCH 2/3] clk: vc5: Add support for 5P49V60 Lars-Peter Clausen
                   ` (3 more replies)
  0 siblings, 4 replies; 10+ messages in thread
From: Lars-Peter Clausen @ 2023-01-14 23:34 UTC (permalink / raw)
  To: Michael Turquette, Stephen Boyd
  Cc: Luca Ceresoli, Rob Herring, Krzysztof Kozlowski, linux-clk,
	devicetree, Lars-Peter Clausen

The VCO frequency needs to be within a certain range and the driver
enforces this.

Make use of the clamp macro to implement this instead of open-coding it.
This makes the code a bit shorter and also semanticly stronger.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
---
 drivers/clk/clk-versaclock5.c | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/drivers/clk/clk-versaclock5.c b/drivers/clk/clk-versaclock5.c
index e9737969170e..54fee43d6564 100644
--- a/drivers/clk/clk-versaclock5.c
+++ b/drivers/clk/clk-versaclock5.c
@@ -449,10 +449,7 @@ static long vc5_pll_round_rate(struct clk_hw *hw, unsigned long rate,
 	u32 div_int;
 	u64 div_frc;
 
-	if (rate < VC5_PLL_VCO_MIN)
-		rate = VC5_PLL_VCO_MIN;
-	if (rate > VC5_PLL_VCO_MAX)
-		rate = VC5_PLL_VCO_MAX;
+	rate = clamp(rate, VC5_PLL_VCO_MIN, VC5_PLL_VCO_MAX);
 
 	/* Determine integer part, which is 12 bit wide */
 	div_int = rate / *parent_rate;
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 2/3] clk: vc5: Add support for 5P49V60
  2023-01-14 23:34 [PATCH 1/3] clk: vc5: Use `clamp()` to restrict PLL range Lars-Peter Clausen
@ 2023-01-14 23:34 ` Lars-Peter Clausen
  2023-01-16  8:15   ` Luca Ceresoli
  2023-01-18 18:57   ` Stephen Boyd
  2023-01-14 23:35 ` [PATCH 3/3] dt-bindings: clock: versaclock5: Document 5P49V60 compatible string Lars-Peter Clausen
                   ` (2 subsequent siblings)
  3 siblings, 2 replies; 10+ messages in thread
From: Lars-Peter Clausen @ 2023-01-14 23:34 UTC (permalink / raw)
  To: Michael Turquette, Stephen Boyd
  Cc: Luca Ceresoli, Rob Herring, Krzysztof Kozlowski, linux-clk,
	devicetree, Lars-Peter Clausen

The 5P49V60 is very similar to the existing supported clock chips of the
versaclock5 driver and uses the same register map layout. But its maximum
VCO frequency is 2.7 GHz instead of 3 GHz for the other supported devices.

Add a vco_max field to the chip info field to allow to specify a per device
variant maximum VCO frequency.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
---
 drivers/clk/clk-versaclock5.c | 25 ++++++++++++++++++++++---
 1 file changed, 22 insertions(+), 3 deletions(-)

diff --git a/drivers/clk/clk-versaclock5.c b/drivers/clk/clk-versaclock5.c
index 54fee43d6564..fa71a57875ce 100644
--- a/drivers/clk/clk-versaclock5.c
+++ b/drivers/clk/clk-versaclock5.c
@@ -122,9 +122,8 @@
 #define VC5_GLOBAL_REGISTER			0x76
 #define VC5_GLOBAL_REGISTER_GLOBAL_RESET	BIT(5)
 
-/* PLL/VCO runs between 2.5 GHz and 3.0 GHz */
+/* The minimum VCO frequency is 2.5 GHz. The maximum is variant specific. */
 #define VC5_PLL_VCO_MIN				2500000000UL
-#define VC5_PLL_VCO_MAX				3000000000UL
 
 /* VC5 Input mux settings */
 #define VC5_MUX_IN_XIN		BIT(0)
@@ -150,6 +149,7 @@ enum vc5_model {
 	IDT_VC5_5P49V5925,
 	IDT_VC5_5P49V5933,
 	IDT_VC5_5P49V5935,
+	IDT_VC6_5P49V60,
 	IDT_VC6_5P49V6901,
 	IDT_VC6_5P49V6965,
 	IDT_VC6_5P49V6975,
@@ -161,6 +161,7 @@ struct vc5_chip_info {
 	const unsigned int	clk_fod_cnt;
 	const unsigned int	clk_out_cnt;
 	const u32		flags;
+	const unsigned long	vco_max;
 };
 
 struct vc5_driver_data;
@@ -446,10 +447,11 @@ static long vc5_pll_round_rate(struct clk_hw *hw, unsigned long rate,
 			       unsigned long *parent_rate)
 {
 	struct vc5_hw_data *hwdata = container_of(hw, struct vc5_hw_data, hw);
+	struct vc5_driver_data *vc5 = hwdata->vc5;
 	u32 div_int;
 	u64 div_frc;
 
-	rate = clamp(rate, VC5_PLL_VCO_MIN, VC5_PLL_VCO_MAX);
+	rate = clamp(rate, VC5_PLL_VCO_MIN, vc5->chip_info->vco_max);
 
 	/* Determine integer part, which is 12 bit wide */
 	div_int = rate / *parent_rate;
@@ -1209,6 +1211,7 @@ static const struct vc5_chip_info idt_5p49v5923_info = {
 	.clk_fod_cnt = 2,
 	.clk_out_cnt = 3,
 	.flags = 0,
+	.vco_max = 3000000000UL,
 };
 
 static const struct vc5_chip_info idt_5p49v5925_info = {
@@ -1216,6 +1219,7 @@ static const struct vc5_chip_info idt_5p49v5925_info = {
 	.clk_fod_cnt = 4,
 	.clk_out_cnt = 5,
 	.flags = 0,
+	.vco_max = 3000000000UL,
 };
 
 static const struct vc5_chip_info idt_5p49v5933_info = {
@@ -1223,6 +1227,7 @@ static const struct vc5_chip_info idt_5p49v5933_info = {
 	.clk_fod_cnt = 2,
 	.clk_out_cnt = 3,
 	.flags = VC5_HAS_INTERNAL_XTAL,
+	.vco_max = 3000000000UL,
 };
 
 static const struct vc5_chip_info idt_5p49v5935_info = {
@@ -1230,6 +1235,15 @@ static const struct vc5_chip_info idt_5p49v5935_info = {
 	.clk_fod_cnt = 4,
 	.clk_out_cnt = 5,
 	.flags = VC5_HAS_INTERNAL_XTAL,
+	.vco_max = 3000000000UL,
+};
+
+static const struct vc5_chip_info idt_5p49v60_info = {
+	.model = IDT_VC6_5P49V60,
+	.clk_fod_cnt = 4,
+	.clk_out_cnt = 5,
+	.flags = VC5_HAS_PFD_FREQ_DBL | VC5_HAS_BYPASS_SYNC_BIT,
+	.vco_max = 2700000000UL,
 };
 
 static const struct vc5_chip_info idt_5p49v6901_info = {
@@ -1237,6 +1251,7 @@ static const struct vc5_chip_info idt_5p49v6901_info = {
 	.clk_fod_cnt = 4,
 	.clk_out_cnt = 5,
 	.flags = VC5_HAS_PFD_FREQ_DBL | VC5_HAS_BYPASS_SYNC_BIT,
+	.vco_max = 3000000000UL,
 };
 
 static const struct vc5_chip_info idt_5p49v6965_info = {
@@ -1244,6 +1259,7 @@ static const struct vc5_chip_info idt_5p49v6965_info = {
 	.clk_fod_cnt = 4,
 	.clk_out_cnt = 5,
 	.flags = VC5_HAS_BYPASS_SYNC_BIT,
+	.vco_max = 3000000000UL,
 };
 
 static const struct vc5_chip_info idt_5p49v6975_info = {
@@ -1251,6 +1267,7 @@ static const struct vc5_chip_info idt_5p49v6975_info = {
 	.clk_fod_cnt = 4,
 	.clk_out_cnt = 5,
 	.flags = VC5_HAS_BYPASS_SYNC_BIT | VC5_HAS_INTERNAL_XTAL,
+	.vco_max = 3000000000UL,
 };
 
 static const struct i2c_device_id vc5_id[] = {
@@ -1258,6 +1275,7 @@ static const struct i2c_device_id vc5_id[] = {
 	{ "5p49v5925", .driver_data = IDT_VC5_5P49V5925 },
 	{ "5p49v5933", .driver_data = IDT_VC5_5P49V5933 },
 	{ "5p49v5935", .driver_data = IDT_VC5_5P49V5935 },
+	{ "5p49v60", .driver_data = IDT_VC6_5P49V60 },
 	{ "5p49v6901", .driver_data = IDT_VC6_5P49V6901 },
 	{ "5p49v6965", .driver_data = IDT_VC6_5P49V6965 },
 	{ "5p49v6975", .driver_data = IDT_VC6_5P49V6975 },
@@ -1270,6 +1288,7 @@ static const struct of_device_id clk_vc5_of_match[] = {
 	{ .compatible = "idt,5p49v5925", .data = &idt_5p49v5925_info },
 	{ .compatible = "idt,5p49v5933", .data = &idt_5p49v5933_info },
 	{ .compatible = "idt,5p49v5935", .data = &idt_5p49v5935_info },
+	{ .compatible = "idt,5p49v60", .data = &idt_5p49v60_info },
 	{ .compatible = "idt,5p49v6901", .data = &idt_5p49v6901_info },
 	{ .compatible = "idt,5p49v6965", .data = &idt_5p49v6965_info },
 	{ .compatible = "idt,5p49v6975", .data = &idt_5p49v6975_info },
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 3/3] dt-bindings: clock: versaclock5: Document 5P49V60 compatible string
  2023-01-14 23:34 [PATCH 1/3] clk: vc5: Use `clamp()` to restrict PLL range Lars-Peter Clausen
  2023-01-14 23:34 ` [PATCH 2/3] clk: vc5: Add support for 5P49V60 Lars-Peter Clausen
@ 2023-01-14 23:35 ` Lars-Peter Clausen
  2023-01-15 14:55   ` Krzysztof Kozlowski
                     ` (2 more replies)
  2023-01-16  8:15 ` [PATCH 1/3] clk: vc5: Use `clamp()` to restrict PLL range Luca Ceresoli
  2023-01-18 18:57 ` Stephen Boyd
  3 siblings, 3 replies; 10+ messages in thread
From: Lars-Peter Clausen @ 2023-01-14 23:35 UTC (permalink / raw)
  To: Michael Turquette, Stephen Boyd
  Cc: Luca Ceresoli, Rob Herring, Krzysztof Kozlowski, linux-clk,
	devicetree, Lars-Peter Clausen

The 5P49V60 clock generator is part of the same family of devices that is
described by the versaclock5 binding documentation.

Add the compatible string of the 5P49V60 to the binding documentation.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
---
 Documentation/devicetree/bindings/clock/idt,versaclock5.yaml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/Documentation/devicetree/bindings/clock/idt,versaclock5.yaml b/Documentation/devicetree/bindings/clock/idt,versaclock5.yaml
index 61b246cf5e72..a2c6eea9871d 100644
--- a/Documentation/devicetree/bindings/clock/idt,versaclock5.yaml
+++ b/Documentation/devicetree/bindings/clock/idt,versaclock5.yaml
@@ -54,6 +54,7 @@ properties:
       - idt,5p49v5925
       - idt,5p49v5933
       - idt,5p49v5935
+      - idt,5p49v60
       - idt,5p49v6901
       - idt,5p49v6965
       - idt,5p49v6975
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH 3/3] dt-bindings: clock: versaclock5: Document 5P49V60 compatible string
  2023-01-14 23:35 ` [PATCH 3/3] dt-bindings: clock: versaclock5: Document 5P49V60 compatible string Lars-Peter Clausen
@ 2023-01-15 14:55   ` Krzysztof Kozlowski
  2023-01-16  8:15   ` Luca Ceresoli
  2023-01-18 18:57   ` Stephen Boyd
  2 siblings, 0 replies; 10+ messages in thread
From: Krzysztof Kozlowski @ 2023-01-15 14:55 UTC (permalink / raw)
  To: Lars-Peter Clausen, Michael Turquette, Stephen Boyd
  Cc: Luca Ceresoli, Rob Herring, Krzysztof Kozlowski, linux-clk, devicetree

On 15/01/2023 00:35, Lars-Peter Clausen wrote:
> The 5P49V60 clock generator is part of the same family of devices that is
> described by the versaclock5 binding documentation.
> 
> Add the compatible string of the 5P49V60 to the binding documentation.
> 

Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>

Best regards,
Krzysztof


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 1/3] clk: vc5: Use `clamp()` to restrict PLL range
  2023-01-14 23:34 [PATCH 1/3] clk: vc5: Use `clamp()` to restrict PLL range Lars-Peter Clausen
  2023-01-14 23:34 ` [PATCH 2/3] clk: vc5: Add support for 5P49V60 Lars-Peter Clausen
  2023-01-14 23:35 ` [PATCH 3/3] dt-bindings: clock: versaclock5: Document 5P49V60 compatible string Lars-Peter Clausen
@ 2023-01-16  8:15 ` Luca Ceresoli
  2023-01-18 18:57 ` Stephen Boyd
  3 siblings, 0 replies; 10+ messages in thread
From: Luca Ceresoli @ 2023-01-16  8:15 UTC (permalink / raw)
  To: Lars-Peter Clausen
  Cc: Michael Turquette, Stephen Boyd, Rob Herring,
	Krzysztof Kozlowski, linux-clk, devicetree

Hello Lars-Peter,

On Sat, 14 Jan 2023 15:34:58 -0800
Lars-Peter Clausen <lars@metafoo.de> wrote:

> The VCO frequency needs to be within a certain range and the driver
> enforces this.
> 
> Make use of the clamp macro to implement this instead of open-coding it.
> This makes the code a bit shorter and also semanticly stronger.
> 
> Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>

Reviewed-by: Luca Ceresoli <luca.ceresoli@bootlin.com>

-- 
Luca Ceresoli, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 2/3] clk: vc5: Add support for 5P49V60
  2023-01-14 23:34 ` [PATCH 2/3] clk: vc5: Add support for 5P49V60 Lars-Peter Clausen
@ 2023-01-16  8:15   ` Luca Ceresoli
  2023-01-18 18:57   ` Stephen Boyd
  1 sibling, 0 replies; 10+ messages in thread
From: Luca Ceresoli @ 2023-01-16  8:15 UTC (permalink / raw)
  To: Lars-Peter Clausen
  Cc: Michael Turquette, Stephen Boyd, Rob Herring,
	Krzysztof Kozlowski, linux-clk, devicetree

On Sat, 14 Jan 2023 15:34:59 -0800
Lars-Peter Clausen <lars@metafoo.de> wrote:

> The 5P49V60 is very similar to the existing supported clock chips of the
> versaclock5 driver and uses the same register map layout. But its maximum
> VCO frequency is 2.7 GHz instead of 3 GHz for the other supported devices.
> 
> Add a vco_max field to the chip info field to allow to specify a per device
> variant maximum VCO frequency.
> 
> Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>

Reviewed-by: Luca Ceresoli <luca.ceresoli@bootlin.com>

-- 
Luca Ceresoli, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 3/3] dt-bindings: clock: versaclock5: Document 5P49V60 compatible string
  2023-01-14 23:35 ` [PATCH 3/3] dt-bindings: clock: versaclock5: Document 5P49V60 compatible string Lars-Peter Clausen
  2023-01-15 14:55   ` Krzysztof Kozlowski
@ 2023-01-16  8:15   ` Luca Ceresoli
  2023-01-18 18:57   ` Stephen Boyd
  2 siblings, 0 replies; 10+ messages in thread
From: Luca Ceresoli @ 2023-01-16  8:15 UTC (permalink / raw)
  To: Lars-Peter Clausen
  Cc: Michael Turquette, Stephen Boyd, Rob Herring,
	Krzysztof Kozlowski, linux-clk, devicetree

On Sat, 14 Jan 2023 15:35:00 -0800
Lars-Peter Clausen <lars@metafoo.de> wrote:

> The 5P49V60 clock generator is part of the same family of devices that is
> described by the versaclock5 binding documentation.
> 
> Add the compatible string of the 5P49V60 to the binding documentation.
> 
> Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>

Reviewed-by: Luca Ceresoli <luca.ceresoli@bootlin.com>

-- 
Luca Ceresoli, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 1/3] clk: vc5: Use `clamp()` to restrict PLL range
  2023-01-14 23:34 [PATCH 1/3] clk: vc5: Use `clamp()` to restrict PLL range Lars-Peter Clausen
                   ` (2 preceding siblings ...)
  2023-01-16  8:15 ` [PATCH 1/3] clk: vc5: Use `clamp()` to restrict PLL range Luca Ceresoli
@ 2023-01-18 18:57 ` Stephen Boyd
  3 siblings, 0 replies; 10+ messages in thread
From: Stephen Boyd @ 2023-01-18 18:57 UTC (permalink / raw)
  To: Lars-Peter Clausen, Michael Turquette
  Cc: Luca Ceresoli, Rob Herring, Krzysztof Kozlowski, linux-clk,
	devicetree, Lars-Peter Clausen

Quoting Lars-Peter Clausen (2023-01-14 15:34:58)
> The VCO frequency needs to be within a certain range and the driver
> enforces this.
> 
> Make use of the clamp macro to implement this instead of open-coding it.
> This makes the code a bit shorter and also semanticly stronger.
> 
> Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
> ---

Applied to clk-next

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 2/3] clk: vc5: Add support for 5P49V60
  2023-01-14 23:34 ` [PATCH 2/3] clk: vc5: Add support for 5P49V60 Lars-Peter Clausen
  2023-01-16  8:15   ` Luca Ceresoli
@ 2023-01-18 18:57   ` Stephen Boyd
  1 sibling, 0 replies; 10+ messages in thread
From: Stephen Boyd @ 2023-01-18 18:57 UTC (permalink / raw)
  To: Lars-Peter Clausen, Michael Turquette
  Cc: Luca Ceresoli, Rob Herring, Krzysztof Kozlowski, linux-clk,
	devicetree, Lars-Peter Clausen

Quoting Lars-Peter Clausen (2023-01-14 15:34:59)
> The 5P49V60 is very similar to the existing supported clock chips of the
> versaclock5 driver and uses the same register map layout. But its maximum
> VCO frequency is 2.7 GHz instead of 3 GHz for the other supported devices.
> 
> Add a vco_max field to the chip info field to allow to specify a per device
> variant maximum VCO frequency.
> 
> Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
> ---

Applied to clk-next

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 3/3] dt-bindings: clock: versaclock5: Document 5P49V60 compatible string
  2023-01-14 23:35 ` [PATCH 3/3] dt-bindings: clock: versaclock5: Document 5P49V60 compatible string Lars-Peter Clausen
  2023-01-15 14:55   ` Krzysztof Kozlowski
  2023-01-16  8:15   ` Luca Ceresoli
@ 2023-01-18 18:57   ` Stephen Boyd
  2 siblings, 0 replies; 10+ messages in thread
From: Stephen Boyd @ 2023-01-18 18:57 UTC (permalink / raw)
  To: Lars-Peter Clausen, Michael Turquette
  Cc: Luca Ceresoli, Rob Herring, Krzysztof Kozlowski, linux-clk,
	devicetree, Lars-Peter Clausen

Quoting Lars-Peter Clausen (2023-01-14 15:35:00)
> The 5P49V60 clock generator is part of the same family of devices that is
> described by the versaclock5 binding documentation.
> 
> Add the compatible string of the 5P49V60 to the binding documentation.
> 
> Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
> ---

Applied to clk-next

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2023-01-18 18:57 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-01-14 23:34 [PATCH 1/3] clk: vc5: Use `clamp()` to restrict PLL range Lars-Peter Clausen
2023-01-14 23:34 ` [PATCH 2/3] clk: vc5: Add support for 5P49V60 Lars-Peter Clausen
2023-01-16  8:15   ` Luca Ceresoli
2023-01-18 18:57   ` Stephen Boyd
2023-01-14 23:35 ` [PATCH 3/3] dt-bindings: clock: versaclock5: Document 5P49V60 compatible string Lars-Peter Clausen
2023-01-15 14:55   ` Krzysztof Kozlowski
2023-01-16  8:15   ` Luca Ceresoli
2023-01-18 18:57   ` Stephen Boyd
2023-01-16  8:15 ` [PATCH 1/3] clk: vc5: Use `clamp()` to restrict PLL range Luca Ceresoli
2023-01-18 18:57 ` Stephen Boyd

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.