diff options
author | venu byravarasu <vbyravarasu@nvidia.com> | 2011-06-13 12:23:48 +0530 |
---|---|---|
committer | Niket Sirsi <nsirsi@nvidia.com> | 2011-06-17 14:41:17 -0700 |
commit | 4ba80c0043bc2e2f384f10134c0013cf9b355689 (patch) | |
tree | d6396e9e3ee3a01f83580e50855bffc98dc78e3a /arch | |
parent | 6e97ede383458edfcc30afdb13ac3d818c9c3ef7 (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/Makefile | 1 | ||||
-rw-r--r-- | arch/arm/mach-tegra/board-cardhu-powermon.c | 184 | ||||
-rw-r--r-- | arch/arm/mach-tegra/board-cardhu.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-tegra/board-cardhu.h | 1 |
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 |