ARM: dts: aspeed: Add proper clock references
authorJoel Stanley <joel@jms.id.au>
Tue, 28 Nov 2017 12:09:25 +0000 (22:39 +1030)
committerJoel Stanley <joel@jms.id.au>
Thu, 21 Dec 2017 03:33:14 +0000 (14:03 +1030)
This device tree will break existing kernels that do not have the clk
patches applied (no clocksource, as we don't know the speed of the APB
clock.  You can boot if you pass a lpj value on the command line, but
won't have a uart).

Older device trees running with the newer kernel will function as well
as pre-4.16 kernels. That is, that some IP blocks (i2c, pwm/tach, adc)
will not work as the kernel lacks reset controller and clock enabling.

This is being changed as existing device trees use fixed-clocks in order
to boot without a clk driver. The newly added clk driver provides proper
clock support, including gating, so we move the device trees over to
properly request clocks.

The SCU compatible string is updated as the g4-scu string made it into
the tree before we decided on aspeed,astX000-<ip> as the format for the
strings. The old string will be removed from the bindings in a future
patch.

Signed-off-by: Joel Stanley <joel@jms.id.au>
arch/arm/boot/dts/aspeed-g4.dtsi
arch/arm/boot/dts/aspeed-g5.dtsi

index 9422f9cb1e11dea90cdad327044142006baf39b9..b938759f799e3a4d378649a79da7620a7b18f895 100644 (file)
@@ -1,5 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0
 #include "skeleton.dtsi"
+#include <dt-bindings/clock/aspeed-clock.h>
 
 / {
        model = "Aspeed BMC";
                        ranges;
 
                        syscon: syscon@1e6e2000 {
-                               compatible = "aspeed,g4-scu", "syscon", "simple-mfd";
+                               compatible = "aspeed,ast2400-scu", "syscon", "simple-mfd";
                                reg = <0x1e6e2000 0x1a8>;
                                #address-cells = <1>;
                                #size-cells = <0>;
-
-                                clk_clkin: clk_clkin {
-                                        #clock-cells = <0>;
-                                        compatible = "fixed-clock";
-                                        clock-frequency = <48000000>;
-                                };
-
-                                clk_hpll: clk_hpll@70 {
-                                        #clock-cells = <0>;
-                                        compatible = "aspeed,g4-hpll-clock", "fixed-clock";
-                                        reg = <0x70>;
-                                        clocks = <&clk_clkin>;
-                                        clock-frequency = <384000000>;
-                                };
-
-                                clk_ahb: clk_ahb@70 {
-                                        #clock-cells = <0>;
-                                        compatible = "aspeed,g4-ahb-clock", "fixed-clock";
-                                        reg = <0x70>;
-                                        clocks = <&clk_hpll>;
-                                        clock-frequency = <192000000>;
-                                };
-
-                                clk_apb: clk_apb@8 {
-                                        #clock-cells = <0>;
-                                        compatible = "aspeed,g4-apb-clock", "fixed-clock";
-                                        reg = <0x08>;
-                                        clocks = <&clk_hpll>;
-                                        clock-frequency = <48000000>;
-                                };
-
-                                clk_uart: clk_uart@2c{
-                                        #clock-cells = <0>;
-                                        compatible = "aspeed,g4-uart-clock", "fixed-clock";
-                                        reg = <0x2c>;
-                                        clock-frequency = <24000000>;
-                                };
+                               #clock-cells = <1>;
+                               #reset-cells = <1>;
 
                                pinctrl: pinctrl {
                                        compatible = "aspeed,g4-pinctrl";
                        adc: adc@1e6e9000 {
                                compatible = "aspeed,ast2400-adc";
                                reg = <0x1e6e9000 0xb0>;
-                               clocks = <&clk_apb>;
+                               clocks = <&syscon ASPEED_CLK_APB>;
+                               resets = <&syscon ASPEED_RESET_ADC>;
                                #io-channel-cells = <1>;
                                status = "disabled";
                        };
                                compatible = "aspeed,ast2400-timer";
                                reg = <0x1e782000 0x90>;
                                interrupts = <16 17 18 35 36 37 38 39>;
-                               clocks = <&clk_apb>;
+                               clocks = <&syscon ASPEED_CLK_APB>;
                                clock-names = "PCLK";
                        };
 
                                reg = <0x1e783000 0x20>;
                                reg-shift = <2>;
                                interrupts = <9>;
-                               clocks = <&clk_uart>;
+                               clocks = <&syscon ASPEED_CLK_GATE_UART1CLK>;
                                no-loopback-test;
                                status = "disabled";
                        };
                                reg = <0x1e784000 0x20>;
                                reg-shift = <2>;
                                interrupts = <10>;
-                               clocks = <&clk_uart>;
+                               clocks = <&syscon ASPEED_CLK_GATE_UART5CLK>;
                                no-loopback-test;
                                status = "disabled";
                        };
                                compatible = "aspeed,ast2400-vuart";
                                reg = <0x1e787000 0x40>;
                                reg-shift = <2>;
-                               interrupts = <10>;
-                               clocks = <&clk_uart>;
+                               interrupts = <8>;
+                               clocks = <&syscon ASPEED_CLK_APB>;
                                no-loopback-test;
                                status = "disabled";
                        };
                                reg = <0x1e78d000 0x20>;
                                reg-shift = <2>;
                                interrupts = <32>;
-                               clocks = <&clk_uart>;
+                               clocks = <&syscon ASPEED_CLK_GATE_UART2CLK>;
                                no-loopback-test;
                                status = "disabled";
                        };
                                reg = <0x1e78e000 0x20>;
                                reg-shift = <2>;
                                interrupts = <33>;
-                               clocks = <&clk_uart>;
+                               clocks = <&syscon ASPEED_CLK_GATE_UART3CLK>;
                                no-loopback-test;
                                status = "disabled";
                        };
                                reg = <0x1e78f000 0x20>;
                                reg-shift = <2>;
                                interrupts = <34>;
-                               clocks = <&clk_uart>;
+                               clocks = <&syscon ASPEED_CLK_GATE_UART4CLK>;
                                no-loopback-test;
                                status = "disabled";
                        };
 
                reg = <0x40 0x40>;
                compatible = "aspeed,ast2400-i2c-bus";
-               clocks = <&clk_apb>;
+               clocks = <&syscon ASPEED_CLK_APB>;
+               resets = <&syscon ASPEED_RESET_I2C>;
                bus-frequency = <100000>;
                interrupts = <0>;
                interrupt-parent = <&i2c_ic>;
 
                reg = <0x80 0x40>;
                compatible = "aspeed,ast2400-i2c-bus";
-               clocks = <&clk_apb>;
+               clocks = <&syscon ASPEED_CLK_APB>;
+               resets = <&syscon ASPEED_RESET_I2C>;
                bus-frequency = <100000>;
                interrupts = <1>;
                interrupt-parent = <&i2c_ic>;
 
                reg = <0xc0 0x40>;
                compatible = "aspeed,ast2400-i2c-bus";
-               clocks = <&clk_apb>;
+               clocks = <&syscon ASPEED_CLK_APB>;
+               resets = <&syscon ASPEED_RESET_I2C>;
                bus-frequency = <100000>;
                interrupts = <2>;
                interrupt-parent = <&i2c_ic>;
 
                reg = <0x100 0x40>;
                compatible = "aspeed,ast2400-i2c-bus";
-               clocks = <&clk_apb>;
+               clocks = <&syscon ASPEED_CLK_APB>;
+               resets = <&syscon ASPEED_RESET_I2C>;
                bus-frequency = <100000>;
                interrupts = <3>;
                interrupt-parent = <&i2c_ic>;
 
                reg = <0x140 0x40>;
                compatible = "aspeed,ast2400-i2c-bus";
-               clocks = <&clk_apb>;
+               clocks = <&syscon ASPEED_CLK_APB>;
+               resets = <&syscon ASPEED_RESET_I2C>;
                bus-frequency = <100000>;
                interrupts = <4>;
                interrupt-parent = <&i2c_ic>;
 
                reg = <0x180 0x40>;
                compatible = "aspeed,ast2400-i2c-bus";
-               clocks = <&clk_apb>;
+               clocks = <&syscon ASPEED_CLK_APB>;
+               resets = <&syscon ASPEED_RESET_I2C>;
                bus-frequency = <100000>;
                interrupts = <5>;
                interrupt-parent = <&i2c_ic>;
 
                reg = <0x1c0 0x40>;
                compatible = "aspeed,ast2400-i2c-bus";
-               clocks = <&clk_apb>;
+               clocks = <&syscon ASPEED_CLK_APB>;
+               resets = <&syscon ASPEED_RESET_I2C>;
                bus-frequency = <100000>;
                interrupts = <6>;
                interrupt-parent = <&i2c_ic>;
 
                reg = <0x300 0x40>;
                compatible = "aspeed,ast2400-i2c-bus";
-               clocks = <&clk_apb>;
+               clocks = <&syscon ASPEED_CLK_APB>;
+               resets = <&syscon ASPEED_RESET_I2C>;
                bus-frequency = <100000>;
                interrupts = <7>;
                interrupt-parent = <&i2c_ic>;
 
                reg = <0x340 0x40>;
                compatible = "aspeed,ast2400-i2c-bus";
-               clocks = <&clk_apb>;
+               clocks = <&syscon ASPEED_CLK_APB>;
+               resets = <&syscon ASPEED_RESET_I2C>;
                bus-frequency = <100000>;
                interrupts = <8>;
                interrupt-parent = <&i2c_ic>;
 
                reg = <0x380 0x40>;
                compatible = "aspeed,ast2400-i2c-bus";
-               clocks = <&clk_apb>;
+               clocks = <&syscon ASPEED_CLK_APB>;
+               resets = <&syscon ASPEED_RESET_I2C>;
                bus-frequency = <100000>;
                interrupts = <9>;
                interrupt-parent = <&i2c_ic>;
 
                reg = <0x3c0 0x40>;
                compatible = "aspeed,ast2400-i2c-bus";
-               clocks = <&clk_apb>;
+               clocks = <&syscon ASPEED_CLK_APB>;
+               resets = <&syscon ASPEED_RESET_I2C>;
                bus-frequency = <100000>;
                interrupts = <10>;
                interrupt-parent = <&i2c_ic>;
 
                reg = <0x400 0x40>;
                compatible = "aspeed,ast2400-i2c-bus";
-               clocks = <&clk_apb>;
+               clocks = <&syscon ASPEED_CLK_APB>;
+               resets = <&syscon ASPEED_RESET_I2C>;
                bus-frequency = <100000>;
                interrupts = <11>;
                interrupt-parent = <&i2c_ic>;
 
                reg = <0x440 0x40>;
                compatible = "aspeed,ast2400-i2c-bus";
-               clocks = <&clk_apb>;
+               clocks = <&syscon ASPEED_CLK_APB>;
+               resets = <&syscon ASPEED_RESET_I2C>;
                bus-frequency = <100000>;
                interrupts = <12>;
                interrupt-parent = <&i2c_ic>;
 
                reg = <0x480 0x40>;
                compatible = "aspeed,ast2400-i2c-bus";
-               clocks = <&clk_apb>;
+               clocks = <&syscon ASPEED_CLK_APB>;
+               resets = <&syscon ASPEED_RESET_I2C>;
                bus-frequency = <100000>;
                interrupts = <13>;
                interrupt-parent = <&i2c_ic>;
index 069f13df19d12852de962778a81a27ee3aec151f..1af600b4847594bd8798ed41fda0664405b8aeda 100644 (file)
@@ -1,5 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0
 #include "skeleton.dtsi"
+#include <dt-bindings/clock/aspeed-clock.h>
 
 / {
        model = "Aspeed BMC";
                        ranges;
 
                        syscon: syscon@1e6e2000 {
-                               compatible = "aspeed,g5-scu", "syscon", "simple-mfd";
+                               compatible = "aspeed,ast2500-scu", "syscon", "simple-mfd";
                                reg = <0x1e6e2000 0x1a8>;
                                #address-cells = <1>;
                                #size-cells = <0>;
-
-                               clk_clkin: clk_clkin@70 {
-                                       #clock-cells = <0>;
-                                       compatible = "aspeed,g5-clkin-clock", "fixed-clock";
-                                       reg = <0x70>;
-                                       clock-frequency = <24000000>;
-                               };
-
-                               clk_hpll: clk_hpll@24 {
-                                       #clock-cells = <0>;
-                                       compatible = "aspeed,g5-hpll-clock", "fixed-clock";
-                                       reg = <0x24>;
-                                       clocks = <&clk_clkin>;
-                                       clock-frequency = <792000000>;
-                               };
-
-                               clk_ahb: clk_ahb@70 {
-                                       #clock-cells = <0>;
-                                       compatible = "aspeed,g5-ahb-clock", "fixed-clock";
-                                       reg = <0x70>;
-                                       clocks = <&clk_hpll>;
-                                       clock-frequency = <198000000>;
-                               };
-
-                               clk_apb: clk_apb@8 {
-                                       #clock-cells = <0>;
-                                       compatible = "aspeed,g5-apb-clock", "fixed-clock";
-                                       reg = <0x08>;
-                                       clocks = <&clk_hpll>;
-                                       clock-frequency = <24750000>;
-                               };
-
-                               clk_uart: clk_uart@2c {
-                                       #clock-cells = <0>;
-                                       compatible = "aspeed,uart-clock", "fixed-clock";
-                                       reg = <0x2c>;
-                                       clock-frequency = <24000000>;
-                               };
+                               #clock-cells = <1>;
+                               #reset-cells = <1>;
 
                                pinctrl: pinctrl {
                                        compatible = "aspeed,g5-pinctrl";
                                        aspeed,external-nodes = <&gfx &lhc>;
 
                                };
-
                        };
 
                        gfx: display@1e6e6000 {
                        adc: adc@1e6e9000 {
                                compatible = "aspeed,ast2500-adc";
                                reg = <0x1e6e9000 0xb0>;
-                               clocks = <&clk_apb>;
+                               clocks = <&syscon ASPEED_CLK_APB>;
+                               resets = <&syscon ASPEED_RESET_ADC>;
                                #io-channel-cells = <1>;
                                status = "disabled";
                        };
                                compatible = "aspeed,ast2400-timer";
                                reg = <0x1e782000 0x90>;
                                interrupts = <16 17 18 35 36 37 38 39>;
-                               clocks = <&clk_apb>;
+                               clocks = <&syscon ASPEED_CLK_APB>;
                                clock-names = "PCLK";
                        };
 
                                reg = <0x1e783000 0x20>;
                                reg-shift = <2>;
                                interrupts = <9>;
-                               clocks = <&clk_uart>;
+                               clocks = <&syscon ASPEED_CLK_GATE_UART1CLK>;
                                no-loopback-test;
                                status = "disabled";
                        };
                                reg = <0x1e784000 0x20>;
                                reg-shift = <2>;
                                interrupts = <10>;
-                               clocks = <&clk_uart>;
+                               clocks = <&syscon ASPEED_CLK_GATE_UART5CLK>;
                                no-loopback-test;
                                status = "disabled";
                        };
                                compatible = "aspeed,ast2500-vuart";
                                reg = <0x1e787000 0x40>;
                                reg-shift = <2>;
-                               interrupts = <10>;
-                               clocks = <&clk_uart>;
+                               interrupts = <8>;
+                               clocks = <&syscon ASPEED_CLK_APB>;
                                no-loopback-test;
                                status = "disabled";
                        };
                                reg = <0x1e78d000 0x20>;
                                reg-shift = <2>;
                                interrupts = <32>;
-                               clocks = <&clk_uart>;
+                               clocks = <&syscon ASPEED_CLK_GATE_UART2CLK>;
                                no-loopback-test;
                                status = "disabled";
                        };
                                reg = <0x1e78e000 0x20>;
                                reg-shift = <2>;
                                interrupts = <33>;
-                               clocks = <&clk_uart>;
+                               clocks = <&syscon ASPEED_CLK_GATE_UART3CLK>;
                                no-loopback-test;
                                status = "disabled";
                        };
                                reg = <0x1e78f000 0x20>;
                                reg-shift = <2>;
                                interrupts = <34>;
-                               clocks = <&clk_uart>;
+                               clocks = <&syscon ASPEED_CLK_GATE_UART4CLK>;
                                no-loopback-test;
                                status = "disabled";
                        };
 
                reg = <0x40 0x40>;
                compatible = "aspeed,ast2500-i2c-bus";
-               clocks = <&clk_apb>;
+               clocks = <&syscon ASPEED_CLK_APB>;
+               resets = <&syscon ASPEED_RESET_I2C>;
                bus-frequency = <100000>;
                interrupts = <0>;
                interrupt-parent = <&i2c_ic>;
 
                reg = <0x80 0x40>;
                compatible = "aspeed,ast2500-i2c-bus";
-               clocks = <&clk_apb>;
+               clocks = <&syscon ASPEED_CLK_APB>;
+               resets = <&syscon ASPEED_RESET_I2C>;
                bus-frequency = <100000>;
                interrupts = <1>;
                interrupt-parent = <&i2c_ic>;
 
                reg = <0xc0 0x40>;
                compatible = "aspeed,ast2500-i2c-bus";
-               clocks = <&clk_apb>;
+               clocks = <&syscon ASPEED_CLK_APB>;
+               resets = <&syscon ASPEED_RESET_I2C>;
                bus-frequency = <100000>;
                interrupts = <2>;
                interrupt-parent = <&i2c_ic>;
 
                reg = <0x100 0x40>;
                compatible = "aspeed,ast2500-i2c-bus";
-               clocks = <&clk_apb>;
+               clocks = <&syscon ASPEED_CLK_APB>;
+               resets = <&syscon ASPEED_RESET_I2C>;
                bus-frequency = <100000>;
                interrupts = <3>;
                interrupt-parent = <&i2c_ic>;
 
                reg = <0x140 0x40>;
                compatible = "aspeed,ast2500-i2c-bus";
-               clocks = <&clk_apb>;
+               clocks = <&syscon ASPEED_CLK_APB>;
+               resets = <&syscon ASPEED_RESET_I2C>;
                bus-frequency = <100000>;
                interrupts = <4>;
                interrupt-parent = <&i2c_ic>;
 
                reg = <0x180 0x40>;
                compatible = "aspeed,ast2500-i2c-bus";
-               clocks = <&clk_apb>;
+               clocks = <&syscon ASPEED_CLK_APB>;
+               resets = <&syscon ASPEED_RESET_I2C>;
                bus-frequency = <100000>;
                interrupts = <5>;
                interrupt-parent = <&i2c_ic>;
 
                reg = <0x1c0 0x40>;
                compatible = "aspeed,ast2500-i2c-bus";
-               clocks = <&clk_apb>;
+               clocks = <&syscon ASPEED_CLK_APB>;
+               resets = <&syscon ASPEED_RESET_I2C>;
                bus-frequency = <100000>;
                interrupts = <6>;
                interrupt-parent = <&i2c_ic>;
 
                reg = <0x300 0x40>;
                compatible = "aspeed,ast2500-i2c-bus";
-               clocks = <&clk_apb>;
+               clocks = <&syscon ASPEED_CLK_APB>;
+               resets = <&syscon ASPEED_RESET_I2C>;
                bus-frequency = <100000>;
                interrupts = <7>;
                interrupt-parent = <&i2c_ic>;
 
                reg = <0x340 0x40>;
                compatible = "aspeed,ast2500-i2c-bus";
-               clocks = <&clk_apb>;
+               clocks = <&syscon ASPEED_CLK_APB>;
+               resets = <&syscon ASPEED_RESET_I2C>;
                bus-frequency = <100000>;
                interrupts = <8>;
                interrupt-parent = <&i2c_ic>;
 
                reg = <0x380 0x40>;
                compatible = "aspeed,ast2500-i2c-bus";
-               clocks = <&clk_apb>;
+               clocks = <&syscon ASPEED_CLK_APB>;
+               resets = <&syscon ASPEED_RESET_I2C>;
                bus-frequency = <100000>;
                interrupts = <9>;
                interrupt-parent = <&i2c_ic>;
 
                reg = <0x3c0 0x40>;
                compatible = "aspeed,ast2500-i2c-bus";
-               clocks = <&clk_apb>;
+               clocks = <&syscon ASPEED_CLK_APB>;
+               resets = <&syscon ASPEED_RESET_I2C>;
                bus-frequency = <100000>;
                interrupts = <10>;
                interrupt-parent = <&i2c_ic>;
 
                reg = <0x400 0x40>;
                compatible = "aspeed,ast2500-i2c-bus";
-               clocks = <&clk_apb>;
+               clocks = <&syscon ASPEED_CLK_APB>;
+               resets = <&syscon ASPEED_RESET_I2C>;
                bus-frequency = <100000>;
                interrupts = <11>;
                interrupt-parent = <&i2c_ic>;
 
                reg = <0x440 0x40>;
                compatible = "aspeed,ast2500-i2c-bus";
-               clocks = <&clk_apb>;
+               clocks = <&syscon ASPEED_CLK_APB>;
+               resets = <&syscon ASPEED_RESET_I2C>;
                bus-frequency = <100000>;
                interrupts = <12>;
                interrupt-parent = <&i2c_ic>;
 
                reg = <0x480 0x40>;
                compatible = "aspeed,ast2500-i2c-bus";
-               clocks = <&clk_apb>;
+               clocks = <&syscon ASPEED_CLK_APB>;
+               resets = <&syscon ASPEED_RESET_I2C>;
                bus-frequency = <100000>;
                interrupts = <13>;
                interrupt-parent = <&i2c_ic>;