hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/hwmon/hwmon.c
....@@ -700,6 +700,7 @@
700700 {
701701 struct hwmon_device *hwdev;
702702 struct device *hdev;
703
+ struct device *tdev = dev;
703704 int i, err, id;
704705
705706 /* Complain about invalid characters in hwmon name attribute */
....@@ -757,7 +758,9 @@
757758 hwdev->name = name;
758759 hdev->class = &hwmon_class;
759760 hdev->parent = dev;
760
- hdev->of_node = dev ? dev->of_node : NULL;
761
+ while (tdev && !tdev->of_node)
762
+ tdev = tdev->parent;
763
+ hdev->of_node = tdev ? tdev->of_node : NULL;
761764 hwdev->chip = chip;
762765 dev_set_drvdata(hdev, drvdata);
763766 dev_set_name(hdev, HWMON_ID_FORMAT, id);
....@@ -769,7 +772,7 @@
769772
770773 INIT_LIST_HEAD(&hwdev->tzdata);
771774
772
- if (dev && dev->of_node && chip && chip->ops->read &&
775
+ if (hdev->of_node && chip && chip->ops->read &&
773776 chip->info[0]->type == hwmon_chip &&
774777 (chip->info[0]->config[0] & HWMON_C_REGISTER_TZ)) {
775778 err = hwmon_thermal_register_sensors(hdev);