.. | .. |
---|
700 | 700 | { |
---|
701 | 701 | struct hwmon_device *hwdev; |
---|
702 | 702 | struct device *hdev; |
---|
| 703 | + struct device *tdev = dev; |
---|
703 | 704 | int i, err, id; |
---|
704 | 705 | |
---|
705 | 706 | /* Complain about invalid characters in hwmon name attribute */ |
---|
.. | .. |
---|
757 | 758 | hwdev->name = name; |
---|
758 | 759 | hdev->class = &hwmon_class; |
---|
759 | 760 | 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; |
---|
761 | 764 | hwdev->chip = chip; |
---|
762 | 765 | dev_set_drvdata(hdev, drvdata); |
---|
763 | 766 | dev_set_name(hdev, HWMON_ID_FORMAT, id); |
---|
.. | .. |
---|
769 | 772 | |
---|
770 | 773 | INIT_LIST_HEAD(&hwdev->tzdata); |
---|
771 | 774 | |
---|
772 | | - if (dev && dev->of_node && chip && chip->ops->read && |
---|
| 775 | + if (hdev->of_node && chip && chip->ops->read && |
---|
773 | 776 | chip->info[0]->type == hwmon_chip && |
---|
774 | 777 | (chip->info[0]->config[0] & HWMON_C_REGISTER_TZ)) { |
---|
775 | 778 | err = hwmon_thermal_register_sensors(hdev); |
---|