600 lines
30 KiB
C
600 lines
30 KiB
C
//**********************************************************************
|
|
//**********************************************************************
|
|
//** **
|
|
//** (C)Copyright 1985-2013, American Megatrends, Inc. **
|
|
//** **
|
|
//** All Rights Reserved. **
|
|
//** **
|
|
//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **
|
|
//** **
|
|
//** Phone: (770)-246-8600 **
|
|
//** **
|
|
//**********************************************************************
|
|
//**********************************************************************
|
|
//**********************************************************************
|
|
//<AMI_FHDR_START>
|
|
//
|
|
// Name: <IT8728FPeiIoTable.h>
|
|
//
|
|
// Description:
|
|
// SIO init table in PEI phase. Any customers have to review below tables
|
|
// for themselves platform and make sure each initialization is necessary.
|
|
//
|
|
// Notes:
|
|
// In all tables, only fill with necessary setting. Don't fill with default
|
|
//
|
|
//<AMI_FHDR_END>
|
|
//**********************************************************************
|
|
//-------------------------------------------------------------------------
|
|
// Include Files
|
|
//-------------------------------------------------------------------------
|
|
#include "token.h"
|
|
#include <Library/AmiSioPeiLib.h>
|
|
|
|
IO_DECODE_DATA IT8728FPeiDecodeTable[]= {
|
|
// -----------------------------
|
|
//| BaseAdd | UID | Type |
|
|
// -----------------------------
|
|
{IT8728F_CONFIG_INDEX, 2, 0xFF},
|
|
//Below decode is for recovery mode
|
|
#if (defined(Recovery_SUPPORT) && (SerialRecovery_SUPPORT))
|
|
#if (IT8728F_SERIAL_PORT1_PRESENT)
|
|
{IT8728F_SERIAL_PORT1_BASE_ADDRESS, 0x01, dsUART},
|
|
#endif
|
|
#endif //#if (defined(Recovery_SUPPORT) && (SerialRecovery_SUPPORT))
|
|
#if defined(Recovery_SUPPORT) && (Recovery_SUPPORT)
|
|
#if (IT8728F_KEYBOARD_PRESENT)
|
|
{0x60, 0, dsPS2K}, // KBC decode
|
|
#endif
|
|
#if (IT8728F_FLOPPY_PORT_PRESENT)
|
|
{0x3F0, 0, dsFDC}, // FDC decode
|
|
#endif
|
|
#endif //#if defined(Recovery_SUPPORT) && (Recovery_SUPPORT)
|
|
//Below decode is for SIO generic IO decode
|
|
#if defined(IT8728F_TOTAL_BASE_ADDRESS) && (IT8728F_TOTAL_BASE_ADDRESS != 0)
|
|
{IT8728F_TOTAL_BASE_ADDRESS, IT8728F_TOTAL_LENGTH, 0xFF},
|
|
#endif
|
|
// !!!!Attention!!!!This is necessary
|
|
//OEM_TODO//OEM_TODO//OEM_TODO//OEM_TODO
|
|
// If your com port number > 2 , you'd add more table for more com ports.
|
|
// Add more OEM IO decode below.
|
|
#if (IT8728F_CIR_PORT_PRESENT)
|
|
{0x3E0, 0x10, 0xFF}, // For CIR
|
|
#endif
|
|
};
|
|
|
|
SIO_DEVICE_INIT_DATA IT8728FPeiInitTable[]= {
|
|
// -----------------------------
|
|
//| Addr | DataMask | DataValue |
|
|
// -----------------------------
|
|
|
|
//---------------------------------------------------------------------
|
|
// Enter Configuration Mode.
|
|
//---------------------------------------------------------------------
|
|
{IT8728F_CONFIG_INDEX, 0x00, 0x87},
|
|
{IT8728F_CONFIG_INDEX, 0x00, 0x01},
|
|
{IT8728F_CONFIG_INDEX, 0x00, 0x55},
|
|
#if (IT8728F_CONFIG_INDEX == 0x2E)
|
|
{IT8728F_CONFIG_INDEX, 0x00, 0x55},
|
|
#else
|
|
{IT8728F_CONFIG_INDEX, 0x00, 0xAA},
|
|
#endif
|
|
//---------------------------------------------------------------------
|
|
// Before init all logical devices, program Global register if needed.
|
|
//---------------------------------------------------------------------
|
|
//--------------------------------------------------------------------------
|
|
// >>ITE AP Workaround Start:Early I/O initialization before POST
|
|
//--------------------------------------------------------------------------
|
|
//-----------IO Config Registers---------------------------------------------------
|
|
//>>AP V1.0,IT8728F_IT8772E_BIOSAp10022v1 0.pdf
|
|
//CR23[7,6,5]=000
|
|
{IT8728F_CONFIG_INDEX, 0x00, 0x23},
|
|
{IT8728F_CONFIG_DATA, 0x1F, 0x00},
|
|
//Index 24 don't write any value.(If SPI function Enable)
|
|
//Select LDN07h
|
|
{IT8728F_CONFIG_INDEX, 0x00, IT8728F_LDN_SEL_REGISTER},
|
|
{IT8728F_CONFIG_DATA, 0x00, IT8728F_LDN_GPIO},
|
|
//CR28[6]=0
|
|
{IT8728F_CONFIG_INDEX, 0x00, 0x28},
|
|
{IT8728F_CONFIG_DATA, 0xBF, 0x00},
|
|
{IT8728F_CONFIG_INDEX, 0x00, 0x2B},
|
|
{IT8728F_CONFIG_DATA, 0xF8, 0x00},// PANSW# Mask timer Register (Index=2Bh, Default=00h)
|
|
{IT8728F_CONFIG_INDEX, 0x00, 0x2C},
|
|
{IT8728F_CONFIG_DATA, 0x62, ( (~VIN0_7_SUPPORT >> 3) & BIT0 )},// Extended 2 Multi-Function Pin Selection Register (Index=2Ch, Default=03h)
|
|
//>>AP V1.5, Index 2B/ bit[7..3] is Reserved, don't write any value
|
|
//>>AP V1.3,IT8728F_23_7x_BIOSAp10022v1 3.pdf---Modify:bit3 use default value
|
|
//CR2B[7-3]=00-> CR2B[7-4]=00,bit3 use default
|
|
//{IT8728F_CONFIG_INDEX, 0x00, 0x2B},
|
|
//{IT8728F_CONFIG_DATA, 0x07, 0x00},
|
|
//CR72[4]=0,disable wdt
|
|
{IT8728F_CONFIG_INDEX, 0x00, 0x72},
|
|
{IT8728F_CONFIG_DATA, 0xEF, 0x00},
|
|
#if (IT8728F_JP4==1)
|
|
//When disable AMD Power Sequence function(JP4=1),
|
|
//CR2C[6]=1
|
|
{IT8728F_CONFIG_INDEX, 0x00, 0x2C},
|
|
{IT8728F_CONFIG_DATA, 0xBF, 0x40},
|
|
#endif
|
|
//Select LDN EC 04h
|
|
{IT8728F_CONFIG_INDEX, 0x00, IT8728F_LDN_SEL_REGISTER},
|
|
{IT8728F_CONFIG_DATA, 0x00, IT8728F_LDN_ENV},
|
|
//CRF0=0x00
|
|
{IT8728F_CONFIG_INDEX, 0x00, 0xF0},
|
|
{IT8728F_CONFIG_DATA, 0x00, 0x00},
|
|
//clear status, Bit6 don't clear
|
|
{IT8728F_CONFIG_INDEX, 0x00, 0xF1},
|
|
{IT8728F_CONFIG_DATA, 0x00, 0xBF},
|
|
//CRF2=0x00
|
|
{IT8728F_CONFIG_INDEX, 0x00, 0xF2},
|
|
{IT8728F_CONFIG_DATA, 0x00, 0x00},
|
|
//CRF3=0x00
|
|
{IT8728F_CONFIG_INDEX, 0x00, 0xF3},
|
|
// >> 2015/08/25 Eric
|
|
// {IT8728F_CONFIG_DATA, 0x00, 0x00},
|
|
{IT8728F_CONFIG_DATA, 0x00, 0x00 | (SMB_SLAVE_0_EN << 1) | (SMB_SLAVE_1_EN << 2)},
|
|
// << 2015/08/25 Eric
|
|
//CRF4=0x00
|
|
{IT8728F_CONFIG_INDEX, 0x00, 0xF4},
|
|
{IT8728F_CONFIG_DATA, 0x00, 0x00},
|
|
//CRF5[7:6]=00
|
|
{IT8728F_CONFIG_INDEX, 0x00, 0xF5},
|
|
{IT8728F_CONFIG_DATA, 0x3F, 0x00},
|
|
//>>AP V1.3,IT8728F_23_7x_BIOSAp10022v1 3.pdf---Modify
|
|
//CRFA[3:2]=00->CRFA=0x00
|
|
{IT8728F_CONFIG_INDEX, 0x00, 0xFA},
|
|
//-{IT8728F_CONFIG_DATA, 0xF3, 0x00},
|
|
{IT8728F_CONFIG_DATA, 0x00, 0x00},
|
|
//CRFA[3:2]=00,write 1 to clear status
|
|
{IT8728F_CONFIG_INDEX, 0x00, 0xFB},
|
|
{IT8728F_CONFIG_DATA, 0xF3, 0x0C},
|
|
//Select LDN 03h
|
|
{IT8728F_CONFIG_INDEX, 0x00, IT8728F_LDN_SEL_REGISTER},
|
|
{IT8728F_CONFIG_DATA, 0x00, 0x03},
|
|
//CRF0[3]=1
|
|
{IT8728F_CONFIG_INDEX, 0x00, 0xF0},
|
|
{IT8728F_CONFIG_DATA, 0xF7, 0x08},
|
|
//-----------Runtime Registers---------------------------------------------------
|
|
//>>AP V1.0,IT8728F_IT8772E_BIOSAp10022v1 0.pdf
|
|
// #if IT8728F_HWM_SUPPORT //RayWu, REMOVE 2014/07/28
|
|
#if IT8728F_HWM_PRESENT //RayWu, ADD 2014/07/28
|
|
//select EC
|
|
{IT8728F_CONFIG_INDEX, 0x00, IT8728F_LDN_SEL_REGISTER},
|
|
{IT8728F_CONFIG_DATA, 0x00, IT8728F_LDN_ENV},
|
|
// Program Base Addr
|
|
{IT8728F_CONFIG_INDEX, 0x00, IT8728F_BASE1_LO_REGISTER},
|
|
{IT8728F_CONFIG_DATA, 0x00, (UINT8)(IT8728F_HWM_BASE_ADDRESS & 0xFF)},
|
|
{IT8728F_CONFIG_INDEX, 0x00, IT8728F_BASE1_HI_REGISTER},
|
|
{IT8728F_CONFIG_DATA, 0x00, (UINT8)(IT8728F_HWM_BASE_ADDRESS >> 8)},
|
|
// Program PME base address
|
|
{IT8728F_CONFIG_INDEX, 0x00, IT8728F_BASE2_HI_REGISTER},
|
|
{IT8728F_CONFIG_DATA, 0x00, (UINT8)((UINT16)IT8728F_PME_BASE_ADDRESS >> 8)},
|
|
{IT8728F_CONFIG_INDEX, 0x00, IT8728F_BASE2_LO_REGISTER},
|
|
{IT8728F_CONFIG_DATA, 0x00, (UINT8)((UINT16)IT8728F_PME_BASE_ADDRESS & 0x00FF)},
|
|
// Activate Device
|
|
{IT8728F_CONFIG_INDEX, 0x00, IT8728F_ACTIVATE_REGISTER},
|
|
{IT8728F_CONFIG_DATA, 0x00, IT8728F_ACTIVATE_VALUE},
|
|
//RayWu, REMOVE 2014/07/28 >>
|
|
// //enable voltage channel
|
|
// {IT8728F_HWM_BASE_ADDRESS+0x05, 0x00, 0x50},
|
|
// {IT8728F_HWM_BASE_ADDRESS+0x06, 0x00, 0xFF},
|
|
// //enable temperature channel
|
|
// {IT8728F_HWM_BASE_ADDRESS+0x05, 0x00, 0x51},
|
|
// {IT8728F_HWM_BASE_ADDRESS+0x06, 0x00, 0x38},
|
|
// //index00h[0]=1,start monitor
|
|
// {IT8728F_HWM_BASE_ADDRESS+0x05, 0x00, 0x00},
|
|
// {IT8728F_HWM_BASE_ADDRESS+0x06, 0x00, 0x01},
|
|
// //Index 4A don't write any value
|
|
//#if (THERMAL_SENSOR_INTERFACE==2)//select PECI interface
|
|
// //index0Ah=64h
|
|
// {IT8728F_HWM_BASE_ADDRESS + 5, 0x00, 0x0A},
|
|
// {IT8728F_HWM_BASE_ADDRESS + 6, 0x00, 0x64},
|
|
// //index8Eh[7,6]=11
|
|
// //When Intel PECI support, set 0x8E register bit6,7 = 1,1
|
|
// {IT8728F_HWM_BASE_ADDRESS+0x05, 0x00, 0x8E},
|
|
// {IT8728F_HWM_BASE_ADDRESS+0x06, 0x3F, 0xC0},
|
|
//#endif
|
|
// //index00h[6]=1, Update VBAT Voltage Reading again
|
|
// {IT8728F_HWM_BASE_ADDRESS+0x05, 0x00, 0x00},
|
|
// {IT8728F_HWM_BASE_ADDRESS+0x06, 0x00, 0x40},
|
|
//RayWu, REMOVE 2014/07/28 <<
|
|
#endif
|
|
//<<AP V1.0,IT8728F_IT8772E_BIOSAp10022v1 0.pdf
|
|
//--------------------------------------------------------------------------
|
|
// <<ITE AP Workaround End
|
|
//--------------------------------------------------------------------------
|
|
// Program clock setting in global registers
|
|
// Bit0: 0/1 for CLKIN is 48Mhz/24MHz .
|
|
{IT8728F_CONFIG_INDEX, 0x00, 0x23},
|
|
{IT8728F_CONFIG_DATA, 0xEE, 0x00 | (IT8728F_WDT_CLK_SRC << 4) | IT8728F_CLOCK},
|
|
//---------------------------------------------------------------------
|
|
// Before init all logical devices, program GPIO Multi-Pin if needed.
|
|
//---------------------------------------------------------------------
|
|
{IT8728F_CONFIG_INDEX, 0x00, IT8728F_LDN_SEL_REGISTER},
|
|
{IT8728F_CONFIG_DATA, 0x00, IT8728F_LDN_GPIO},
|
|
|
|
{IT8728F_CONFIG_INDEX, 0x00, 0x62},
|
|
{IT8728F_CONFIG_DATA, 0x00, (UINT8)(IT8728F_GPIO_BASE_ADDRESS>>8)},
|
|
{IT8728F_CONFIG_INDEX, 0x00, 0x63},
|
|
{IT8728F_CONFIG_DATA, 0x00, (UINT8)IT8728F_GPIO_BASE_ADDRESS},
|
|
|
|
//RayWu, REMOVE 2014/07/28 >>
|
|
// {IT8728F_CONFIG_INDEX, 0x00, 0x25},
|
|
// {IT8728F_CONFIG_DATA, 0x08, 0x00},// GPIO Set 1 Multi-Function Pin Selection Register (Index=25h, Default=00h)
|
|
// //config as uart2
|
|
// {IT8728F_CONFIG_INDEX, 0x00, 0x26},
|
|
// {IT8728F_CONFIG_DATA, 0x00, 0x00},// GPIO Set 2 Multi-Function Pin Selection Register (Index=26h, Default=FFh)
|
|
// {IT8728F_CONFIG_INDEX, 0x00, 0x27},
|
|
// {IT8728F_CONFIG_DATA, 0x00, 0x00},// GPIO Set 3 Multi-Function Pin Selection Register (Index=27h, Default=00h)
|
|
// {IT8728F_CONFIG_INDEX, 0x00, 0x28},
|
|
// {IT8728F_CONFIG_DATA, 0x40, 0x00},// GPIO Set 4 Multi-Function Pin Selection Register (Index=28h, Default=00h)
|
|
// {IT8728F_CONFIG_INDEX, 0x00, 0x29},
|
|
// {IT8728F_CONFIG_DATA, 0x00, 0x00},// GPIO Set 5 Multi-Function Pin Selection Register (Index=29h, Default=00h)
|
|
//RayWu, REMOVE 2014/07/28 <<
|
|
//RayWu, REMOVE 2015/05/05 >>
|
|
////RayWu, ADD 2014/07/28 >>
|
|
// {IT8728F_CONFIG_INDEX, 0x00, 0x25},
|
|
// {IT8728F_CONFIG_DATA, 0x08, GPIO_1X_SEL}, // GPIO Set 1 Multi-Function Pin Selection Register (Index=25h, Default=00h)
|
|
// {IT8728F_CONFIG_INDEX, 0x00, 0x26},
|
|
// {IT8728F_CONFIG_DATA, 0x00, GPIO_2X_SEL}, // GPIO Set 2 Multi-Function Pin Selection Register (Index=26h, Default=FFh)
|
|
// {IT8728F_CONFIG_INDEX, 0x00, 0x27},
|
|
// {IT8728F_CONFIG_DATA, 0x00, GPIO_3X_SEL}, // GPIO Set 3 Multi-Function Pin Selection Register (Index=27h, Default=00h)
|
|
// {IT8728F_CONFIG_INDEX, 0x00, 0x28},
|
|
// {IT8728F_CONFIG_DATA, 0x40, GPIO_4X_SEL}, // GPIO Set 4 Multi-Function Pin Selection Register (Index=28h, Default=00h)
|
|
// {IT8728F_CONFIG_INDEX, 0x00, 0x29},
|
|
// {IT8728F_CONFIG_DATA, 0xC0, GPIO_50_55_SEL}, // GPIO Set 5 Multi-Function Pin Selection Register (Index=29h, Default=00h)
|
|
// {IT8728F_CONFIG_INDEX, 0x00, 0x29},
|
|
// {IT8728F_CONFIG_DATA, 0xBF, GPIO_5X_6X_PS2_SEL},
|
|
// {IT8728F_CONFIG_INDEX, 0x00, 0x29},
|
|
// {IT8728F_CONFIG_DATA, 0x7F, GPIO_65_SEL},
|
|
////RayWu, ADD 2014/07/28 <<
|
|
//RayWu, REMOVE 2015/05/05 <<
|
|
|
|
//RayWu, ADD 2015/05/05 >>
|
|
{IT8728F_CONFIG_INDEX, 0x00, 0x25},
|
|
{IT8728F_CONFIG_DATA, 0x08, (GP17 << 7) | (GP16 << 6) | (GP15 << 5) | (GP14 << 4) | (0 << 3) | (GP12 << 2) | (GP11 << 1) | (GP10)}, // GPIO Set 1 Multi-Function Pin Selection Register (Index=25h, Default=00h)
|
|
{IT8728F_CONFIG_INDEX, 0x00, 0x26},
|
|
{IT8728F_CONFIG_DATA, 0x08, (GP27 << 7) | (GP26 << 6) | (GP25 << 5) | (GP24 << 4) | (GP23 << 3) | (GP22 << 2) | (GP21 << 1) | (GP20)}, // GPIO Set 2 Multi-Function Pin Selection Register (Index=26h, Default=FFh)
|
|
{IT8728F_CONFIG_INDEX, 0x00, 0x27},
|
|
{IT8728F_CONFIG_DATA, 0x08, (GP37 << 7) | (GP36 << 6) | (GP35 << 5) | (GP34 << 4) | (GP33 << 3) | (GP32 << 2) | (GP31 << 1) | (GP30)}, // GPIO Set 3 Multi-Function Pin Selection Register (Index=27h, Default=00h)
|
|
{IT8728F_CONFIG_INDEX, 0x00, 0x28},
|
|
{IT8728F_CONFIG_DATA, 0x08, (GP47 << 7) | (0 << 6) | (GP45 << 5) | (GP44 << 4) | (GP43 << 3) | (GP42 << 2) | (GP41 << 1) | (GP40)}, // GPIO Set 4 Multi-Function Pin Selection Register (Index=28h, Default=00h)
|
|
{IT8728F_CONFIG_INDEX, 0x00, 0x29},
|
|
{IT8728F_CONFIG_DATA, 0x01, (GP65 << 7) | (GP56_57_60_61_62 << 6) | (GP55 << 5) | (GP54 << 4) | (GP53 << 3) | (GP52 << 2) | (GP51 << 1) | 0}, // GPIO Set 5 Multi-Function Pin Selection Register (Index=29h, Default=00h)
|
|
//RayWu, ADD 2015/05/05 <<
|
|
|
|
//RayWu, ADD 2015/07/28 >>
|
|
#if (IT8728F_BUS_SELECTION == 1)
|
|
{IT8728F_CONFIG_INDEX, 0x00, 0xE9},
|
|
{IT8728F_CONFIG_DATA, 0xDF, 0x20},
|
|
#endif
|
|
//RayWu, ADD 2015/07/28 <<
|
|
|
|
//>>EIP76867: ITE APNote,set PWRGD 1 and then set 0 will cause AMD CPU can not enter OS
|
|
#if (IT8728F_AMD_PWRGD==0)//it is intel platform,AMD platform will skipt
|
|
{IT8728F_CONFIG_INDEX, 0x00, 0x2A},
|
|
{IT8728F_CONFIG_DATA, 0xDF, 0x00 | (PWRGD<<5)},// Extended 1 Multi-Function Pin Selection Register (Index=2Ah, Default=00h)
|
|
#endif
|
|
//<<EIP76867 End
|
|
#if (IT8728F_PARALLEL_PORT_PRESENT == 0)
|
|
//For GP80~87 Simple IO Enable:
|
|
//Parallel Port disabled: LDN 3\Index 30=00h
|
|
//SMbue Isolation Disable: Global Index 2Ch<bit 7>=1
|
|
//CR2C[7]=1
|
|
{IT8728F_CONFIG_INDEX, 0x00, 0x2C},
|
|
{IT8728F_CONFIG_DATA, 0x7F, 0x80},
|
|
#endif
|
|
//RayWu, ADD 2014/07/28 >>
|
|
//---------------------------------------------------------------------
|
|
// GPIO porting
|
|
//---------------------------------------------------------------------
|
|
//RayWu, REMOVE 2015/05/05 >>
|
|
// {IT8728F_CONFIG_INDEX, 0x00, 0xC0},
|
|
// {IT8728F_CONFIG_DATA, 0x00, GPIO_1X_SEL}, // Simple I/O GPIO Set 1 (Index=C0h)
|
|
// {IT8728F_CONFIG_INDEX, 0x00, 0xC1},
|
|
// {IT8728F_CONFIG_DATA, 0x00, GPIO_2X_SEL}, // Simple I/O GPIO Set 2 (Index=C1h)
|
|
// {IT8728F_CONFIG_INDEX, 0x00, 0xC2},
|
|
// {IT8728F_CONFIG_DATA, 0x00, GPIO_3X_SEL}, // Simple I/O GPIO Set 3 (Index=C2h)
|
|
// {IT8728F_CONFIG_INDEX, 0x00, 0xC3},
|
|
// {IT8728F_CONFIG_DATA, 0x00, GPIO_4X_SEL}, // Simple I/O GPIO Set 4 (Index=C3h)
|
|
// {IT8728F_CONFIG_INDEX, 0x00, 0xC4},
|
|
// {IT8728F_CONFIG_DATA, 0x00, ((GPIO_5X_6X_PS2_SEL<<1)|(GPIO_5X_6X_PS2_SEL)|GPIO_50_55_SEL)}, // Simple I/O GPIO Set 5 (Index=C4h)
|
|
//RayWu, REMOVE 2015/05/05 <<
|
|
|
|
//RayWu, ADD 2015/05/05 >>
|
|
{IT8728F_CONFIG_INDEX, 0x00, 0xC0},
|
|
{IT8728F_CONFIG_DATA, 0x08, (GP17 << 7) | (GP16 << 6) | (GP15 << 5) | (GP14 << 4) | (0 << 3) | (GP12 << 2) | (GP11 << 1) | (GP10)},
|
|
{IT8728F_CONFIG_INDEX, 0x00, 0xC1},
|
|
{IT8728F_CONFIG_DATA, 0x00, (GP27 << 7) | (GP26 << 6) | (GP25 << 5) | (GP24 << 4) | (GP23 << 3) | (GP22 << 2) | (GP21 << 1) | (GP20)},
|
|
{IT8728F_CONFIG_INDEX, 0x00, 0xC2},
|
|
{IT8728F_CONFIG_DATA, 0x00, (GP37 << 7) | (GP36 << 6) | (GP35 << 5) | (GP34 << 4) | (GP33 << 3) | (GP32 << 2) | (GP31 << 1) | (GP30)},
|
|
{IT8728F_CONFIG_INDEX, 0x00, 0xC3},
|
|
{IT8728F_CONFIG_DATA, 0x00, (GP47 << 7) | (0 << 6) | (GP45 << 5) | (GP44 << 4) | (GP43 << 3) | (GP42 << 2) | (GP41 << 1) | (GP40)},
|
|
{IT8728F_CONFIG_INDEX, 0x00, 0xC4},
|
|
{IT8728F_CONFIG_DATA, 0x01, (GP56_57_60_61_62 << 7) | (GP56_57_60_61_62 << 6) | (GP55 << 5) | (GP54 << 4) | (GP53 << 3) | (GP52 << 2) | (GP51 << 1) | 0},
|
|
//RayWu, ADD 2015/05/05 <<
|
|
|
|
//RayWu, REMOVE 2015/05/05 >>
|
|
// {IT8728F_CONFIG_INDEX, 0x00, 0xC8},
|
|
// {IT8728F_CONFIG_DATA, 0x00, GPIO_1X_IN_OUT}, // GPIO Set 1 Input Output (Index=C8h)
|
|
// {IT8728F_CONFIG_INDEX, 0x00, 0xC9},
|
|
// {IT8728F_CONFIG_DATA, 0x00, GPIO_2X_IN_OUT}, // GPIO Set 2 Input Output (Index=C9h)
|
|
// {IT8728F_CONFIG_INDEX, 0x00, 0xCA},
|
|
// {IT8728F_CONFIG_DATA, 0x00, GPIO_3X_IN_OUT}, // GPIO Set 3 Input Output (Index=CAh)
|
|
// {IT8728F_CONFIG_INDEX, 0x00, 0xCB},
|
|
// {IT8728F_CONFIG_DATA, 0x00, GPIO_4X_IN_OUT}, // GPIO Set 4 Input Output (Index=CBh)
|
|
// {IT8728F_CONFIG_INDEX, 0x00, 0xCC},
|
|
// {IT8728F_CONFIG_DATA, 0x00, GPIO_5X_IN_OUT}, // GPIO Set 5 Input Output (Index=CCh)
|
|
// {IT8728F_CONFIG_INDEX, 0x00, 0xCD},
|
|
// {IT8728F_CONFIG_DATA, 0x00, GPIO_6X_IN_OUT}, // GPIO Set 6 Input Output (Index=CDh)
|
|
// {IT8728F_CONFIG_INDEX, 0x00, 0xCE},
|
|
// {IT8728F_CONFIG_DATA, 0x00, GPIO_7X_IN_OUT}, // GPIO Set 7 Input Output (Index=CEh)
|
|
// {IT8728F_CONFIG_INDEX, 0x00, 0xCF},
|
|
// {IT8728F_CONFIG_DATA, 0x00, GPIO_8X_IN_OUT}, // GPIO Set 8 Input Output (Index=CFh)
|
|
//
|
|
// {IT8728F_CONFIG_INDEX, 0x00, 0xB8},
|
|
// {IT8728F_CONFIG_DATA, 0x00, GPIO_1X_PULL_UP}, // GPIO Set 1 Internal Pull-Up (Index=B8h)
|
|
// {IT8728F_CONFIG_INDEX, 0x00, 0xB9},
|
|
// {IT8728F_CONFIG_DATA, 0x00, GPIO_2X_PULL_UP}, // GPIO Set 2 Internal Pull-Up (Index=B9h)
|
|
// {IT8728F_CONFIG_INDEX, 0x00, 0xBA},
|
|
// {IT8728F_CONFIG_DATA, 0x00, GPIO_3X_PULL_UP}, // GPIO Set 3 Internal Pull-Up (Index=BAh)
|
|
// {IT8728F_CONFIG_INDEX, 0x00, 0xBB},
|
|
// {IT8728F_CONFIG_DATA, 0x00, GPIO_4X_PULL_UP}, // GPIO Set 4 Internal Pull-Up (Index=BBh)
|
|
// {IT8728F_CONFIG_INDEX, 0x00, 0xBC},
|
|
// {IT8728F_CONFIG_DATA, 0x00, GPIO_5X_PULL_UP}, // GPIO Set 5 Internal Pull-Up (Index=BCh)
|
|
// {IT8728F_CONFIG_INDEX, 0x00, 0xBD},
|
|
// {IT8728F_CONFIG_DATA, 0x00, GPIO_6X_PULL_UP}, // GPIO Set 6 Internal Pull-Up (Index=BDh)
|
|
//
|
|
// {IT8728F_CONFIG_INDEX, 0x00, 0x62},
|
|
// {IT8728F_CONFIG_DATA, 0x00, (UINT8)(IT8728F_GPIO_BASE_ADDRESS>>8)},
|
|
// {IT8728F_CONFIG_INDEX, 0x00, 0x63},
|
|
// {IT8728F_CONFIG_DATA, 0x00, (UINT8)IT8728F_GPIO_BASE_ADDRESS},
|
|
//RayWu, REMOVE 2015/05/05 <<
|
|
|
|
//RayWu, REMOVE, 2014/09/05 >>
|
|
// {IT8728F_GPIO_BASE_ADDRESS + 0, 0x00, GPIO_1X_OUTPUT_DEFAULT},
|
|
// {IT8728F_GPIO_BASE_ADDRESS + 1, 0x00, GPIO_2X_OUTPUT_DEFAULT},
|
|
// {IT8728F_GPIO_BASE_ADDRESS + 2, 0x00, GPIO_3X_OUTPUT_DEFAULT},
|
|
// {IT8728F_GPIO_BASE_ADDRESS + 3, 0x00, GPIO_4X_OUTPUT_DEFAULT},
|
|
// {IT8728F_GPIO_BASE_ADDRESS + 4, 0x00, GPIO_5X_OUTPUT_DEFAULT},
|
|
// {IT8728F_GPIO_BASE_ADDRESS + 5, 0x00, GPIO_6X_OUTPUT_DEFAULT},
|
|
// {IT8728F_GPIO_BASE_ADDRESS + 6, 0x00, GPIO_7X_OUTPUT_DEFAULT},
|
|
// {IT8728F_GPIO_BASE_ADDRESS + 7, 0x00, GPIO_8X_OUTPUT_DEFAULT},
|
|
//RayWu, REMOVE, 2014/09/05 <<
|
|
|
|
//RayWu, ADD 2014/07/28 <<
|
|
//---------------------------------------------------------------------
|
|
// Initialize the Serial Port for debug useage. Default is COMA
|
|
//---------------------------------------------------------------------
|
|
#if (defined(Recovery_SUPPORT) && (SerialRecovery_SUPPORT))
|
|
#if (IT8728F_SERIAL_PORT1_PRESENT)
|
|
// Select device
|
|
{IT8728F_CONFIG_INDEX, 0x00, IT8728F_LDN_SEL_REGISTER},
|
|
{IT8728F_CONFIG_DATA, 0x00, IT8728F_LDN_UART1},
|
|
// Program Base Addr
|
|
{IT8728F_CONFIG_INDEX, 0x00, IT8728F_BASE1_LO_REGISTER},
|
|
{IT8728F_CONFIG_DATA, 0x00, (UINT8)(IT8728F_SERIAL_PORT1_BASE_ADDRESS & 0xFF)},
|
|
{IT8728F_CONFIG_INDEX, 0x00, IT8728F_BASE1_HI_REGISTER},
|
|
{IT8728F_CONFIG_DATA, 0x00, (UINT8)(IT8728F_SERIAL_PORT1_BASE_ADDRESS >> 8)},
|
|
// Activate Device
|
|
{IT8728F_CONFIG_INDEX, 0x00, IT8728F_ACTIVATE_REGISTER},
|
|
{IT8728F_CONFIG_DATA, 0x00, IT8728F_ACTIVATE_VALUE},
|
|
#endif
|
|
#endif
|
|
//---------------------------------------------------------------------
|
|
// Initialize the KeyBoard and floppy controller for Recovery
|
|
//---------------------------------------------------------------------
|
|
//RayWu, ADD 2015/08/11 >>
|
|
#if (IT8728F_MOUSE_PRESENT)
|
|
{IT8728F_CONFIG_INDEX, 0x00, IT8728F_LDN_SEL_REGISTER},
|
|
{IT8728F_CONFIG_DATA, 0x00, IT8728F_LDN_PS2M},
|
|
// Program Interrupt
|
|
{IT8728F_CONFIG_INDEX, 0x00, IT8728F_IRQ1_REGISTER},
|
|
{IT8728F_CONFIG_DATA, 0x00, 0x0C},
|
|
// Activate Device
|
|
{IT8728F_CONFIG_INDEX, 0x00, IT8728F_ACTIVATE_REGISTER},
|
|
{IT8728F_CONFIG_DATA, 0x00, IT8728F_ACTIVATE_VALUE},
|
|
#endif //IT8728F_MOUSE_PRESENT
|
|
//RayWu, ADD 2015/08/11 <<
|
|
//#if defined(Recovery_SUPPORT) && (Recovery_SUPPORT) //RayWu, REMOVE 2015/08/11
|
|
#if (IT8728F_KEYBOARD_PRESENT)
|
|
// Seclect device KEYBOARD
|
|
{IT8728F_CONFIG_INDEX, 0x00, IT8728F_LDN_SEL_REGISTER},
|
|
{IT8728F_CONFIG_DATA, 0x00, IT8728F_LDN_PS2K},
|
|
// Program Base Addr
|
|
{IT8728F_CONFIG_INDEX, 0x00, IT8728F_BASE1_HI_REGISTER},
|
|
{IT8728F_CONFIG_DATA, 0x00, 0x00},
|
|
{IT8728F_CONFIG_INDEX, 0x00, IT8728F_BASE1_LO_REGISTER},
|
|
{IT8728F_CONFIG_DATA, 0x00, 0x60},
|
|
{IT8728F_CONFIG_INDEX, 0x00, IT8728F_BASE2_HI_REGISTER},
|
|
{IT8728F_CONFIG_DATA, 0x00, 0x00},
|
|
{IT8728F_CONFIG_INDEX, 0x00, IT8728F_BASE2_LO_REGISTER},
|
|
{IT8728F_CONFIG_DATA, 0x00, 0x64},
|
|
// Program Interrupt
|
|
{IT8728F_CONFIG_INDEX, 0x00, IT8728F_IRQ1_REGISTER},
|
|
{IT8728F_CONFIG_DATA, 0x00, 0x01},
|
|
// Activate Device
|
|
{IT8728F_CONFIG_INDEX, 0x00, IT8728F_ACTIVATE_REGISTER},
|
|
{IT8728F_CONFIG_DATA, 0x00, IT8728F_ACTIVATE_VALUE},
|
|
#else
|
|
// Deactivate Device
|
|
{IT8728F_CONFIG_INDEX, 0x00, IT8728F_LDN_SEL_REGISTER},
|
|
{IT8728F_CONFIG_DATA, 0x00, IT8728F_LDN_PS2K},
|
|
{IT8728F_CONFIG_INDEX, 0x00, IT8728F_ACTIVATE_REGISTER},
|
|
{IT8728F_CONFIG_DATA, 0x00, IT8728F_DEACTIVATE_VALUE},
|
|
#endif //IT8728F_KEYBOARD_PRESENT
|
|
#if (IT8728F_FLOPPY_PORT_PRESENT)
|
|
// Seclect device FLOPPY
|
|
{IT8728F_CONFIG_INDEX, 0x00, IT8728F_LDN_SEL_REGISTER},
|
|
{IT8728F_CONFIG_DATA, 0x00, IT8728F_LDN_FDC},
|
|
// Program Base Addr
|
|
{IT8728F_CONFIG_INDEX, 0x00, IT8728F_BASE1_HI_REGISTER},
|
|
{IT8728F_CONFIG_DATA, 0x00, 0x03},
|
|
{IT8728F_CONFIG_INDEX, 0x00, IT8728F_BASE1_LO_REGISTER},
|
|
{IT8728F_CONFIG_DATA, 0x00, 0xF0},
|
|
// Program Interrupt
|
|
{IT8728F_CONFIG_INDEX, 0x00, IT8728F_IRQ1_REGISTER},
|
|
{IT8728F_CONFIG_DATA, 0x00, 0x06},
|
|
// Activate Device
|
|
{IT8728F_CONFIG_INDEX, 0xFF, IT8728F_ACTIVATE_REGISTER},
|
|
{IT8728F_CONFIG_DATA, 0xFF, IT8728F_ACTIVATE_VALUE},
|
|
#endif //IT8728F_FLOPPY_PORT_PRESENT
|
|
//#endif //#if defined(Recovery_SUPPORT) && (Recovery_SUPPORT == 1) //RayWu, REMOVE 2015/08/11
|
|
//---------------------------------------------------------------------
|
|
// Program and initialize some logical device if needed.
|
|
//---------------------------------------------------------------------
|
|
#if (IT8728F_PARALLEL_PORT_PRESENT)
|
|
//Select LDN 03h
|
|
{IT8728F_CONFIG_INDEX, 0x00, IT8728F_LDN_SEL_REGISTER},
|
|
{IT8728F_CONFIG_DATA, 0x00, 0x03},
|
|
//Set parallel port mode to EPP+ECP mode
|
|
{IT8728F_CONFIG_INDEX, 0x00, 0xF0},
|
|
{IT8728F_CONFIG_DATA, 0xFC, 0x03},
|
|
#endif// IT8728F_PARALLEL_PORT_PRESENT
|
|
|
|
// Seclect device KEYBOARD
|
|
{IT8728F_CONFIG_INDEX, 0x00, IT8728F_LDN_SEL_REGISTER},
|
|
{IT8728F_CONFIG_DATA, 0x00, IT8728F_LDN_PS2K},
|
|
// config
|
|
{IT8728F_CONFIG_INDEX, 0x00, 0xF0},
|
|
{IT8728F_CONFIG_DATA, 0xF7, 0x00 | (IT8728F_KBC_CLOCK << 3)},
|
|
// Seclect device EC
|
|
{IT8728F_CONFIG_INDEX, 0x00, IT8728F_LDN_SEL_REGISTER},
|
|
{IT8728F_CONFIG_DATA, 0x00, IT8728F_LDN_ENV},
|
|
// config
|
|
{IT8728F_CONFIG_INDEX, 0x00, 0xF4}, //Auto-swap of KCLK/KDAT and MCLK/MDAT
|
|
{IT8728F_CONFIG_DATA, 0x7F, IT8728F_PS2_SWAP << 7},
|
|
// Clear Interrupt
|
|
{IT8728F_CONFIG_INDEX, 0x00, IT8728F_IRQ1_REGISTER},
|
|
{IT8728F_CONFIG_DATA, 0x00, 0x00},
|
|
|
|
//---------------------------------------------------------------------
|
|
// After init all logical devices, Exit Configuration Mode.
|
|
//---------------------------------------------------------------------
|
|
{IT8728F_CONFIG_INDEX, 0x00, 0x02},
|
|
{IT8728F_CONFIG_DATA, 0x00, 0x02},
|
|
|
|
//---------------------------------------------------------------------
|
|
// PEI Init Hardware Monitor.
|
|
//---------------------------------------------------------------------
|
|
#if IT8728F_HWM_PRESENT
|
|
// Program Global Configuration Registers.
|
|
{IT8728F_HWM_INDEX_PORT, 0x00, 0x50},
|
|
{IT8728F_HWM_DATA_PORT, 0x00, VIN0_7_SUPPORT},
|
|
{IT8728F_HWM_INDEX_PORT, 0x00, 0x51},
|
|
{IT8728F_HWM_DATA_PORT, 0x00, 0x00 | (IT8728F_TEMP_SST_PECI_HTRR << 6)
|
|
| (IT8728F_TEMP_RESISTOR_MODE_3_ENABLE << 5)//TMP 1-3 Set to Thermal Resistor
|
|
| (IT8728F_TEMP_RESISTOR_MODE_2_ENABLE << 4)//Thermal Diode
|
|
| (IT8728F_TEMP_RESISTOR_MODE_1_ENABLE << 3)
|
|
| (IT8728F_TEMP_DIODE_MODE_3_ENABLE << 2)
|
|
| (IT8728F_TEMP_DIODE_MODE_2_ENABLE << 1)
|
|
| IT8728F_TEMP_DIODE_MODE_1_ENABLE},
|
|
#if (IT8728F_ETSHS_MODE > 1) //PECI or SST Host must set Clock to 24MHz (AN1.3)
|
|
//External Thermal Sensor Host Selection
|
|
{IT8728F_HWM_INDEX_PORT, 0x00, 0x0A},
|
|
{IT8728F_HWM_DATA_PORT, 0x83, 0x44 | (IT8728F_ETSHS_MODE << 4)},
|
|
//PECI idle high
|
|
{IT8728F_HWM_INDEX_PORT, 0x00, 0x8E},
|
|
{IT8728F_HWM_DATA_PORT, 0x00, 0x02},
|
|
#else
|
|
//External Thermal Sensor Host Selection
|
|
{IT8728F_HWM_INDEX_PORT, 0x00, 0x0A},
|
|
{IT8728F_HWM_DATA_PORT, 0x8F, 0x40 | (IT8728F_ETSHS_MODE << 4)},
|
|
#endif // IT8728F_ETSHS_MODE
|
|
//Fan PWM Smoothing Step Frequency Selection Register
|
|
{IT8728F_HWM_INDEX_PORT, 0x00, 0x0B},
|
|
{IT8728F_HWM_DATA_PORT, 0x00, 0x00 | (FAN_PWM_SMOOTH_FREQ_SEL << 6)
|
|
| (FAN_CTL5_SEL << 2)
|
|
| FAN_CTL4_SEL},
|
|
//Fan Tachometer Control Register
|
|
{IT8728F_HWM_INDEX_PORT, 0x00, 0x0C},
|
|
{IT8728F_HWM_DATA_PORT, 0x00, 0x00 | (TMPIN3_ENHANCED_INT_MODE_EN << 7)
|
|
| (TMPIN2_ENHANCED_INT_MODE_EN << 6)
|
|
| (FAN_TAC5_EN << 5)
|
|
| (FAN_TAC4_EN << 4)
|
|
| (TMPIN1_ENHANCED_INT_MODE_EN << 3)},
|
|
//Fan Controller Main Control Register
|
|
{IT8728F_HWM_INDEX_PORT, 0x00, 0x13},
|
|
{IT8728F_HWM_DATA_PORT, 0x8F, 0x00 | (FAN_TAC_3 << 6)
|
|
| (FAN_TAC_2 << 5)
|
|
| (FAN_TAC_1 << 4)},
|
|
//FAN_CTL Control Register
|
|
{IT8728F_HWM_INDEX_PORT, 0x00, 0x14},
|
|
{IT8728F_HWM_DATA_PORT, 0x7F, 0x00 | (FAN_CTL_POLARITY << 7)},
|
|
//Thermal Diode Zero Degree Adjust register write enable
|
|
{IT8728F_HWM_INDEX_PORT, 0x00, 0x5C},
|
|
{IT8728F_HWM_DATA_PORT, 0x7F, 0x80},
|
|
#if TEMP_ADJUST_1
|
|
{IT8728F_HWM_INDEX_PORT, 0x00, 0x56},
|
|
{IT8728F_HWM_DATA_PORT, 0x00, TEMP_ADJUST_1},
|
|
#endif // TEMP_ADJUST_1
|
|
#if TEMP_ADJUST_2
|
|
{IT8728F_HWM_INDEX_PORT, 0x00, 0x57},
|
|
{IT8728F_HWM_DATA_PORT, 0x00, TEMP_ADJUST_2},
|
|
#endif // TEMP_ADJUST_2
|
|
#if TEMP_ADJUST_3
|
|
{IT8728F_HWM_INDEX_PORT, 0x00, 0x59},
|
|
{IT8728F_HWM_DATA_PORT, 0x00, TEMP_ADJUST_3},
|
|
#endif // TEMP_ADJUST_3
|
|
//Thermal Diode Zero Degree Adjust register write disable
|
|
{IT8728F_HWM_INDEX_PORT, 0x00, 0x5C},
|
|
{IT8728F_HWM_DATA_PORT, 0x7F, 0x00},
|
|
//FAN_CTL3-1 SmartGuardian Automatic Mode Register
|
|
//Bit 7 : This bit selects the PWM linear changing decreasing mode
|
|
// 0:Slow decreasing mode
|
|
// 1:Direct decreasing mode
|
|
//Bit 6 : FAN Full Limit Control as Thermal out Reached
|
|
// When the relevant enable bit is set and the FAN output mode is selected as Automatic
|
|
// mode by bit7 of EC index 15h, 16h, 17h, the corresponding FAN output will be forced to
|
|
// full PWM if any thermal output limit is reached.
|
|
// 0: Disable
|
|
// 1: Enable
|
|
//Bit 4-0 : Temperature internal
|
|
{IT8728F_HWM_INDEX_PORT, 0x00, 0x65},
|
|
{IT8728F_HWM_DATA_PORT, 0x00, 0x00 | (FAN1_DIRECT_DOWN_CTRL << 7)
|
|
| (FAN1_FULL_ON_AS_THERMAL_REACHED << 6)
|
|
| FAN_CTL1_TEMP_INTERVAL},
|
|
{IT8728F_HWM_INDEX_PORT, 0x00, 0x6D},
|
|
{IT8728F_HWM_DATA_PORT, 0x00, 0x00 | (FAN2_DIRECT_DOWN_CTRL << 7)
|
|
| (FAN2_FULL_ON_AS_THERMAL_REACHED << 6)
|
|
| FAN_CTL2_TEMP_INTERVAL},
|
|
{IT8728F_HWM_INDEX_PORT, 0x00, 0x75},
|
|
{IT8728F_HWM_DATA_PORT, 0x00, 0x00 | (FAN3_DIRECT_DOWN_CTRL << 7)
|
|
| (FAN3_FULL_ON_AS_THERMAL_REACHED << 6)
|
|
| FAN_CTL3_TEMP_INTERVAL},
|
|
#if (IT8728F_ETSHS_MODE == 6)
|
|
//Host Target Address
|
|
{IT8728F_HWM_INDEX_PORT, 0x00, 0x89},
|
|
{IT8728F_HWM_DATA_PORT, 0x00, Host_Target_Address},
|
|
//Host Write Length
|
|
{IT8728F_HWM_INDEX_PORT, 0x00, 0x8A},
|
|
{IT8728F_HWM_DATA_PORT, 0x00, Host_Write_Length},
|
|
//Host Read Length
|
|
{IT8728F_HWM_INDEX_PORT, 0x00, 0x8B},
|
|
{IT8728F_HWM_DATA_PORT, 0x00, Host_Read_Length},
|
|
//Command
|
|
{IT8728F_HWM_INDEX_PORT, 0x00, 0x8C},
|
|
{IT8728F_HWM_DATA_PORT, 0x00, Host_Command},
|
|
//Auto-Start
|
|
{IT8728F_HWM_INDEX_PORT, 0x00, 0x8E},
|
|
{IT8728F_HWM_DATA_PORT, 0x00, 0xF0},
|
|
#endif
|
|
//Index 00 bit 6 set to 1(Update VBAT Voltage Reading again)
|
|
{IT8728F_HWM_INDEX_PORT, 0x00, 0x00},
|
|
{IT8728F_HWM_DATA_PORT, 0xBE, 0x41},
|
|
#endif // IT8728F_HWM_PRESENT
|
|
};
|
|
|
|
//**********************************************************************
|
|
//**********************************************************************
|
|
//** **
|
|
//** (C)Copyright 1985-2013, American Megatrends, Inc. **
|
|
//** **
|
|
//** All Rights Reserved. **
|
|
//** **
|
|
//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **
|
|
//** **
|
|
//** Phone: (770)-246-8600 **
|
|
//** **
|
|
//**********************************************************************
|
|
//**********************************************************************
|