summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPrzemyslaw Marczak <p.marczak@samsung.com>2015-05-13 13:38:35 +0200
committerSimon Glass <sjg@chromium.org>2015-05-14 19:59:21 -0600
commit9038cd531382e94cc6d4daa9e81f70491030aa38 (patch)
tree3c289ecd2fe8dede9341096f161ee69013cfc186
parentf64000c302f78103cb704e9843ab0c9ae1629bf1 (diff)
downloadu-boot-imx-9038cd531382e94cc6d4daa9e81f70491030aa38.zip
u-boot-imx-9038cd531382e94cc6d4daa9e81f70491030aa38.tar.gz
u-boot-imx-9038cd531382e94cc6d4daa9e81f70491030aa38.tar.bz2
sandbox: dts: add sandbox_pmic.dtsi and include it to sandbox.dts and test.dts
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>
-rw-r--r--arch/sandbox/dts/sandbox.dts4
-rw-r--r--arch/sandbox/dts/sandbox_pmic.dtsi78
-rw-r--r--arch/sandbox/dts/test.dts6
-rw-r--r--include/dt-bindings/pmic/sandbox_pmic.h35
4 files changed, 123 insertions, 0 deletions
diff --git a/arch/sandbox/dts/sandbox.dts b/arch/sandbox/dts/sandbox.dts
index 99b0f36..a3ebd80 100644
--- a/arch/sandbox/dts/sandbox.dts
+++ b/arch/sandbox/dts/sandbox.dts
@@ -115,6 +115,9 @@
compatible = "sandbox,i2c-rtc";
};
};
+ sandbox_pmic: sandbox_pmic {
+ reg = <0x40>;
+ };
};
spi@0 {
@@ -205,3 +208,4 @@
};
#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
index 0000000..44a26b1
--- /dev/null
+++ b/arch/sandbox/dts/sandbox_pmic.dtsi
@@ -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>;
+ };
+};
diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts
index d0c40be..1bc3ca0 100644
--- a/arch/sandbox/dts/test.dts
+++ b/arch/sandbox/dts/test.dts
@@ -139,6 +139,10 @@
sandbox,size = <256>;
};
};
+
+ sandbox_pmic: sandbox_pmic {
+ reg = <0x40>;
+ };
};
pci: pci-controller {
@@ -228,3 +232,5 @@
};
};
+
+#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
index 0000000..c3d839b
--- /dev/null
+++ b/include/dt-bindings/pmic/sandbox_pmic.h
@@ -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