From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753804AbbKGPjR (ORCPT ); Sat, 7 Nov 2015 10:39:17 -0500 Received: from mail-pa0-f46.google.com ([209.85.220.46]:33564 "EHLO mail-pa0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753608AbbKGPjO (ORCPT ); Sat, 7 Nov 2015 10:39:14 -0500 Message-ID: <563E1B07.4060108@gmail.com> Date: Sat, 07 Nov 2015 23:38:47 +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: Eduardo Valentin CC: Caesar Wang , Heiko Stuebner , linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, Zhang Rui , linux-arm-kernel@lists.infradead.org Subject: Re: [PATCH v2 5/9] thermal: rockchip: Add the flag for adc value increment or decrement References: <1446700685-18017-1-git-send-email-wxt@rock-chips.com> <1446700685-18017-6-git-send-email-wxt@rock-chips.com> <20151106191126.GC8202@localhost.localdomain> In-Reply-To: <20151106191126.GC8202@localhost.localdomain> 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 Hello Eduardo, 在 2015年11月07日 03:11, Eduardo Valentin 写道: > On Thu, Nov 05, 2015 at 01:18:01PM +0800, Caesar Wang wrote: >> The conversion table has the adc value and temperature. >> In fact, the adc value only has the increment or decrement mode in >> conversion table. >> >> Moment, we can add the flag to be better support the *code_to_temp* >> for differenr SoCs. >> >> Signed-off-by: Caesar Wang >> --- >> >> Changes in v2: None >> Changes in v1: None >> >> drivers/thermal/rockchip_thermal.c | 64 ++++++++++++++++++++++++++++++-------- >> 1 file changed, 51 insertions(+), 13 deletions(-) >> >> diff --git a/drivers/thermal/rockchip_thermal.c b/drivers/thermal/rockchip_thermal.c >> index e828f18..9df027f 100644 >> --- a/drivers/thermal/rockchip_thermal.c >> +++ b/drivers/thermal/rockchip_thermal.c >> @@ -53,6 +53,16 @@ enum sensor_id { >> }; >> >> /** >> +* The conversion table has the adc value and temperature. >> +* ADC_DECREMENT is the adc value decremnet.(e.g. v2_code_table) >> +* ADC_INCREMNET is the adc value incremnet.(e.g. v3_code_table) >> +*/ >> +enum adc_flag { >> + ADC_DECREMENT = 0, >> + ADC_INCREMENT, >> +}; >> + >> +/** >> * The max sensors is two in rockchip SoCs. >> * Two sensors: CPU and GPU sensor. >> */ >> @@ -66,6 +76,9 @@ struct chip_tsadc_table { >> >> /* that analogic mask data */ >> unsigned long data_mask; >> + >> + /* adc value is increment or decrement */ >> + unsigned int flag; > > Maybe bool? And rename to something more meaningful? Sure, that should be a bool type. I guess the rename in sort_flag......(maybe will have a better name) > > Or do you plan to have more conditions to test in your flag? Moment, the flag (increment or decrement) can support all the rockchip series SoCs have thermal function. >> }; >> >> struct rockchip_tsadc_chip { >> @@ -223,19 +236,43 @@ static int rk_tsadcv2_code_to_temp(struct chip_tsadc_table table, u32 code, >> >> WARN_ON(table.length < 2); >> >> - code &= table.data_mask; >> - if (code < table.id[high].code) >> + switch (table.flag) { >> + case ADC_DECREMENT: >> + code &= table.data_mask; >> + if (code < table.id[high].code) >> return -EAGAIN; /* Incorrect reading */ > Add an indentation. Thanks, will be fixed in next patch. >> >> - while (low <= high) { >> - if (code >= table.id[mid].code && >> - code < table.id[mid - 1].code) >> - break; >> - else if (code < table.id[mid].code) >> - low = mid + 1; >> - else >> - high = mid - 1; >> - mid = (low + high) / 2; >> + while (low <= high) { >> + if (code >= table.id[mid].code && >> + code < table.id[mid - 1].code) >> + break; >> + else if (code < table.id[mid].code) >> + low = mid + 1; >> + else >> + high = mid - 1; >> + >> + mid = (low + high) / 2; >> + } >> + break; >> + case ADC_INCREMENT: >> + code &= table.data_mask; >> + if (code < table.id[low].code) >> + return -EAGAIN; /* Incorrect reading */ >> + > add an indentation. Ditto. Thanks, Caesar > >> + while (low <= high) { >> + if (code >= table.id[mid - 1].code && >> + code < table.id[mid].code) >> + break; >> + else if (code > table.id[mid].code) >> + low = mid + 1; >> + else >> + high = mid - 1; >> + >> + mid = (low + high) / 2; >> + } >> + break; >> + default: >> + pr_err("Invalid the table conversion\n"); >> } >> >> /* >> @@ -245,8 +282,8 @@ static int rk_tsadcv2_code_to_temp(struct chip_tsadc_table table, u32 code, >> * to produce less granular result. >> */ >> num = table.id[mid].temp - v2_code_table[mid - 1].temp; >> - num *= table.id[mid - 1].code - code; >> - denom = table.id[mid - 1].code - table.id[mid].code; >> + num *= abs(table.id[mid - 1].code - code); >> + denom = abs(table.id[mid - 1].code - table.id[mid].code); >> *temp = table.id[mid - 1].temp + (num / denom); >> >> return 0; >> @@ -367,6 +404,7 @@ static const struct rockchip_tsadc_chip rk3288_tsadc_data = { >> .id = v2_code_table, >> .length = ARRAY_SIZE(v2_code_table), >> .data_mask = TSADCV2_DATA_MASK, >> + .flag = ADC_DECREMENT, >> }, >> }; >> >> -- >> 1.9.1 >> > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel From mboxrd@z Thu Jan 1 00:00:00 1970 From: caesar.upstream@gmail.com (Caesar Wang) Date: Sat, 07 Nov 2015 23:38:47 +0800 Subject: [PATCH v2 5/9] thermal: rockchip: Add the flag for adc value increment or decrement In-Reply-To: <20151106191126.GC8202@localhost.localdomain> References: <1446700685-18017-1-git-send-email-wxt@rock-chips.com> <1446700685-18017-6-git-send-email-wxt@rock-chips.com> <20151106191126.GC8202@localhost.localdomain> Message-ID: <563E1B07.4060108@gmail.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Hello Eduardo, ? 2015?11?07? 03:11, Eduardo Valentin ??: > On Thu, Nov 05, 2015 at 01:18:01PM +0800, Caesar Wang wrote: >> The conversion table has the adc value and temperature. >> In fact, the adc value only has the increment or decrement mode in >> conversion table. >> >> Moment, we can add the flag to be better support the *code_to_temp* >> for differenr SoCs. >> >> Signed-off-by: Caesar Wang >> --- >> >> Changes in v2: None >> Changes in v1: None >> >> drivers/thermal/rockchip_thermal.c | 64 ++++++++++++++++++++++++++++++-------- >> 1 file changed, 51 insertions(+), 13 deletions(-) >> >> diff --git a/drivers/thermal/rockchip_thermal.c b/drivers/thermal/rockchip_thermal.c >> index e828f18..9df027f 100644 >> --- a/drivers/thermal/rockchip_thermal.c >> +++ b/drivers/thermal/rockchip_thermal.c >> @@ -53,6 +53,16 @@ enum sensor_id { >> }; >> >> /** >> +* The conversion table has the adc value and temperature. >> +* ADC_DECREMENT is the adc value decremnet.(e.g. v2_code_table) >> +* ADC_INCREMNET is the adc value incremnet.(e.g. v3_code_table) >> +*/ >> +enum adc_flag { >> + ADC_DECREMENT = 0, >> + ADC_INCREMENT, >> +}; >> + >> +/** >> * The max sensors is two in rockchip SoCs. >> * Two sensors: CPU and GPU sensor. >> */ >> @@ -66,6 +76,9 @@ struct chip_tsadc_table { >> >> /* that analogic mask data */ >> unsigned long data_mask; >> + >> + /* adc value is increment or decrement */ >> + unsigned int flag; > > Maybe bool? And rename to something more meaningful? Sure, that should be a bool type. I guess the rename in sort_flag......(maybe will have a better name) > > Or do you plan to have more conditions to test in your flag? Moment, the flag (increment or decrement) can support all the rockchip series SoCs have thermal function. >> }; >> >> struct rockchip_tsadc_chip { >> @@ -223,19 +236,43 @@ static int rk_tsadcv2_code_to_temp(struct chip_tsadc_table table, u32 code, >> >> WARN_ON(table.length < 2); >> >> - code &= table.data_mask; >> - if (code < table.id[high].code) >> + switch (table.flag) { >> + case ADC_DECREMENT: >> + code &= table.data_mask; >> + if (code < table.id[high].code) >> return -EAGAIN; /* Incorrect reading */ > Add an indentation. Thanks, will be fixed in next patch. >> >> - while (low <= high) { >> - if (code >= table.id[mid].code && >> - code < table.id[mid - 1].code) >> - break; >> - else if (code < table.id[mid].code) >> - low = mid + 1; >> - else >> - high = mid - 1; >> - mid = (low + high) / 2; >> + while (low <= high) { >> + if (code >= table.id[mid].code && >> + code < table.id[mid - 1].code) >> + break; >> + else if (code < table.id[mid].code) >> + low = mid + 1; >> + else >> + high = mid - 1; >> + >> + mid = (low + high) / 2; >> + } >> + break; >> + case ADC_INCREMENT: >> + code &= table.data_mask; >> + if (code < table.id[low].code) >> + return -EAGAIN; /* Incorrect reading */ >> + > add an indentation. Ditto. Thanks, Caesar > >> + while (low <= high) { >> + if (code >= table.id[mid - 1].code && >> + code < table.id[mid].code) >> + break; >> + else if (code > table.id[mid].code) >> + low = mid + 1; >> + else >> + high = mid - 1; >> + >> + mid = (low + high) / 2; >> + } >> + break; >> + default: >> + pr_err("Invalid the table conversion\n"); >> } >> >> /* >> @@ -245,8 +282,8 @@ static int rk_tsadcv2_code_to_temp(struct chip_tsadc_table table, u32 code, >> * to produce less granular result. >> */ >> num = table.id[mid].temp - v2_code_table[mid - 1].temp; >> - num *= table.id[mid - 1].code - code; >> - denom = table.id[mid - 1].code - table.id[mid].code; >> + num *= abs(table.id[mid - 1].code - code); >> + denom = abs(table.id[mid - 1].code - table.id[mid].code); >> *temp = table.id[mid - 1].temp + (num / denom); >> >> return 0; >> @@ -367,6 +404,7 @@ static const struct rockchip_tsadc_chip rk3288_tsadc_data = { >> .id = v2_code_table, >> .length = ARRAY_SIZE(v2_code_table), >> .data_mask = TSADCV2_DATA_MASK, >> + .flag = ADC_DECREMENT, >> }, >> }; >> >> -- >> 1.9.1 >> > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel at lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel