(sizeof(u32) * (i + 1));
/* Re-calculate checksum */
- rsdt->header.checksum = 0;
- rsdt->header.checksum = table_compute_checksum((u8 *)rsdt,
- rsdt->header.length);
+ acpi_update_checksum(&rsdt->header);
}
if (ctx->xsdt) {
(sizeof(u64) * (i + 1));
/* Re-calculate checksum */
- xsdt->header.checksum = 0;
- xsdt->header.checksum = table_compute_checksum((u8 *)xsdt,
- xsdt->header.length);
+ acpi_update_checksum(&xsdt->header);
}
return 0;
acpi_fill_fadt(fadt);
- header->checksum = table_compute_checksum(fadt, header->length);
+ acpi_update_checksum(header);
return acpi_add_fadt(ctx, fadt);
}
if (IS_ENABLED(CONFIG_ACPI_PARKING_PROTOCOL))
acpi_write_park(madt);
- header->checksum = table_compute_checksum((void *)madt, header->length);
+ acpi_update_checksum(header);
acpi_add_table(ctx, madt);
ctx->current = (void *)madt + madt->header.length;
/* Update structure lengths and checksum */
device->length = current - (uintptr_t)device;
header->length = current - (uintptr_t)dbg2;
- header->checksum = table_compute_checksum(dbg2, header->length);
+ acpi_update_checksum(header);
}
int acpi_write_dbg2_pci_uart(struct acpi_ctx *ctx, struct udevice *dev,
spcr->baud_rate = 0;
/* Fix checksum */
- header->checksum = table_compute_checksum((void *)spcr, header->length);
+ acpi_update_checksum(header);
acpi_add_table(ctx, spcr);
acpi_inc(ctx, spcr->header.length);
/* (Re)calculate length and checksum */
iort->header.length = ctx->current - (void *)iort;
- iort->header.checksum = table_compute_checksum((void *)iort, iort->header.length);
+ acpi_update_checksum(&iort->header);
log_debug("IORT at %p, length %x\n", iort, iort->header.length);
/* Drop the table if it is empty */
/* Entries are filled in later, we come with an empty set */
/* Fix checksum */
- header->checksum = table_compute_checksum(rsdt,
- sizeof(struct acpi_rsdt));
+ acpi_update_checksum(header);
}
static void acpi_write_xsdt(struct acpi_xsdt *xsdt)
/* Entries are filled in later, we come with an empty set */
/* Fix checksum */
- header->checksum = table_compute_checksum(xsdt,
- sizeof(struct acpi_xsdt));
+ acpi_update_checksum(header);
}
static int acpi_write_base(struct acpi_ctx *ctx,
/* (Re)calculate length and checksum */
ssdt->length = ctx->current - (void *)ssdt;
- ssdt->checksum = table_compute_checksum((void *)ssdt, ssdt->length);
+ acpi_update_checksum(ssdt);
log_debug("SSDT at %p, length %x\n", ssdt, ssdt->length);
/* Drop the table if it is empty */