acpi: Move calculation of RSDP checksum into a function
Create a function for this checksumming, since it is not trivial. This will allow the code to be shared with tests. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
@@ -1095,6 +1095,13 @@ int acpi_write_dbg2_pci_uart(struct acpi_ctx *ctx, struct udevice *dev,
|
||||
void acpi_write_rsdp(struct acpi_rsdp *rsdp, struct acpi_rsdt *rsdt,
|
||||
struct acpi_xsdt *xsdt);
|
||||
|
||||
/**
|
||||
* acpi_udpate_rsdp_checksum() - Set up the checksum for the RSDP table
|
||||
*
|
||||
* @rsdp: Pointer to RSDP
|
||||
*/
|
||||
void acpi_udpate_rsdp_checksum(struct acpi_rsdp *rsdp);
|
||||
|
||||
/**
|
||||
* acpi_fill_header() - Set up a table header
|
||||
*
|
||||
|
||||
@@ -15,6 +15,17 @@
|
||||
#include <linux/errno.h>
|
||||
#include <linux/string.h>
|
||||
|
||||
void acpi_udpate_rsdp_checksum(struct acpi_rsdp *rsdp)
|
||||
{
|
||||
rsdp->checksum = 0;
|
||||
rsdp->ext_checksum = 0;
|
||||
|
||||
/* Calculate checksums */
|
||||
rsdp->checksum = table_compute_checksum(rsdp, 20);
|
||||
rsdp->ext_checksum = table_compute_checksum(rsdp,
|
||||
sizeof(struct acpi_rsdp));
|
||||
}
|
||||
|
||||
void acpi_write_rsdp(struct acpi_rsdp *rsdp, struct acpi_rsdt *rsdt,
|
||||
struct acpi_xsdt *xsdt)
|
||||
{
|
||||
@@ -31,11 +42,7 @@ void acpi_write_rsdp(struct acpi_rsdp *rsdp, struct acpi_rsdt *rsdt,
|
||||
|
||||
rsdp->length = sizeof(struct acpi_rsdp);
|
||||
rsdp->revision = ACPI_RSDP_REV_ACPI_2_0;
|
||||
|
||||
/* Calculate checksums */
|
||||
rsdp->checksum = table_compute_checksum(rsdp, 20);
|
||||
rsdp->ext_checksum = table_compute_checksum(rsdp,
|
||||
sizeof(struct acpi_rsdp));
|
||||
acpi_udpate_rsdp_checksum(rsdp);
|
||||
}
|
||||
|
||||
static void acpi_write_rsdt(struct acpi_rsdt *rsdt)
|
||||
|
||||
Reference in New Issue
Block a user