diff options
author | raywu <raywu@aaeon.com.tw> | 2018-09-17 10:57:55 +0800 |
---|---|---|
committer | raywu <raywu@aaeon.com.tw> | 2018-09-17 10:57:55 +0800 |
commit | f48d7df7467a4c801cdbce5cc6cd748979f8baff (patch) | |
tree | df5be5b093bb07c08981e7bb9946a3080d548146 /Board | |
parent | cd584fdf118ddbb2068bf2ab8c046377125aa595 (diff) | |
download | zprj-f48d7df7467a4c801cdbce5cc6cd748979f8baff.tar.xz |
F81216 ISA/PCI IRQ Share Mode Control
Diffstat (limited to 'Board')
-rw-r--r-- | Board/EM/Platform/AcpiPlatform.c | 6 | ||||
-rw-r--r-- | Board/EM/Platform/Library/Protocol/GlobalNvsArea/GlobalNvsArea.h | 1 | ||||
-rw-r--r-- | Board/IO/F81216/F81216.ASL | 16 | ||||
-rw-r--r-- | Board/IO/F81216/F81216.SD | 9 | ||||
-rw-r--r-- | Board/IO/F81216/F81216.UNI | bin | 12638 -> 13094 bytes | |||
-rw-r--r-- | Board/IO/F81216/F81216DXE.C | 24 |
6 files changed, 53 insertions, 3 deletions
diff --git a/Board/EM/Platform/AcpiPlatform.c b/Board/EM/Platform/AcpiPlatform.c index c0c9bfa..e7cbe97 100644 --- a/Board/EM/Platform/AcpiPlatform.c +++ b/Board/EM/Platform/AcpiPlatform.c @@ -1066,7 +1066,11 @@ AcpiPlatformInit ( } mGlobalNvsArea.Area->Revision = GLOBAL_NVS_AREA_REVISION_1; - + +{ + mGlobalNvsArea.Area->ComIrqShareMode = gSetupData->F81216ComIrqShareMode ; +} + Status = pBS->InstallMultipleProtocolInterfaces (&ImageHandle, &gEfiGlobalNvsAreaProtocolGuid, &mGlobalNvsArea, diff --git a/Board/EM/Platform/Library/Protocol/GlobalNvsArea/GlobalNvsArea.h b/Board/EM/Platform/Library/Protocol/GlobalNvsArea/GlobalNvsArea.h index da4d4ee..0734577 100644 --- a/Board/EM/Platform/Library/Protocol/GlobalNvsArea/GlobalNvsArea.h +++ b/Board/EM/Platform/Library/Protocol/GlobalNvsArea/GlobalNvsArea.h @@ -522,6 +522,7 @@ typedef struct { UINT8 SPST; // (688) SATA port state, Bit0 - Port0, Bit1 - Port1, Bit2 - Port2, Bit3 - Port3 UINT8 ECLP; // (689) EC Low Power Mode: 1 - Enabled, 0 - Disabled UINT8 INSC; // (690) Intel RMT Configuration + UINT8 ComIrqShareMode; } EFI_GLOBAL_NVS_AREA; #pragma pack () diff --git a/Board/IO/F81216/F81216.ASL b/Board/IO/F81216/F81216.ASL index 4158855..6fd12c0 100644 --- a/Board/IO/F81216/F81216.ASL +++ b/Board/IO/F81216/F81216.ASL @@ -415,7 +415,13 @@ Device(SIO2) { // Set IRQ Type:porting according INTT //AMI_TODO: If(And(INTT,0x01)){ - Store(0x18, IRQS) // IRQ Type: Active-Low-Level-Triggered,Shared. + //Store(0x18, IRQS) // IRQ Type: Active-Low-Level-Triggered,Shared. + If( And(INTT, 0x02) ) { + Store(0x19, IRQS) + } + Else { + Store(0x18, IRQS) + } } Else { Store(1, IRQS) // IRQ Type: Active-High-Edge-Triggered,No-Shared(default) } @@ -465,7 +471,13 @@ Device(SIO2) { FindSetRightBit(IRQT, Local0) Subtract(Local0, 1, INTR) //Set IRQ flag,AMI_TODO: bit4:_SHR,bit3:_LL,bit0:_HE - Store(0x01, INTT) //some relative share,active-low/high registers + //Store(0x01, INTT) //some relative share,active-low/high registers + If( LEqual(CISM, 0) ) { + Store(0x01, INTT) + } + Else { + Store(0x03, INTT) + } }Else{ Store(0, INTR) //No IRQ used } diff --git a/Board/IO/F81216/F81216.SD b/Board/IO/F81216/F81216.SD index 37ffad0..d731aa7 100644 --- a/Board/IO/F81216/F81216.SD +++ b/Board/IO/F81216/F81216.SD @@ -64,6 +64,7 @@ /* These definitions will be converted by the build process /* to a definitions of SETUP_DATA fields. /***********************************************************/ + UINT8 F81216ComIrqShareMode ; #endif //SETUP_DATA_DEFINITION //------------------------------------------------------------------------- @@ -187,6 +188,14 @@ endif; #endif + SEPARATOR + oneof varid = SETUP_DATA.F81216ComIrqShareMode,\ + prompt = STRING_TOKEN (STR_IRQ_SHARE_MODE),\ + help = STRING_TOKEN (STR_IRQ_SHARE_MODE),\ + option text = STRING_TOKEN (STR_PCI_SHARE_MODE), value = 0, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED, key = 0;\ + option text = STRING_TOKEN (STR_ISA_SHARE_MODE), value = 1, flags = RESET_REQUIRED, key = 0;\ + endoneof; + endform;//SIO Form //////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/Board/IO/F81216/F81216.UNI b/Board/IO/F81216/F81216.UNI Binary files differindex 2df933c..f2df75e 100644 --- a/Board/IO/F81216/F81216.UNI +++ b/Board/IO/F81216/F81216.UNI diff --git a/Board/IO/F81216/F81216DXE.C b/Board/IO/F81216/F81216DXE.C index 03160b4..4963c1b 100644 --- a/Board/IO/F81216/F81216DXE.C +++ b/Board/IO/F81216/F81216DXE.C @@ -480,6 +480,30 @@ static EFI_STATUS COM_Init( SioCfgMode(dev->Owner, FALSE); dev->VlData.DevIrq1=dev->ResOwner->VlData.DevIrq1; } + + { + EFI_GUID SetupGuid = SETUP_GUID; + UINTN Size = sizeof(SETUP_DATA); + SETUP_DATA SetupData; + + Status = pRS->GetVariable ( L"Setup", \ + &SetupGuid, \ + NULL,\ + &Size, \ + &SetupData ); + + Status=AmiSio->Access(AmiSio,FALSE,FALSE,0x70,&rv); + // PCI Share Mode + if( SetupData.F81216ComIrqShareMode == 0 ) { + rv &= ~(BIT5) ; + rv |= BIT4 ; + } + else { // ISA Share Mode + rv |= BIT5 ; + rv |= BIT4 ; + } + Status=AmiSio->Access(AmiSio,TRUE,FALSE,0x70,&rv); + } break; case isAfterActivate: |