Lines Matching refs:rsdp
30 static void acpi_write_rsdp(struct acpi_rsdp *rsdp, struct acpi_rsdt *rsdt, in acpi_write_rsdp() argument
33 memset(rsdp, 0, sizeof(struct acpi_rsdp)); in acpi_write_rsdp()
35 memcpy(rsdp->signature, RSDP_SIG, 8); in acpi_write_rsdp()
36 memcpy(rsdp->oem_id, OEM_ID, 6); in acpi_write_rsdp()
38 rsdp->length = sizeof(struct acpi_rsdp); in acpi_write_rsdp()
39 rsdp->rsdt_address = (u32)rsdt; in acpi_write_rsdp()
49 rsdp->revision = ACPI_RSDP_REV_ACPI_1_0; in acpi_write_rsdp()
51 rsdp->xsdt_address = (u64)(u32)xsdt; in acpi_write_rsdp()
52 rsdp->revision = ACPI_RSDP_REV_ACPI_2_0; in acpi_write_rsdp()
56 rsdp->checksum = table_compute_checksum((void *)rsdp, 20); in acpi_write_rsdp()
57 rsdp->ext_checksum = table_compute_checksum((void *)rsdp, in acpi_write_rsdp()
106 static void acpi_add_table(struct acpi_rsdp *rsdp, void *table) in acpi_add_table() argument
113 rsdt = (struct acpi_rsdt *)rsdp->rsdt_address; in acpi_add_table()
115 if (rsdp->xsdt_address) in acpi_add_table()
116 xsdt = (struct acpi_xsdt *)((u32)rsdp->xsdt_address); in acpi_add_table()
366 struct acpi_rsdp *rsdp; in write_acpi_tables() local
384 rsdp = (struct acpi_rsdp *)current; in write_acpi_tables()
401 acpi_write_rsdp(rsdp, rsdt, xsdt); in write_acpi_tables()
446 acpi_add_table(rsdp, fadt); in write_acpi_tables()
452 acpi_add_table(rsdp, madt); in write_acpi_tables()
459 acpi_add_table(rsdp, mcfg); in write_acpi_tables()
479 static struct acpi_rsdp *acpi_valid_rsdp(struct acpi_rsdp *rsdp) in acpi_valid_rsdp() argument
481 if (strncmp((char *)rsdp, RSDP_SIG, sizeof(RSDP_SIG) - 1) != 0) in acpi_valid_rsdp()
484 debug("Looking on %p for valid checksum\n", rsdp); in acpi_valid_rsdp()
486 if (table_compute_checksum((void *)rsdp, 20) != 0) in acpi_valid_rsdp()
490 if ((rsdp->revision > 1) && in acpi_valid_rsdp()
491 (table_compute_checksum((void *)rsdp, rsdp->length) != 0)) in acpi_valid_rsdp()
495 return rsdp; in acpi_valid_rsdp()
501 struct acpi_rsdp *rsdp = NULL; in acpi_find_fadt() local
508 rsdp = acpi_valid_rsdp((struct acpi_rsdp *)p); in acpi_find_fadt()
509 if (rsdp) in acpi_find_fadt()
513 if (rsdp == NULL) in acpi_find_fadt()
516 debug("RSDP found at %p\n", rsdp); in acpi_find_fadt()
517 rsdt = (struct acpi_rsdt *)rsdp->rsdt_address; in acpi_find_fadt()