From a5fb455bf6dc981de6aed7b02bc72055a3783238 Mon Sep 17 00:00:00 2001 From: Bo Kim Date: Thu, 9 May 2013 14:12:24 +0900 Subject: ARM: tegra: add tegratab psy_depletion board data Bug 1244384 Change-Id: Icaac9f2bb5e487e5f16e6a96641cbe02ab6a94f2 Signed-off-by: Bo Kim Reviewed-on: http://git-master/r/241414 Reviewed-by: Gabby Lee --- arch/arm/mach-tegra/board-tegratab-power.c | 51 ++++++++++++++++++++++++++++++ arch/arm/mach-tegra/board-tegratab-sdhci.c | 10 ++++++ arch/arm/mach-tegra/board-tegratab.c | 1 + arch/arm/mach-tegra/board-tegratab.h | 1 + 4 files changed, 63 insertions(+) (limited to 'arch') 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 #include #include +#include #include #include @@ -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); -- cgit v1.2.3