@@ -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[] = {
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.windzz@gmail.com> --- drivers/thermal/sun8i_thermal.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)