[PATCH] hwmon: (aspeed-g6-pwm-tach): fix driver data handling in probe/remove

Guenter Roeck linux at roeck-us.net
Sat Mar 7 02:22:28 AEDT 2026


On 3/5/26 22:44, Billy Tsai wrote:
> Ensure proper association of driver data by setting and retrieving
> the platform device's driver data during probe and remove.
> 
> Fixes: 7e1449cd15d1 ("hwmon: (aspeed-g6-pwm-tacho): Support for ASPEED g6 PWM/Fan tach")
> Signed-off-by: Billy Tsai <billy_tsai at aspeedtech.com>
> ---
>   drivers/hwmon/aspeed-g6-pwm-tach.c | 4 +++-
>   1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/hwmon/aspeed-g6-pwm-tach.c b/drivers/hwmon/aspeed-g6-pwm-tach.c
> index 44e1ecba205d..0c03d272279a 100644
> --- a/drivers/hwmon/aspeed-g6-pwm-tach.c
> +++ b/drivers/hwmon/aspeed-g6-pwm-tach.c
> @@ -490,6 +490,7 @@ static int aspeed_pwm_tach_probe(struct platform_device *pdev)
>   	if (IS_ERR(chip))
>   		return PTR_ERR(chip);
>   
> +	platform_set_drvdata(pdev, chip);
>   	pwmchip_set_drvdata(chip, priv);
>   	chip->ops = &aspeed_pwm_ops;
>   
> @@ -519,7 +520,8 @@ static int aspeed_pwm_tach_probe(struct platform_device *pdev)
>   
>   static void aspeed_pwm_tach_remove(struct platform_device *pdev)
>   {
> -	struct aspeed_pwm_tach_data *priv = platform_get_drvdata(pdev);
> +	struct pwm_chip *chip = platform_get_drvdata(pdev);
> +	struct aspeed_pwm_tach_data *priv = aspeed_pwm_chip_to_data(chip);
>   
>   	reset_control_assert(priv->reset);
>   }
> 

The probe function registers aspeed_pwm_tach_reset_assert() with
devm_add_action_or_reset(). Why is the remove function needed in
the first place ? It seems redundant to me, and even buggy since
it asserts reset before its users (pwm and hwmon) are disabled/removed.

Thanks,
Guenter



More information about the Linux-aspeed mailing list