| .. | .. |
|---|
| 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); |
|---|