@ -58,7 +58,8 @@ static void acpi_add_table(struct acpi_rsdp *rsdp, void *table)
rsdt - > entry [ i ] = ( u32 ) table ;
/* Fix RSDT length or the kernel will assume invalid entries */
rsdt - > header . length = sizeof ( acpi_header_t ) + ( sizeof ( u32 ) * ( i + 1 ) ) ;
rsdt - > header . length = sizeof ( struct acpi_table_header ) +
( sizeof ( u32 ) * ( i + 1 ) ) ;
/* Re-calculate checksum */
rsdt - > header . checksum = 0 ;
@ -74,7 +75,7 @@ static void acpi_add_table(struct acpi_rsdp *rsdp, void *table)
xsdt - > entry [ i ] = ( u64 ) ( u32 ) table ;
/* Fix XSDT length */
xsdt - > header . length = sizeof ( acpi_header_t ) +
xsdt - > header . length = sizeof ( struct acpi_table_ header ) +
( sizeof ( u64 ) * ( i + 1 ) ) ;
/* Re-calculate checksum */
@ -87,7 +88,7 @@ static void acpi_add_table(struct acpi_rsdp *rsdp, void *table)
static int acpi_create_madt_lapic ( struct acpi_madt_lapic * lapic ,
u8 cpu , u8 apic )
{
lapic - > type = LOCA LAPIC; /* Local APIC structure */
lapic - > type = ACPI_APIC_ LAPIC; /* Local APIC structure */
lapic - > length = sizeof ( struct acpi_madt_lapic ) ;
lapic - > flags = LOCAL_APIC_FLAG_ENABLED ; /* Processor/LAPIC enabled */
lapic - > processor_id = cpu ;
@ -115,7 +116,7 @@ unsigned long acpi_create_madt_lapics(unsigned long current)
int acpi_create_madt_ioapic ( struct acpi_madt_ioapic * ioapic , u8 id , u32 addr ,
u32 gsi_base )
{
ioapic - > type = IOAPIC ;
ioapic - > type = ACPI_APIC_ IOAPIC;
ioapic - > length = sizeof ( struct acpi_madt_ioapic ) ;
ioapic - > reserved = 0x00 ;
ioapic - > gsi_base = gsi_base ;
@ -128,7 +129,7 @@ int acpi_create_madt_ioapic(struct acpi_madt_ioapic *ioapic, u8 id, u32 addr,
int acpi_create_madt_irqoverride ( struct acpi_madt_irqoverride * irqoverride ,
u8 bus , u8 source , u32 gsirq , u16 flags )
{
irqoverride - > type = IRQSOURCE OVERRIDE;
irqoverride - > type = ACPI_APIC_IRQ_SRC_ OVERRIDE;
irqoverride - > length = sizeof ( struct acpi_madt_irqoverride ) ;
irqoverride - > bus = bus ;
irqoverride - > source = source ;
@ -141,7 +142,7 @@ int acpi_create_madt_irqoverride(struct acpi_madt_irqoverride *irqoverride,
int acpi_create_madt_lapic_nmi ( struct acpi_madt_lapic_nmi * lapic_nmi ,
u8 cpu , u16 flags , u8 lint )
{
lapic_nmi - > type = LOCALNMITYPE ;
lapic_nmi - > type = ACPI_APIC_LAPIC_NMI ;
lapic_nmi - > length = sizeof ( struct acpi_madt_lapic_nmi ) ;
lapic_nmi - > flags = flags ;
lapic_nmi - > processor_id = cpu ;
@ -150,17 +151,18 @@ int acpi_create_madt_lapic_nmi(struct acpi_madt_lapic_nmi *lapic_nmi,
return lapic_nmi - > length ;
}
static void fill_header ( acpi_header_t * header , char * signature , int length )
static void fill_header ( struct acpi_table_header * header , char * signature ,
int length )
{
memcpy ( header - > signature , signature , length ) ;
memcpy ( header - > oem_id , OEM_ID , 6 ) ;
memcpy ( header - > oem_table_id , ACPI_TABLE_CREATOR , 8 ) ;
memcpy ( header - > asl_ compiler _id , ASLC , 4 ) ;
memcpy ( header - > oem_table_id , OEM_TABLE_ID , 8 ) ;
memcpy ( header - > aslc_id , ASLC_ID , 4 ) ;
}
static void acpi_create_madt ( struct acpi_madt * madt )
{
acpi_header_t * header = & ( madt - > header ) ;
struct acpi_table_ header * header = & ( madt - > header ) ;
unsigned long current = ( unsigned long ) madt + sizeof ( struct acpi_madt ) ;
memset ( ( void * ) madt , 0 , sizeof ( struct acpi_madt ) ) ;
@ -173,7 +175,7 @@ static void acpi_create_madt(struct acpi_madt *madt)
header - > revision = ACPI_REV_ACPI_2_0 ;
madt - > lapic_addr = LAPIC_DEFAULT_BASE ;
madt - > flags = PCAT_COMPAT ;
madt - > flags = ACPI_MADT_ PCAT_COMPAT;
current = acpi_fill_madt ( current ) ;
@ -187,8 +189,8 @@ static int acpi_create_mcfg_mmconfig(struct acpi_mcfg_mmconfig *mmconfig,
u32 base , u16 seg_nr , u8 start , u8 end )
{
memset ( mmconfig , 0 , sizeof ( * mmconfig ) ) ;
mmconfig - > base_address = base ;
mmconfig - > base_reserved = 0 ;
mmconfig - > base_address_l = base ;
mmconfig - > base_address_h = 0 ;
mmconfig - > pci_segment_group_number = seg_nr ;
mmconfig - > start_bus_number = start ;
mmconfig - > end_bus_number = end ;
@ -208,7 +210,7 @@ static unsigned long acpi_fill_mcfg(unsigned long current)
/* MCFG is defined in the PCI Firmware Specification 3.0 */
static void acpi_create_mcfg ( struct acpi_mcfg * mcfg )
{
acpi_header_t * header = & ( mcfg - > header ) ;
struct acpi_table_ header * header = & ( mcfg - > header ) ;
unsigned long current = ( unsigned long ) mcfg + sizeof ( struct acpi_mcfg ) ;
memset ( ( void * ) mcfg , 0 , sizeof ( struct acpi_mcfg ) ) ;
@ -244,7 +246,7 @@ static void acpi_create_facs(struct acpi_facs *facs)
static void acpi_write_rsdt ( struct acpi_rsdt * rsdt )
{
acpi_header_t * header = & ( rsdt - > header ) ;
struct acpi_table_ header * header = & ( rsdt - > header ) ;
/* Fill out header fields */
fill_header ( header , " RSDT " , 4 ) ;
@ -262,7 +264,7 @@ static void acpi_write_rsdt(struct acpi_rsdt *rsdt)
static void acpi_write_xsdt ( struct acpi_xsdt * xsdt )
{
acpi_header_t * header = & ( xsdt - > header ) ;
struct acpi_table_ header * header = & ( xsdt - > header ) ;
/* Fill out header fields */
fill_header ( header , " XSDT " , 4 ) ;
@ -309,12 +311,13 @@ static void acpi_write_rsdp(struct acpi_rsdp *rsdp, struct acpi_rsdt *rsdt,
sizeof ( struct acpi_rsdp ) ) ;
}
static void acpi_create_ssdt_generator ( acpi_header_t * ssdt ,
static void acpi_create_ssdt_generator ( struct acpi_table_ header * ssdt ,
const char * oem_table_id )
{
unsigned long current = ( unsigned long ) ssdt + sizeof ( acpi_header_t ) ;
unsigned long current = ( unsigned long ) ssdt +
sizeof ( struct acpi_table_header ) ;
memset ( ( void * ) ssdt , 0 , sizeof ( acpi_header_t ) ) ;
memset ( ( void * ) ssdt , 0 , sizeof ( struct acpi_table_ header ) ) ;
memcpy ( & ssdt - > signature , " SSDT " , 4 ) ;
/* Access size in ACPI 2.0c/3.0/4.0/5.0 */
@ -322,9 +325,9 @@ static void acpi_create_ssdt_generator(acpi_header_t *ssdt,
memcpy ( & ssdt - > oem_id , OEM_ID , 6 ) ;
memcpy ( & ssdt - > oem_table_id , oem_table_id , 8 ) ;
ssdt - > oem_revision = OEM_REVISION ;
memcpy ( & ssdt - > asl_ compiler _id , ASLC , 4 ) ;
ssdt - > asl_ compiler _revision = ASL_COMPILER_REVISION ;
ssdt - > length = sizeof ( acpi_header_t ) ;
memcpy ( & ssdt - > aslc_id , ASLC_ID , 4 ) ;
ssdt - > aslc_revision = ASL_COMPILER_REVISION ;
ssdt - > length = sizeof ( struct acpi_table_ header ) ;
/* (Re)calculate length and checksum */
ssdt - > length = current - ( unsigned long ) ssdt ;
@ -342,11 +345,11 @@ u32 write_acpi_tables(u32 start)
struct acpi_rsdt * rsdt ;
struct acpi_xsdt * xsdt ;
struct acpi_facs * facs ;
acpi_header_t * dsdt ;
struct acpi_table_ header * dsdt ;
struct acpi_fadt * fadt ;
struct acpi_mcfg * mcfg ;
struct acpi_madt * madt ;
acpi_header_t * ssdt ;
struct acpi_table_ header * ssdt ;
current = start ;
@ -381,14 +384,14 @@ u32 write_acpi_tables(u32 start)
acpi_create_facs ( facs ) ;
debug ( " ACPI: * DSDT \n " ) ;
dsdt = ( acpi_header_t * ) current ;
memcpy ( dsdt , & AmlCode , sizeof ( acpi_header_t ) ) ;
if ( dsdt - > length > = sizeof ( acpi_header_t ) ) {
current + = sizeof ( acpi_header_t ) ;
dsdt = ( struct acpi_table_ header * ) current ;
memcpy ( dsdt , & AmlCode , sizeof ( struct acpi_table_ header ) ) ;
if ( dsdt - > length > = sizeof ( struct acpi_table_ header ) ) {
current + = sizeof ( struct acpi_table_ header ) ;
memcpy ( ( char * ) current ,
( char * ) & AmlCode + sizeof ( acpi_header_t ) ,
dsdt - > length - sizeof ( acpi_header_t ) ) ;
current + = dsdt - > length - sizeof ( acpi_header_t ) ;
( char * ) & AmlCode + sizeof ( struct acpi_table_ header ) ,
dsdt - > length - sizeof ( struct acpi_table_ header ) ) ;
current + = dsdt - > length - sizeof ( struct acpi_table_ header ) ;
/* (Re)calculate length and checksum */
dsdt - > length = current - ( unsigned long ) dsdt ;
@ -424,9 +427,9 @@ u32 write_acpi_tables(u32 start)
current = ALIGN ( current , 16 ) ;
debug ( " ACPI: * SSDT \n " ) ;
ssdt = ( acpi_header_t * ) current ;
acpi_create_ssdt_generator ( ssdt , ACPI_TABLE_CREATOR ) ;
if ( ssdt - > length > sizeof ( acpi_header_t ) ) {
ssdt = ( struct acpi_table_ header * ) current ;
acpi_create_ssdt_generator ( ssdt , OEM_TABLE_ID ) ;
if ( ssdt - > length > sizeof ( struct acpi_table_ header ) ) {
current + = ssdt - > length ;
acpi_add_table ( rsdp , ssdt ) ;
current = ALIGN ( current , 16 ) ;