diff options
author | Pritesh Raithatha <praithatha@nvidia.com> | 2011-09-27 13:31:46 +0530 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2011-11-30 21:49:10 -0800 |
commit | 1e1fa7f1f4ddc5b5021fae6e79157359b49189dd (patch) | |
tree | 84a7118606df26ce84a6521f486705db14420496 /arch/arm/mach-tegra | |
parent | bc3638c9c538cd8cc27736f240f1a490bacc9279 (diff) |
arm: tegra: ventana: add gpio charger support
-Separate ac detection from battery driver
Bug 877456
Change-Id: I411ca707c58422075bdb27105bafc86a8de4e63e
Signed-off-by: Pritesh Raithatha <praithatha@nvidia.com>
Reviewed-on: http://git-master/r/54636
Reviewed-by: Rohan Somvanshi <rsomvanshi@nvidia.com>
Tested-by: Rohan Somvanshi <rsomvanshi@nvidia.com>
Rebase-Id: R34bd7290f4c20c55bba8730b48fabe3fe0f566e1
Diffstat (limited to 'arch/arm/mach-tegra')
-rw-r--r-- | arch/arm/mach-tegra/board-ventana-power.c | 28 | ||||
-rw-r--r-- | arch/arm/mach-tegra/board-ventana-sensors.c | 10 | ||||
-rw-r--r-- | arch/arm/mach-tegra/board-ventana.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-tegra/board-ventana.h | 4 |
4 files changed, 34 insertions, 10 deletions
diff --git a/arch/arm/mach-tegra/board-ventana-power.c b/arch/arm/mach-tegra/board-ventana-power.c index c3e644d1aa1d..7f85b91cfb25 100644 --- a/arch/arm/mach-tegra/board-ventana-power.c +++ b/arch/arm/mach-tegra/board-ventana-power.c @@ -23,6 +23,7 @@ #include <linux/mfd/tps6586x.h> #include <linux/gpio.h> #include <linux/io.h> +#include <linux/power/gpio-charger.h> #include <mach/iomap.h> #include <mach/irqs.h> @@ -261,6 +262,33 @@ int __init ventana_regulator_init(void) return 0; } +static char *ventana_battery[] = { + "battery", +}; + +static struct gpio_charger_platform_data ventana_charger_pdata = { + .name = "ac", + .type = POWER_SUPPLY_TYPE_MAINS, + .gpio = AC_PRESENT_GPIO, + .gpio_active_low = 1, + .supplied_to = ventana_battery, + .num_supplicants = ARRAY_SIZE(ventana_battery), +}; + +static struct platform_device ventana_charger_device = { + .name = "gpio-charger", + .dev = { + .platform_data = &ventana_charger_pdata, + }, +}; + +int __init ventana_charger_init(void) +{ + tegra_gpio_enable(AC_PRESENT_GPIO); + platform_device_register(&ventana_charger_device); + return 0; +} + static int __init ventana_pcie_init(void) { int ret; diff --git a/arch/arm/mach-tegra/board-ventana-sensors.c b/arch/arm/mach-tegra/board-ventana-sensors.c index 15a4df9697c7..b0e6da383da4 100644 --- a/arch/arm/mach-tegra/board-ventana-sensors.c +++ b/arch/arm/mach-tegra/board-ventana-sensors.c @@ -58,7 +58,6 @@ #define CAMERA_CSI_MUX_SEL_GPIO TEGRA_GPIO_PBB4 #define CAMERA_FLASH_ACT_GPIO TEGRA_GPIO_PD2 #define CAMERA_FLASH_STRB_GPIO TEGRA_GPIO_PA0 -#define AC_PRESENT_GPIO TEGRA_GPIO_PV3 #define NCT1008_THERM2_GPIO TEGRA_GPIO_PN6 #define CAMERA_FLASH_OP_MODE 0 /*0=I2C mode, 1=GPIO mode*/ #define CAMERA_FLASH_MAX_LED_AMP 7 @@ -236,13 +235,6 @@ static void ventana_akm8975_init(void) } #endif -static void ventana_bq20z75_init(void) -{ - tegra_gpio_enable(AC_PRESENT_GPIO); - gpio_request(AC_PRESENT_GPIO, "ac_present"); - gpio_direction_input(AC_PRESENT_GPIO); -} - static void ventana_nct1008_init(void) { tegra_gpio_enable(NCT1008_THERM2_GPIO); @@ -272,7 +264,6 @@ static const struct i2c_board_info ventana_i2c0_board_info[] = { static const struct i2c_board_info ventana_i2c2_board_info[] = { { I2C_BOARD_INFO("bq20z75", 0x0B), - .irq = TEGRA_GPIO_TO_IRQ(AC_PRESENT_GPIO), }, }; @@ -424,7 +415,6 @@ int __init ventana_sensors_init(void) * since they have the necessary hardware rework */ if (BoardInfo.sku > 0) { - ventana_bq20z75_init(); i2c_register_board_info(2, ventana_i2c2_board_info, ARRAY_SIZE(ventana_i2c2_board_info)); } diff --git a/arch/arm/mach-tegra/board-ventana.c b/arch/arm/mach-tegra/board-ventana.c index c986e4ff7ba7..42217f5b4c27 100644 --- a/arch/arm/mach-tegra/board-ventana.c +++ b/arch/arm/mach-tegra/board-ventana.c @@ -594,6 +594,7 @@ static void __init tegra_ventana_init(void) ventana_sdhci_init(); ventana_charge_init(); ventana_regulator_init(); + ventana_charger_init(); tegra_get_board_info(&BoardInfo); @@ -617,6 +618,7 @@ static void __init tegra_ventana_init(void) ventana_bt_rfkill(); ventana_power_off_init(); ventana_emc_init(); + tegra_release_bootloader_fb(); } diff --git a/arch/arm/mach-tegra/board-ventana.h b/arch/arm/mach-tegra/board-ventana.h index ae220c2aa386..6e2a1221c757 100644 --- a/arch/arm/mach-tegra/board-ventana.h +++ b/arch/arm/mach-tegra/board-ventana.h @@ -25,6 +25,7 @@ int ventana_panel_init(void); int ventana_sensors_init(void); int ventana_kbc_init(void); int ventana_emc_init(void); +int ventana_charger_init(void); /* external gpios */ @@ -61,6 +62,9 @@ int ventana_emc_init(void); #define TEGRA_GPIO_INT_MIC_EN TEGRA_GPIO_PX0 #define TEGRA_GPIO_EXT_MIC_EN TEGRA_GPIO_PX1 +/* AC detect GPIO */ +#define AC_PRESENT_GPIO TEGRA_GPIO_PV3 + /* Interrupt numbers from external peripherals */ #define TPS6586X_INT_BASE TEGRA_NR_IRQS #define TPS6586X_INT_END (TPS6586X_INT_BASE + 32) |