There are some differences in register initialization for
different socs. So we get different initialization functions
from device compatible.

Signed-off-by: Yangtao Li <tiny.win...@gmail.com>
---
 drivers/thermal/sun8i_thermal.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/thermal/sun8i_thermal.c b/drivers/thermal/sun8i_thermal.c
index f338fa25b98e..ad877b54f58e 100644
--- a/drivers/thermal/sun8i_thermal.c
+++ b/drivers/thermal/sun8i_thermal.c
@@ -59,6 +59,7 @@ struct ths_thermal_chip {
        int             scale;
        int             ft_deviation;
        int             temp_data_base;
+       int             (*init)(struct ths_device *tmdev);
 };
 
 struct ths_device {
@@ -356,7 +357,7 @@ static int sun8i_ths_probe(struct platform_device *pdev)
        if (irq < 0)
                return irq;
 
-       ret = sun50i_h6_thermal_init(tmdev);
+       ret = tmdev->chip->init(tmdev);
        if (ret)
                return ret;
 
@@ -394,6 +395,7 @@ static const struct ths_thermal_chip sun50i_h6_ths = {
        .scale = -67,
        .ft_deviation = SUN50I_H6_FT_DEVIATION,
        .temp_data_base = SUN50I_H6_THS_TEMP_DATA,
+       .init = sun50i_h6_thermal_init,
 };
 
 static const struct of_device_id of_ths_match[] = {
-- 
2.17.1

Reply via email to