From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753533AbbKGOZ4 (ORCPT ); Sat, 7 Nov 2015 09:25:56 -0500 Received: from mail-pa0-f42.google.com ([209.85.220.42]:35226 "EHLO mail-pa0-f42.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753056AbbKGOZx (ORCPT ); Sat, 7 Nov 2015 09:25:53 -0500 Message-ID: <563E09E0.8070105@gmail.com> Date: Sat, 07 Nov 2015 22:25:36 +0800 From: Caesar Wang User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 MIME-Version: 1.0 To: Andy Shevchenko CC: Caesar Wang , Heiko Stuebner , Eduardo Valentin , linux-rockchip@lists.infradead.org, "linux-pm@vger.kernel.org" , "linux-kernel@vger.kernel.org" , Zhang Rui , linux-arm Mailing List Subject: Re: [PATCH v2 6/9] thermal: rockchip: Support the RK3368 SoCs in thermal drivers References: <1446700685-18017-1-git-send-email-wxt@rock-chips.com> <1446700685-18017-7-git-send-email-wxt@rock-chips.com> In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 在 2015年11月07日 03:39, Andy Shevchenko 写道: > On Thu, Nov 5, 2015 at 7:18 AM, Caesar Wang wrote: >> The RK3368 SoCs support to 2 channel TS-ADC, the temperature criteria >> of each channel can be configurable. >> >> The system has two Temperature Sensors, channel 0 is for CPU, >> and channel 1 is for GPU. >> >> Signed-off-by: Caesar Wang >> --- >> >> Changes in v2: >> - remove some unused, completed on other patchs. >> >> Changes in v1: None >> >> drivers/thermal/rockchip_thermal.c | 72 ++++++++++++++++++++++++++++++++++++++ >> 1 file changed, 72 insertions(+) >> >> diff --git a/drivers/thermal/rockchip_thermal.c b/drivers/thermal/rockchip_thermal.c >> index 9df027f..47a8873 100644 >> --- a/drivers/thermal/rockchip_thermal.c >> +++ b/drivers/thermal/rockchip_thermal.c >> @@ -1,6 +1,9 @@ >> /* >> * Copyright (c) 2014, Fuzhou Rockchip Electronics Co., Ltd >> * >> + * Copyright (c) 2015, Fuzhou Rockchip Electronics Co., Ltd >> + * Caesar Wang >> + * >> * This program is free software; you can redistribute it and/or modify it >> * under the terms and conditions of the GNU General Public License, >> * version 2, as published by the Free Software Foundation. >> @@ -152,6 +155,8 @@ struct rockchip_thermal_data { >> #define TSADCV2_INT_PD_CLEAR_MASK ~BIT(8) >> >> #define TSADCV2_DATA_MASK 0xfff >> +#define TSADCV3_DATA_MASK 0x3ff >> + >> #define TSADCV2_HIGHT_INT_DEBOUNCE_COUNT 4 >> #define TSADCV2_HIGHT_TSHUT_DEBOUNCE_COUNT 4 >> #define TSADCV2_AUTO_PERIOD_TIME 250 /* msec */ >> @@ -200,6 +205,45 @@ static const struct tsadc_table v2_code_table[] = { >> {3421, 125000}, >> }; >> >> +static const struct tsadc_table v3_code_table[] = { >> + {0, -40000}, >> + {106, -40000}, >> + {108, -35000}, >> + {110, -30000}, >> + {112, -25000}, >> + {114, -20000}, >> + {116, -15000}, >> + {118, -10000}, >> + {120, -5000}, >> + {122, 0}, >> + {124, 5000}, >> + {126, 10000}, >> + {128, 15000}, >> + {130, 20000}, >> + {132, 25000}, >> + {134, 30000}, >> + {136, 35000}, >> + {138, 40000}, >> + {140, 45000}, >> + {142, 50000}, >> + {144, 55000}, >> + {146, 60000}, >> + {148, 65000}, >> + {150, 70000}, >> + {152, 75000}, >> + {154, 80000}, >> + {156, 85000}, >> + {158, 90000}, >> + {160, 95000}, >> + {162, 100000}, >> + {163, 105000}, >> + {165, 110000}, >> + {167, 115000}, >> + {169, 120000}, >> + {171, 125000}, >> + {TSADCV3_DATA_MASK, 125000}, > Why not function which returns one value based on the other? > > x < 106: -40000 > 161 >= x >= 106: -40000 + 5000 * (x - 106) / 2 > 171 >= x >= 162: 100000 + 5000 * (x - 162) > x > 171 = 125000 1) Every SoCs conversion table come from the TRM. 2) Barrier for using with other SoCs the rockchip-thermal driver is compatible for series SoCs for rockchip. >> +}; >> + >> static u32 rk_tsadcv2_temp_to_code(struct chip_tsadc_table table, >> long temp) >> { >> @@ -408,11 +452,39 @@ static const struct rockchip_tsadc_chip rk3288_tsadc_data = { >> }, >> }; >> >> +static const struct rockchip_tsadc_chip rk3368_tsadc_data = { >> + .chn_id[SENSOR_CPU] = 0, /* cpu sensor is channel 0 */ >> + .chn_id[SENSOR_GPU] = 1, /* gpu sensor is channel 1 */ >> + .chn_num = 2, /* two channels for tsadc */ >> + >> + .tshut_mode = TSHUT_MODE_GPIO, /* default TSHUT via GPIO give PMIC */ >> + .tshut_polarity = TSHUT_LOW_ACTIVE, /* default TSHUT LOW ACTIVE */ >> + .tshut_temp = 95000, >> + >> + .initialize = rk_tsadcv2_initialize, >> + .irq_ack = rk_tsadcv2_irq_ack, >> + .control = rk_tsadcv2_control, >> + .get_temp = rk_tsadcv2_get_temp, >> + .set_tshut_temp = rk_tsadcv2_tshut_temp, >> + .set_tshut_mode = rk_tsadcv2_tshut_mode, >> + >> + .table = { >> + .id = v3_code_table, >> + .length = ARRAY_SIZE(v3_code_table), >> + .data_mask = TSADCV3_DATA_MASK, >> + .flag = ADC_DECREMENT, >> + }, >> +}; >> + >> static const struct of_device_id of_rockchip_thermal_match[] = { >> { >> .compatible = "rockchip,rk3288-tsadc", >> .data = (void *)&rk3288_tsadc_data, >> }, >> + { >> + .compatible = "rockchip,rk3368-tsadc", >> + .data = (void *)&rk3368_tsadc_data, >> + }, >> { /* end */ }, >> }; >> MODULE_DEVICE_TABLE(of, of_rockchip_thermal_match); >> -- >> 1.9.1 >> >> -- >> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in >> the body of a message to majordomo@vger.kernel.org >> More majordomo info at http://vger.kernel.org/majordomo-info.html >> Please read the FAQ at http://www.tux.org/lkml/ > >