summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra
diff options
context:
space:
mode:
authorPritesh Raithatha <praithatha@nvidia.com>2011-09-27 13:31:46 +0530
committerDan Willemsen <dwillemsen@nvidia.com>2011-11-30 21:49:10 -0800
commit1e1fa7f1f4ddc5b5021fae6e79157359b49189dd (patch)
tree84a7118606df26ce84a6521f486705db14420496 /arch/arm/mach-tegra
parentbc3638c9c538cd8cc27736f240f1a490bacc9279 (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.c28
-rw-r--r--arch/arm/mach-tegra/board-ventana-sensors.c10
-rw-r--r--arch/arm/mach-tegra/board-ventana.c2
-rw-r--r--arch/arm/mach-tegra/board-ventana.h4
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)