original files of m241
This commit is contained in:
@@ -0,0 +1,308 @@
|
||||
/* acpiLib.h - ACPI library support
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 2008-2014 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute, modify or otherwise make use
|
||||
* of this software may be licensed only pursuant to the terms
|
||||
* of an applicable Wind River license agreement.
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01q,30jan14,jjk VXW6-70049 - Merge making ACPI static mem pool configurable.
|
||||
01p,09may13,jjk WIND00364942 - Adding support for Unified BSP.
|
||||
01o,18oct12,c_t reduce ACPI footprint
|
||||
01n,19apr12,g_x remove ACPI_MSG_LEN_MAX definition (WIND00278438)
|
||||
01m,23aug11,sem WIND00294323 - add _PDC support
|
||||
01l,22jul11,scm WIND00255355, allow for propagation of CPU[0] P-States...
|
||||
01k,29jun11,scm WIND00255355, remove un-needed cpuPwrArch specific items
|
||||
now found in PM abstraction...
|
||||
01j,26may11,scm WIND00255355,adjust MAX values, add ACPI_CPU_C_STATE...
|
||||
01i,04apr11,scm WIND00238999, add 64 bit support...
|
||||
01h,30jun10,rec WIND00220964 - fix _STATIC_BUF_SIZE
|
||||
01g,21jan10,rec decouple MPAPIC tables from ACPI component
|
||||
01f,10aug09,rec WIND00176001 - multiple IO Apic support mods...
|
||||
01e,06aug08,rbc Fix pci config access.
|
||||
01d,14jul08,rec pass buf pointer to acpiLibShow
|
||||
01c,17jun08,rec pass MP table to acpiLibInit
|
||||
01b,22may08,rec add support for miscowabic board
|
||||
01a,29Apr08,rec created.
|
||||
*/
|
||||
|
||||
/*
|
||||
* DESCRIPTION
|
||||
* This is the ACPI library support file
|
||||
*/
|
||||
|
||||
#ifndef __INCacpiLib
|
||||
#define __INCacpiLib
|
||||
|
||||
#include <base/b_cpuset_t.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define ACPI_MAX_DEVICE_ID_LENGTH 20
|
||||
#define ACPI_MAX_STRING_PREFIX 5
|
||||
|
||||
#define ACPI_MAX_PSS_ELEMENTS 6
|
||||
|
||||
/* P-state dependency definitions */
|
||||
|
||||
#define ACPI_SW_ALL 0xFC /* write is needed to all cores */
|
||||
#define ACPI_SW_ANY 0xFD /* last write to any core affects all cores */
|
||||
#define ACPI_HW_ALL 0xFE /* no knowledge needed. Fastest speed wins */
|
||||
|
||||
/* thermal zone cooling policy */
|
||||
|
||||
#define ACPI_COOLING_NONE 0 /* let things cook until hardware limits */
|
||||
#define ACPI_COOLING_ACTIVE 1 /* use fans etc */
|
||||
#define ACPI_COOLING_PASSIVE 2 /* throttle cpu and device utilization */
|
||||
|
||||
/* processor driver capability bits */
|
||||
|
||||
#define ACPI_PERF_MSR 0x00000001 /* performance state MSR's */
|
||||
#define ACPI_MP_C1_IOHALT 0x00000002 /* MP C1 I/O then HALT FFH seq */
|
||||
#define ACPI_THROT_MSR 0x00000004 /* on demand throttling MSR's */
|
||||
#define ACPI_MP_C1PT_INDEP 0x00000008 /* MP independent C1, P-States and T-States */
|
||||
#define ACPI_MP_C2C3_INDEP 0x00000010 /* MP independent C2 and C3 */
|
||||
#define ACPI_MP_PSTATE_SW_COORD 0x00000020 /* P-State sw coord using BIOS _PSD */
|
||||
#define ACPI_MP_CSTATE_SW_COORD 0x00000040 /* C-State sw coord using BIOS _CSD */
|
||||
#define ACPI_MP_THROT_SW_COORD 0x00000080 /* throttling sw coord using BIOS _TSD */
|
||||
#define ACPI_MP_C1_INSTR 0x00000100 /* MP C-State instructions for C1 handlers */
|
||||
#define ACPI_MP_C2C3_INSTR 0x00000200 /* MP C-State instructions for C2/C3 handlers */
|
||||
#define ACPI_PDC_RSVD 0x00000400 /* reserved */
|
||||
#define ACPI_PSTATE_HW_COORD 0x00000800 /* P-State hw coord using ACNT/MCNT */
|
||||
|
||||
/* BOOTAPP ACPI initialization can't use malloc */
|
||||
|
||||
#define _USE_STATIC_BUF_ALLOCATION /* use static memory allocation instead */
|
||||
|
||||
typedef struct irqOverride
|
||||
{
|
||||
UINT8 sourceIrq; /* Interrupt source (IRQ) */
|
||||
UINT32 globalIrq; /* Global system interrupt */
|
||||
UINT16 intiFlags;
|
||||
BOOL prepend; /* TRUE if prepend to list */
|
||||
} IRQ_OVERRIDE;
|
||||
|
||||
/* defines in usrMpApic.c */
|
||||
|
||||
IMPORT char acpiOsBuf[];
|
||||
IMPORT char *acpiOsBufTop;
|
||||
|
||||
IMPORT char *acpiOsBufPtr;
|
||||
IMPORT char *acpiOsBufBase;
|
||||
|
||||
/*
|
||||
* This structure defines an ACPI HPET descriptor table entries. See section
|
||||
* 3.2.4 in the IA-PC HPET Specification for details.
|
||||
*/
|
||||
|
||||
typedef struct acpiHpetStruct
|
||||
{
|
||||
UINT32 Id; /* Hardware Id of Event Timer Block */
|
||||
UINT64 Address; /* Address of Event Timer Block */
|
||||
UINT8 AddrSpaceId; /* 0 = System memory, 1 = System I/O */
|
||||
UINT8 Sequence; /* HPET sequence number */
|
||||
UINT16 MinimumTick; /* Main counter min tick, periodic mode */
|
||||
UINT8 Flags; /* attribute specific */
|
||||
UINT8 pad_1; /* padding for alignment */
|
||||
UINT16 pad_2;
|
||||
} ACPI_HPET;
|
||||
|
||||
/*
|
||||
* This structure defines an ACPI thermal zone. See section 11 in the ACPI
|
||||
* spec for details.
|
||||
*/
|
||||
|
||||
typedef struct acpiThermalZoneStruct
|
||||
{
|
||||
void *handle; /* ACPI_HANDLE */
|
||||
void *context; /* ACPI_THERMAL_ZONE [0..n-1] */
|
||||
UINT32 DomainId; /* domain number */
|
||||
UINT32 activeCoolingThresh; /* active cooling threshold (degK/10) */
|
||||
UINT32 criticalTrip; /* hardware shutdown trip (degK/10) */
|
||||
UINT32 hotTemp; /* software shutdown trip (degK/10) */
|
||||
UINT32 passiveTrip; /* software passive cool trip (degK/10) */
|
||||
UINT32 currentTemp; /* current zone temperature (degK/10) */
|
||||
UINT32 currentAccuracy; /* see ACPI spec 11.4.7 (_NTT) */
|
||||
UINT32 coolingPolicy; /* thermal zone cooling policy */
|
||||
} ACPI_THERMAL_ZONE;
|
||||
|
||||
/*
|
||||
* This structure defines ACPI performance supported states.
|
||||
* See section 8.4.4.2 in the ACPI spec for details.
|
||||
*/
|
||||
|
||||
typedef struct acpiCpuPerfStruct /* from _PSS */
|
||||
{
|
||||
UINT32 coreFreq; /* core frequency (MHZ) */
|
||||
UINT32 power; /* max power consumption (mw) */
|
||||
UINT32 transitionLatency; /* us */
|
||||
UINT32 busMasterLatency; /* us */
|
||||
UINT32 control; /* performance control register value */
|
||||
UINT32 status; /* expected control status value */
|
||||
} ACPI_CPU_PERFORMANCE;
|
||||
|
||||
/*
|
||||
* This structure defines ACPI throttling states.
|
||||
* See section 8.4.3.2 in the ACPI spec for details.
|
||||
*/
|
||||
|
||||
typedef struct acpiCpuThrottleStruct /* from _TSS */
|
||||
{
|
||||
UINT32 percentage; /* percentage of clock rate (1%..100%) */
|
||||
UINT32 power; /* power consumption (mw) */
|
||||
UINT32 transitionLatency; /* us */
|
||||
UINT32 control; /* throttle control register value */
|
||||
UINT32 status; /* expected control status value */
|
||||
} ACPI_CPU_THROTTLE;
|
||||
|
||||
/*
|
||||
* This structure defines declare the supported processor power
|
||||
* states (C States).
|
||||
* See section 8.4.2.1 in the ACPI spec for details.
|
||||
*/
|
||||
|
||||
typedef struct acpiCpuCStateSubStruct /* from _CST */
|
||||
{
|
||||
UINT64 address; /* address of reg to read to set C State */
|
||||
UINT32 type; /* C State type (1=C1, 2=C2 3=C3, etc.) */
|
||||
UINT32 latency; /* worst case latency, in microseconds */
|
||||
UINT32 power; /* average power consumption milliwatts */
|
||||
} ACPI_CPU_C_STATE_SUB;
|
||||
|
||||
typedef struct acpiCpuCStateStruct /* from _CST */
|
||||
{
|
||||
UINT32 count; /* number of C State sub-packages */
|
||||
ACPI_CPU_C_STATE_SUB *pCStateSub; /* pointer to C State record */
|
||||
} ACPI_CPU_C_STATE;
|
||||
|
||||
/*
|
||||
* This structure holds information reported by ACPI for one CPU,
|
||||
* (See section 8 in the ACPI spec for details.)
|
||||
*
|
||||
* ...as well as the CPU's Power & Thermal Management capabilities.
|
||||
*/
|
||||
|
||||
typedef struct acpiCpuStruct
|
||||
{
|
||||
void *handle; /* ACPI_HANDLE */
|
||||
void *context; /* ACPI_CPU [0..n-1] */
|
||||
UINT32 procId; /* not necessarilly 0..n-1 */
|
||||
UINT32 coordType; /* see P-state dependency definitions */
|
||||
UINT32 cpuPState; /* current cpu P-state (0..numPerfSup)*/
|
||||
UINT32 DomainId; /* dependency domain number (see _PSD) */
|
||||
UINT32 numCpusInDomain; /* number of CPUs in domain */
|
||||
UINT32 numThrottle; /* number of throttle states defined */
|
||||
UINT32 numThrottleNotSup; /* number of T-states not supported */
|
||||
UINT32 numPerf; /* number of performance states defined */
|
||||
UINT32 numPerfNotSup; /* number of P-states not supported */
|
||||
UINT32 numPstates; /* number of supported P-states */
|
||||
UINT32 *pThControl; /* throttle control register address */
|
||||
UINT32 *pThStatus; /* throttle status address */
|
||||
UINT32 *pPerfControl; /* peformance control register address */
|
||||
UINT32 *pPerfStatus; /* performance status address */
|
||||
ACPI_CPU_THROTTLE *pThrottle; /* pointer to throttle record */
|
||||
ACPI_CPU_PERFORMANCE *pPerf; /* pointer to performance record */
|
||||
char nodeName[5]; /* CPU name */
|
||||
char fill[3];
|
||||
ACPI_CPU_C_STATE cpuCState; /* optional variable C State record */
|
||||
} ACPI_CPU;
|
||||
|
||||
/*
|
||||
* This structure represents information that describes the target board.
|
||||
* It may be collected by ACPI or hard-coded with static tables.
|
||||
*/
|
||||
|
||||
typedef struct acpiBoardStruct
|
||||
{
|
||||
UINT32 acpiNumCpus;
|
||||
ACPI_CPU *pAcpiCpu;
|
||||
UINT32 acpiValHpet;
|
||||
ACPI_HPET *pHpet;
|
||||
UINT32 acpiNumThermZones;
|
||||
ACPI_THERMAL_ZONE *pThermalZone;
|
||||
} ACPI_BOARD_INFO;
|
||||
|
||||
IMPORT ACPI_BOARD_INFO sysAcpiBoardInfo, *pSysBoardInfo;
|
||||
|
||||
/*
|
||||
* the function below can be loaded by the BSP to change the interrupt routing
|
||||
* table. This would be used in cases where the table created by ACPI is
|
||||
* wrong. The correct signature for the BSP function call is shown below.
|
||||
*
|
||||
* IRQ_OVERRIDE *sysIrqOverride(int index);
|
||||
*
|
||||
* If registered, the function will be iteratively called by ACPI starting
|
||||
* with index = 0 and incremented with each call. The BSP will return override
|
||||
* records if it has one registered at that index. ACPI will stop asking if
|
||||
* it recieves a NULL pointer.
|
||||
*/
|
||||
|
||||
IMPORT IRQ_OVERRIDE *(*func_irqOverride)(int index);
|
||||
|
||||
/*
|
||||
* registering an early print function to this callback allows
|
||||
* early status and error reporting by the ACPI subsystem as it
|
||||
* initializes and creates the MP table.
|
||||
*/
|
||||
|
||||
IMPORT void (*func_acpiEarlyPrint)(char *outString);
|
||||
|
||||
IMPORT STATUS acpiLibInit (BOOL earlyInit);
|
||||
|
||||
IMPORT void acpiLibDisable (void);
|
||||
|
||||
/* acpiTables functions */
|
||||
|
||||
STATUS acpiTablesShow (void);
|
||||
IMPORT STATUS acpiTableInit (void);
|
||||
STATUS acpiTableValidate
|
||||
(
|
||||
UINT8 *pBuffer, /* pointer to table */
|
||||
UINT32 length,
|
||||
char *pSignature, /* NULL if don't validate signature */
|
||||
BOOL probeMem /* TRUE = use vxMemProbe to test memory access */
|
||||
);
|
||||
|
||||
UINT8 acpiChecksum
|
||||
(
|
||||
UINT8 *buffer,
|
||||
UINT32 length
|
||||
);
|
||||
|
||||
/* acpiConfig functions */
|
||||
|
||||
IMPORT STATUS acpiLibDevScan (BOOL earlyInit,
|
||||
BOOL pciAccess,
|
||||
char *pBuf,
|
||||
UINT32 mpApicBufSize);
|
||||
IMPORT int vxMpTablePrint (void);
|
||||
IMPORT void acpiConfigInit (void);
|
||||
|
||||
/* acpiLibShow functions */
|
||||
|
||||
IMPORT void acpiLibShowInit (void);
|
||||
IMPORT STATUS acpiDevicesShow (void);
|
||||
IMPORT STATUS acpiObjectsShow (void);
|
||||
IMPORT STATUS acpiBoardShow (void);
|
||||
STATUS sysBoardInfoPrint (void);
|
||||
|
||||
/* acpiCpu functions */
|
||||
|
||||
IMPORT STATUS acpiCpuInit (void);
|
||||
IMPORT STATUS acpiHpetInit (void);
|
||||
IMPORT UINT32 acpiNumPerfEntriesGet (void);
|
||||
IMPORT UINT32 acpiNumPerfProfilesGet (void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __INCacpiLib */
|
||||
@@ -0,0 +1,134 @@
|
||||
/* vxBiosE820Lib.h - Intel E820 BIOS memory map header */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2010, 2012 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute, modify or otherwise make use
|
||||
* of this software may be licensed only pursuant to the terms
|
||||
* of an applicable Wind River license agreement.
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01c,26nov12,yjw move struct definition to this header file.
|
||||
(WIND00380360)
|
||||
01b,29jul10,pad Moved extern C statement after include statements.
|
||||
01a,28mar10,sem written
|
||||
*/
|
||||
|
||||
/*
|
||||
DESCRIPTION
|
||||
Intel memory auto-size support using E820 BIOS memory map information.
|
||||
|
||||
*/
|
||||
|
||||
#ifndef __INCvxBiosE820Libh
|
||||
#define __INCvxBiosE820Libh
|
||||
|
||||
#ifdef _WRS_CONFIG_LP64
|
||||
|
||||
#include <vmLib.h>
|
||||
|
||||
#endif /* _WRS_CONFIG_LP64 */
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* E820 memory auto-size status codes */
|
||||
|
||||
#define BIOS_E820_MAP_OK 0x0 /* No map error detected */
|
||||
|
||||
#define BIOS_E820_MAP_SIG_ERR 0x1 /* "SMAP" signature not verified in BIOS output */
|
||||
|
||||
#define BIOS_E820_MAP_CF_ERR 0x2 /* Carry flag set on first E820 call - error */
|
||||
|
||||
#define BIOS_E820_MAP_SIZE_ERR 0x3 /* Invalid buffer size returned by BIOS */
|
||||
|
||||
#define BIOS_E820_MAP_ENTRY_ERR 0x4 /* Invalid entry count */
|
||||
|
||||
#define BIOS_E820_MAP_ADR_ERR 0x5 /* Invalid final descriptor address pointer */
|
||||
|
||||
#define BIOS_E820_MAP_TYPE_ERR 0x6 /* Invalid descriptor type value */
|
||||
|
||||
#define BIOS_E820_MAP_LEN_ERR 0x7 /* Invalid descriptor length value */
|
||||
|
||||
#define BIOS_E820_MAP_RANGE_ERR 0x8 /* Invalid or conflicting address range */
|
||||
|
||||
#define BIOS_E820_MAP_SPACE_ERR 0x9 /* Insufficient table space available in sysPhysRamDesc */
|
||||
|
||||
/* E820 memory map types */
|
||||
|
||||
#define BIOS_E820_MEM_TYPE_UNDEFINED 0x0 /* Undefined memory type */
|
||||
|
||||
#define BIOS_E820_MEM_TYPE_USABLE 0x1 /* Usable memory type */
|
||||
|
||||
#define BIOS_E820_MEM_TYPE_RESERVED 0x2 /* Reserved memory type */
|
||||
|
||||
#define BIOS_E820_MEM_TYPE_ACPI 0x3 /* ACPI memory type */
|
||||
|
||||
#define BIOS_E820_MEM_TYPE_NVS 0x4 /* ACPI NVS memory type */
|
||||
|
||||
#define BIOS_E820_MEM_TYPE_UNUSABLE 0x5 /* Unusable memory type */
|
||||
|
||||
#define BIOS_E820_MEM_TYPE_DISABLED 0x6 /* Disabled memory type */
|
||||
|
||||
#ifndef _ASMLANGUAGE
|
||||
|
||||
/* structure of the BIOS E820 map table info */
|
||||
|
||||
typedef struct bios_e820_tbl_info
|
||||
{
|
||||
unsigned int smap; /* "SMAP" signature (eax register) at query return */
|
||||
unsigned int ebx; /* contents of ebx register at query return */
|
||||
unsigned int ecx; /* contents of ecx register at query return */
|
||||
unsigned int edx; /* contents of edx register at query return */
|
||||
unsigned int adr; /* final buffer address (edi register) at query return */
|
||||
unsigned int carry; /* carry bit */
|
||||
unsigned int entries; /* entry count */
|
||||
unsigned int err; /* error word */
|
||||
} BIOS_E820_TBL_INFO;
|
||||
|
||||
/* structure of an entry in the BIOS E820 map table */
|
||||
|
||||
typedef struct bios_e820_map_desc
|
||||
{
|
||||
unsigned long long addr; /* start of memory segment */
|
||||
unsigned long long len; /* length of memory segment */
|
||||
unsigned int type; /* type of memory segment */
|
||||
} __attribute__((packed)) BIOS_E820_MAP_DESC;
|
||||
|
||||
extern STATUS vxBiosE820MapDescGet
|
||||
(
|
||||
unsigned int index,
|
||||
BIOS_E820_MAP_DESC *pMapDesc
|
||||
);
|
||||
|
||||
extern unsigned int vxBiosE820MapStatusGet (void);
|
||||
|
||||
extern void vxBiosE820MapShow (void);
|
||||
|
||||
#ifndef _WRS_CONFIG_LP64
|
||||
|
||||
/* forward declarations */
|
||||
|
||||
extern char * vxBiosE820MemTopPhys32 (void);
|
||||
|
||||
#else
|
||||
|
||||
extern STATUS vxBiosE820MapGet64
|
||||
(
|
||||
PHYS_MEM_DESC *sysPhysRamDesc,
|
||||
int sysPhysRamDescCount
|
||||
);
|
||||
|
||||
#endif /* !_WRS_CONFIG_LP64 */
|
||||
|
||||
#endif /* !_ASMLANGUAGE */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __INCvxBiosE820Libh */
|
||||
Reference in New Issue
Block a user