linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [Patch 0/3] ARM: dts: am43x-vpfe/ov2659.patch
@ 2019-10-16 18:49 Benoit Parrot
  2019-10-16 18:49 ` [Patch 1/3] ARM: dts: am43xx: add support for clkout1 clock Benoit Parrot
                   ` (2 more replies)
  0 siblings, 3 replies; 12+ messages in thread
From: Benoit Parrot @ 2019-10-16 18:49 UTC (permalink / raw)
  To: Tony Lindgren, Tero Kristo
  Cc: Rob Herring, linux-omap, devicetree, linux-kernel, Benoit Parrot

This patch series adds the missing camera endpoint (ov2659) as well as
the required source clocks nodes for the sensor.

On the am437x-sk-evm the camera sensor is sourced from clkout1 but that
clock nodes/tree was removed as it was unsed at the time, we are
re-adding the needed clock nodes here.

Benoit Parrot (2):
  ARM: dts: am437x-sk-evm: Add VPFE and OV2659 entries
  ARM: dts: am43x-epos-evm: Add VPFE and OV2659 entries

Tero Kristo (1):
  ARM: dts: am43xx: add support for clkout1 clock

 arch/arm/boot/dts/am437x-sk-evm.dts  | 27 +++++++++++++-
 arch/arm/boot/dts/am43x-epos-evm.dts | 23 +++++++++++-
 arch/arm/boot/dts/am43xx-clocks.dtsi | 54 ++++++++++++++++++++++++++++
 3 files changed, 102 insertions(+), 2 deletions(-)

-- 
2.17.1


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

* [Patch 1/3] ARM: dts: am43xx: add support for clkout1 clock
  2019-10-16 18:49 [Patch 0/3] ARM: dts: am43x-vpfe/ov2659.patch Benoit Parrot
@ 2019-10-16 18:49 ` Benoit Parrot
  2019-10-22 15:48   ` Tony Lindgren
  2019-10-16 18:49 ` [Patch 2/3] ARM: dts: am437x-sk-evm: Add VPFE and OV2659 entries Benoit Parrot
  2019-10-16 18:49 ` [Patch 3/3] ARM: dts: am43x-epos-evm: " Benoit Parrot
  2 siblings, 1 reply; 12+ messages in thread
From: Benoit Parrot @ 2019-10-16 18:49 UTC (permalink / raw)
  To: Tony Lindgren, Tero Kristo
  Cc: Rob Herring, linux-omap, devicetree, linux-kernel, Benoit Parrot

From: Tero Kristo <t-kristo@ti.com>

clkout1 clock node and its generation tree was missing. Add this based
on the data on TRM and PRCM functional spec.

commit 664ae1ab2536 ("ARM: dts: am43xx: add clkctrl nodes") effectively
reverted this commit 8010f13a40d3 ("ARM: dts: am43xx: add support for
clkout1 clock") which is needed for the ov2659 camera sensor clock
definition hence it is being re-applied here.

Fixes: 664ae1ab2536 ("ARM: dts: am43xx: add clkctrl nodes")
Signed-off-by: Tero Kristo <t-kristo@ti.com>
Tested-by: Benoit Parrot <bparrot@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Benoit Parrot <bparrot@ti.com>
---
 arch/arm/boot/dts/am43xx-clocks.dtsi | 54 ++++++++++++++++++++++++++++
 1 file changed, 54 insertions(+)

diff --git a/arch/arm/boot/dts/am43xx-clocks.dtsi b/arch/arm/boot/dts/am43xx-clocks.dtsi
index 091356f2a8c1..944b142dafd2 100644
--- a/arch/arm/boot/dts/am43xx-clocks.dtsi
+++ b/arch/arm/boot/dts/am43xx-clocks.dtsi
@@ -704,6 +704,60 @@
 		ti,bit-shift = <8>;
 		reg = <0x2a48>;
 	};
+
+	clkout1_osc_div_ck: clkout1_osc_div_ck {
+		#clock-cells = <0>;
+		compatible = "ti,divider-clock";
+		clocks = <&sys_clkin_ck>;
+		ti,bit-shift = <20>;
+		ti,max-div = <4>;
+		reg = <0x4100>;
+	};
+
+	clkout1_src2_mux_ck: clkout1_src2_mux_ck {
+		#clock-cells = <0>;
+		compatible = "ti,mux-clock";
+		clocks = <&clk_rc32k_ck>, <&sysclk_div>, <&dpll_ddr_m2_ck>,
+			 <&dpll_per_m2_ck>, <&dpll_disp_m2_ck>,
+			 <&dpll_mpu_m2_ck>;
+		reg = <0x4100>;
+	};
+
+	clkout1_src2_pre_div_ck: clkout1_src2_pre_div_ck {
+		#clock-cells = <0>;
+		compatible = "ti,divider-clock";
+		clocks = <&clkout1_src2_mux_ck>;
+		ti,bit-shift = <4>;
+		ti,max-div = <8>;
+		reg = <0x4100>;
+	};
+
+	clkout1_src2_post_div_ck: clkout1_src2_post_div_ck {
+		#clock-cells = <0>;
+		compatible = "ti,divider-clock";
+		clocks = <&clkout1_src2_pre_div_ck>;
+		ti,bit-shift = <8>;
+		ti,max-div = <32>;
+		ti,index-power-of-two;
+		reg = <0x4100>;
+	};
+
+	clkout1_mux_ck: clkout1_mux_ck {
+		#clock-cells = <0>;
+		compatible = "ti,mux-clock";
+		clocks = <&clkout1_osc_div_ck>, <&clk_rc32k_ck>,
+			 <&clkout1_src2_post_div_ck>, <&dpll_extdev_m2_ck>;
+		ti,bit-shift = <16>;
+		reg = <0x4100>;
+	};
+
+	clkout1_ck: clkout1_ck {
+		#clock-cells = <0>;
+		compatible = "ti,gate-clock";
+		clocks = <&clkout1_mux_ck>;
+		ti,bit-shift = <23>;
+		reg = <0x4100>;
+	};
 };
 
 &prcm {
-- 
2.17.1


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

* [Patch 2/3] ARM: dts: am437x-sk-evm: Add VPFE and OV2659 entries
  2019-10-16 18:49 [Patch 0/3] ARM: dts: am43x-vpfe/ov2659.patch Benoit Parrot
  2019-10-16 18:49 ` [Patch 1/3] ARM: dts: am43xx: add support for clkout1 clock Benoit Parrot
@ 2019-10-16 18:49 ` Benoit Parrot
  2019-10-16 18:49 ` [Patch 3/3] ARM: dts: am43x-epos-evm: " Benoit Parrot
  2 siblings, 0 replies; 12+ messages in thread
From: Benoit Parrot @ 2019-10-16 18:49 UTC (permalink / raw)
  To: Tony Lindgren, Tero Kristo
  Cc: Rob Herring, linux-omap, devicetree, linux-kernel, Benoit Parrot

Add VPFE device nodes entries.
Add OmniVision OV2659 sensor device nodes and linkage.

The sensor clock (xvclk) is sourced from clkout1.
Add clock entries to properly select clkout1 and set its parent
clock to sys_clkin_ck.

Signed-off-by: Benoit Parrot <bparrot@ti.com>
---
 arch/arm/boot/dts/am437x-sk-evm.dts | 27 ++++++++++++++++++++++++++-
 1 file changed, 26 insertions(+), 1 deletion(-)

diff --git a/arch/arm/boot/dts/am437x-sk-evm.dts b/arch/arm/boot/dts/am437x-sk-evm.dts
index 74eaa6a3b258..25222497f828 100644
--- a/arch/arm/boot/dts/am437x-sk-evm.dts
+++ b/arch/arm/boot/dts/am437x-sk-evm.dts
@@ -272,6 +272,12 @@
 		>;
 	};
 
+	clkout1_pin: pinmux_clkout1_pin {
+		pinctrl-single,pins = <
+			0x270 (PIN_OUTPUT_PULLDOWN | MUX_MODE3)	/* XDMA_EVENT_INTR0/CLKOUT1 */
+		>;
+	};
+
 	cpsw_default: cpsw_default {
 		pinctrl-single,pins = <
 			/* Slave 1 */
@@ -593,6 +599,25 @@
 	pinctrl-0 = <&i2c1_pins>;
 	clock-frequency = <400000>;
 
+	ov2659@30 {
+		compatible = "ovti,ov2659";
+		reg = <0x30>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&clkout1_pin>;
+
+		clocks = <&clkout1_mux_ck>;
+		clock-names = "xvclk";
+		assigned-clocks = <&clkout1_mux_ck>;
+		assigned-clock-parents = <&clkout1_osc_div_ck>;
+
+		port {
+			ov2659_1: endpoint {
+				remote-endpoint = <&vpfe0_ep>;
+				link-frequencies = /bits/ 64 <70000000>;
+			};
+		};
+	};
+
 	edt-ft5306@38 {
 		status = "okay";
 		compatible = "edt,edt-ft5306", "edt,edt-ft5x06";
@@ -877,7 +902,7 @@
 	/* Camera port */
 	port {
 		vpfe0_ep: endpoint {
-			/* remote-endpoint = <&sensor>; add once we have it */
+			remote-endpoint = <&ov2659_1>;
 			ti,am437x-vpfe-interface = <0>;
 			bus-width = <8>;
 			hsync-active = <0>;
-- 
2.17.1


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

* [Patch 3/3] ARM: dts: am43x-epos-evm: Add VPFE and OV2659 entries
  2019-10-16 18:49 [Patch 0/3] ARM: dts: am43x-vpfe/ov2659.patch Benoit Parrot
  2019-10-16 18:49 ` [Patch 1/3] ARM: dts: am43xx: add support for clkout1 clock Benoit Parrot
  2019-10-16 18:49 ` [Patch 2/3] ARM: dts: am437x-sk-evm: Add VPFE and OV2659 entries Benoit Parrot
@ 2019-10-16 18:49 ` Benoit Parrot
  2 siblings, 0 replies; 12+ messages in thread
From: Benoit Parrot @ 2019-10-16 18:49 UTC (permalink / raw)
  To: Tony Lindgren, Tero Kristo
  Cc: Rob Herring, linux-omap, devicetree, linux-kernel, Benoit Parrot

Add VPFE device nodes entries.
Add OmniVision OV2659 sensor device nodes and linkage.

Since Rev1.2a on this board the sensor source clock (xvclk) has a
dedicated 12Mhz oscillator instead of using clkout1.
Add 'audio_mstrclk' fixed clock object to represent it.

Signed-off-by: Benoit Parrot <bparrot@ti.com>
---
 arch/arm/boot/dts/am43x-epos-evm.dts | 23 ++++++++++++++++++++++-
 1 file changed, 22 insertions(+), 1 deletion(-)

diff --git a/arch/arm/boot/dts/am43x-epos-evm.dts b/arch/arm/boot/dts/am43x-epos-evm.dts
index 95314121d111..1958d0985f76 100644
--- a/arch/arm/boot/dts/am43x-epos-evm.dts
+++ b/arch/arm/boot/dts/am43x-epos-evm.dts
@@ -145,6 +145,12 @@
 			system-clock-frequency = <12000000>;
 		};
 	};
+
+	audio_mstrclk: mclk_osc {
+		compatible = "fixed-clock";
+		#clock-cells = <0>;
+		clock-frequency = <12000000>;
+	};
 };
 
 &am43xx_pinmux {
@@ -696,6 +702,21 @@
 		IOVDD-supply = <&dcdc4>; /* V3_3D -> DCDC4 */
 		DVDD-supply = <&ldo1>; /* V1_8AUD -> V1_8D -> LDO1 */
 	};
+
+	ov2659@30 {
+		compatible = "ovti,ov2659";
+		reg = <0x30>;
+
+		clocks = <&audio_mstrclk>;
+		clock-names = "xvclk";
+
+		port {
+			ov2659_1: endpoint {
+				remote-endpoint = <&vpfe1_ep>;
+				link-frequencies = /bits/ 64 <70000000>;
+			};
+		};
+	};
 };
 
 &i2c2 {
@@ -962,7 +983,7 @@
 
 	port {
 		vpfe1_ep: endpoint {
-			/* remote-endpoint = <&sensor>; add once we have it */
+			remote-endpoint = <&ov2659_1>;
 			ti,am437x-vpfe-interface = <0>;
 			bus-width = <8>;
 			hsync-active = <0>;
-- 
2.17.1


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

* Re: [Patch 1/3] ARM: dts: am43xx: add support for clkout1 clock
  2019-10-16 18:49 ` [Patch 1/3] ARM: dts: am43xx: add support for clkout1 clock Benoit Parrot
@ 2019-10-22 15:48   ` Tony Lindgren
  2019-10-22 16:21     ` Benoit Parrot
  0 siblings, 1 reply; 12+ messages in thread
From: Tony Lindgren @ 2019-10-22 15:48 UTC (permalink / raw)
  To: Benoit Parrot
  Cc: Tero Kristo, Rob Herring, linux-omap, devicetree, linux-kernel

* Benoit Parrot <bparrot@ti.com> [191016 18:47]:
> --- a/arch/arm/boot/dts/am43xx-clocks.dtsi
> +++ b/arch/arm/boot/dts/am43xx-clocks.dtsi
> @@ -704,6 +704,60 @@
>  		ti,bit-shift = <8>;
>  		reg = <0x2a48>;
>  	};
> +
> +	clkout1_osc_div_ck: clkout1_osc_div_ck {
> +		#clock-cells = <0>;
> +		compatible = "ti,divider-clock";
> +		clocks = <&sys_clkin_ck>;
> +		ti,bit-shift = <20>;
> +		ti,max-div = <4>;
> +		reg = <0x4100>;
> +	};

Here too please describe why the clock names are not generic.

Regards,

Tony

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

* Re: [Patch 1/3] ARM: dts: am43xx: add support for clkout1 clock
  2019-10-22 15:48   ` Tony Lindgren
@ 2019-10-22 16:21     ` Benoit Parrot
  2019-10-22 16:47       ` Tero Kristo
  0 siblings, 1 reply; 12+ messages in thread
From: Benoit Parrot @ 2019-10-22 16:21 UTC (permalink / raw)
  To: Tony Lindgren
  Cc: Tero Kristo, Rob Herring, linux-omap, devicetree, linux-kernel

Tony Lindgren <tony@atomide.com> wrote on Tue [2019-Oct-22 08:48:16 -0700]:
> * Benoit Parrot <bparrot@ti.com> [191016 18:47]:
> > --- a/arch/arm/boot/dts/am43xx-clocks.dtsi
> > +++ b/arch/arm/boot/dts/am43xx-clocks.dtsi
> > @@ -704,6 +704,60 @@
> >  		ti,bit-shift = <8>;
> >  		reg = <0x2a48>;
> >  	};
> > +
> > +	clkout1_osc_div_ck: clkout1_osc_div_ck {
> > +		#clock-cells = <0>;
> > +		compatible = "ti,divider-clock";
> > +		clocks = <&sys_clkin_ck>;
> > +		ti,bit-shift = <20>;
> > +		ti,max-div = <4>;
> > +		reg = <0x4100>;
> > +	};
> 
> Here too please describe why the clock names are not generic.

Tero originally had this patch in the kernel so this is somewhat of a
revert. Since these "clock" were removed. If the name syntax is no longer
valid for some reason, then I will need a little more informations to
proceed.

Tero, can you assist here?

Benoit

> 
> Regards,
> 
> Tony

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

* Re: [Patch 1/3] ARM: dts: am43xx: add support for clkout1 clock
  2019-10-22 16:21     ` Benoit Parrot
@ 2019-10-22 16:47       ` Tero Kristo
  2019-10-22 16:55         ` Tony Lindgren
  0 siblings, 1 reply; 12+ messages in thread
From: Tero Kristo @ 2019-10-22 16:47 UTC (permalink / raw)
  To: Benoit Parrot, Tony Lindgren
  Cc: Rob Herring, linux-omap, devicetree, linux-kernel

On 22/10/2019 19:21, Benoit Parrot wrote:
> Tony Lindgren <tony@atomide.com> wrote on Tue [2019-Oct-22 08:48:16 -0700]:
>> * Benoit Parrot <bparrot@ti.com> [191016 18:47]:
>>> --- a/arch/arm/boot/dts/am43xx-clocks.dtsi
>>> +++ b/arch/arm/boot/dts/am43xx-clocks.dtsi
>>> @@ -704,6 +704,60 @@
>>>   		ti,bit-shift = <8>;
>>>   		reg = <0x2a48>;
>>>   	};
>>> +
>>> +	clkout1_osc_div_ck: clkout1_osc_div_ck {
>>> +		#clock-cells = <0>;
>>> +		compatible = "ti,divider-clock";
>>> +		clocks = <&sys_clkin_ck>;
>>> +		ti,bit-shift = <20>;
>>> +		ti,max-div = <4>;
>>> +		reg = <0x4100>;
>>> +	};
>>
>> Here too please describe why the clock names are not generic.
> 
> Tero originally had this patch in the kernel so this is somewhat of a
> revert. Since these "clock" were removed. If the name syntax is no longer
> valid for some reason, then I will need a little more informations to
> proceed.
> 
> Tero, can you assist here?

This one is just following the naming convention of the rest of the 
clocks atm.

If we need to fix all the underscore name clocks, that requires pretty 
much complete revamp of both the dts data + clock data under the clock 
driver, and it is not backwards compatible either. How should we tackle 
that one?

We could maybe add support code in kernel to do s/-/_/g for the "new" 
clocks so that their parent-child relationships would be retained, and 
then convert the clocks in phases.

-Tero

> 
> Benoit
> 
>>
>> Regards,
>>
>> Tony

--
Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki

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

* Re: [Patch 1/3] ARM: dts: am43xx: add support for clkout1 clock
  2019-10-22 16:47       ` Tero Kristo
@ 2019-10-22 16:55         ` Tony Lindgren
  2019-10-23 15:56           ` Tony Lindgren
  0 siblings, 1 reply; 12+ messages in thread
From: Tony Lindgren @ 2019-10-22 16:55 UTC (permalink / raw)
  To: Tero Kristo
  Cc: Benoit Parrot, Rob Herring, linux-omap, devicetree, linux-kernel

* Tero Kristo <t-kristo@ti.com> [191022 16:48]:
> On 22/10/2019 19:21, Benoit Parrot wrote:
> > Tony Lindgren <tony@atomide.com> wrote on Tue [2019-Oct-22 08:48:16 -0700]:
> > > * Benoit Parrot <bparrot@ti.com> [191016 18:47]:
> > > > --- a/arch/arm/boot/dts/am43xx-clocks.dtsi
> > > > +++ b/arch/arm/boot/dts/am43xx-clocks.dtsi
> > > > @@ -704,6 +704,60 @@
> > > >   		ti,bit-shift = <8>;
> > > >   		reg = <0x2a48>;
> > > >   	};
> > > > +
> > > > +	clkout1_osc_div_ck: clkout1_osc_div_ck {
> > > > +		#clock-cells = <0>;
> > > > +		compatible = "ti,divider-clock";
> > > > +		clocks = <&sys_clkin_ck>;
> > > > +		ti,bit-shift = <20>;
> > > > +		ti,max-div = <4>;
> > > > +		reg = <0x4100>;
> > > > +	};
> > > 
> > > Here too please describe why the clock names are not generic.
> > 
> > Tero originally had this patch in the kernel so this is somewhat of a
> > revert. Since these "clock" were removed. If the name syntax is no longer
> > valid for some reason, then I will need a little more informations to
> > proceed.
> > 
> > Tero, can you assist here?
> 
> This one is just following the naming convention of the rest of the clocks
> atm.
> 
> If we need to fix all the underscore name clocks, that requires pretty much
> complete revamp of both the dts data + clock data under the clock driver,
> and it is not backwards compatible either. How should we tackle that one?
> 
> We could maybe add support code in kernel to do s/-/_/g for the "new" clocks
> so that their parent-child relationships would be retained, and then convert
> the clocks in phases.

Well some of them can be fixed by configuring things based
on the compatible value and then the node name can be just
clock like it should be.

Here too one option would be to add custom compatibles like:

compatible = "ti,clkout1-osc-div", "ti,divider-clock";

And then have match data configure the rest.

The other option would be to have lookup tables in the clock
driver based on the SoC and reg address.

This is a hidden mine though.. We've hit it already several times,
and any dts clean-up effort has a chance of breaking things.

Regards,

Tony

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

* Re: [Patch 1/3] ARM: dts: am43xx: add support for clkout1 clock
  2019-10-22 16:55         ` Tony Lindgren
@ 2019-10-23 15:56           ` Tony Lindgren
  2019-10-30 19:59             ` Benoit Parrot
  0 siblings, 1 reply; 12+ messages in thread
From: Tony Lindgren @ 2019-10-23 15:56 UTC (permalink / raw)
  To: Tero Kristo
  Cc: Benoit Parrot, Rob Herring, linux-omap, devicetree, linux-kernel

* Tony Lindgren <tony@atomide.com> [191022 16:56]:
> * Tero Kristo <t-kristo@ti.com> [191022 16:48]:
> > On 22/10/2019 19:21, Benoit Parrot wrote:
> > > Tony Lindgren <tony@atomide.com> wrote on Tue [2019-Oct-22 08:48:16 -0700]:
> > > > * Benoit Parrot <bparrot@ti.com> [191016 18:47]:
> > > > > --- a/arch/arm/boot/dts/am43xx-clocks.dtsi
> > > > > +++ b/arch/arm/boot/dts/am43xx-clocks.dtsi
> > > > > @@ -704,6 +704,60 @@
> > > > >   		ti,bit-shift = <8>;
> > > > >   		reg = <0x2a48>;
> > > > >   	};
> > > > > +
> > > > > +	clkout1_osc_div_ck: clkout1_osc_div_ck {
> > > > > +		#clock-cells = <0>;
> > > > > +		compatible = "ti,divider-clock";
> > > > > +		clocks = <&sys_clkin_ck>;
> > > > > +		ti,bit-shift = <20>;
> > > > > +		ti,max-div = <4>;
> > > > > +		reg = <0x4100>;
> > > > > +	};
> > > > 
> > > > Here too please describe why the clock names are not generic.
> > > 
> > > Tero originally had this patch in the kernel so this is somewhat of a
> > > revert. Since these "clock" were removed. If the name syntax is no longer
> > > valid for some reason, then I will need a little more informations to
> > > proceed.
> > > 
> > > Tero, can you assist here?
> > 
> > This one is just following the naming convention of the rest of the clocks
> > atm.
> > 
> > If we need to fix all the underscore name clocks, that requires pretty much
> > complete revamp of both the dts data + clock data under the clock driver,
> > and it is not backwards compatible either. How should we tackle that one?
> > 
> > We could maybe add support code in kernel to do s/-/_/g for the "new" clocks
> > so that their parent-child relationships would be retained, and then convert
> > the clocks in phases.
> 
> Well some of them can be fixed by configuring things based
> on the compatible value and then the node name can be just
> clock like it should be.
> 
> Here too one option would be to add custom compatibles like:
> 
> compatible = "ti,clkout1-osc-div", "ti,divider-clock";
> 
> And then have match data configure the rest.
> 
> The other option would be to have lookup tables in the clock
> driver based on the SoC and reg address.
> 
> This is a hidden mine though.. We've hit it already several times,
> and any dts clean-up effort has a chance of breaking things.

Hmm maybe in this case just doing this is enough:

clkout1_osc_div_ck: clock@4100 {
	... 
}

Or do all the TI clocks we have have a dependency to the
node naming?

Regards,

Tony


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

* Re: [Patch 1/3] ARM: dts: am43xx: add support for clkout1 clock
  2019-10-23 15:56           ` Tony Lindgren
@ 2019-10-30 19:59             ` Benoit Parrot
  2019-10-31 14:06               ` Tero Kristo
  0 siblings, 1 reply; 12+ messages in thread
From: Benoit Parrot @ 2019-10-30 19:59 UTC (permalink / raw)
  To: Tony Lindgren
  Cc: Tero Kristo, Rob Herring, linux-omap, devicetree, linux-kernel

Tony Lindgren <tony@atomide.com> wrote on Wed [2019-Oct-23 08:56:57 -0700]:
> * Tony Lindgren <tony@atomide.com> [191022 16:56]:
> > * Tero Kristo <t-kristo@ti.com> [191022 16:48]:
> > > On 22/10/2019 19:21, Benoit Parrot wrote:
> > > > Tony Lindgren <tony@atomide.com> wrote on Tue [2019-Oct-22 08:48:16 -0700]:
> > > > > * Benoit Parrot <bparrot@ti.com> [191016 18:47]:
> > > > > > --- a/arch/arm/boot/dts/am43xx-clocks.dtsi
> > > > > > +++ b/arch/arm/boot/dts/am43xx-clocks.dtsi
> > > > > > @@ -704,6 +704,60 @@
> > > > > >   		ti,bit-shift = <8>;
> > > > > >   		reg = <0x2a48>;
> > > > > >   	};
> > > > > > +
> > > > > > +	clkout1_osc_div_ck: clkout1_osc_div_ck {
> > > > > > +		#clock-cells = <0>;
> > > > > > +		compatible = "ti,divider-clock";
> > > > > > +		clocks = <&sys_clkin_ck>;
> > > > > > +		ti,bit-shift = <20>;
> > > > > > +		ti,max-div = <4>;
> > > > > > +		reg = <0x4100>;
> > > > > > +	};
> > > > > 
> > > > > Here too please describe why the clock names are not generic.
> > > > 
> > > > Tero originally had this patch in the kernel so this is somewhat of a
> > > > revert. Since these "clock" were removed. If the name syntax is no longer
> > > > valid for some reason, then I will need a little more informations to
> > > > proceed.
> > > > 
> > > > Tero, can you assist here?
> > > 
> > > This one is just following the naming convention of the rest of the clocks
> > > atm.
> > > 
> > > If we need to fix all the underscore name clocks, that requires pretty much
> > > complete revamp of both the dts data + clock data under the clock driver,
> > > and it is not backwards compatible either. How should we tackle that one?
> > > 
> > > We could maybe add support code in kernel to do s/-/_/g for the "new" clocks
> > > so that their parent-child relationships would be retained, and then convert
> > > the clocks in phases.
> > 
> > Well some of them can be fixed by configuring things based
> > on the compatible value and then the node name can be just
> > clock like it should be.
> > 
> > Here too one option would be to add custom compatibles like:
> > 
> > compatible = "ti,clkout1-osc-div", "ti,divider-clock";
> > 
> > And then have match data configure the rest.
> > 
> > The other option would be to have lookup tables in the clock
> > driver based on the SoC and reg address.
> > 
> > This is a hidden mine though.. We've hit it already several times,
> > and any dts clean-up effort has a chance of breaking things.
> 
> Hmm maybe in this case just doing this is enough:
> 
> clkout1_osc_div_ck: clock@4100 {
> 	... 
> }

But then we would end up with 6 clock node with the same name "clock@4100",
doesn't pose a problem somewhere?

Tero?

Benoit

> 
> Or do all the TI clocks we have have a dependency to the
> node naming?
> 
> Regards,
> 
> Tony
> 

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

* Re: [Patch 1/3] ARM: dts: am43xx: add support for clkout1 clock
  2019-10-30 19:59             ` Benoit Parrot
@ 2019-10-31 14:06               ` Tero Kristo
  2019-10-31 14:25                 ` Tony Lindgren
  0 siblings, 1 reply; 12+ messages in thread
From: Tero Kristo @ 2019-10-31 14:06 UTC (permalink / raw)
  To: Benoit Parrot, Tony Lindgren
  Cc: Rob Herring, linux-omap, devicetree, linux-kernel

On 30/10/2019 21:59, Benoit Parrot wrote:
> Tony Lindgren <tony@atomide.com> wrote on Wed [2019-Oct-23 08:56:57 -0700]:
>> * Tony Lindgren <tony@atomide.com> [191022 16:56]:
>>> * Tero Kristo <t-kristo@ti.com> [191022 16:48]:
>>>> On 22/10/2019 19:21, Benoit Parrot wrote:
>>>>> Tony Lindgren <tony@atomide.com> wrote on Tue [2019-Oct-22 08:48:16 -0700]:
>>>>>> * Benoit Parrot <bparrot@ti.com> [191016 18:47]:
>>>>>>> --- a/arch/arm/boot/dts/am43xx-clocks.dtsi
>>>>>>> +++ b/arch/arm/boot/dts/am43xx-clocks.dtsi
>>>>>>> @@ -704,6 +704,60 @@
>>>>>>>    		ti,bit-shift = <8>;
>>>>>>>    		reg = <0x2a48>;
>>>>>>>    	};
>>>>>>> +
>>>>>>> +	clkout1_osc_div_ck: clkout1_osc_div_ck {
>>>>>>> +		#clock-cells = <0>;
>>>>>>> +		compatible = "ti,divider-clock";
>>>>>>> +		clocks = <&sys_clkin_ck>;
>>>>>>> +		ti,bit-shift = <20>;
>>>>>>> +		ti,max-div = <4>;
>>>>>>> +		reg = <0x4100>;
>>>>>>> +	};
>>>>>>
>>>>>> Here too please describe why the clock names are not generic.
>>>>>
>>>>> Tero originally had this patch in the kernel so this is somewhat of a
>>>>> revert. Since these "clock" were removed. If the name syntax is no longer
>>>>> valid for some reason, then I will need a little more informations to
>>>>> proceed.
>>>>>
>>>>> Tero, can you assist here?
>>>>
>>>> This one is just following the naming convention of the rest of the clocks
>>>> atm.
>>>>
>>>> If we need to fix all the underscore name clocks, that requires pretty much
>>>> complete revamp of both the dts data + clock data under the clock driver,
>>>> and it is not backwards compatible either. How should we tackle that one?
>>>>
>>>> We could maybe add support code in kernel to do s/-/_/g for the "new" clocks
>>>> so that their parent-child relationships would be retained, and then convert
>>>> the clocks in phases.
>>>
>>> Well some of them can be fixed by configuring things based
>>> on the compatible value and then the node name can be just
>>> clock like it should be.
>>>
>>> Here too one option would be to add custom compatibles like:
>>>
>>> compatible = "ti,clkout1-osc-div", "ti,divider-clock";
>>>
>>> And then have match data configure the rest.
>>>
>>> The other option would be to have lookup tables in the clock
>>> driver based on the SoC and reg address.
>>>
>>> This is a hidden mine though.. We've hit it already several times,
>>> and any dts clean-up effort has a chance of breaking things.
>>
>> Hmm maybe in this case just doing this is enough:
>>
>> clkout1_osc_div_ck: clock@4100 {
>> 	...
>> }
> 
> But then we would end up with 6 clock node with the same name "clock@4100",
> doesn't pose a problem somewhere?

Yeah, clk core would not know which one to use then.

> 
> Tero?
> 
> Benoit
> 
>>
>> Or do all the TI clocks we have have a dependency to the
>> node naming?

This is a feature of clock core. Clock parents need to have distinct 
names, otherwise it won't work.

-Tero
--
Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki

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

* Re: [Patch 1/3] ARM: dts: am43xx: add support for clkout1 clock
  2019-10-31 14:06               ` Tero Kristo
@ 2019-10-31 14:25                 ` Tony Lindgren
  0 siblings, 0 replies; 12+ messages in thread
From: Tony Lindgren @ 2019-10-31 14:25 UTC (permalink / raw)
  To: Tero Kristo
  Cc: Benoit Parrot, Rob Herring, linux-omap, devicetree, linux-kernel

* Tero Kristo <t-kristo@ti.com> [191031 14:07]:
> On 30/10/2019 21:59, Benoit Parrot wrote:
> > Tony Lindgren <tony@atomide.com> wrote on Wed [2019-Oct-23 08:56:57 -0700]:
> > > Hmm maybe in this case just doing this is enough:
> > > 
> > > clkout1_osc_div_ck: clock@4100 {
> > > 	...
> > > }
> > 
> > But then we would end up with 6 clock node with the same name "clock@4100",
> > doesn't pose a problem somewhere?
> 
> Yeah, clk core would not know which one to use then.

So we have two issues with the non-standard devicetree use
for omap clocks:

1. Multiple clock nodes with the same reg property

This we sorted out for the clkctrl binding, but we still
have other clocks with this issue.

I guess some of them can be now removed if they are just
legacy clkctrl clocks.

For the rest we could maybe group them under a node with
just one reg property?

The clocks could just look up the reg property from parent
in this case.

2. Dependency to using custom clock node names

This can be sorted out by adding custom compatibles to
the parent node for both clkctrl clock manger nodes and
for the clocks grouped in step #1 above I think.

> > > Or do all the TI clocks we have have a dependency to the
> > > node naming?
> 
> This is a feature of clock core. Clock parents need to have distinct names,
> otherwise it won't work.

With steps #1 and #2 above I think this issue would
also disappear, the clock framework naming could be like
what we already use for the clkctrl clocks.

Regards,

Tony


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

end of thread, other threads:[~2019-10-31 14:25 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-10-16 18:49 [Patch 0/3] ARM: dts: am43x-vpfe/ov2659.patch Benoit Parrot
2019-10-16 18:49 ` [Patch 1/3] ARM: dts: am43xx: add support for clkout1 clock Benoit Parrot
2019-10-22 15:48   ` Tony Lindgren
2019-10-22 16:21     ` Benoit Parrot
2019-10-22 16:47       ` Tero Kristo
2019-10-22 16:55         ` Tony Lindgren
2019-10-23 15:56           ` Tony Lindgren
2019-10-30 19:59             ` Benoit Parrot
2019-10-31 14:06               ` Tero Kristo
2019-10-31 14:25                 ` Tony Lindgren
2019-10-16 18:49 ` [Patch 2/3] ARM: dts: am437x-sk-evm: Add VPFE and OV2659 entries Benoit Parrot
2019-10-16 18:49 ` [Patch 3/3] ARM: dts: am43x-epos-evm: " Benoit Parrot

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).