diff options
Diffstat (limited to 'src/mainboard/amd/mahogany_fam10/acpi_tables.c')
-rw-r--r-- | src/mainboard/amd/mahogany_fam10/acpi_tables.c | 33 |
1 files changed, 16 insertions, 17 deletions
diff --git a/src/mainboard/amd/mahogany_fam10/acpi_tables.c b/src/mainboard/amd/mahogany_fam10/acpi_tables.c index 3a39165473..878141da54 100644 --- a/src/mainboard/amd/mahogany_fam10/acpi_tables.c +++ b/src/mainboard/amd/mahogany_fam10/acpi_tables.c @@ -46,14 +46,14 @@ static void dump_mem(u32 start, u32 end) } #endif -extern u8 AmlCode[]; -extern u8 AmlCode_ssdt[]; +extern const acpi_header_t AmlCode; +extern const acpi_header_t AmlCode_ssdt; #if CONFIG_ACPI_SSDTX_NUM >= 1 -extern u8 AmlCode_ssdt2[]; -extern u8 AmlCode_ssdt3[]; -extern u8 AmlCode_ssdt4[]; -extern u8 AmlCode_ssdt5[]; +extern const acpi_header_t AmlCode_ssdt2; +extern const acpi_header_t AmlCode_ssdt3; +extern const acpi_header_t AmlCode_ssdt4; +extern const acpi_header_t AmlCode_ssdt5; #endif #define IO_APIC_ADDR 0xfec00000UL @@ -130,7 +130,7 @@ unsigned long write_acpi_tables(unsigned long start) acpi_header_t *dsdt; acpi_header_t *ssdt; acpi_header_t *ssdtx; - u8 *p; + acpi_header_t const *p; int i; @@ -192,8 +192,8 @@ unsigned long write_acpi_tables(unsigned long start) current = ( current + 0x0f) & -0x10; printk(BIOS_DEBUG, "ACPI: * SSDT at %lx\n", current); ssdt = (acpi_header_t *)current; - current += ((acpi_header_t *)AmlCode_ssdt)->length; - memcpy((void *)ssdt, (void *)AmlCode_ssdt, ((acpi_header_t *)AmlCode_ssdt)->length); + current += AmlCode_ssdt.length; + memcpy((void *)ssdt, &AmlCode_ssdt, AmlCode_ssdt.length); //Here you need to set value in pci1234, sblk and sbdn in get_bus_conf.c update_ssdt((void*)ssdt); /* recalculate checksum */ @@ -223,20 +223,20 @@ unsigned long write_acpi_tables(unsigned long start) ssdtx = (acpi_header_t *)current; switch(sysconf.hcid[i]) { case 1: - p = AmlCode_ssdt2; + p = &AmlCode_ssdt2; break; case 2: - p = AmlCode_ssdt3; + p = &AmlCode_ssdt3; break; case 3: //8131 - p = AmlCode_ssdt4; + p = &AmlCode_ssdt4; break; default: //HTX no io apic - p = AmlCode_ssdt5; + p = &AmlCode_ssdt5; } current += ((acpi_header_t *)p)->length; - memcpy((void *)ssdtx, (void *)p, ((acpi_header_t *)p)->length); + memcpy((void *)ssdtx, p, p->length); update_ssdtx((void *)ssdtx, i); ssdtx->checksum = 0; ssdtx->checksum = acpi_checksum((unsigned char *)ssdtx,ssdtx->length); @@ -248,9 +248,8 @@ unsigned long write_acpi_tables(unsigned long start) current = ( current + 0x07) & -0x08; printk(BIOS_DEBUG, "ACPI: * DSDT at %lx\n", current); dsdt = (acpi_header_t *)current; // it will used by fadt - current += ((acpi_header_t *)AmlCode)->length; - memcpy((void *)dsdt,(void *)AmlCode, \ - ((acpi_header_t *)AmlCode)->length); + current += AmlCode.length; + memcpy((void *)dsdt, &AmlCode, AmlCode.length); printk(BIOS_DEBUG, "ACPI: * DSDT @ %p Length %x\n",dsdt,dsdt->length); /* FACS */ // it needs 64 bit alignment |