Message ID | 20250411003827.782544-2-iuncuim@gmail.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | Add support for A523 Thermal system | expand |
On Fri, Apr 11, 2025 at 08:38:21AM +0800, Mikhail Kalashnikov wrote: > From: Mikhail Kalashnikov <iuncuim@gmail.com> > > Some processors (e.g. Allwinner A523) require GPADC clocking activation for > temperature sensors to work. So let's add support for enabling it. > > Signed-off-by: Mikhail Kalashnikov <iuncuim@gmail.com> > --- > drivers/thermal/sun8i_thermal.c | 18 +++++++++++++++--- > 1 file changed, 15 insertions(+), 3 deletions(-) > > diff --git a/drivers/thermal/sun8i_thermal.c b/drivers/thermal/sun8i_thermal.c > index 226747906..1f3908a60 100644 > --- a/drivers/thermal/sun8i_thermal.c > +++ b/drivers/thermal/sun8i_thermal.c > @@ -66,8 +66,9 @@ struct tsensor { > }; > > struct ths_thermal_chip { > - bool has_mod_clk; > - bool has_bus_clk_reset; > + bool has_gpadc_clk; > + bool has_mod_clk; > + bool has_bus_clk_reset; > bool needs_sram; > int sensor_num; > int offset; > @@ -89,7 +90,8 @@ struct ths_device { > struct regmap_field *sram_regmap_field; > struct reset_control *reset; > struct clk *bus_clk; > - struct clk *mod_clk; > + struct clk *mod_clk; > + struct clk *gpadc_clk; > struct tsensor sensor[MAX_SENSOR_NUM]; > }; > > @@ -417,6 +419,16 @@ static int sun8i_ths_resource_init(struct ths_device *tmdev) > if (ret) > return ret; > > + if (tmdev->chip->has_gpadc_clk) { > + tmdev->gpadc_clk = devm_clk_get_enabled(&pdev->dev, "gpadc"); > + if (IS_ERR(tmdev->gpadc_clk)) > + return PTR_ERR(tmdev->gpadc_clk); return dev_err_probe(); > + } > + > + ret = clk_prepare_enable(tmdev->gpadc_clk); > + if (ret) > + return ret; > + Why calling clk_prepare_enable() ? devm_clk_get_enabled() did the job no ? > if (tmdev->chip->needs_sram) { > struct regmap *regmap; > > -- > 2.49.0 >
diff --git a/drivers/thermal/sun8i_thermal.c b/drivers/thermal/sun8i_thermal.c index 226747906..1f3908a60 100644 --- a/drivers/thermal/sun8i_thermal.c +++ b/drivers/thermal/sun8i_thermal.c @@ -66,8 +66,9 @@ struct tsensor { }; struct ths_thermal_chip { - bool has_mod_clk; - bool has_bus_clk_reset; + bool has_gpadc_clk; + bool has_mod_clk; + bool has_bus_clk_reset; bool needs_sram; int sensor_num; int offset; @@ -89,7 +90,8 @@ struct ths_device { struct regmap_field *sram_regmap_field; struct reset_control *reset; struct clk *bus_clk; - struct clk *mod_clk; + struct clk *mod_clk; + struct clk *gpadc_clk; struct tsensor sensor[MAX_SENSOR_NUM]; }; @@ -417,6 +419,16 @@ static int sun8i_ths_resource_init(struct ths_device *tmdev) if (ret) return ret; + if (tmdev->chip->has_gpadc_clk) { + tmdev->gpadc_clk = devm_clk_get_enabled(&pdev->dev, "gpadc"); + if (IS_ERR(tmdev->gpadc_clk)) + return PTR_ERR(tmdev->gpadc_clk); + } + + ret = clk_prepare_enable(tmdev->gpadc_clk); + if (ret) + return ret; + if (tmdev->chip->needs_sram) { struct regmap *regmap;