[PATCH 7/9] board: st: stpmic1: add function stmpic_buck1_set

Patrick Delaunay patrick.delaunay at st.com
Tue Apr 21 17:11:26 CEST 2020


Add a function stmpic_buck1_set to configure buck1 voltage
in SPL as regulator framework is not available.

Signed-off-by: Patrick Delaunay <patrick.delaunay at st.com>
---

 board/st/common/stpmic1.c | 24 ++++++++++++++++++++++++
 board/st/common/stpmic1.h |  6 ++++++
 2 files changed, 30 insertions(+)
 create mode 100644 board/st/common/stpmic1.h

diff --git a/board/st/common/stpmic1.c b/board/st/common/stpmic1.c
index ca10a2246b..a912242ad9 100644
--- a/board/st/common/stpmic1.c
+++ b/board/st/common/stpmic1.c
@@ -9,6 +9,30 @@
 #include <power/pmic.h>
 #include <power/stpmic1.h>
 
+int stmpic_buck1_set(u32 voltage_mv)
+{
+	struct udevice *dev;
+	int ret;
+	u32 value;
+
+	ret = uclass_get_device_by_driver(UCLASS_PMIC,
+					  DM_GET_DRIVER(pmic_stpmic1), &dev);
+	if (ret)
+		return ret;
+
+	/* VDDCORE= STMPCI1 BUCK1 ramp=+25mV, 5 => 725mV, 36 => 1500mV */
+	value = ((voltage_mv - 725) / 25) + 5;
+	if (value < 5)
+		value = 5;
+	if (value > 36)
+		value = 36;
+
+	return pmic_clrsetbits(dev,
+			       STPMIC1_BUCKX_MAIN_CR(STPMIC1_BUCK1),
+			       STPMIC1_BUCK_VOUT_MASK,
+			       STPMIC1_BUCK_VOUT(value));
+}
+
 int board_ddr_power_init(enum ddr_type ddr_type)
 {
 	struct udevice *dev;
diff --git a/board/st/common/stpmic1.h b/board/st/common/stpmic1.h
new file mode 100644
index 0000000000..a020dddbe0
--- /dev/null
+++ b/board/st/common/stpmic1.h
@@ -0,0 +1,6 @@
+/* SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause */
+/*
+ * Copyright (C) 2020, STMicroelectronics - All Rights Reserved
+ */
+
+int stmpic_buck1_set(u32 voltage_mv);
-- 
2.17.1



More information about the U-Boot mailing list