| From ee022e5cae052e0c67ca7c5fec0f2e7bc897c70e Mon Sep 17 00:00:00 2001 |
| From: Trevor Woerner <twoerner@gmail.com> |
| Date: Fri, 7 Feb 2025 12:50:47 -0500 |
| Subject: thermal/drivers/rockchip: Add missing rk3328 mapping entry |
| |
| From: Trevor Woerner <twoerner@gmail.com> |
| |
| commit ee022e5cae052e0c67ca7c5fec0f2e7bc897c70e upstream. |
| |
| The mapping table for the rk3328 is missing the entry for -25C which is |
| found in the TRM section 9.5.2 "Temperature-to-code mapping". |
| |
| NOTE: the kernel uses the tsadc_q_sel=1'b1 mode which is defined as: |
| 4096-<code in table>. Whereas the table in the TRM gives the code |
| "3774" for -25C, the kernel uses 4096-3774=322. |
| |
| [Dragan Simic] : "After going through the RK3308 and RK3328 TRMs, as |
| well as through the downstream kernel code, it seems we may have |
| some troubles at our hands. Let me explain, please. |
| |
| To sum it up, part 1 of the RK3308 TRM v1.1 says on page 538 that |
| the equation for the output when tsadc_q_sel equals 1 is (4096 - |
| tsadc_q), while part 1 of the RK3328 TRM v1.2 says that the output |
| equation is (1024 - tsadc_q) in that case. |
| |
| The downstream kernel code, however, treats the RK3308 and RK3328 |
| tables and their values as being the same. It even mentions 1024 as |
| the "offset" value in a comment block for the rk_tsadcv3_control() |
| function, just like the upstream code does, which is obviously wrong |
| "offset" value when correlated with the table on page 544 of part 1 |
| of the RK3308 TRM v1.1. |
| |
| With all this in mind, it's obvious that more work is needed to make |
| it clear where's the actual mistake (it could be that the TRM is |
| wrong), which I'll volunteer for as part of the SoC binning project. |
| In the meantime, this patch looks fine as-is to me, by offering |
| what's a clear improvement to the current state of the upstream |
| code" |
| |
| Link: https://opensource.rock-chips.com/images/9/97/Rockchip_RK3328TRM_V1.1-Part1-20170321.pdf |
| Cc: stable@vger.kernel.org |
| Fixes: eda519d5f73e ("thermal: rockchip: Support the RK3328 SOC in thermal driver") |
| Signed-off-by: Trevor Woerner <twoerner@gmail.com> |
| Reviewed-by: Dragan Simic <dsimic@manjaro.org> |
| Link: https://lore.kernel.org/r/20250207175048.35959-1-twoerner@gmail.com |
| Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/thermal/rockchip_thermal.c | 1 + |
| 1 file changed, 1 insertion(+) |
| |
| --- a/drivers/thermal/rockchip_thermal.c |
| +++ b/drivers/thermal/rockchip_thermal.c |
| @@ -360,6 +360,7 @@ static const struct tsadc_table rk3328_c |
| {296, -40000}, |
| {304, -35000}, |
| {313, -30000}, |
| + {322, -25000}, |
| {331, -20000}, |
| {340, -15000}, |
| {349, -10000}, |