diff options
author | Nine Feng <nfeng@nvidia.com> | 2014-03-11 21:44:45 +0800 |
---|---|---|
committer | Danny Song <dsong@nvidia.com> | 2014-03-20 01:30:29 -0700 |
commit | 70efa365dfd38e3c4664a29451038e4e749ee9cd (patch) | |
tree | 2c09876bb8187d0cdb531c6fa808b7782308fe2e /arch | |
parent | 978d5b001e2694e4063c3d4a37603d7192f7aa60 (diff) |
ARM: tegra: tn7c: runtime select tskin coeffcients
Bug 1468114
Bug 1432052
Change-Id: I534295b63540d3a5604d92f9f5f3c7237edfec77
Signed-off-by: Nine Feng <nfeng@nvidia.com>
Reviewed-on: http://git-master/r/380377
Reviewed-by: Harry Hong <hhong@nvidia.com>
Reviewed-by: Danny Song <dsong@nvidia.com>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/mach-tegra/board-tegranote7c-sensors.c | 38 | ||||
-rw-r--r-- | arch/arm/mach-tegra/board-tegratab-sensors.c | 37 |
2 files changed, 69 insertions, 6 deletions
diff --git a/arch/arm/mach-tegra/board-tegranote7c-sensors.c b/arch/arm/mach-tegra/board-tegranote7c-sensors.c index d2c00e5159ef..941704c3caba 100644 --- a/arch/arm/mach-tegra/board-tegranote7c-sensors.c +++ b/arch/arm/mach-tegra/board-tegranote7c-sensors.c @@ -544,14 +544,34 @@ static struct therm_est_subdevice skin_devs[] = { }, }; +static struct therm_est_subdevice skin_devs_a02[] = { + { + .dev_data = "Tdiode", + .coeffs = { + 2, 1, -1, -2, + -3, -3, -3, -3, + -2, -2, -1, -1, + -1, -1, -1, -1, + -1, -2, -3, -6 + }, + }, + { + .dev_data = "Tboard", + .coeffs = { + 117, 43, 6, -11, + -20, -14, -7, -1, + 4, 1, 2, 2, + 2, -2, -11, -24, + -34, -31, 4, 99 + }, + }, +}; + static struct therm_est_data skin_data = { .num_trips = ARRAY_SIZE(skin_trips), .trips = skin_trips, - .ndevs = ARRAY_SIZE(skin_devs), - .devs = skin_devs, .polling_period = 1100, .passive_delay = 15000, - .toffset = 1480, .tc1 = 10, .tc2 = 1, }; @@ -590,9 +610,21 @@ static struct balanced_throttle skin_throttle = { .throt_tab = skin_throttle_table, }; +static struct board_info board_info; static int __init tegranote7c_skin_init(void) { if (machine_is_tegranote7c()) { + tegra_get_board_info(&board_info); + if (board_info.fab == BOARD_FAB_A00 || + board_info.fab == BOARD_FAB_A01) { + skin_data.toffset = 1480; + skin_data.ndevs = ARRAY_SIZE(skin_devs); + skin_data.devs = skin_devs; + } else { + skin_data.toffset = -638; + skin_data.ndevs = ARRAY_SIZE(skin_devs_a02); + skin_data.devs = skin_devs_a02; + } balanced_throttle_register(&skin_throttle, "skin-balanced"); tegra_skin_therm_est_device.dev.platform_data = &skin_data; platform_device_register(&tegra_skin_therm_est_device); diff --git a/arch/arm/mach-tegra/board-tegratab-sensors.c b/arch/arm/mach-tegra/board-tegratab-sensors.c index a9a2f9346e9b..1193750caed2 100644 --- a/arch/arm/mach-tegra/board-tegratab-sensors.c +++ b/arch/arm/mach-tegra/board-tegratab-sensors.c @@ -619,6 +619,30 @@ static struct therm_est_subdevice skin_devs_p1988[] = { }, }; +static struct therm_est_subdevice skin_devs_p1988_a02[] = { + { + .dev_data = "Tdiode", + .coeffs = { + 2, 1, -1, -2, + -3, -3, -3, -3, + -2, -2, -1, -1, + -1, -1, -1, -1, + -1, -2, -3, -6 + }, + }, + { + .dev_data = "Tboard", + .coeffs = { + 117, 43, 6, -11, + -20, -14, -7, -1, + 4, 1, 2, 2, + 2, -2, -11, -24, + -34, -31, 4, 99 + }, + }, +}; + + static struct therm_est_data skin_data = { .num_trips = ARRAY_SIZE(skin_trips), .trips = skin_trips, @@ -668,9 +692,16 @@ static int __init tegratab_skin_init(void) tegra_get_board_info(&board_info); if (board_info.board_id == BOARD_P1988) { /* Use this for P1988. */ - skin_data.toffset = 1480; - skin_data.ndevs = ARRAY_SIZE(skin_devs_p1988); - skin_data.devs = skin_devs_p1988; + if (board_info.fab == BOARD_FAB_A00 || + board_info.fab == BOARD_FAB_A01) { + skin_data.toffset = 1480; + skin_data.ndevs = ARRAY_SIZE(skin_devs_p1988); + skin_data.devs = skin_devs_p1988; + } else { + skin_data.toffset = -638; + skin_data.ndevs = ARRAY_SIZE(skin_devs_p1988_a02); + skin_data.devs = skin_devs_p1988_a02; + } } else if (board_info.board_id == BOARD_E1569 || (board_info.board_id == BOARD_P1640 && (board_info.fab == BOARD_FAB_A00 || |