This implements the get_name fwnode op for ACPI. Signed-off-by: Heikki Krogerus <heikki.krogerus@xxxxxxxxxxxxxxx> --- drivers/acpi/property.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/drivers/acpi/property.c b/drivers/acpi/property.c index 8c7c4583b52d..5b4c659c95d4 100644 --- a/drivers/acpi/property.c +++ b/drivers/acpi/property.c @@ -1219,6 +1219,28 @@ acpi_graph_get_remote_endpoint(const struct fwnode_handle *__fwnode) return acpi_graph_get_child_prop_value(fwnode, "endpoint", endpoint_nr); } +static int acpi_fwnode_get_name(const struct fwnode_handle *fwnode, char *buf) +{ + struct acpi_buffer buffer; + acpi_handle handle; + acpi_status status; + + if (is_acpi_data_node(fwnode)) { + sprintf(buf, "%s", to_acpi_data_node(fwnode)->name); + return 0; + } + + handle = to_acpi_device_node(fwnode)->handle; + + buffer.length = ACPI_NAME_SIZE + 1; + buffer.pointer = buf; + + status = acpi_get_name(handle, ACPI_SINGLE_NAME, &buffer); + if (ACPI_FAILURE(status)) + return -ENXIO; + return 0; +} + static bool acpi_fwnode_device_is_available(const struct fwnode_handle *fwnode) { if (!is_acpi_device_node(fwnode)) @@ -1310,6 +1332,7 @@ acpi_fwnode_device_get_match_data(const struct fwnode_handle *fwnode, #define DECLARE_ACPI_FWNODE_OPS(ops) \ const struct fwnode_operations ops = { \ + .get_name = acpi_fwnode_get_name, \ .device_is_available = acpi_fwnode_device_is_available, \ .device_get_match_data = acpi_fwnode_device_get_match_data, \ .property_present = acpi_fwnode_property_present, \ -- 2.19.1