diff options
author | Patrick Georgi <patrick.georgi@coresystems.de> | 2009-04-21 20:34:36 +0000 |
---|---|---|
committer | Patrick Georgi <patrick.georgi@coresystems.de> | 2009-04-21 20:34:36 +0000 |
commit | df444bf68abe840ad05d689996110e9354a2fa6e (patch) | |
tree | b7daa0e607e991080f391986a2b634311367f3d1 /src/arch | |
parent | 2d3e712d5698b75270acfafaf7cf1c15aeb0be8a (diff) | |
download | coreboot-staging-df444bf68abe840ad05d689996110e9354a2fa6e.zip coreboot-staging-df444bf68abe840ad05d689996110e9354a2fa6e.tar.gz |
Add a helper function to acpigen to create _PSD tables.
Signed-off-by: Patrick Georgi <patrick.georgi@coresystems.de>
Acked-by: Stefan Reinauer <stepan@coresystems.de>
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@4154 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'src/arch')
-rw-r--r-- | src/arch/i386/boot/acpigen.c | 18 | ||||
-rw-r--r-- | src/arch/i386/include/arch/acpigen.h | 2 |
2 files changed, 20 insertions, 0 deletions
diff --git a/src/arch/i386/boot/acpigen.c b/src/arch/i386/boot/acpigen.c index f1132f6..5c8bd56 100644 --- a/src/arch/i386/boot/acpigen.c +++ b/src/arch/i386/boot/acpigen.c @@ -260,3 +260,21 @@ int acpigen_write_PSS_package(u32 coreFreq, u32 power, u32 transLat, u32 busmLat acpigen_patch_len(len - 1); return len; } + +int acpigen_write_PSD_package(u32 domain, u32 numprocs, PSD_coord coordtype) +{ + int len, lenh, lenp; + lenh = acpigen_write_name("_PSD"); + lenp = acpigen_write_package(1); + len = acpigen_write_package(5); + len += acpigen_write_byte(5); // 5 values + len += acpigen_write_byte(0); // revision 0 + len += acpigen_write_dword(domain); + len += acpigen_write_dword(coordtype); + len += acpigen_write_dword(numprocs); + acpigen_patch_len(len-1); + len += lenp; + acpigen_patch_len(len-1); + return len + lenh; +} + diff --git a/src/arch/i386/include/arch/acpigen.h b/src/arch/i386/include/arch/acpigen.h index 074f641..0abeae5 100644 --- a/src/arch/i386/include/arch/acpigen.h +++ b/src/arch/i386/include/arch/acpigen.h @@ -40,5 +40,7 @@ int acpigen_write_PPC(u8 nr); int acpigen_write_empty_PCT(void); int acpigen_write_PSS_package(u32 coreFreq, u32 power, u32 transLat, u32 busmLat, u32 control, u32 status); +typedef enum { SW_ALL=0xfc, SW_ANY=0xfd, HW_ALL=0xfe } PSD_coord; +int acpigen_write_PSD_package(u32 domain, u32 numprocs, PSD_coord coordtype); int acpigen_write_processor(u8 cpuindex, u32 pblock_addr, u8 pblock_len); #endif |