From: David Lechner <da...@lechnology.com>

This adds a cpu node and operating points to the common da850.dtsi file.

Additionally, a regulator is added to the LEGO EV3 board along with
some board-specific CPU configuration.

Regulators need to be hooked up on other boards to get them working.

Signed-off-by: David Lechner <da...@lechnology.com>
Signed-off-by: Bartosz Golaszewski <bgolaszew...@baylibre.com>
---
 arch/arm/boot/dts/da850-lcdk.dts     | 31 +++++++++++++++
 arch/arm/boot/dts/da850-lego-ev3.dts | 30 +++++++++++++++
 arch/arm/boot/dts/da850.dtsi         | 56 ++++++++++++++++++++++++++++
 3 files changed, 117 insertions(+)

diff --git a/arch/arm/boot/dts/da850-lcdk.dts b/arch/arm/boot/dts/da850-lcdk.dts
index 26f453dc8370..f29ed9010812 100644
--- a/arch/arm/boot/dts/da850-lcdk.dts
+++ b/arch/arm/boot/dts/da850-lcdk.dts
@@ -155,12 +155,43 @@
                        };
                };
        };
+
+       cvdd: regulator0 {
+               compatible = "regulator-fixed";
+               regulator-name = "cvdd";
+               regulator-min-microvolt = <1300000>;
+               regulator-max-microvolt = <1300000>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
 };
 
 &ref_clk {
        clock-frequency = <24000000>;
 };
 
+&cpu {
+       cpu-supply = <&cvdd>;
+};
+
+/* LCDK has a fixed CVDD of 1.3V, so only op points >= 300MHz are valid */
+
+&opp_100 {
+       status = "disabled";
+};
+
+&opp_200 {
+       status = "disabled";
+};
+
+&opp_375 {
+       status = "okay";
+};
+
+&opp_456 {
+       status = "okay";
+};
+
 &pmx_core {
        status = "okay";
 
diff --git a/arch/arm/boot/dts/da850-lego-ev3.dts 
b/arch/arm/boot/dts/da850-lego-ev3.dts
index 66fcadf0ba91..553717f84483 100644
--- a/arch/arm/boot/dts/da850-lego-ev3.dts
+++ b/arch/arm/boot/dts/da850-lego-ev3.dts
@@ -125,6 +125,15 @@
                amp-supply = <&amp>;
        };
 
+       cvdd: regulator0 {
+               compatible = "regulator-fixed";
+               regulator-name = "cvdd";
+               regulator-min-microvolt = <1200000>;
+               regulator-max-microvolt = <1200000>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
        /*
         * This is a 5V current limiting regulator that is shared by USB,
         * the sensor (input) ports, the motor (output) ports and the A/DC.
@@ -204,6 +213,27 @@
        clock-frequency = <24000000>;
 };
 
+&cpu {
+       cpu-supply = <&cvdd>;
+};
+
+/* since we have a fixed regulator, we can't run at these points */
+&opp_100 {
+       status = "disabled";
+};
+
+&opp_200 {
+       status = "disabled";
+};
+
+/*
+ * The SoC is actually the 456MHz version, but because of the fixed regulator
+ * This is the fastest we can go.
+ */
+&opp_375 {
+       status = "okay";
+};
+
 &pmx_core {
        status = "okay";
 
diff --git a/arch/arm/boot/dts/da850.dtsi b/arch/arm/boot/dts/da850.dtsi
index 559659b399d0..ee61d1253b58 100644
--- a/arch/arm/boot/dts/da850.dtsi
+++ b/arch/arm/boot/dts/da850.dtsi
@@ -20,6 +20,62 @@
                reg = <0xc0000000 0x0>;
        };
 
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               cpu: cpu@0 {
+                       compatible = "arm,arm926ej-s";
+                       device_type = "cpu";
+                       reg = <0>;
+                       clocks = <&psc0 14>;
+                       operating-points-v2 = <&opp_table>;
+               };
+       };
+
+       opp_table: opp-table {
+               compatible = "operating-points-v2";
+
+               opp_100: opp100-100000000 {
+                       opp-hz = /bits/ 64 <100000000>;
+                       opp-microvolt = <1000000 950000 1050000>;
+               };
+
+               opp_200: opp110-200000000 {
+                       opp-hz = /bits/ 64 <200000000>;
+                       opp-microvolt = <1100000 1050000 1160000>;
+               };
+
+               opp_300: opp120-300000000 {
+                       opp-hz = /bits/ 64 <300000000>;
+                       opp-microvolt = <1200000 1140000 1320000>;
+               };
+
+               /*
+                * Original silicon was 300MHz max, so higher frequencies
+                * need to be enabled on a per-board basis if the chip is
+                * capable.
+                */
+
+               opp_375: opp120-375000000 {
+                       status = "disabled";
+                       opp-hz = /bits/ 64 <375000000>;
+                       opp-microvolt = <1200000 1140000 1320000>;
+               };
+
+               opp_415: opp130-415000000 {
+                       status = "disabled";
+                       opp-hz = /bits/ 64 <415000000>;
+                       opp-microvolt = <1300000 1250000 1350000>;
+               };
+
+               opp_456: opp130-456000000 {
+                       status = "disabled";
+                       opp-hz = /bits/ 64 <456000000>;
+                       opp-microvolt = <1300000 1250000 1350000>;
+               };
+       };
+
        arm {
                #address-cells = <1>;
                #size-cells = <1>;
-- 
2.20.1

Reply via email to