summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorBo Kim <bok@nvidia.com>2013-05-09 14:12:24 +0900
committerGabby Lee <galee@nvidia.com>2013-06-30 23:11:11 -0700
commita5fb455bf6dc981de6aed7b02bc72055a3783238 (patch)
treed0dc0697470b2a331bcb455dc37fb1c821edd449 /arch
parentfc37f9f969a06e61352cd7ca4f19b70afed1c885 (diff)
ARM: tegra: add tegratab psy_depletion board data
Bug 1244384 Change-Id: Icaac9f2bb5e487e5f16e6a96641cbe02ab6a94f2 Signed-off-by: Bo Kim <bok@nvidia.com> Reviewed-on: http://git-master/r/241414 Reviewed-by: Gabby Lee <galee@nvidia.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-tegra/board-tegratab-power.c51
-rw-r--r--arch/arm/mach-tegra/board-tegratab-sdhci.c10
-rw-r--r--arch/arm/mach-tegra/board-tegratab.c1
-rw-r--r--arch/arm/mach-tegra/board-tegratab.h1
4 files changed, 63 insertions, 0 deletions
diff --git a/arch/arm/mach-tegra/board-tegratab-power.c b/arch/arm/mach-tegra/board-tegratab-power.c
index 68059c83a438..50039056847c 100644
--- a/arch/arm/mach-tegra/board-tegratab-power.c
+++ b/arch/arm/mach-tegra/board-tegratab-power.c
@@ -33,6 +33,7 @@
#include <linux/interrupt.h>
#include <linux/regulator/userspace-consumer.h>
#include <linux/edp.h>
+#include <linux/edpdev.h>
#include <linux/platform_data/tegra_edp.h>
#include <asm/mach-types.h>
@@ -982,6 +983,56 @@ void __init tegratab_sysedp_init(void)
WARN_ON(r);
}
+static unsigned int tegratab_psydepl_states[] = {
+ 18900, 18000, 17000, 16000, 15000, 14000, 13000, 12000,
+ 11000, 10000,
+ 9900, 9600, 9300, 9000, 8700, 8400, 8100, 7800,
+ 7500, 7200, 6900, 6600, 6300, 6000, 5800, 5600,
+ 5400, 5200, 5000, 4800, 4600, 4400, 4200, 4000,
+ 3800, 3600, 3400, 3200, 3000, 2800, 2600, 2400,
+ 2200, 2000, 1900, 1800, 1700, 1600, 1500, 1400,
+ 1300, 1200, 1100, 1000, 900, 800, 700, 600,
+ 500, 400, 300, 200, 100, 0
+};
+
+static struct psy_depletion_ibat_lut tegratab_ibat_lut[] = {
+ { 60, 0 },
+ { 50, 4500 },
+ { 0, 4500 },
+ { -10, 0 }
+};
+
+static struct psy_depletion_rbat_lut tegratab_rbat_lut[] = {
+ { 0, 120000 }
+};
+
+static struct psy_depletion_platform_data tegratab_psydepl_pdata = {
+ .power_supply = "battery",
+ .states = tegratab_psydepl_states,
+ .num_states = ARRAY_SIZE(tegratab_psydepl_states),
+ .e0_index = 26, /* TBD */
+ .r_const = 40100,
+ .vsys_min = 3260000,
+ .vcharge = 4200000,
+ .ibat_nom = 4500,
+ .ibat_lut = tegratab_ibat_lut,
+ .rbat_lut = tegratab_rbat_lut
+};
+
+static struct platform_device tegratab_psydepl_device = {
+ .name = "psy_depletion",
+ .id = -1,
+ .dev = { .platform_data = &tegratab_psydepl_pdata }
+};
+
+void __init tegratab_sysedp_psydepl_init(void)
+{
+ int r;
+
+ r = platform_device_register(&tegratab_psydepl_device);
+ WARN_ON(r);
+}
+
static struct tegra_sysedp_corecap tegratab_sysedp_corecap[] = {
{ 1000, { 1000, 240, 204 }, { 1000, 240, 204 } },
{ 2000, { 1000, 240, 204 }, { 1000, 240, 204 } },
diff --git a/arch/arm/mach-tegra/board-tegratab-sdhci.c b/arch/arm/mach-tegra/board-tegratab-sdhci.c
index 07f00107f820..7c101ddd77ce 100644
--- a/arch/arm/mach-tegra/board-tegratab-sdhci.c
+++ b/arch/arm/mach-tegra/board-tegratab-sdhci.c
@@ -55,6 +55,16 @@ static struct wl12xx_platform_data tegratab_wl12xx_wlan_data __initdata = {
.board_tcxo_clock = 1,
.set_power = tegratab_wifi_power,
.set_carddetect = tegratab_wifi_set_carddetect,
+#if defined(CONFIG_BCMDHD_EDP_SUPPORT)
+ /* set the wifi edp client information here */
+ .client_info = {
+ .name = "wifi_edp_client",
+ .states = {1080, 0},
+ .num_states = ARRAY_SIZE(wifi_states),
+ .e0_index = 0,
+ .priority = EDP_MAX_PRIO,
+ },
+#endif
};
static struct resource sdhci_resource0[] = {
diff --git a/arch/arm/mach-tegra/board-tegratab.c b/arch/arm/mach-tegra/board-tegratab.c
index 1646afd19115..587856861d7d 100644
--- a/arch/arm/mach-tegra/board-tegratab.c
+++ b/arch/arm/mach-tegra/board-tegratab.c
@@ -811,6 +811,7 @@ static void __init tegra_tegratab_late_init(void)
pm_wake_lock("main");
tegratab_sysedp_core_init();
+ tegratab_sysedp_psydepl_init();
}
static void __init tegratab_ramconsole_reserve(unsigned long size)
diff --git a/arch/arm/mach-tegra/board-tegratab.h b/arch/arm/mach-tegra/board-tegratab.h
index 6d1fc9891a19..8a61cc295ddd 100644
--- a/arch/arm/mach-tegra/board-tegratab.h
+++ b/arch/arm/mach-tegra/board-tegratab.h
@@ -114,6 +114,7 @@ int tegratab_pmon_init(void);
int tegratab_soctherm_init(void);
void tegratab_sysedp_init(void);
void tegratab_sysedp_core_init(void);
+void tegratab_sysedp_psydepl_init(void);
/* disable LP0 forcedly only on DVT A00: BT/WIFI LP0 issue */
extern int pm_wake_lock(const char *buf);