Re: [PATCH 1/2] thermal: rcar_gen3: Add support for per-SoC default trim values

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Marek,

Thanks for your work!

On 2025-06-25 11:59:58 +0200, Marek Vasut wrote:
> The Working Sample R-Car SoCs may not yet have thermal sensor trimming
> values programmed into fuses, those fuses are blank instead. For such
> SoCs, the driver includes fallback trimming values. Those values are
> currently applied to all SoCs which use this driver.
> 
> Introduce support for per-SoC fallback trimming values in preparation
> for SoCs which do not use these current trimming values. No functional
> change is intended here.

I like the change, only have one bikeshedding comment about naming.

> 
> Signed-off-by: Marek Vasut <marek.vasut+renesas@xxxxxxxxxxx>
> ---
> Cc: "Niklas Söderlund" <niklas.soderlund@xxxxxxxxxxxx>
> Cc: "Rafael J. Wysocki" <rafael@xxxxxxxxxx>
> Cc: Daniel Lezcano <daniel.lezcano@xxxxxxxxxx>
> Cc: Geert Uytterhoeven <geert+renesas@xxxxxxxxx>
> Cc: Lukasz Luba <lukasz.luba@xxxxxxx>
> Cc: Magnus Damm <magnus.damm@xxxxxxxxx>
> Cc: Zhang Rui <rui.zhang@xxxxxxxxx>
> Cc: linux-pm@xxxxxxxxxxxxxxx
> Cc: linux-renesas-soc@xxxxxxxxxxxxxxx
> ---
>  drivers/thermal/renesas/rcar_gen3_thermal.c | 42 ++++++++++++++-------
>  1 file changed, 28 insertions(+), 14 deletions(-)
> 
> diff --git a/drivers/thermal/renesas/rcar_gen3_thermal.c b/drivers/thermal/renesas/rcar_gen3_thermal.c
> index 24a702ee4c1f..a388bd3135e4 100644
> --- a/drivers/thermal/renesas/rcar_gen3_thermal.c
> +++ b/drivers/thermal/renesas/rcar_gen3_thermal.c
> @@ -73,11 +73,17 @@ struct rcar_gen3_thermal_fuse_info {
>  	u32 mask;
>  };
>  
> +struct rcar_gen3_thermal_fuse_default_info {

Maybe call this 'rcar_gen3_thermal_fuse_default' to reduce the symbol 
length. In retrospect picking the preifx 'rcar_gen3_thermal_' was a 
really bad idea on my part...

> +	u32 ptat[3];
> +	u32 thcodes[TSC_MAX_NUM][3];
> +};
> +
>  struct rcar_thermal_info {
>  	int scale;
>  	int adj_below;
>  	int adj_above;
>  	const struct rcar_gen3_thermal_fuse_info *fuses;
> +	const struct rcar_gen3_thermal_fuse_default_info *fuse_defaults;
>  };
>  
>  struct equation_set_coef {
> @@ -289,6 +295,7 @@ static void rcar_gen3_thermal_fetch_fuses(struct rcar_gen3_thermal_priv *priv)
>  
>  static bool rcar_gen3_thermal_read_fuses(struct rcar_gen3_thermal_priv *priv)
>  {
> +	const struct rcar_gen3_thermal_fuse_default_info *fuse_defaults = priv->info->fuse_defaults;
>  	unsigned int i;
>  	u32 thscp;
>  
> @@ -297,24 +304,16 @@ static bool rcar_gen3_thermal_read_fuses(struct rcar_gen3_thermal_priv *priv)
>  	if (!priv->info->fuses ||
>  	    (thscp & THSCP_COR_PARA_VLD) != THSCP_COR_PARA_VLD) {
>  		/* Default THCODE values in case FUSEs are not set. */
> -		static const int thcodes[TSC_MAX_NUM][3] = {
> -			{ 3397, 2800, 2221 },
> -			{ 3393, 2795, 2216 },
> -			{ 3389, 2805, 2237 },
> -			{ 3415, 2694, 2195 },
> -			{ 3356, 2724, 2244 },
> -		};
> -
> -		priv->ptat[0] = 2631;
> -		priv->ptat[1] = 1509;
> -		priv->ptat[2] = 435;
> +		priv->ptat[0] = fuse_defaults->ptat[0];
> +		priv->ptat[1] = fuse_defaults->ptat[1];
> +		priv->ptat[2] = fuse_defaults->ptat[2];
>  
>  		for (i = 0; i < priv->num_tscs; i++) {
>  			struct rcar_gen3_thermal_tsc *tsc = priv->tscs[i];
>  
> -			tsc->thcode[0] = thcodes[i][0];
> -			tsc->thcode[1] = thcodes[i][1];
> -			tsc->thcode[2] = thcodes[i][2];
> +			tsc->thcode[0] = fuse_defaults->thcodes[i][0];
> +			tsc->thcode[1] = fuse_defaults->thcodes[i][1];
> +			tsc->thcode[2] = fuse_defaults->thcodes[i][2];
>  		}
>  
>  		return false;
> @@ -361,11 +360,24 @@ static const struct rcar_gen3_thermal_fuse_info rcar_gen3_thermal_fuse_info_gen4
>  	.mask = GEN4_FUSE_MASK,
>  };
>  
> +static const struct rcar_gen3_thermal_fuse_default_info
> +	rcar_gen3_thermal_fuse_default_info_gen3 = {

With the names adjusted above this could be

static const struct rcar_gen3_thermal_fuse_default rcar_gen3_thermal_fuses_default_gen3 = {

And that would fit the 100 char limit. We have lines that are 100 chars 
long already in the file, so this is fine IMHO. Again having such a long 
prefix string was a bad idea, sorry about that.

With this addressed,

Reviewed-by: Niklas Söderlund <niklas.soderlund+renesas@xxxxxxxxxxxx>

> +	.ptat = { 2631, 1509, 435 },
> +	.thcodes = {
> +		{ 3397, 2800, 2221 },
> +		{ 3393, 2795, 2216 },
> +		{ 3389, 2805, 2237 },
> +		{ 3415, 2694, 2195 },
> +		{ 3356, 2724, 2244 },
> +	},
> +};
> +
>  static const struct rcar_thermal_info rcar_m3w_thermal_info = {
>  	.scale = 157,
>  	.adj_below = -41,
>  	.adj_above = 116,
>  	.fuses = &rcar_gen3_thermal_fuse_info_gen3,
> +	.fuse_defaults = &rcar_gen3_thermal_fuse_default_info_gen3,
>  };
>  
>  static const struct rcar_thermal_info rcar_gen3_thermal_info = {
> @@ -373,6 +385,7 @@ static const struct rcar_thermal_info rcar_gen3_thermal_info = {
>  	.adj_below = -41,
>  	.adj_above = 126,
>  	.fuses = &rcar_gen3_thermal_fuse_info_gen3,
> +	.fuse_defaults = &rcar_gen3_thermal_fuse_default_info_gen3,
>  };
>  
>  static const struct rcar_thermal_info rcar_gen4_thermal_info = {
> @@ -380,6 +393,7 @@ static const struct rcar_thermal_info rcar_gen4_thermal_info = {
>  	.adj_below = -41,
>  	.adj_above = 126,
>  	.fuses = &rcar_gen3_thermal_fuse_info_gen4,
> +	.fuse_defaults = &rcar_gen3_thermal_fuse_default_info_gen3,
>  };
>  
>  static const struct of_device_id rcar_gen3_thermal_dt_ids[] = {
> -- 
> 2.47.2
> 

-- 
Kind Regards,
Niklas Söderlund




[Index of Archives]     [Linux Samsung SOC]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux