aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/fw/dsdt_parser.c23
1 files changed, 17 insertions, 6 deletions
diff --git a/src/fw/dsdt_parser.c b/src/fw/dsdt_parser.c
index f6413c66..38f965a2 100644
--- a/src/fw/dsdt_parser.c
+++ b/src/fw/dsdt_parser.c
@@ -21,6 +21,7 @@ struct acpi_device {
struct acpi_device *parent;
char name[16];
u8 *hid_aml;
+ u8 *cid_aml;
u8 *uid_aml;
u8 *sta_aml;
u8 *crs_data;
@@ -427,6 +428,8 @@ static int parse_termobj(struct parse_state *s,
offset += parse_termobj(s, ptr + offset);
if (s->dev && strcmp(s->name, "_HID") == 0)
s->dev->hid_aml = ptr;
+ if (s->dev && strcmp(s->name, "_CID") == 0)
+ s->dev->cid_aml = ptr;
if (s->dev && strcmp(s->name, "_STA") == 0)
s->dev->sta_aml = ptr;
if (s->dev && strcmp(s->name, "_UID") == 0)
@@ -537,12 +540,18 @@ static struct acpi_device *acpi_dsdt_find(struct acpi_device *prev,
dev = container_of(node, struct acpi_device, node);
if (!aml1 && !aml2)
return dev;
- if (!dev->hid_aml)
- continue;
- if (aml1 && memcmp(dev->hid_aml + 5, aml1, size1) == 0)
- return dev;
- if (aml2 && memcmp(dev->hid_aml + 5, aml2, size2) == 0)
- return dev;
+ if (dev->hid_aml) {
+ if (aml1 && memcmp(dev->hid_aml + 5, aml1, size1) == 0)
+ return dev;
+ if (aml2 && memcmp(dev->hid_aml + 5, aml2, size2) == 0)
+ return dev;
+ }
+ if (dev->cid_aml) {
+ if (aml1 && memcmp(dev->cid_aml + 5, aml1, size1) == 0)
+ return dev;
+ if (aml2 && memcmp(dev->cid_aml + 5, aml2, size2) == 0)
+ return dev;
+ }
}
return NULL;
}
@@ -687,6 +696,8 @@ void acpi_dsdt_parse(void)
dprintf(1, " %s", acpi_dsdt_name(dev));
if (dev->hid_aml)
dprintf(1, ", hid");
+ if (dev->cid_aml)
+ dprintf(1, ", cid");
if (dev->uid_aml)
dprintf(1, ", uid %lld", acpi_dsdt_uid(dev));
if (dev->sta_aml)