summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Carlson <petercarlson@google.com>2023-02-23 16:30:34 +0000
committerPeter Carlson <petercarlson@google.com>2023-02-25 02:30:52 +0000
commita626f65972e2f0d41a3efc0478ed30d3ba58236b (patch)
tree5a0c84409b43d054956ae10fbdd68a8243514308
parentbfd85f8026fec91a0346853c56364716b77f82f0 (diff)
downloadnanohub-a626f65972e2f0d41a3efc0478ed30d3ba58236b.tar.gz
Disable BOB EXT CTRL1 boost prior to MCU boot
Use SPMI to disable BOB EXT_CTRL1 boost on MCU boot. Bug: 262723868 Test: Manual, verify BOB voltage gets reset to ~3.5-3.8V if MCU crashes with AFE LED in high current state. Change-Id: I545e1c89ab265d9f8629680092dc8f75f05baffb
-rw-r--r--main.c13
-rw-r--r--nanohub.h1
2 files changed, 14 insertions, 0 deletions
diff --git a/main.c b/main.c
index 43ba7d5..ce658ad 100644
--- a/main.c
+++ b/main.c
@@ -829,6 +829,11 @@ static void __nanohub_hw_reset(struct nanohub_data *data, int boot_mode)
if (ret != 0)
pr_warn("nanohub: failed to disable afe_tx_sup ret=%x\n", ret);
+ // Disable BOB EXT CTRL1 prior to MCU boot
+ ret = regmap_write(pdata->pmic_regmap, pdata->bob_ext_ctrl1_control_reg, 0);
+ if (ret != 0)
+ pr_warn("nanohub: failed to disable bob ext ctrl1 ret=%x\n", ret);
+
// Disable 32KHz clock prior to MCU boot
ret = regmap_write(pdata->pmic_regmap, pdata->clk32_control_reg, 0);
if (ret != 0)
@@ -1918,6 +1923,14 @@ static struct nanohub_platform_data *nanohub_parse_dt(struct device *dev)
goto free_pdata;
}
+ /* required bob ext ctrl1 control register */
+ ret = of_property_read_u32(dt, "sensorhub,bob_ext_ctrl1_control",
+ &pdata->bob_ext_ctrl1_control_reg);
+ if (ret < 0) {
+ pr_err("nanohub: missing sensorhub,bob_ext_ctrl1_control in device tree\n");
+ goto free_pdata;
+ }
+
#ifdef CONFIG_NANOHUB_BL_ST
/* optional (bl-max-frequency) */
pdata->bl_max_speed_hz = BL_MAX_SPEED_HZ;
diff --git a/nanohub.h b/nanohub.h
index 97d8789..35a35d0 100644
--- a/nanohub.h
+++ b/nanohub.h
@@ -19,6 +19,7 @@ struct nanohub_platform_data {
u32 vddcore_control_reg;
u32 vddcore_voltage;
u32 clk32_control_reg;
+ u32 bob_ext_ctrl1_control_reg;
#ifdef CONFIG_NANOHUB_BL_ST
u32 bl_max_speed_hz;
u32 bl_addr;