@@ -115,7 +115,6 @@ static const char *const label_amps[] = {
struct corsairpsu_data {
struct hid_device *hdev;
- struct device *hwmon_dev;
struct dentry *debugfs;
struct completion wait_completion;
struct mutex lock; /* for locking access to cmd_buffer */
@@ -684,6 +683,7 @@ static void corsairpsu_debugfs_init(struct corsairpsu_data *priv)
static int corsairpsu_probe(struct hid_device *hdev, const struct hid_device_id *id)
{
struct corsairpsu_data *priv;
+ struct device *hwmon_dev;
int ret;
priv = devm_kzalloc(&hdev->dev, sizeof(struct corsairpsu_data), GFP_KERNEL);
@@ -728,13 +728,13 @@ static int corsairpsu_probe(struct hid_device *hdev, const struct hid_device_id
corsairpsu_get_criticals(priv);
corsairpsu_check_cmd_support(priv);
- priv->hwmon_dev = hwmon_device_register_with_info(&hdev->dev, "corsairpsu", priv,
- &corsairpsu_chip_info, NULL);
-
- if (IS_ERR(priv->hwmon_dev)) {
- ret = PTR_ERR(priv->hwmon_dev);
+ hwmon_dev =
+ devm_hwmon_device_register_with_info(&hdev->dev, "corsairpsu",
+ priv, &corsairpsu_chip_info,
+ NULL);
+ ret = PTR_ERR_OR_ZERO(hwmon_dev);
+ if (ret)
goto fail_and_close;
- }
corsairpsu_debugfs_init(priv);
@@ -752,7 +752,6 @@ static void corsairpsu_remove(struct hid_device *hdev)
struct corsairpsu_data *priv = hid_get_drvdata(hdev);
debugfs_remove_recursive(priv->debugfs);
- hwmon_device_unregister(priv->hwmon_dev);
hid_hw_close(hdev);
hid_hw_stop(hdev);
}