summaryrefslogtreecommitdiff
path: root/Board/IO/F81216
diff options
context:
space:
mode:
authorraywu <raywu@aaeon.com.tw>2018-09-17 10:57:55 +0800
committerraywu <raywu@aaeon.com.tw>2018-09-17 10:57:55 +0800
commitf48d7df7467a4c801cdbce5cc6cd748979f8baff (patch)
treedf5be5b093bb07c08981e7bb9946a3080d548146 /Board/IO/F81216
parentcd584fdf118ddbb2068bf2ab8c046377125aa595 (diff)
downloadzprj-f48d7df7467a4c801cdbce5cc6cd748979f8baff.tar.xz
F81216 ISA/PCI IRQ Share Mode Control
Diffstat (limited to 'Board/IO/F81216')
-rw-r--r--Board/IO/F81216/F81216.ASL16
-rw-r--r--Board/IO/F81216/F81216.SD9
-rw-r--r--Board/IO/F81216/F81216.UNIbin12638 -> 13094 bytes
-rw-r--r--Board/IO/F81216/F81216DXE.C24
4 files changed, 47 insertions, 2 deletions
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
index 2df933c..f2df75e 100644
--- a/Board/IO/F81216/F81216.UNI
+++ b/Board/IO/F81216/F81216.UNI
Binary files differ
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: