hpet: common ACPI generation
HPET's min ticks (minimum time between events to avoid losing interrupts) is chipset specific, so move it to Kconfig. Via also has a special base address, so move it as well. Apart from these (and the base address was already #defined), the table is very uniform. Change-Id: I848a2e2b0b16021c7ee5ba99097fa6a5886c3286 Signed-off-by: Patrick Georgi <patrick@georgi-clan.de> Reviewed-on: http://review.coreboot.org/1562 Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org> Reviewed-by: Dave Frodin <dave.frodin@se-eng.com>
This commit is contained in:
@ -36,6 +36,11 @@
|
||||
#include <timestamp.h>
|
||||
#endif
|
||||
|
||||
/* FIXME: Kconfig doesn't support overridable defaults :-( */
|
||||
#ifndef CONFIG_HPET_MIN_TICKS
|
||||
#define CONFIG_HPET_MIN_TICKS 0x1000
|
||||
#endif
|
||||
|
||||
u8 acpi_checksum(u8 *table, u32 length)
|
||||
{
|
||||
u8 ret = 0;
|
||||
@ -356,7 +361,6 @@ void acpi_create_slit(acpi_slit_t *slit)
|
||||
/* http://www.intel.com/hardwaredesign/hpetspec_1.pdf */
|
||||
void acpi_create_hpet(acpi_hpet_t *hpet)
|
||||
{
|
||||
#define HPET_ADDR 0xfed00000ULL
|
||||
acpi_header_t *header = &(hpet->header);
|
||||
acpi_addr_t *addr = &(hpet->addr);
|
||||
|
||||
@ -375,12 +379,12 @@ void acpi_create_hpet(acpi_hpet_t *hpet)
|
||||
addr->space_id = 0; /* Memory */
|
||||
addr->bit_width = 64;
|
||||
addr->bit_offset = 0;
|
||||
addr->addrl = HPET_ADDR & 0xffffffff;
|
||||
addr->addrh = HPET_ADDR >> 32;
|
||||
addr->addrl = CONFIG_HPET_ADDRESS & 0xffffffff;
|
||||
addr->addrh = ((unsigned long long)CONFIG_HPET_ADDRESS) >> 32;
|
||||
|
||||
hpet->id = 0x102282a0; /* AMD! FIXME */
|
||||
hpet->id = *(unsigned int*)CONFIG_HPET_ADDRESS;
|
||||
hpet->number = 0;
|
||||
hpet->min_tick = 4096;
|
||||
hpet->min_tick = CONFIG_HPET_MIN_TICKS;
|
||||
|
||||
header->checksum = acpi_checksum((void *)hpet, sizeof(acpi_hpet_t));
|
||||
}
|
||||
|
Reference in New Issue
Block a user