diff options
author | Simon Glass <sjg@chromium.org> | 2023-05-04 16:54:58 -0600 |
---|---|---|
committer | Bin Meng <bmeng@tinylab.org> | 2023-05-11 10:25:29 +0800 |
commit | 37bf44073bf2a51f25d82856d51ae16bc8fd8f76 (patch) | |
tree | 01cb02c82a508168f26583c5d17602e92601b6bf /cmd/acpi.c | |
parent | 0992a90daa80a17f9e7e33a56fd3f9660ee84c97 (diff) | |
download | u-boot-37bf44073bf2a51f25d82856d51ae16bc8fd8f76.zip u-boot-37bf44073bf2a51f25d82856d51ae16bc8fd8f76.tar.gz u-boot-37bf44073bf2a51f25d82856d51ae16bc8fd8f76.tar.bz2 |
acpi: Move the table-finding functions into the libary
This is useful for other features. Move the function into library code
so it can be used outside just the 'acpi' command.
Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Tested-by: Bin Meng <bmeng.cn@gmail.com>
Diffstat (limited to 'cmd/acpi.c')
-rw-r--r-- | cmd/acpi.c | 40 |
1 files changed, 1 insertions, 39 deletions
@@ -36,49 +36,11 @@ static void dump_hdr(struct acpi_table_header *hdr) } } -/** - * find_table() - Look up an ACPI table - * - * @sig: Signature of table (4 characters, upper case) - * Return: pointer to table header, or NULL if not found - */ -struct acpi_table_header *find_table(const char *sig) -{ - struct acpi_rsdp *rsdp; - struct acpi_rsdt *rsdt; - int len, i, count; - - rsdp = map_sysmem(gd_acpi_start(), 0); - if (!rsdp) - return NULL; - rsdt = map_sysmem(rsdp->rsdt_address, 0); - len = rsdt->header.length - sizeof(rsdt->header); - count = len / sizeof(u32); - for (i = 0; i < count; i++) { - struct acpi_table_header *hdr; - - hdr = map_sysmem(rsdt->entry[i], 0); - if (!memcmp(hdr->signature, sig, ACPI_NAME_LEN)) - return hdr; - if (!memcmp(hdr->signature, "FACP", ACPI_NAME_LEN)) { - struct acpi_fadt *fadt = (struct acpi_fadt *)hdr; - - if (!memcmp(sig, "DSDT", ACPI_NAME_LEN) && fadt->dsdt) - return map_sysmem(fadt->dsdt, 0); - if (!memcmp(sig, "FACS", ACPI_NAME_LEN) && - fadt->firmware_ctrl) - return map_sysmem(fadt->firmware_ctrl, 0); - } - } - - return NULL; -} - static int dump_table_name(const char *sig) { struct acpi_table_header *hdr; - hdr = find_table(sig); + hdr = acpi_find_table(sig); if (!hdr) return -ENOENT; printf("%.*s @ %08lx\n", ACPI_NAME_LEN, hdr->signature, |