[PATCHv10 21/41] ARM: dts: omap4 clock data
Tero Kristo
t-kristo at ti.com
Tue Dec 17 04:57:36 EST 2013
On 12/17/2013 11:44 AM, Paul Walmsley wrote:
> On Tue, 26 Nov 2013, Tero Kristo wrote:
>
>> This patch creates a unique node for each clock in the OMAP4 power,
>> reset and clock manager (PRCM). OMAP443x and OMAP446x have slightly
>> different clock tree which is taken into account in the data.
>>
>> Signed-off-by: Tero Kristo <t-kristo at ti.com>
>
> ...
>
>> diff --git a/arch/arm/boot/dts/omap4.dtsi b/arch/arm/boot/dts/omap4.dtsi
>> index a1e0585..c2e3993 100644
>> --- a/arch/arm/boot/dts/omap4.dtsi
>> +++ b/arch/arm/boot/dts/omap4.dtsi
>> @@ -107,6 +107,34 @@
>> interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
>> <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
>>
>> + cm1: cm1 at 4a004000 {
>> + compatible = "ti,clock-master";
>
> These devices are low-level IP blocks, and should have accurate compatible
> strings like any other low-level IP block. At some point in the future,
> these IP blocks will have device driver code that matches up with these DT
> nodes, and is probed via these compatible strings. These should be
> corrected now, so unnecessary DT data synchronization problems don't
> appear with later kernels.
>
> So this should be something like:
>
> compatible = "ti,omap4-cm1";
>
>> + #address-cells = <1>;
>> + #size-cells = <0>;
>> + reg = <0x4a004000 0x2000>;
>> + };
>> +
>> + prm: prm at 4a306000 {
>> + compatible = "ti,clock-master";
>
> Similarly this should be
>
> compatible = "ti,omap4-prm";
How about just adding dual compatible strings? Keep the current one and
add the other as extra.
compatible = "ti,clock-master", "ti,omap4-prm";
Easier to handle it this way.
>
>> + #address-cells = <1>;
>> + #size-cells = <0>;
>> + reg = <0x4a306000 0x3000>;
>> + };
>> +
>> + cm2: cm2 at 4a008000 {
>> + compatible = "ti,clock-master";
>
> compatible = "ti,omap4-cm2";
>
>> + #address-cells = <1>;
>> + #size-cells = <0>;
>> + reg = <0x4a008000 0x3000>;
>> + };
>> +
>> + scrm: scrm at 4a30a000 {
>> + compatible = "ti,clock-master";
>
> compatible = "ti,omap4-scrm";
>
>
> ...
>
>> diff --git a/arch/arm/boot/dts/omap443x-clocks.dtsi b/arch/arm/boot/dts/omap443x-clocks.dtsi
>> new file mode 100644
>> index 0000000..643755b
>> --- /dev/null
>> +++ b/arch/arm/boot/dts/omap443x-clocks.dtsi
>> @@ -0,0 +1,18 @@
>> +/*
>> + * Device Tree Source for OMAP4 clock data
>> + *
>> + * Copyright (C) 2013 Texas Instruments, Inc.
>> + *
>> + * This program is free software; you can redistribute it and/or modify
>> + * it under the terms of the GNU General Public License version 2 as
>> + * published by the Free Software Foundation.
>> + */
>> +&prm {
>> + bandgap_fclk: bandgap_fclk {
>> + #clock-cells = <0>;
>> + compatible = "ti,gate-clock";
>> + clocks = <&sys_32k_ck>;
>> + ti,bit-shift = <8>;
>> + reg = <0x1888>;
>> + };
>
> So we've already discussed that clocks should be moved underneath
> separate "clocks {" node in the IP block data. And similarly...
Yeah, I have actually wip v11 which has this done. I ended up creating
this though:
...
prm {
prm_clocks: clocks {
};
};
... and references like:
&prm_clocks {
};
It seems the references to existing clocks {} nodes is impossible
otherwise as I need to add some extra clocks to these.
>
>> diff --git a/arch/arm/boot/dts/omap44xx-clocks.dtsi b/arch/arm/boot/dts/omap44xx-clocks.dtsi
>> new file mode 100644
>> index 0000000..2b59d54
>> --- /dev/null
>> +++ b/arch/arm/boot/dts/omap44xx-clocks.dtsi
>
> ...
>
>> + emu_sys_clkdm: emu_sys_clkdm {
>> + compatible = "ti,clockdomain";
>> + clocks = <&trace_clk_div_ck>;
>> + };
>
> ... all of the clockdomains should be moved underneath "clockdomains {"
> nodes in the IP block DT data.
Ok that can be done.
>
>
> - Paul
>
More information about the linux-arm-kernel
mailing list