summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorvenu byravarasu <vbyravarasu@nvidia.com>2011-06-13 12:23:48 +0530
committerNiket Sirsi <nsirsi@nvidia.com>2011-06-17 14:41:17 -0700
commit4ba80c0043bc2e2f384f10134c0013cf9b355689 (patch)
treed6396e9e3ee3a01f83580e50855bffc98dc78e3a /arch
parent6e97ede383458edfcc30afdb13ac3d818c9c3ef7 (diff)
arm: tegra: cardhu: Board changes for powermon
Board details needed by INA219 power monitor device to measure current, voltage and power on Cardhu are being filled. bug 808311 Change-Id: Idbee6034312f5bd888b1ed87ef98f531c45938a0 Reviewed-on: http://git-master/r/34299 Reviewed-by: Niket Sirsi <nsirsi@nvidia.com> Tested-by: Niket Sirsi <nsirsi@nvidia.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-tegra/Makefile1
-rw-r--r--arch/arm/mach-tegra/board-cardhu-powermon.c184
-rw-r--r--arch/arm/mach-tegra/board-cardhu.c1
-rw-r--r--arch/arm/mach-tegra/board-cardhu.h1
4 files changed, 187 insertions, 0 deletions
diff --git a/arch/arm/mach-tegra/Makefile b/arch/arm/mach-tegra/Makefile
index 89c5dd379cf9..acfddd8d7c59 100644
--- a/arch/arm/mach-tegra/Makefile
+++ b/arch/arm/mach-tegra/Makefile
@@ -134,6 +134,7 @@ obj-${CONFIG_MACH_CARDHU} += board-cardhu-sdhci.o
obj-${CONFIG_MACH_CARDHU} += board-cardhu-sensors.o
obj-${CONFIG_MACH_CARDHU} += board-touch.o
obj-${CONFIG_MACH_CARDHU} += board-cardhu-memory.o
+obj-${CONFIG_MACH_CARDHU} += board-cardhu-powermon.o
obj-${CONFIG_MACH_TEGRA_ENTERPRISE} += board-enterprise.o
obj-${CONFIG_MACH_TEGRA_ENTERPRISE} += board-enterprise-panel.o
diff --git a/arch/arm/mach-tegra/board-cardhu-powermon.c b/arch/arm/mach-tegra/board-cardhu-powermon.c
new file mode 100644
index 000000000000..8d3424631cb9
--- /dev/null
+++ b/arch/arm/mach-tegra/board-cardhu-powermon.c
@@ -0,0 +1,184 @@
+/*
+ * arch/arm/mach-tegra/board-cardhu-powermon.c
+ *
+ * Copyright (c) 2011, NVIDIA, All Rights Reserved.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <linux/i2c.h>
+#include <linux/ina219.h>
+#include "board-cardhu.h"
+
+static struct ina219_platform_data power_mon_info[] = {
+ {
+ .calibration_data = 0xa000,
+ .power_lsb = 2,
+ .rail_name = "ac_bat_rail",
+ .divisor = 20,
+ },
+ {
+ .calibration_data = 0xa000,
+ .power_lsb = 2,
+ .rail_name = "ddr_rail",
+ .divisor = 20,
+ },
+ {
+ .calibration_data = 0x6aaa,
+ .power_lsb = 1,
+ .rail_name = "backlight_rail",
+ .divisor = 20,
+ },
+ {
+ .calibration_data = 0xa000,
+ .power_lsb = 1,
+ .rail_name = "cpu_rail",
+ .divisor = 20,
+ },
+ {
+ .calibration_data = 0x6aaa,
+ .power_lsb = 1,
+ .rail_name = "core_rail",
+ .divisor = 20,
+ },
+ {
+ .calibration_data = 0xa000,
+ .power_lsb = 1,
+ .rail_name = "display_rail",
+ .divisor = 20,
+ },
+ {
+ .calibration_data = 0x6aaa,
+ .power_lsb = 1,
+ .rail_name = "tegra_3v3_rail",
+ .divisor = 20,
+ },
+ {
+ .calibration_data = 0xa000,
+ .power_lsb = 1,
+ .rail_name = "other_pmu_rail",
+ .divisor = 20,
+ },
+ {
+ .calibration_data = 0x4000,
+ .power_lsb = 1,
+ .rail_name = "tegra_1v8_rail",
+ .divisor = 20,
+ },
+ {
+ .calibration_data = 0xa000,
+ .power_lsb = 1,
+ .rail_name = "other_1v8_rail",
+ .divisor = 20,
+ },
+ /* All unused INA219 devices use below data*/
+ {
+ .calibration_data = 0x4000,
+ .power_lsb = 1,
+ .rail_name = "unused_rail",
+ .divisor = 20,
+ },
+};
+
+static struct i2c_board_info cardhu_i2c0_ina219_board_info[] = {
+ {
+ I2C_BOARD_INFO("ina219", 0x40),
+ .platform_data = &power_mon_info[0],
+ .irq = -1,
+ },
+ {
+ I2C_BOARD_INFO("ina219", 0x41),
+ .platform_data = &power_mon_info[1],
+ .irq = -1,
+ },
+ {
+ I2C_BOARD_INFO("ina219", 0x42),
+ .platform_data = &power_mon_info[2],
+ .irq = -1,
+ },
+ {
+ I2C_BOARD_INFO("ina219", 0x43),
+ .platform_data = &power_mon_info[3],
+ .irq = -1,
+ },
+ {
+ I2C_BOARD_INFO("ina219", 0x44),
+ .platform_data = &power_mon_info[4],
+ .irq = -1,
+ },
+ {
+ I2C_BOARD_INFO("ina219", 0x45),
+ .platform_data = &power_mon_info[5],
+ .irq = -1,
+ },
+ {
+ I2C_BOARD_INFO("ina219", 0x46),
+ .platform_data = &power_mon_info[6],
+ .irq = -1,
+ },
+ {
+ I2C_BOARD_INFO("ina219", 0x47),
+ .platform_data = &power_mon_info[7],
+ .irq = -1,
+ },
+ {
+ I2C_BOARD_INFO("ina219", 0x48),
+ .platform_data = &power_mon_info[8],
+ .irq = -1,
+ },
+ {
+ I2C_BOARD_INFO("ina219", 0x49),
+ .platform_data = &power_mon_info[9],
+ .irq = -1,
+ },
+ {
+ I2C_BOARD_INFO("ina219", 0x4A),
+ .platform_data = &power_mon_info[10],
+ .irq = -1,
+ },
+ {
+ I2C_BOARD_INFO("ina219", 0x4B),
+ .platform_data = &power_mon_info[10],
+ .irq = -1,
+ },
+ {
+ I2C_BOARD_INFO("ina219", 0x4C),
+ .platform_data = &power_mon_info[10],
+ .irq = -1,
+ },
+ {
+ I2C_BOARD_INFO("ina219", 0x4D),
+ .platform_data = &power_mon_info[10],
+ .irq = -1,
+ },
+ {
+ I2C_BOARD_INFO("ina219", 0x4E),
+ .platform_data = &power_mon_info[10],
+ .irq = -1,
+ },
+ {
+ I2C_BOARD_INFO("ina219", 0x4F),
+ .platform_data = &power_mon_info[10],
+ .irq = -1,
+ },
+};
+
+int __init cardhu_pmon_init(void)
+{
+ i2c_register_board_info(0, cardhu_i2c0_ina219_board_info,
+ ARRAY_SIZE(cardhu_i2c0_ina219_board_info));
+ return 0;
+}
+
diff --git a/arch/arm/mach-tegra/board-cardhu.c b/arch/arm/mach-tegra/board-cardhu.c
index d168c1742fe8..f980aa67abf0 100644
--- a/arch/arm/mach-tegra/board-cardhu.c
+++ b/arch/arm/mach-tegra/board-cardhu.c
@@ -718,6 +718,7 @@ static void __init tegra_cardhu_init(void)
cardhu_scroll_init();
cardhu_keys_init();
cardhu_panel_init();
+ cardhu_pmon_init();
cardhu_sensors_init();
cardhu_bt_rfkill();
tegra_setup_bluesleep();
diff --git a/arch/arm/mach-tegra/board-cardhu.h b/arch/arm/mach-tegra/board-cardhu.h
index 7daa02e2de7b..ffb5129fdb60 100644
--- a/arch/arm/mach-tegra/board-cardhu.h
+++ b/arch/arm/mach-tegra/board-cardhu.h
@@ -150,6 +150,7 @@ int cardhu_pins_state_init(void);
int cardhu_emc_init(void);
int cardhu_power_off_init(void);
int cardhu_edp_init(void);
+int cardhu_pmon_init(void);
/* Touchscreen GPIO addresses */
#ifdef CONFIG_TOUCHSCREEN_PANJIT_I2C