summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorraywu <raywu@aaeon.com>2018-06-26 17:11:45 +0800
committerraywu <raywu@aaeon.com>2018-06-26 17:11:45 +0800
commite26e253b51467089b84d5fbc1ba3dcfda960b2cd (patch)
treeefef838b4394c7ee313f5b026ee62403da4481fb
parent0d5a28d62e1b472347a282326942be3425541c17 (diff)
downloadzprj-e26e253b51467089b84d5fbc1ba3dcfda960b2cd.tar.xz
Support Setup Option to Control LPT/DIO
-rw-r--r--Board/EM/Setup/Setup.unibin24798 -> 24798 bytes
-rw-r--r--Board/IO/F81866/BSP/PeiIoTable.h2
-rw-r--r--Board/IO/F81866/F81866.SD265
-rw-r--r--Board/IO/F81866/F81866.UNIbin35402 -> 38024 bytes
-rw-r--r--Board/IO/F81866/F81866DXE.C8
-rw-r--r--CRB/CRBPei.c179
-rw-r--r--RomImage/FitcBuild.bat2
7 files changed, 448 insertions, 8 deletions
diff --git a/Board/EM/Setup/Setup.uni b/Board/EM/Setup/Setup.uni
index cf7063d..42576ff 100644
--- a/Board/EM/Setup/Setup.uni
+++ b/Board/EM/Setup/Setup.uni
Binary files differ
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
index 427b94a..bb19e03 100644
--- a/Board/IO/F81866/F81866.UNI
+++ b/Board/IO/F81866/F81866.UNI
Binary files differ
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