summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnshul Jain <anshulj@nvidia.com>2011-12-08 17:44:58 -0800
committerVarun Wadekar <vwadekar@nvidia.com>2011-12-21 12:06:22 +0530
commitbad4cd4f610e7ace9fa735919398144faa164bb8 (patch)
tree557b3e44eeb0d712d4a0dc26da8cad9f2a2dd757
parentf3fbc237bba87185aac66ed143288e2ad973ec0a (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.c29
-rw-r--r--arch/arm/mach-tegra/board-enterprise.h4
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 {