Re: [PATCH] hwmon: (aspeed-g6-pwm-tach): fix driver data handling in probe/remove
From: Guenter Roeck
Date: Fri Mar 06 2026 - 10:22:47 EST
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@xxxxxxxxxxxxxx>
---
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