hwmon: (core) Use device name as a fallback in devm_hwmon_device_register_with_info
authorHeiner Kallweit <hkallweit1@gmail.com>
Thu, 9 Jan 2025 19:53:55 +0000 (20:53 +0100)
committerGuenter Roeck <linux@roeck-us.net>
Thu, 9 Jan 2025 20:42:35 +0000 (12:42 -0800)
A number of network PHY drivers use the following code:

name = devm_hwmon_sanitize_name(dev, dev_name(dev));
if (IS_ERR(name))
return PTR_ERR(name);
devm_hwmon_device_register_with_info(dev, name, ..);

Make this a generic fallback option and use the device name if no name
is provided to devm_hwmon_device_register_with_info(). This would allow
to simplify the affected drivers.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Link: https://lore.kernel.org/r/1ebe6961-6445-4408-bfb4-b56173af9db5@gmail.com
[groeck: Update API document]
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Documentation/hwmon/hwmon-kernel-api.rst
drivers/hwmon/hwmon.c

index 8297acfa3a2d822139c63097ab48eeaf551e295d..e47fc757e63ed2bd641c7868e05188937f8b0e98 100644 (file)
@@ -64,7 +64,8 @@ hwmon_device_register_with_info.
 
 All supported hwmon device registration functions only accept valid device
 names. Device names including invalid characters (whitespace, '*', or '-')
-will be rejected. The 'name' parameter is mandatory.
+will be rejected. If NULL is passed as name parameter, the hardware monitoring
+device name will be derived from the parent device name.
 
 If the driver doesn't use a static device name (for example it uses
 dev_name()), and therefore cannot make sure the name only contains valid
index 9ed750d4c4f51179a56289db4039bcc1fc5f5c64..b7c0b1e3c23b82c515b142452a11de9ad0fa2cc0 100644 (file)
@@ -1170,6 +1170,12 @@ devm_hwmon_device_register_with_info(struct device *dev, const char *name,
        if (!dev)
                return ERR_PTR(-EINVAL);
 
+       if (!name) {
+               name = devm_hwmon_sanitize_name(dev, dev_name(dev));
+               if (IS_ERR(name))
+                       return ERR_CAST(name);
+       }
+
        ptr = devres_alloc(devm_hwmon_release, sizeof(*ptr), GFP_KERNEL);
        if (!ptr)
                return ERR_PTR(-ENOMEM);