soc/apollolake: Add SOC specific c-state table
Please refer Apollolake BIOS Writers Guide Change-Id: I5f82cdc4b34a53b5184ef1e918cae15a1df6cc5e Signed-off-by: Hannah Williams <hannah.williams@intel.com> Reviewed-on: https://review.coreboot.org/15051 Tested-by: build bot (Jenkins) Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net> Reviewed-by: Martin Roth <martinroth@google.com>
This commit is contained in:
parent
f8daa37861
commit
0f61da8582
|
@ -39,6 +39,7 @@ config CPU_SPECIFIC_OPTIONS
|
||||||
select SMM_TSEG
|
select SMM_TSEG
|
||||||
select SOC_INTEL_COMMON
|
select SOC_INTEL_COMMON
|
||||||
select SOC_INTEL_COMMON_SMI
|
select SOC_INTEL_COMMON_SMI
|
||||||
|
select SOC_INTEL_COMMON_ACPI
|
||||||
select SPI_FLASH
|
select SPI_FLASH
|
||||||
select UDELAY_TSC
|
select UDELAY_TSC
|
||||||
select TSC_CONSTANT_RATE
|
select TSC_CONSTANT_RATE
|
||||||
|
|
|
@ -22,10 +22,19 @@
|
||||||
#include <cbmem.h>
|
#include <cbmem.h>
|
||||||
#include <cpu/x86/smm.h>
|
#include <cpu/x86/smm.h>
|
||||||
#include <soc/acpi.h>
|
#include <soc/acpi.h>
|
||||||
|
#include <soc/intel/common/acpi.h>
|
||||||
#include <soc/iomap.h>
|
#include <soc/iomap.h>
|
||||||
#include <soc/pm.h>
|
#include <soc/pm.h>
|
||||||
#include <soc/nvs.h>
|
#include <soc/nvs.h>
|
||||||
|
|
||||||
|
#define CSTATE_RES(address_space, width, offset, address) \
|
||||||
|
{ \
|
||||||
|
.space_id = address_space, \
|
||||||
|
.bit_width = width, \
|
||||||
|
.bit_offset = offset, \
|
||||||
|
.addrl = address, \
|
||||||
|
}
|
||||||
|
|
||||||
unsigned long acpi_fill_mcfg(unsigned long current)
|
unsigned long acpi_fill_mcfg(unsigned long current)
|
||||||
{
|
{
|
||||||
/* PCI Segment Group 0, Start Bus Number 0, End Bus Number is 255 */
|
/* PCI Segment Group 0, Start Bus Number 0, End Bus Number is 255 */
|
||||||
|
@ -157,3 +166,35 @@ void southbridge_inject_dsdt(device_t device)
|
||||||
acpigen_pop_len();
|
acpigen_pop_len();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
static acpi_cstate_t cstate_map[] = {
|
||||||
|
{
|
||||||
|
/* C1 */
|
||||||
|
.ctype = 1, /* ACPI C1 */
|
||||||
|
.latency = 1,
|
||||||
|
.power = 1000,
|
||||||
|
.resource = CSTATE_RES(ACPI_ADDRESS_SPACE_FIXED, 0, 0, 0),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.ctype = 2, /* ACPI C2 */
|
||||||
|
.latency = 50,
|
||||||
|
.power = 10,
|
||||||
|
.resource = CSTATE_RES(ACPI_ADDRESS_SPACE_IO, 8, 0, 0x415),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.ctype = 3, /* ACPI C3 */
|
||||||
|
.latency = 150,
|
||||||
|
.power = 10,
|
||||||
|
.resource = CSTATE_RES(ACPI_ADDRESS_SPACE_IO, 8, 0, 0x419),
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
acpi_cstate_t *soc_get_cstate_map(int *entries)
|
||||||
|
{
|
||||||
|
*entries = ARRAY_SIZE(cstate_map);
|
||||||
|
return cstate_map;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t soc_get_acpi_base_address(void)
|
||||||
|
{
|
||||||
|
return ACPI_PMIO_BASE;
|
||||||
|
}
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
* GNU General Public License for more details.
|
* GNU General Public License for more details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <arch/acpi.h>
|
||||||
#include <bootstate.h>
|
#include <bootstate.h>
|
||||||
#include <cbmem.h>
|
#include <cbmem.h>
|
||||||
#include <console/console.h>
|
#include <console/console.h>
|
||||||
|
@ -56,6 +57,7 @@ static struct device_operations cpu_bus_ops = {
|
||||||
.enable_resources = DEVICE_NOOP,
|
.enable_resources = DEVICE_NOOP,
|
||||||
.init = apollolake_init_cpus,
|
.init = apollolake_init_cpus,
|
||||||
.scan_bus = NULL,
|
.scan_bus = NULL,
|
||||||
|
.acpi_fill_ssdt_generator = generate_cpu_entries,
|
||||||
};
|
};
|
||||||
|
|
||||||
static void enable_dev(device_t dev)
|
static void enable_dev(device_t dev)
|
||||||
|
|
Loading…
Reference in New Issue