|
@@ -899,8 +899,10 @@ int acpi_node_prop_read(struct fwnode_handle *fwnode, const char *propname,
|
|
|
struct fwnode_handle *acpi_get_next_subnode(struct fwnode_handle *fwnode,
|
|
|
struct fwnode_handle *child)
|
|
|
{
|
|
|
- struct acpi_device *adev = to_acpi_device_node(fwnode);
|
|
|
- struct list_head *head, *next;
|
|
|
+ const struct acpi_device *adev = to_acpi_device_node(fwnode);
|
|
|
+ struct acpi_device *child_adev = NULL;
|
|
|
+ const struct list_head *head;
|
|
|
+ struct list_head *next;
|
|
|
|
|
|
if (!child || is_acpi_device_node(child)) {
|
|
|
if (adev)
|
|
@@ -912,26 +914,27 @@ struct fwnode_handle *acpi_get_next_subnode(struct fwnode_handle *fwnode,
|
|
|
goto nondev;
|
|
|
|
|
|
if (child) {
|
|
|
- adev = to_acpi_device_node(child);
|
|
|
- next = adev->node.next;
|
|
|
+ child_adev = to_acpi_device_node(child);
|
|
|
+ next = child_adev->node.next;
|
|
|
if (next == head) {
|
|
|
child = NULL;
|
|
|
goto nondev;
|
|
|
}
|
|
|
- adev = list_entry(next, struct acpi_device, node);
|
|
|
+ child_adev = list_entry(next, struct acpi_device, node);
|
|
|
} else {
|
|
|
- adev = list_first_entry(head, struct acpi_device, node);
|
|
|
+ child_adev = list_first_entry(head, struct acpi_device,
|
|
|
+ node);
|
|
|
}
|
|
|
- return acpi_fwnode_handle(adev);
|
|
|
+ return acpi_fwnode_handle(child_adev);
|
|
|
}
|
|
|
|
|
|
nondev:
|
|
|
if (!child || is_acpi_data_node(child)) {
|
|
|
- struct acpi_data_node *data = to_acpi_data_node(fwnode);
|
|
|
+ const struct acpi_data_node *data = to_acpi_data_node(fwnode);
|
|
|
struct acpi_data_node *dn;
|
|
|
|
|
|
- if (adev)
|
|
|
- head = &adev->data.subnodes;
|
|
|
+ if (child_adev)
|
|
|
+ head = &child_adev->data.subnodes;
|
|
|
else if (data)
|
|
|
head = &data->data.subnodes;
|
|
|
else
|