diff options
author | Anshul Jain <anshulj@nvidia.com> | 2011-12-08 17:44:58 -0800 |
---|---|---|
committer | Varun Wadekar <vwadekar@nvidia.com> | 2011-12-21 12:06:22 +0530 |
commit | bad4cd4f610e7ace9fa735919398144faa164bb8 (patch) | |
tree | 557b3e44eeb0d712d4a0dc26da8cad9f2a2dd757 | |
parent | f3fbc237bba87185aac66ed143288e2ad973ec0a (diff) |
arm: tegra: enterprise: Add initialization for ina230 driver
Sample code for enabling INA230 (/ INA226) current monitor for battery
EDP capping on Enterprise
Change-Id: I2c5b919dca4c9e31aa1432cc45ae0486700e02de
Signed-off-by: Peter Boonstoppel <pboonstoppel@nvidia.com>
Reviewed-on: http://git-master/r/61968
Reviewed-on: http://git-master/r/69112
Reviewed-by: Lokesh Pathak <lpathak@nvidia.com>
Tested-by: Lokesh Pathak <lpathak@nvidia.com>
-rw-r--r-- | arch/arm/mach-tegra/board-enterprise-sensors.c | 29 | ||||
-rw-r--r-- | arch/arm/mach-tegra/board-enterprise.h | 4 |
2 files changed, 33 insertions, 0 deletions
diff --git a/arch/arm/mach-tegra/board-enterprise-sensors.c b/arch/arm/mach-tegra/board-enterprise-sensors.c index 31f365ac366c..14c5260596fb 100644 --- a/arch/arm/mach-tegra/board-enterprise-sensors.c +++ b/arch/arm/mach-tegra/board-enterprise-sensors.c @@ -37,6 +37,7 @@ #include <linux/nct1008.h> #include <linux/err.h> #include <linux/mpu.h> +#include <linux/platform_data/ina230.h> #include <linux/regulator/consumer.h> #include <linux/slab.h> #include <mach/gpio.h> @@ -613,6 +614,31 @@ fail_free_gpio: return ret; } +#define ENTERPRISE_INA230_ENABLED 0 + +#if ENTERPRISE_INA230_ENABLED +static struct ina230_platform_data ina230_platform = { + .rail_name = "VDD_AC_BAT", + .current_threshold = TEGRA_CUR_MON_THRESHOLD, + .resistor = TEGRA_CUR_MON_RESISTOR, + .min_cores_online = TEGRA_CUR_MON_MIN_CORES, +}; + +static struct i2c_board_info enterprise_i2c0_ina230_info[] = { + { + I2C_BOARD_INFO("ina230", 0x42), + .platform_data = &ina230_platform, + .irq = -1, + }, +}; + +static int __init enterprise_ina230_init(void) +{ + return i2c_register_board_info(0, enterprise_i2c0_ina230_info, + ARRAY_SIZE(enterprise_i2c0_ina230_info)); +} +#endif + int __init enterprise_sensors_init(void) { int ret; @@ -620,6 +646,9 @@ int __init enterprise_sensors_init(void) enterprise_isl_init(); enterprise_nct1008_init(); mpuirq_init(); +#if ENTERPRISE_INA230_ENABLED + enterprise_ina230_init(); +#endif ret = enterprise_cam_init(); return ret; diff --git a/arch/arm/mach-tegra/board-enterprise.h b/arch/arm/mach-tegra/board-enterprise.h index 2e559a0b2520..4829e301c8c8 100644 --- a/arch/arm/mach-tegra/board-enterprise.h +++ b/arch/arm/mach-tegra/board-enterprise.h @@ -143,6 +143,10 @@ void enterprise_bpc_mgmt_init(void); #define TEGRA_BPC_TIMEOUT 100 /* ms */ #define TEGRA_BPC_CPU_PWR_LIMIT 0 /* in mW, (0 disables) */ +#define TEGRA_CUR_MON_THRESHOLD -2000 +#define TEGRA_CUR_MON_RESISTOR 20 +#define TEGRA_CUR_MON_MIN_CORES 2 + /* Baseband IDs */ enum tegra_bb_type { |