summaryrefslogtreecommitdiff
path: root/Core/EM/ACPI/GameMpu.asl
blob: 7364e8cb6daec5ae3975095726086ccd08984d78 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
//**********************************************************************
//**********************************************************************
//**                                                                  **
//**        (C)Copyright 1985-2009, American Megatrends, Inc.         **
//**                                                                  **
//**                       All Rights Reserved.                       **
//**                                                                  **
//**             5555 Oakbrook Pkwy, Norcross, GA 30093               **
//**                                                                  **
//**                       Phone: (770)-246-8600                      **
//**                                                                  **
//**********************************************************************
//**********************************************************************
// $Header: /Alaska/BIN/Modules/ACPI/Template/Core/GameMpu.asl 3     3/26/09 4:53p Oleksiyy $
//
// $Revision: 3 $
//
// $Date: 3/26/09 4:53p $
//**********************************************************************;
// Revision History
// ----------------
// $Log: /Alaska/BIN/Modules/ACPI/Template/Core/GameMpu.asl $
// 
// 3     3/26/09 4:53p Oleksiyy
// New ACPI Core implementation - improves logic, execution time and
// memory usage of ACPI module.
// 
// 2     4/03/06 4:05p Felixp
// New Super I/O infrastructure Support
// 
// 1     3/24/05 5:01p Sivagarn
// 
// 1     2/03/05 6:42p Sivagarn
// 0ABHI001 Check in
// 
// 1     7/27/04 2:48p Yakovlevs
// 
// 4     03/04/07 5:40p Chung
// Modify all I/O beta version
// 
// 3     9/06/02 10:53a Alexp
// Add SourceSafe headers to all core asl files
// 
//
//**********************************************************************;
// Combined Game & Midi Logical Device 
//**********************************************************************;
// Generic Game Port
//-----------------------------------------------------------------------
// Category # :0x08
Device(GAME){
	Name(_HID, EISAID("PNPB02F"))		//PnP ID for GamePort
	Method(_STA, 0) {Return(DSTA(8))}	//Get status
//	Method(_DIS, 0) {DCNT(8,0)}		//Disable
//-----------------------------------------------------------------------
// GamePort Current Resource template (to be returned by _CRS)
//-----------------------------------------------------------------------
	Name(GMCR, ResourceTemplate(){
		IO(Decode16, 0x201, 0x201, 1, 8, GMIO)
	})

	Method(_CRS, 0){
		CreateByteField(GMCR, 0x02, IOLO)	//Range Min Base LSB
		CreateByteField(GMCR, 0x03, IOHI)	//Range Min Base MSB
		CreateWordField(GMCR, 0x02, IOHL)	//Range Min Base Word
		CreateWordField(GMCR, 0x04, IORL)	//Range Max Base Word

		ENFG(CGLD(8))		//Enter Config Mode, Select LDN

// Write Current Settings into Buffer for IO Descriptor
		Store(IOAH, IOHI)	//Get IO Base MSB
		Store(IOAL, IOLO)	//Get IO Base LSB
		Store(IOHL, IORL)	//Set MaxBase = MinBase

		EXFG()			//Exit Config Mode
		Return(GMCR)		//Return Byte Stream
	}

	Method(_SRS, 1){
		CreateByteField (Arg0, 0x02, POLB)	// Range Min Base LSB
		CreateByteField (Arg0, 0x03, POHB)	// Range Min Base MSB

		ENFG(CGLD(8))		// Enter Config Mode, Select LDN

// Set Base IO Address
		Store(POLB, IOAL)	// Set IO Base LSB
		Store(POHB, IOAH)	// Set IO Base MSB
// Enable ACTR
		DCNT(8, 1)		// Enable Device (Routing)
		EXFG()			// Exit Config Mode
	}
//-----------------------------------------------------------------------
// GamePort Possible Resources (returned by _PRS)
//-----------------------------------------------------------------------
//NOTE: _PRS MUST be the NAME not a METHOD object 
//to have GENERICSIO.C working right! 
//-----------------------------------------------------------------------
	Name(_PRS, ResourceTemplate(){
		StartDependentFn(0,0) {
			IO(Decode16, 0x201, 0x201, 1, 8)
		}
		StartDependentFnNoPri(){
			IO(Decode16, 0x209, 0x209, 1, 8)
		}
		EndDependentFn()
	})
}
// End Of GamePort //////////////////////////////////////////////////////
// Win627 specific Combined Game & Midi Logical Device 
// IO ports are defined at offset 0x62, 0x63 of LDN configuratsion space
//**********************************************************************;
// Generic MPU 401 Device
//**********************************************************************;
// Category # :0x05
Device(MIDI){
	Name(_HID, EISAID("PNPB006"))	//PnP ID for GamePort
	Method(_STA, 0) {Return(DSTA(5))}	//Get status
//	Method(_DIS, 0) {DCNT(5,0)}	//Disable
//-----------------------------------------------------------------------
// MIDIPort Current Resources template (returned by _CRS)
//-----------------------------------------------------------------------
	Name(MDCR, ResourceTemplate(){
		IO(Decode16, 0x300, 0x300, 1, 2, MDIO)
		IRQNoFlags(MBI1) {5}
	})

	Method(_CRS, 0){
		CreateByteField(MDCR, 0x02, IOLO)	//Range Min Base LSB
		CreateByteField(MDCR, 0x03, IOHI)	//Range Min Base MSB
		CreateWordField(MDCR, 0x02, IOHL)	//Range Min Base Word
		CreateWordField(MDCR, 0x04, IORL)	//Range Max Base Word
		CreateWordField(MDCR, 0x09, MIRQ)	//IRQ Mask (word)

		ENFG(CGLD(5))		//Enter Config Mode, Select LDN

// Write Current Settings into Buffer for IO Descriptor
		Store(IOH2, IOHI)	//Get IO Base MSB
		Store(IOL2, IOLO)	//Get IO Base LSB
		Store(IOHL, IORL)	//Set MaxBase = MinBase
// Write Current Settings into IRQ descriptor
		ShiftLeft(1, INTR, MIRQ)

		EXFG()			//Exit Config Mode
		Return(MDCR)		//Return Byte Stream
	}

	Method(_SRS, 1){
// Arg0 - PnP Resource String to set
		CreateByteField (Arg0, 0x02, POLB)	//Range Min Base LSB
		CreateByteField (Arg0, 0x03, POHB)	//Range Min Base MSB
		CreateWordField (Arg0, 0x09, MIRQ)	//IRQ mask (word)

		ENFG(CGLD(5))		//Enter Config Mode, Select LDN

// Set Base IO Address
		Store(POLB, IOL2)	//Set IO Base LSB
		Store(POHB, IOH2)	//Set IO Base MSB

// Set IRQ
		FindSetRightBit(MIRQ, Local0)
		Subtract(Local0, 1, INTR)

		DCNT(5, 1)		//Enable Device (Routing)
		EXFG()			//Exit Config Mode
	}

//-----------------------------------------------------------------------
// MIDIPort Possible Resources (returned by _PRS)
//------------------------------------------------------------------------
//NOTE: _PRS MUST be the NAME not a METHOD object 
//to have GENERICSIO.C working right! 
//-----------------------------------------------------------------------
	Name(_PRS, ResourceTemplate(){
		StartDependentFnNoPri()	{
			IO(Decode16, 0x300, 0x300, 1, 2)
			IRQNoFlags() {5,7,9,10,11}
		}
		StartDependentFnNoPri()	{
			IO(Decode16, 0x330, 0x330, 1, 2)
			IRQNoFlags() {5,7,9,10,11}
		}
		EndDependentFn()
	})
}
// End Of Midi //////////////////////////////////////////////////////////