summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKamal Kannan Balagopalan <kbalagopalan@nvidia.com>2014-12-03 23:19:49 -0800
committerWinnie Hsu <whsu@nvidia.com>2015-01-09 12:03:41 -0800
commita8557c87ea0083593e211f7ec111531a99ec3965 (patch)
tree8904de45fabc179500dd61b6a77c17c7c05eb0fd
parent23c93603667d9314a4ba19c32b6c69c24b60cf26 (diff)
arm: tegra12: jetson: Sensorhub power-on
Power-up and initialize sensor-hub MCU to start fetching code from flash storage. Bug 1560072 Change-Id: I993dc76f34cad8a3ef6aa11c2077a87f62e9ce58 Signed-off-by: Kamal Kannan Balagopalan <kbalagopalan@nvidia.com> Reviewed-on: http://git-master/r/659365 Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Arun Kannan <akannan@nvidia.com> Tested-by: Arun Kannan <akannan@nvidia.com> Reviewed-by: Matthew Pedro <mapedro@nvidia.com> Reviewed-by: Venkat Moganty <vmoganty@nvidia.com>
-rw-r--r--arch/arm/mach-tegra/board-ardbeg.c40
-rw-r--r--arch/arm/mach-tegra/board-ardbeg.h6
2 files changed, 46 insertions, 0 deletions
diff --git a/arch/arm/mach-tegra/board-ardbeg.c b/arch/arm/mach-tegra/board-ardbeg.c
index 9d1da7f4877e..227d0e34ea24 100644
--- a/arch/arm/mach-tegra/board-ardbeg.c
+++ b/arch/arm/mach-tegra/board-ardbeg.c
@@ -1353,6 +1353,46 @@ static struct tegra_io_dpd pexclk2_io = {
.io_dpd_bit = 6,
};
+#ifdef CONFIG_NV_SENSORHUB
+static int __init tegra_jetson_sensorhub_init(void)
+{
+
+ if (gpio_request(SENSOR_HUB_RST, "sensor_hub_rst"))
+ pr_warn("%s:%d: gpio_request failed", __func__, __LINE__);
+
+ if (gpio_request(SENSOR_HUB_BOOT0, "sensor_hub_boot0"))
+ pr_warn("%s:%d: gpio_request failed", __func__, __LINE__);
+
+ if (gpio_direction_output(SENSOR_HUB_BOOT0, 0))
+ pr_warn("%s:%d: gpio_direction_output failed",
+ __func__, __LINE__);
+
+ if (gpio_direction_output(SENSOR_HUB_RST, 0))
+ pr_warn("%s:%d: gpio_direction_output failed",
+ __func__, __LINE__);
+
+ /* SENSOR_HUB_RESET */
+ gpio_set_value(SENSOR_HUB_RST, 0);
+ /* Boot0 is useless in Kalamos HW00 board - Drive low */
+ gpio_set_value(SENSOR_HUB_BOOT0, 0);
+ msleep(1000);
+ gpio_set_value(SENSOR_HUB_RST, 1);
+
+ if (gpio_export(SENSOR_HUB_RST, 1))
+ pr_warn("%s:%d: gpio_export failed", __func__, __LINE__);
+
+ if (gpio_export(SENSOR_HUB_BOOT0, 1))
+ pr_warn("%s:%d: gpio_export failed", __func__, __LINE__);
+
+ pr_info("%s: MCU init done\n", __func__);
+
+ return 0;
+
+}
+
+late_initcall(tegra_jetson_sensorhub_init);
+#endif
+
static void __init tegra_ardbeg_late_init(void)
{
struct board_info board_info;
diff --git a/arch/arm/mach-tegra/board-ardbeg.h b/arch/arm/mach-tegra/board-ardbeg.h
index 05ca90693404..e72e9e784cf1 100644
--- a/arch/arm/mach-tegra/board-ardbeg.h
+++ b/arch/arm/mach-tegra/board-ardbeg.h
@@ -181,4 +181,10 @@ void tn8_sysedp_dynamic_capping_init(void);
#define CLK_RST_CNTRL_RST_DEV_V_SET 0x7000E430
#define SET_CEC_RST 0x100
+#ifdef CONFIG_NV_SENSORHUB
+/* Jetson Sensor-hub */
+#define SENSOR_HUB_RST TEGRA_GPIO_PU0
+#define SENSOR_HUB_BOOT0 TEGRA_GPIO_PU1
+#endif
+
#endif