[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