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,
|
void acpi_write_rsdp(struct acpi_rsdp *rsdp, struct acpi_rsdt *rsdt,
|
||||||
struct acpi_xsdt *xsdt);
|
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
|
* acpi_fill_header() - Set up a table header
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -15,6 +15,17 @@
|
|||||||
#include <linux/errno.h>
|
#include <linux/errno.h>
|
||||||
#include <linux/string.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,
|
void acpi_write_rsdp(struct acpi_rsdp *rsdp, struct acpi_rsdt *rsdt,
|
||||||
struct acpi_xsdt *xsdt)
|
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->length = sizeof(struct acpi_rsdp);
|
||||||
rsdp->revision = ACPI_RSDP_REV_ACPI_2_0;
|
rsdp->revision = ACPI_RSDP_REV_ACPI_2_0;
|
||||||
|
acpi_udpate_rsdp_checksum(rsdp);
|
||||||
/* Calculate checksums */
|
|
||||||
rsdp->checksum = table_compute_checksum(rsdp, 20);
|
|
||||||
rsdp->ext_checksum = table_compute_checksum(rsdp,
|
|
||||||
sizeof(struct acpi_rsdp));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void acpi_write_rsdt(struct acpi_rsdt *rsdt)
|
static void acpi_write_rsdt(struct acpi_rsdt *rsdt)
|
||||||
|
|||||||
Reference in New Issue
Block a user