sandbox: dts: add sandbox_pmic.dtsi and include it to sandbox.dts and test.dts
authorPrzemyslaw Marczak <p.marczak@samsung.com>
Wed, 13 May 2015 11:38:35 +0000 (13:38 +0200)
committerSimon Glass <sjg@chromium.org>
Fri, 15 May 2015 01:59:21 +0000 (19:59 -0600)
This commit adds dtsi file for Sandbox PMIC.
It fully describes the PMIC by:
- i2c emul node - with a default settings of 16 registers
- 2x buck regulator nodes
- 2x ldo regulator nodes

The default register settings are set with preprocessor macros:
- VAL2REG(min[uV/uA], step[uV/uA], val[uV/uA])
- VAL2OMREG(mode id)
Both defined in file:
- include/dt-bindings/pmic/sandbox_pmic.h

The Voltage ranges of each regulator can be found in:
- include/power/sandbox_pmic.h

The new file is included into:
- sandbox.dts
- test.dts

Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com>
Acked-by: Simon Glass <sjg@chromium.org>
Tested on sandbox:
Tested-by: Simon Glass <sjg@chromium.org>
arch/sandbox/dts/sandbox.dts
arch/sandbox/dts/sandbox_pmic.dtsi [new file with mode: 0644]
arch/sandbox/dts/test.dts
include/dt-bindings/pmic/sandbox_pmic.h [new file with mode: 0644]

index 99b0f362ae618b668d18ee4239ff6b6633556d7b..a3ebd80dd8ce8fda45fe20c4add79c48f5f23667 100644 (file)
                                compatible = "sandbox,i2c-rtc";
                        };
                };
+               sandbox_pmic: sandbox_pmic {
+                       reg = <0x40>;
+               };
        };
 
        spi@0 {
 };
 
 #include "cros-ec-keyboard.dtsi"
+#include "sandbox_pmic.dtsi"
diff --git a/arch/sandbox/dts/sandbox_pmic.dtsi b/arch/sandbox/dts/sandbox_pmic.dtsi
new file mode 100644 (file)
index 0000000..44a26b1
--- /dev/null
@@ -0,0 +1,78 @@
+/*
+ *  Sandbox PMIC dts node
+ *
+ *  Copyright (C) 2015 Samsung Electronics
+ *  Przemyslaw Marczak  <p.marczak@samsung.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <dt-bindings/pmic/sandbox_pmic.h>
+
+&sandbox_pmic {
+       compatible = "sandbox,pmic";
+
+       pmic_emul {
+               compatible = "sandbox,i2c-pmic";
+
+               /*
+                * Default PMICs register values are set by macro
+                * VAL2REG(min, step, value) [uV/uA]
+                * VAL2OMREG(mode id)
+                * reg-defaults - byte array
+                */
+               reg-defaults = /bits/ 8 <
+                       /* BUCK1 */
+                       VAL2REG(800000, 25000, 1000000)
+                       VAL2REG(150000, 25000, 150000)
+                       VAL2OMREG(BUCK_OM_OFF)
+                       /* BUCK2 */
+                       VAL2REG(750000, 50000, 3000000)
+                       VAL2REG(150000, 25000, 150000)
+                       VAL2OMREG(0)
+                       /* LDO1 */
+                       VAL2REG(800000, 25000, 1600000)
+                       VAL2REG(100000, 50000, 150000)
+                       VAL2OMREG(LDO_OM_OFF)
+                       /* LDO2 */
+                       VAL2REG(750000, 50000, 3000000)
+                       VAL2REG(150000, 25000, 150000)
+                       VAL2OMREG(0)
+                       /* reg[12:15] - not used */
+                       0x00
+                       0x00
+                       0x00
+                       0x00
+               >;
+       };
+
+       buck1 {
+               regulator-name = "SUPPLY_1.2V";
+               regulator-min-microvolt = <1200000>;
+               regulator-max-microvolt = <1200000>;
+               regulator-min-microamp = <200000>;
+               regulator-max-microamp = <200000>;
+               regulator-always-on;
+       };
+
+       buck2 {
+               regulator-name = "SUPPLY_3.3V";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+       };
+
+       ldo1 {
+               regulator-name = "VDD_EMMC_1.8V";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               regulator-min-microamp = <100000>;
+               regulator-max-microamp = <100000>;
+               regulator-boot-on;
+       };
+
+       ldo2 {
+               regulator-name = "VDD_LCD_3.3V";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+       };
+};
index d0c40be6b0ad69cc641ba3d56477db5eb3eaa09c..1bc3ca0770c5ac1c6784c1621e4200f92b359e95 100644 (file)
                                sandbox,size = <256>;
                        };
                };
+
+               sandbox_pmic: sandbox_pmic {
+                       reg = <0x40>;
+               };
        };
 
        pci: pci-controller {
        };
 
 };
+
+#include "sandbox_pmic.dtsi"
diff --git a/include/dt-bindings/pmic/sandbox_pmic.h b/include/dt-bindings/pmic/sandbox_pmic.h
new file mode 100644 (file)
index 0000000..c3d839b
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+ *  Copyright (C) 2015 Samsung Electronics
+ *  Przemyslaw Marczak  <p.marczak@samsung.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _DT_BINDINGS_SANDBOX_PMIC_H_
+#define _DT_BINDINGS_SANDBOX_PMIC_H_
+
+/*
+ * Sandbox PMIC - prepare reset values
+ * To provide the default (reset) values as in the real hardware,
+ * the registers are set in i2c pmic emul driver's probe() method.
+ * The default values are defined as below.
+ */
+
+/* Buck operation mode IDs */
+#define BUCK_OM_OFF    0
+#define BUCK_OM_ON     1
+#define BUCK_OM_PWM    2
+#define BUCK_OM_COUNT  3
+
+/* Ldo operation mode IDs */
+#define LDO_OM_OFF     0
+#define LDO_OM_ON      1
+#define LDO_OM_SLEEP   2
+#define LDO_OM_STANDBY 3
+#define LDO_OM_COUNT   4
+
+/* [Value uV/uA]/[Mode ID] to register */
+#define VAL2REG(min, step, val)                (((val) - (min)) / (step))
+#define VAL2OMREG(x)                   (x)
+
+#endif