[PATCH] arm: mecsbc: fixup /regulator-sd device tree node

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The MECSBC prototype board has a bug which makes the 1.8V SD mode
unusable. Add a fixup which sets the regulator-min-microvolt property of
the SD regulator to 3.3V to prevent the Kernel from going into 1.8V.

Signed-off-by: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx>
---
 arch/arm/boards/protonic-mecsbc/board.c | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/arch/arm/boards/protonic-mecsbc/board.c b/arch/arm/boards/protonic-mecsbc/board.c
index 3ba8fb8d1c..56f7ca393a 100644
--- a/arch/arm/boards/protonic-mecsbc/board.c
+++ b/arch/arm/boards/protonic-mecsbc/board.c
@@ -90,6 +90,24 @@ static void mecsbc_process_adc(struct device *dev)
 	pr_info("VIN = %d V\n", mecsbc_get_vin_mv() / 1000);
 }
 
+static int mecsbc_sd_of_fixup(struct device_node *root, void *context)
+{
+	struct device *dev = context;
+	struct device_node *np;
+
+	dev_info(dev, "Fixing up /regulator-sd\n");
+
+	np = of_find_node_by_path_from(root, "/regulator-sd");
+	if (!np) {
+		dev_err(dev, "Cannot find /regulator-sd node\n");
+		return 0;
+	}
+
+	of_property_write_u32(np, "regulator-min-microvolt", 3300000);
+
+	return 0;
+}
+
 static int mecsbc_of_fixup_hwrev(struct device *dev)
 {
 	const char *compat;
@@ -103,6 +121,9 @@ static int mecsbc_of_fixup_hwrev(struct device *dev)
 
 	free(buf);
 
+	if (mecsbc_data.hw_id == 0 && mecsbc_data.hw_rev == 0)
+		of_register_fixup(mecsbc_sd_of_fixup, dev);
+
 	return 0;
 }
 
-- 
2.39.2





[Index of Archives]     [Linux Embedded]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux