diff options
author | raywu <raywu@aaeon.com> | 2018-06-26 17:11:45 +0800 |
---|---|---|
committer | raywu <raywu@aaeon.com> | 2018-06-26 17:11:45 +0800 |
commit | e26e253b51467089b84d5fbc1ba3dcfda960b2cd (patch) | |
tree | efef838b4394c7ee313f5b026ee62403da4481fb | |
parent | 0d5a28d62e1b472347a282326942be3425541c17 (diff) | |
download | zprj-e26e253b51467089b84d5fbc1ba3dcfda960b2cd.tar.xz |
Support Setup Option to Control LPT/DIO
-rw-r--r-- | Board/EM/Setup/Setup.uni | bin | 24798 -> 24798 bytes | |||
-rw-r--r-- | Board/IO/F81866/BSP/PeiIoTable.h | 2 | ||||
-rw-r--r-- | Board/IO/F81866/F81866.SD | 265 | ||||
-rw-r--r-- | Board/IO/F81866/F81866.UNI | bin | 35402 -> 38024 bytes | |||
-rw-r--r-- | Board/IO/F81866/F81866DXE.C | 8 | ||||
-rw-r--r-- | CRB/CRBPei.c | 179 | ||||
-rw-r--r-- | RomImage/FitcBuild.bat | 2 |
7 files changed, 448 insertions, 8 deletions
diff --git a/Board/EM/Setup/Setup.uni b/Board/EM/Setup/Setup.uni Binary files differindex cf7063d..42576ff 100644 --- a/Board/EM/Setup/Setup.uni +++ b/Board/EM/Setup/Setup.uni diff --git a/Board/IO/F81866/BSP/PeiIoTable.h b/Board/IO/F81866/BSP/PeiIoTable.h index 75ca0a5..a5c6d34 100644 --- a/Board/IO/F81866/BSP/PeiIoTable.h +++ b/Board/IO/F81866/BSP/PeiIoTable.h @@ -243,7 +243,7 @@ SIO_DATA F81866_PEI_Init_Table[] = { {F81866_CONFIG_INDEX, 0xFF, 0x29}, {F81866_CONFIG_DATA, 0xFF, 0xF0}, {F81866_CONFIG_INDEX, 0xFF, 0x2B}, - {F81866_CONFIG_DATA, 0xE3, 0x00}, + {F81866_CONFIG_DATA, 0x1C, 0x00}, {F81866_CONFIG_INDEX, 0xFF, 0x27}, {F81866_CONFIG_DATA, 0xF2, 0x00}, // GPIO_PROG_SEL = 00b , CLK_TUNE_PROG_EN = 0b {F81866_CONFIG_INDEX, 0xFF, 0x2C}, diff --git a/Board/IO/F81866/F81866.SD b/Board/IO/F81866/F81866.SD index ba1ca45..4de5658 100644 --- a/Board/IO/F81866/F81866.SD +++ b/Board/IO/F81866/F81866.SD @@ -135,6 +135,12 @@ UINT8 Fan3Mode3AutoDutyF2; UINT8 Fan3Mode3AutoDutyF3; UINT8 Fan3Mode3AutoDutyF4; + + UINT8 ParallelGpioSettings; + UINT8 F81866LptGpioConfiguration7x[8]; // GPIO7x + UINT8 F81866LptGpioConfiguration7xLevel[8]; + UINT8 F81866LptGpioConfiguration8x[8]; // GPIO8x + UINT8 F81866LptGpioConfiguration8xLevel[8]; #endif //SETUP_DATA_DEFINITION //------------------------------------------------------------------------- @@ -1207,7 +1213,7 @@ prompt = STRING_TOKEN(STR_F81866_PARALLEL_FORM), help = STRING_TOKEN(STR_F81866_PARALLEL_FORM_HELP); endif; - + endform;//SIO Form //////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -1590,6 +1596,263 @@ endoneof; endif; // suppressif SIO_SETUP_VAR.LptEnable == 0x0; + suppressif NOT ideqval LPT_NV_DATA.DevEnable == 0x0; + SEPARATOR +// oneof varid = SETUP_DATA.ParallelGpioSettings, +// prompt = STRING_TOKEN(STR_F81866_PARALLEL_GPIO_SETTINGS), +// help = STRING_TOKEN(STR_F81866_PARALLEL_GPIO_SETTINGS), +// option text = STRING_TOKEN(STR_F81866_PARALLEL_PROMPT), value = 0, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED; +// option text = STRING_TOKEN(STR_F81866_GPIO), value = 1, flags = RESET_REQUIRED; +// endoneof; + checkbox varid = SETUP_DATA.ParallelGpioSettings, + prompt = STRING_TOKEN(STR_F81866_PARALLEL_GPIO_SETTINGS), + help = STRING_TOKEN(STR_F81866_PARALLEL_GPIO_SETTINGS), + flags = 0 | RESET_REQUIRED, + endcheckbox; + + suppressif ideqval SETUP_DATA.ParallelGpioSettings == 0; + // GPIO70 + oneof varid = SETUP_DATA.F81866LptGpioConfiguration7x[0],\ + prompt = STRING_TOKEN (STR_F81866_GPIO70),\ + help = STRING_TOKEN (STR_F81866_GPIO70),\ + option text = STRING_TOKEN (STR_F81866_GPIO_INPUT), value = 0, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;\ + option text = STRING_TOKEN (STR_F81866_GPIO_OUTPUT), value = 1, flags = RESET_REQUIRED;\ + endoneof;\ + suppressif ideqval SETUP_DATA.F81866LptGpioConfiguration7x[0] == 0;\ + oneof varid = SETUP_DATA.F81866LptGpioConfiguration7xLevel[0],\ + prompt = STRING_TOKEN (STR_F81866_GPIO_LEVEL_PROMPT),\ + help = STRING_TOKEN (STR_F81866_GPIO_LEVEL_PROMPT),\ + option text = STRING_TOKEN (STR_F81866_GPIO_OUTPUT_LOW), value = 0, flags = RESET_REQUIRED;\ + option text = STRING_TOKEN (STR_F81866_GPIO_OUTPUT_HIGH), value = 1, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;\ + endoneof;\ + endif; + // GPIO71 + oneof varid = SETUP_DATA.F81866LptGpioConfiguration7x[1],\ + prompt = STRING_TOKEN (STR_F81866_GPIO71),\ + help = STRING_TOKEN (STR_F81866_GPIO71),\ + option text = STRING_TOKEN (STR_F81866_GPIO_INPUT), value = 0, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;\ + option text = STRING_TOKEN (STR_F81866_GPIO_OUTPUT), value = 1, flags = RESET_REQUIRED;\ + endoneof;\ + suppressif ideqval SETUP_DATA.F81866LptGpioConfiguration7x[1] == 0;\ + oneof varid = SETUP_DATA.F81866LptGpioConfiguration7xLevel[1],\ + prompt = STRING_TOKEN (STR_F81866_GPIO_LEVEL_PROMPT),\ + help = STRING_TOKEN (STR_F81866_GPIO_LEVEL_PROMPT),\ + option text = STRING_TOKEN (STR_F81866_GPIO_OUTPUT_LOW), value = 0, flags = RESET_REQUIRED;\ + option text = STRING_TOKEN (STR_F81866_GPIO_OUTPUT_HIGH), value = 1, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;\ + endoneof;\ + endif; + // GPIO72 + oneof varid = SETUP_DATA.F81866LptGpioConfiguration7x[2],\ + prompt = STRING_TOKEN (STR_F81866_GPIO72),\ + help = STRING_TOKEN (STR_F81866_GPIO72),\ + option text = STRING_TOKEN (STR_F81866_GPIO_INPUT), value = 0, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;\ + option text = STRING_TOKEN (STR_F81866_GPIO_OUTPUT), value = 1, flags = RESET_REQUIRED;\ + endoneof;\ + suppressif ideqval SETUP_DATA.F81866LptGpioConfiguration7x[2] == 0;\ + oneof varid = SETUP_DATA.F81866LptGpioConfiguration7xLevel[2],\ + prompt = STRING_TOKEN (STR_F81866_GPIO_LEVEL_PROMPT),\ + help = STRING_TOKEN (STR_F81866_GPIO_LEVEL_PROMPT),\ + option text = STRING_TOKEN (STR_F81866_GPIO_OUTPUT_LOW), value = 0, flags = RESET_REQUIRED;\ + option text = STRING_TOKEN (STR_F81866_GPIO_OUTPUT_HIGH), value = 1, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;\ + endoneof;\ + endif; + // GPIO73 + oneof varid = SETUP_DATA.F81866LptGpioConfiguration7x[3],\ + prompt = STRING_TOKEN (STR_F81866_GPIO73),\ + help = STRING_TOKEN (STR_F81866_GPIO73),\ + option text = STRING_TOKEN (STR_F81866_GPIO_INPUT), value = 0, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;\ + option text = STRING_TOKEN (STR_F81866_GPIO_OUTPUT), value = 1, flags = RESET_REQUIRED;\ + endoneof;\ + suppressif ideqval SETUP_DATA.F81866LptGpioConfiguration7x[3] == 0;\ + oneof varid = SETUP_DATA.F81866LptGpioConfiguration7xLevel[3],\ + prompt = STRING_TOKEN (STR_F81866_GPIO_LEVEL_PROMPT),\ + help = STRING_TOKEN (STR_F81866_GPIO_LEVEL_PROMPT),\ + option text = STRING_TOKEN (STR_F81866_GPIO_OUTPUT_LOW), value = 0, flags = RESET_REQUIRED;\ + option text = STRING_TOKEN (STR_F81866_GPIO_OUTPUT_HIGH), value = 1, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;\ + endoneof;\ + endif; + // GPIO74 + oneof varid = SETUP_DATA.F81866LptGpioConfiguration7x[4],\ + prompt = STRING_TOKEN (STR_F81866_GPIO74),\ + help = STRING_TOKEN (STR_F81866_GPIO74),\ + option text = STRING_TOKEN (STR_F81866_GPIO_INPUT), value = 0, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;\ + option text = STRING_TOKEN (STR_F81866_GPIO_OUTPUT), value = 1, flags = RESET_REQUIRED;\ + endoneof;\ + suppressif ideqval SETUP_DATA.F81866LptGpioConfiguration7x[4] == 0;\ + oneof varid = SETUP_DATA.F81866LptGpioConfiguration7xLevel[4],\ + prompt = STRING_TOKEN (STR_F81866_GPIO_LEVEL_PROMPT),\ + help = STRING_TOKEN (STR_F81866_GPIO_LEVEL_PROMPT),\ + option text = STRING_TOKEN (STR_F81866_GPIO_OUTPUT_LOW), value = 0, flags = RESET_REQUIRED;\ + option text = STRING_TOKEN (STR_F81866_GPIO_OUTPUT_HIGH), value = 1, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;\ + endoneof;\ + endif; + // GPIO75 + oneof varid = SETUP_DATA.F81866LptGpioConfiguration7x[5],\ + prompt = STRING_TOKEN (STR_F81866_GPIO75),\ + help = STRING_TOKEN (STR_F81866_GPIO75),\ + option text = STRING_TOKEN (STR_F81866_GPIO_INPUT), value = 0, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;\ + option text = STRING_TOKEN (STR_F81866_GPIO_OUTPUT), value = 1, flags = RESET_REQUIRED;\ + endoneof;\ + suppressif ideqval SETUP_DATA.F81866LptGpioConfiguration7x[5] == 0;\ + oneof varid = SETUP_DATA.F81866LptGpioConfiguration7xLevel[5],\ + prompt = STRING_TOKEN (STR_F81866_GPIO_LEVEL_PROMPT),\ + help = STRING_TOKEN (STR_F81866_GPIO_LEVEL_PROMPT),\ + option text = STRING_TOKEN (STR_F81866_GPIO_OUTPUT_LOW), value = 0, flags = RESET_REQUIRED;\ + option text = STRING_TOKEN (STR_F81866_GPIO_OUTPUT_HIGH), value = 1, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;\ + endoneof;\ + endif; + // GPIO76 + oneof varid = SETUP_DATA.F81866LptGpioConfiguration7x[6],\ + prompt = STRING_TOKEN (STR_F81866_GPIO76),\ + help = STRING_TOKEN (STR_F81866_GPIO76),\ + option text = STRING_TOKEN (STR_F81866_GPIO_INPUT), value = 0, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;\ + option text = STRING_TOKEN (STR_F81866_GPIO_OUTPUT), value = 1, flags = RESET_REQUIRED;\ + endoneof;\ + suppressif ideqval SETUP_DATA.F81866LptGpioConfiguration7x[6] == 0;\ + oneof varid = SETUP_DATA.F81866LptGpioConfiguration7xLevel[6],\ + prompt = STRING_TOKEN (STR_F81866_GPIO_LEVEL_PROMPT),\ + help = STRING_TOKEN (STR_F81866_GPIO_LEVEL_PROMPT),\ + option text = STRING_TOKEN (STR_F81866_GPIO_OUTPUT_LOW), value = 0, flags = RESET_REQUIRED;\ + option text = STRING_TOKEN (STR_F81866_GPIO_OUTPUT_HIGH), value = 1, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;\ + endoneof;\ + endif; + // GPIO77 + oneof varid = SETUP_DATA.F81866LptGpioConfiguration7x[7],\ + prompt = STRING_TOKEN (STR_F81866_GPIO77),\ + help = STRING_TOKEN (STR_F81866_GPIO77),\ + option text = STRING_TOKEN (STR_F81866_GPIO_INPUT), value = 0, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;\ + option text = STRING_TOKEN (STR_F81866_GPIO_OUTPUT), value = 1, flags = RESET_REQUIRED;\ + endoneof;\ + suppressif ideqval SETUP_DATA.F81866LptGpioConfiguration7x[7] == 0;\ + oneof varid = SETUP_DATA.F81866LptGpioConfiguration7xLevel[7],\ + prompt = STRING_TOKEN (STR_F81866_GPIO_LEVEL_PROMPT),\ + help = STRING_TOKEN (STR_F81866_GPIO_LEVEL_PROMPT),\ + option text = STRING_TOKEN (STR_F81866_GPIO_OUTPUT_LOW), value = 0, flags = RESET_REQUIRED;\ + option text = STRING_TOKEN (STR_F81866_GPIO_OUTPUT_HIGH), value = 1, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;\ + endoneof;\ + endif; + // GPIO80 + oneof varid = SETUP_DATA.F81866LptGpioConfiguration8x[0],\ + prompt = STRING_TOKEN (STR_F81866_GPIO80),\ + help = STRING_TOKEN (STR_F81866_GPIO80),\ + option text = STRING_TOKEN (STR_F81866_GPIO_INPUT), value = 0, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;\ + option text = STRING_TOKEN (STR_F81866_GPIO_OUTPUT), value = 1, flags = RESET_REQUIRED;\ + endoneof;\ + suppressif ideqval SETUP_DATA.F81866LptGpioConfiguration8x[0] == 0;\ + oneof varid = SETUP_DATA.F81866LptGpioConfiguration8xLevel[0],\ + prompt = STRING_TOKEN (STR_F81866_GPIO_LEVEL_PROMPT),\ + help = STRING_TOKEN (STR_F81866_GPIO_LEVEL_PROMPT),\ + option text = STRING_TOKEN (STR_F81866_GPIO_OUTPUT_LOW), value = 0, flags = RESET_REQUIRED;\ + option text = STRING_TOKEN (STR_F81866_GPIO_OUTPUT_HIGH), value = 1, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;\ + endoneof;\ + endif; + // GPIO81 + oneof varid = SETUP_DATA.F81866LptGpioConfiguration8x[1],\ + prompt = STRING_TOKEN (STR_F81866_GPIO81),\ + help = STRING_TOKEN (STR_F81866_GPIO81),\ + option text = STRING_TOKEN (STR_F81866_GPIO_INPUT), value = 0, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;\ + option text = STRING_TOKEN (STR_F81866_GPIO_OUTPUT), value = 1, flags = RESET_REQUIRED;\ + endoneof;\ + suppressif ideqval SETUP_DATA.F81866LptGpioConfiguration8x[1] == 0;\ + oneof varid = SETUP_DATA.F81866LptGpioConfiguration8xLevel[1],\ + prompt = STRING_TOKEN (STR_F81866_GPIO_LEVEL_PROMPT),\ + help = STRING_TOKEN (STR_F81866_GPIO_LEVEL_PROMPT),\ + option text = STRING_TOKEN (STR_F81866_GPIO_OUTPUT_LOW), value = 0, flags = RESET_REQUIRED;\ + option text = STRING_TOKEN (STR_F81866_GPIO_OUTPUT_HIGH), value = 1, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;\ + endoneof;\ + endif; + // GPIO82 + oneof varid = SETUP_DATA.F81866LptGpioConfiguration8x[2],\ + prompt = STRING_TOKEN (STR_F81866_GPIO82),\ + help = STRING_TOKEN (STR_F81866_GPIO82),\ + option text = STRING_TOKEN (STR_F81866_GPIO_INPUT), value = 0, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;\ + option text = STRING_TOKEN (STR_F81866_GPIO_OUTPUT), value = 1, flags = RESET_REQUIRED;\ + endoneof;\ + suppressif ideqval SETUP_DATA.F81866LptGpioConfiguration8x[2] == 0;\ + oneof varid = SETUP_DATA.F81866LptGpioConfiguration8xLevel[2],\ + prompt = STRING_TOKEN (STR_F81866_GPIO_LEVEL_PROMPT),\ + help = STRING_TOKEN (STR_F81866_GPIO_LEVEL_PROMPT),\ + option text = STRING_TOKEN (STR_F81866_GPIO_OUTPUT_LOW), value = 0, flags = RESET_REQUIRED;\ + option text = STRING_TOKEN (STR_F81866_GPIO_OUTPUT_HIGH), value = 1, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;\ + endoneof;\ + endif; + // GPIO83 + oneof varid = SETUP_DATA.F81866LptGpioConfiguration8x[3],\ + prompt = STRING_TOKEN (STR_F81866_GPIO83),\ + help = STRING_TOKEN (STR_F81866_GPIO83),\ + option text = STRING_TOKEN (STR_F81866_GPIO_INPUT), value = 0, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;\ + option text = STRING_TOKEN (STR_F81866_GPIO_OUTPUT), value = 1, flags = RESET_REQUIRED;\ + endoneof;\ + suppressif ideqval SETUP_DATA.F81866LptGpioConfiguration8x[3] == 0;\ + oneof varid = SETUP_DATA.F81866LptGpioConfiguration8xLevel[3],\ + prompt = STRING_TOKEN (STR_F81866_GPIO_LEVEL_PROMPT),\ + help = STRING_TOKEN (STR_F81866_GPIO_LEVEL_PROMPT),\ + option text = STRING_TOKEN (STR_F81866_GPIO_OUTPUT_LOW), value = 0, flags = RESET_REQUIRED;\ + option text = STRING_TOKEN (STR_F81866_GPIO_OUTPUT_HIGH), value = 1, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;\ + endoneof;\ + endif; + // GPIO84 + oneof varid = SETUP_DATA.F81866LptGpioConfiguration8x[4],\ + prompt = STRING_TOKEN (STR_F81866_GPIO84),\ + help = STRING_TOKEN (STR_F81866_GPIO84),\ + option text = STRING_TOKEN (STR_F81866_GPIO_INPUT), value = 0, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;\ + option text = STRING_TOKEN (STR_F81866_GPIO_OUTPUT), value = 1, flags = RESET_REQUIRED;\ + endoneof;\ + suppressif ideqval SETUP_DATA.F81866LptGpioConfiguration8x[4] == 0;\ + oneof varid = SETUP_DATA.F81866LptGpioConfiguration8xLevel[4],\ + prompt = STRING_TOKEN (STR_F81866_GPIO_LEVEL_PROMPT),\ + help = STRING_TOKEN (STR_F81866_GPIO_LEVEL_PROMPT),\ + option text = STRING_TOKEN (STR_F81866_GPIO_OUTPUT_LOW), value = 0, flags = RESET_REQUIRED;\ + option text = STRING_TOKEN (STR_F81866_GPIO_OUTPUT_HIGH), value = 1, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;\ + endoneof;\ + endif; + // GPIO85 + oneof varid = SETUP_DATA.F81866LptGpioConfiguration8x[5],\ + prompt = STRING_TOKEN (STR_F81866_GPIO85),\ + help = STRING_TOKEN (STR_F81866_GPIO85),\ + option text = STRING_TOKEN (STR_F81866_GPIO_INPUT), value = 0, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;\ + option text = STRING_TOKEN (STR_F81866_GPIO_OUTPUT), value = 1, flags = RESET_REQUIRED;\ + endoneof;\ + suppressif ideqval SETUP_DATA.F81866LptGpioConfiguration8x[5] == 0;\ + oneof varid = SETUP_DATA.F81866LptGpioConfiguration8xLevel[5],\ + prompt = STRING_TOKEN (STR_F81866_GPIO_LEVEL_PROMPT),\ + help = STRING_TOKEN (STR_F81866_GPIO_LEVEL_PROMPT),\ + option text = STRING_TOKEN (STR_F81866_GPIO_OUTPUT_LOW), value = 0, flags = RESET_REQUIRED;\ + option text = STRING_TOKEN (STR_F81866_GPIO_OUTPUT_HIGH), value = 1, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;\ + endoneof;\ + endif; + // GPIO86 + oneof varid = SETUP_DATA.F81866LptGpioConfiguration8x[6],\ + prompt = STRING_TOKEN (STR_F81866_GPIO86),\ + help = STRING_TOKEN (STR_F81866_GPIO86),\ + option text = STRING_TOKEN (STR_F81866_GPIO_INPUT), value = 0, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;\ + option text = STRING_TOKEN (STR_F81866_GPIO_OUTPUT), value = 1, flags = RESET_REQUIRED;\ + endoneof;\ + suppressif ideqval SETUP_DATA.F81866LptGpioConfiguration8x[6] == 0;\ + oneof varid = SETUP_DATA.F81866LptGpioConfiguration8xLevel[6],\ + prompt = STRING_TOKEN (STR_F81866_GPIO_LEVEL_PROMPT),\ + help = STRING_TOKEN (STR_F81866_GPIO_LEVEL_PROMPT),\ + option text = STRING_TOKEN (STR_F81866_GPIO_OUTPUT_LOW), value = 0, flags = RESET_REQUIRED;\ + option text = STRING_TOKEN (STR_F81866_GPIO_OUTPUT_HIGH), value = 1, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;\ + endoneof;\ + endif; + // GPIO87 + oneof varid = SETUP_DATA.F81866LptGpioConfiguration8x[7],\ + prompt = STRING_TOKEN (STR_F81866_GPIO87),\ + help = STRING_TOKEN (STR_F81866_GPIO87),\ + option text = STRING_TOKEN (STR_F81866_GPIO_INPUT), value = 0, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;\ + option text = STRING_TOKEN (STR_F81866_GPIO_OUTPUT), value = 1, flags = RESET_REQUIRED;\ + endoneof;\ + suppressif ideqval SETUP_DATA.F81866LptGpioConfiguration8x[7] == 0;\ + oneof varid = SETUP_DATA.F81866LptGpioConfiguration8xLevel[7],\ + prompt = STRING_TOKEN (STR_F81866_GPIO_LEVEL_PROMPT),\ + help = STRING_TOKEN (STR_F81866_GPIO_LEVEL_PROMPT),\ + option text = STRING_TOKEN (STR_F81866_GPIO_OUTPUT_LOW), value = 0, flags = RESET_REQUIRED;\ + option text = STRING_TOKEN (STR_F81866_GPIO_OUTPUT_HIGH), value = 1, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;\ + endoneof;\ + endif; + endif ; //suppressif ideqval SETUP_DATA.ParallelGpioSettings == 0; + endif; //suppressif NOT ideqval LPT_NV_DATA.DevEnable == 0x0; endform; // Parralel Form #endif //FORM_SET_FORM diff --git a/Board/IO/F81866/F81866.UNI b/Board/IO/F81866/F81866.UNI Binary files differindex 427b94a..bb19e03 100644 --- a/Board/IO/F81866/F81866.UNI +++ b/Board/IO/F81866/F81866.UNI diff --git a/Board/IO/F81866/F81866DXE.C b/Board/IO/F81866/F81866DXE.C index 31849b0..f945c58 100644 --- a/Board/IO/F81866/F81866DXE.C +++ b/Board/IO/F81866/F81866DXE.C @@ -750,9 +750,9 @@ static EFI_STATUS LPT_Init( switch (InitStep) { case isGetSetupData: - // Disable decode? - if((!dev->DeviceInfo->Implemented) || (!dev->NvData.DevEnable)) - LoopCspIoDecodeListInit(NULL,AmiSio); +// // Disable decode? +// if((!dev->DeviceInfo->Implemented) || (!dev->NvData.DevEnable)) +// LoopCspIoDecodeListInit(NULL,AmiSio); break; case isPrsSelect: @@ -784,7 +784,7 @@ static EFI_STATUS LPT_Init( break; case isBeforeActivate: - LoopCspIoDecodeListInit(PciIo,AmiSio); // Enable IODecode +// LoopCspIoDecodeListInit(PciIo,AmiSio); // Enable IODecode //Programm Device Mode register here(if NEEDED)use AmiSioProtocol diff --git a/CRB/CRBPei.c b/CRB/CRBPei.c index 6483ad3..fc93a20 100644 --- a/CRB/CRBPei.c +++ b/CRB/CRBPei.c @@ -323,8 +323,98 @@ static EFI_PEI_PPI_DESCRIPTOR Crb2CustomPpi[] = { // PPI that are notified // External Declaration(s) +#define PORT_SELECT_REGISTER 0x27 + #define GPIO_PROG_SEL BIT2|BIT3 + #define GPIO0_EN 0 + #define GPIO1_EN BIT2 + #define GPIO2_EN BIT3 + +#define MULTI_FUNCTION_SELECT_1_REGISTER 0x28 + #define LPT_GP_EN BIT5 // Function Definition(s) +VOID F81866_CRBPeiClearDevResource( + IN UINT8 Ldn +) +{ + // Seclect device LDN + IoWrite8(F81866_CONFIG_INDEX, F81866_LDN_SEL_REGISTER); + IoWrite8(F81866_CONFIG_DATA, Ldn); + // Deactivate Device + IoWrite8(F81866_CONFIG_INDEX, F81866_ACTIVATE_REGISTER); + IoWrite8(F81866_CONFIG_DATA, F81866_DEACTIVATE_VALUE); + // Clear Base Address + IoWrite8(F81866_CONFIG_INDEX, F81866_BASE1_HI_REGISTER); + IoWrite8(F81866_CONFIG_DATA, 0); + IoWrite8(F81866_CONFIG_INDEX, F81866_BASE1_LO_REGISTER); + IoWrite8(F81866_CONFIG_DATA, 0); + // Clear Interrupt + IoWrite8(F81866_CONFIG_INDEX, F81866_IRQ1_REGISTER); + IoWrite8(F81866_CONFIG_DATA, 0); +// return; +} + +VOID F81866ConfigRegisterWrite(UINT8 Index, UINT8 Data) +{ + IoWrite8(F81866_CONFIG_INDEX, Index); + IoWrite8(F81866_CONFIG_DATA, Data); +} +UINT8 F81866ConfigRegisterRead(UINT8 Index) +{ + UINT8 Data8; + IoWrite8(F81866_CONFIG_INDEX, Index); + Data8 = IoRead8(F81866_CONFIG_DATA); + return Data8; +} +VOID F81866LDNSelect(UINT8 Ldn) +{ + IoWrite8(F81866_CONFIG_INDEX, F81866_LDN_SEL_REGISTER); + IoWrite8(F81866_CONFIG_DATA, Ldn); +} +VOID F81866EnterConfigMode() +{ + IoWrite8(F81866_CONFIG_INDEX, F81866_CONFIG_MODE_ENTER_VALUE); + IoWrite8(F81866_CONFIG_INDEX, F81866_CONFIG_MODE_ENTER_VALUE); +} +VOID F81866ExitConfigMode() +{ + // Exit config mode + IoWrite8(F81866_CONFIG_INDEX, F81866_CONFIG_MODE_EXIT_VALUE); +} +VOID F81866SetGpioPin(IN UINT8 GpioNum, IN UINT8 Type, IN UINT8 Level, IN UINT8 Drive) +{ + UINT8 Data8, Offset; + +// F81866EnterConfigMode(); + F81866LDNSelect(F81866_LDN_GPIO); //GPIO Device Configuration Registers + + if( (GpioNum/10) <= 7 ){ + Offset = ( ~(GpioNum/10) ); + Offset = Offset << 4; + Offset &= 0xF0; + } + else if ( (GpioNum/10) == 8 ) + Offset = 0x88; + Data8 = F81866ConfigRegisterRead(Offset + 3); //Drive Enable Register + Data8 &= ~( 1 << ( GpioNum%10 ) ); + if(Drive == 1) + Data8 |= ( 1 << ( GpioNum%10 ) ); + F81866ConfigRegisterWrite(Offset + 3, Data8); + + Data8 = F81866ConfigRegisterRead(Offset + 1); //Output Data Register + Data8 &= ~( 1 << ( GpioNum%10 ) ); + if(Level == 1) + Data8 |= ( 1 << ( GpioNum%10 ) ); + F81866ConfigRegisterWrite(Offset + 1, Data8); + + Data8 = F81866ConfigRegisterRead(Offset); //Output Enable Register + Data8 &= ~( 1 << ( GpioNum%10 ) ); + if(Type == 0) + Data8 |= ( 1 << ( GpioNum%10 ) ); + F81866ConfigRegisterWrite(Offset, Data8); + +// F81866ExitConfigMode(); +} //--------------------------------------------------------------------------- @@ -359,7 +449,7 @@ EFI_STATUS EFIAPI CRBPEI_Init ( // Get pointer to the CpuIo PPI CpuIo = (*PeiServices)->CpuIo; - Status = SbLib_SetLpcDeviceDecoding(NULL,0x60, 0, dsPS2K); // Decode SB Port 0x60,0x64 +// Status = SbLib_SetLpcDeviceDecoding(NULL,0x60, 0, dsPS2K); // Decode SB Port 0x60,0x64 // Install custom PPI for customization // Customers or OEM can define SSID and GPIO by different platform type @@ -382,6 +472,93 @@ EFI_STATUS EFIAPI CRBPEI_Init ( //#### ASSERT_PEI_ERROR (PeiServices, Status); // Intel Platform Policy Override Sample Code <<< +{ +#include <Setup.h> +#include <Ppi\ReadOnlyVariable2.h> + + EFI_PEI_READ_ONLY_VARIABLE2_PPI *ReadOnlyVariable = NULL; + EFI_GUID gPeiReadOnlyVarPpiGuid = EFI_PEI_READ_ONLY_VARIABLE2_PPI_GUID; + EFI_GUID gSetupGuid = SETUP_GUID; + UINTN VariableSize = sizeof( SETUP_DATA ); + SETUP_DATA SetupData; + + Status = (*PeiServices)->LocatePpi( PeiServices, \ + &gPeiReadOnlyVarPpiGuid, \ + 0, \ + NULL, \ + &ReadOnlyVariable ); + VariableSize = sizeof(SetupData); + Status = ReadOnlyVariable->GetVariable( ReadOnlyVariable, \ + L"Setup", \ + &gSetupGuid, \ + NULL, \ + &VariableSize, \ + &SetupData ); + + // Parallel Port / Gpio multi function selection _Begin >> + if(SetupData.ParallelGpioSettings == 1) { + UINT8 Data8; + + F81866EnterConfigMode(); + + Data8 = F81866ConfigRegisterRead(PORT_SELECT_REGISTER); + Data8 &= ~(GPIO_PROG_SEL); + Data8 |= GPIO0_EN; + + Data8 = F81866ConfigRegisterRead(MULTI_FUNCTION_SELECT_1_REGISTER); + Data8 &= ~(LPT_GP_EN); + //if(SetupData.ParallelGpioSettings == 1) + Data8 |= LPT_GP_EN; + F81866ConfigRegisterWrite(MULTI_FUNCTION_SELECT_1_REGISTER, Data8); + + F81866_CRBPeiClearDevResource(F81866_LDN_LPT); + + F81866LDNSelect(F81866_LDN_GPIO); + // GPIO7x + F81866ConfigRegisterWrite(0x83, 0xFF); // All push pull + F81866ConfigRegisterWrite(0x81, + SetupData.F81866LptGpioConfiguration7xLevel[7] << 7 + | SetupData.F81866LptGpioConfiguration7xLevel[6] << 6 + | SetupData.F81866LptGpioConfiguration7xLevel[5] << 5 + | SetupData.F81866LptGpioConfiguration7xLevel[4] << 4 + | SetupData.F81866LptGpioConfiguration7xLevel[3] << 3 + | SetupData.F81866LptGpioConfiguration7xLevel[2] << 2 + | SetupData.F81866LptGpioConfiguration7xLevel[1] << 1 + | SetupData.F81866LptGpioConfiguration7xLevel[0] ); + F81866ConfigRegisterWrite(0x80, + SetupData.F81866LptGpioConfiguration7x[7] << 7 + | SetupData.F81866LptGpioConfiguration7x[6] << 6 + | SetupData.F81866LptGpioConfiguration7x[5] << 5 + | SetupData.F81866LptGpioConfiguration7x[4] << 4 + | SetupData.F81866LptGpioConfiguration7x[3] << 3 + | SetupData.F81866LptGpioConfiguration7x[2] << 2 + | SetupData.F81866LptGpioConfiguration7x[1] << 1 + | SetupData.F81866LptGpioConfiguration7x[0] ); + // GPIO8x + F81866ConfigRegisterWrite(0x8B, 0xFF); // All push pull + F81866ConfigRegisterWrite(0x89, + SetupData.F81866LptGpioConfiguration8xLevel[7] << 7 + | SetupData.F81866LptGpioConfiguration8xLevel[6] << 6 + | SetupData.F81866LptGpioConfiguration8xLevel[5] << 5 + | SetupData.F81866LptGpioConfiguration8xLevel[4] << 4 + | SetupData.F81866LptGpioConfiguration8xLevel[3] << 3 + | SetupData.F81866LptGpioConfiguration8xLevel[2] << 2 + | SetupData.F81866LptGpioConfiguration8xLevel[1] << 1 + | SetupData.F81866LptGpioConfiguration8xLevel[0] ); + F81866ConfigRegisterWrite(0x88, + SetupData.F81866LptGpioConfiguration8x[7] << 7 + | SetupData.F81866LptGpioConfiguration8x[6] << 6 + | SetupData.F81866LptGpioConfiguration8x[5] << 5 + | SetupData.F81866LptGpioConfiguration8x[4] << 4 + | SetupData.F81866LptGpioConfiguration8x[3] << 3 + | SetupData.F81866LptGpioConfiguration8x[2] << 2 + | SetupData.F81866LptGpioConfiguration8x[1] << 1 + | SetupData.F81866LptGpioConfiguration8x[0] ); + + F81866ExitConfigMode(); + } + // Parallel Port / Gpio multi function selection _End << +} return EFI_SUCCESS; } diff --git a/RomImage/FitcBuild.bat b/RomImage/FitcBuild.bat index 7dea65f..9ff7f11 100644 --- a/RomImage/FitcBuild.bat +++ b/RomImage/FitcBuild.bat @@ -103,7 +103,7 @@ GOTO ImageOutput :ImageOutput IF EXIST %DestDir%\OutImage.bin ECHO Rom_%RomSize%%RomSkue%.bin && move /Y %DestDir%\OutImage.bin Rom_%RomSize%%RomSkue%.bin -IF EXIST Rom_%RomSize%%RomSkue%.bin move /Y Rom_%RomSize%%RomSkue%.bin SZPRJM04.bin +IF EXIST Rom_%RomSize%%RomSkue%.bin move /Y Rom_%RomSize%%RomSkue%.bin SZPRJM05.bin IF EXIST %DestDir%\OutImage_1.bin ECHO Rom00%RomSkue%.bin && move /Y %DestDir%\OutImage_1.bin Rom00%RomSkue%.bin IF EXIST %DestDir%\OutImage_2.bin ECHO Rom01%RomSkue%.bin && move /Y %DestDir%\OutImage_2.bin Rom01%RomSkue%.bin echo Rom_%RomSize%%RomSkue%.bin>ForPfatName.txt |