diff options
author | Kamal Kannan Balagopalan <kbalagopalan@nvidia.com> | 2014-12-03 23:19:49 -0800 |
---|---|---|
committer | Winnie Hsu <whsu@nvidia.com> | 2015-01-09 12:03:41 -0800 |
commit | a8557c87ea0083593e211f7ec111531a99ec3965 (patch) | |
tree | 8904de45fabc179500dd61b6a77c17c7c05eb0fd | |
parent | 23c93603667d9314a4ba19c32b6c69c24b60cf26 (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.c | 40 | ||||
-rw-r--r-- | arch/arm/mach-tegra/board-ardbeg.h | 6 |
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 |