[PATCH 09/10] dts: versatile: add clock tree
Linus Walleij
linus.walleij at linaro.org
Fri May 23 06:28:21 PDT 2014
On Tue, May 20, 2014 at 11:09 PM, Rob Herring <robherring2 at gmail.com> wrote:
> From: Rob Herring <robh at kernel.org>
>
> The versatile dts is missing any clock data. Add the clocks.
>
> It is not clear from the documentation where pclk comes from, so for
> now it is a dummy clock which is sufficient for things to work.
AFAICT (from experiments and measurements on some boards, during which
I destroyed some boards) that is actually just the 24MHz clock right off.
> Signed-off-by: Rob Herring <robh at kernel.org>
> + core-module at 10000000 {
> + compatible = "arm,core-module-versatile";
> + reg = <0x10000000 0x200>;
> +
> + osc24M: oscillator at 24M {
> + #clock-cells = <0>;
> + compatible = "fixed-clock";
> + clock-frequency = <24000000>;
> + };
Please follow the naming convention from the Integrator DTS, I am
pretty sure this is a chrystal:
/* 24 MHz chrystal on the core module */
xtal24mhz: xtal24mhz at 24M {
#clock-cells = <0>;
compatible = "fixed-clock";
clock-frequency = <24000000>;
};
> + /* OSC1 on AB, OSC4 on PB */
> + osc1: cm_aux_osc at 24M {
> + #clock-cells = <0>;
> + compatible = "arm,versatile-cm-auxosc";
> + clocks = <&osc24M>;
> + };
Name xtal, also: why is this inside the core module node?
You're explicitly saying it is on the PB (platform baseboard)
and *not* on the core module!
> + /* The timer clock is the 24 MHz oscillator divided to 1MHz */
> + timclk: timclk at 1M {
> + #clock-cells = <0>;
> + compatible = "fixed-factor-clock";
> + clock-div = <24>;
> + clock-mult = <1>;
> + clocks = <&osc24M>;
> + };
> +
> + /* Actually hclk ? */
> + pclk: pclk at 0 {
> + #clock-cells = <0>;
> + compatible = "fixed-clock";
> + clock-frequency = <0>;
> + };
I strongly suspect it's like this:
pclk: pclk at 0 {
#clock-cells = <0>;
compatible = "fixed-factor-clock";
clock-div = <1>;
clock-mult = <1>;
clocks = <&xtal24mhz>;
};
> timer at 101e2000 {
> compatible = "arm,sp804", "arm,primecell";
> reg = <0x101e2000 0x1000>;
> interrupts = <4>;
> + clocks = <&timclk>, <&pclk>;
> + clock-names = "tmrclk", "apb_pclk";
> };
We recently had some fight over the names of these clocks.
The DT bindings say they should be named "timer0" "timer1"
etc, see
Documentation/devicetree/bindings/timer/arm,sp804.txt
> timer at 101e3000 {
> compatible = "arm,sp804", "arm,primecell";
> reg = <0x101e3000 0x1000>;
> interrupts = <5>;
> + clocks = <&timclk>, <&pclk>;
> + clock-names = "tmrclk", "apb_pclk";
Dito.
> ssp at 101f4000 {
> compatible = "arm,pl022", "arm,primecell";
> reg = <0x101f4000 0x1000>;
> interrupts = <11>;
> + clocks = <&osc24M>, <&pclk>;
> + clock-names = "sspclk", "apb_pclk";
Should be SSPCLK all capitals.
Yours,
Linus Walleij
More information about the linux-arm-kernel
mailing list