summaryrefslogtreecommitdiff
path: root/drivers/core/acpi.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/core/acpi.c')
-rw-r--r--drivers/core/acpi.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/drivers/core/acpi.c b/drivers/core/acpi.c
index 7b32694ad4..076fb4f1b4 100644
--- a/drivers/core/acpi.c
+++ b/drivers/core/acpi.c
@@ -9,9 +9,10 @@
#define LOG_CATEOGRY LOGC_ACPI
#include <common.h>
-#include <malloc.h>
#include <dm.h>
#include <log.h>
+#include <malloc.h>
+#include <acpi/acpi_device.h>
#include <dm/acpi.h>
#include <dm/device-internal.h>
#include <dm/root.h>
@@ -65,12 +66,20 @@ int acpi_copy_name(char *out_name, const char *name)
int acpi_get_name(const struct udevice *dev, char *out_name)
{
struct acpi_ops *aops;
+ const char *name;
+ int ret;
aops = device_get_acpi_ops(dev);
if (aops && aops->get_name)
return aops->get_name(dev, out_name);
+ name = dev_read_string(dev, "acpi,name");
+ if (name)
+ return acpi_copy_name(out_name, name);
+ ret = acpi_device_infer_name(dev, out_name);
+ if (ret)
+ return log_msg_ret("dev", ret);
- return -ENOSYS;
+ return 0;
}
/**