mb/ocp/tiogapass: Fix GPIOs
[coreboot2.git] / src / mainboard / aopen / dxplplusu / acpi / superio.asl
blobbb1632971d927b16b3be1b95f49629e39757a2b3
1 /* SPDX-License-Identifier: GPL-2.0-only */
4 /* SuperIO GPIO configuration via logical device 0x0A */
6 Name (MSBF, ResourceTemplate ()
8         IO (Decode16, 0x0000, 0x0000, 0x01, 0x80, _Y1B)
9 })
11 OperationRegion (LPC0, SystemIO, 0x0E00, 0x60)
12 Field (LPC0, ByteAcc, NoLock, Preserve)
14         PME0,   8,
15         Offset (0x02),  PME2,8,
16         Offset (0x04),  PME4,8,
17         Offset (0x0A),  PMEA,8,
18         Offset (0x23),
19                 GC10,8, GC11,8, GC12,8, GC13,8, GC14,8, GC15,8, GC16,8, GC17,8,
20                 GC20,8, GC21,8, GC22,8, GC23,8, GC24,8, GC25,8, GC26,8, GC27,8,
21                 GC30,8, GC31,8, GC32,8, GC33,8, GC34,8, GC35,8, GC36,8, GC37,8,
22                 GC40,8, GC41,8, GC42,8, GC43,8,
24         Offset (0x3F),
25                 GC50,8, GC51,8, GC52,8, GC53,8, GC54,8, GC55,8, GC56,8, GC57,8,
26                 GC60,8, GC61,8,
28         Offset (0x4B),
29                 GP_1,8, GP_2,8, GP_3,8, GP_4,8, GP_5,8, GP_6,8,
30         Offset (0x56),  FAN1,8,
31         Offset (0x5D),  LED1,8, LED2,8,
34 OperationRegion (SMC1, SystemIO, 0x2E, 0x02)
35 Field (SMC1, ByteAcc, NoLock, Preserve)
37         INDX,   8,      DATA,   8
40 IndexField (INDX, DATA, ByteAcc, NoLock, Preserve)
42         Offset (0x07),  LDN,    8,
43         Offset (0x22),  PWRC,   8,
44         Offset (0x30),  ACTR,   8,
45         Offset (0x60),
46                 IOAH,   8,      IOAL,   8,
47                 IOBH,   8,      IOBL,   8,
49         Offset (0x70),  INTR,   8,
50         Offset (0x72),  INT1,   8,
51         Offset (0x74),  DMCH,   8,
52         Offset (0xB2),  SPS1,   8,      SPS2,   8,
53         Offset (0xB8),  D2TS,   8,
54         Offset (0xF0),  OPT1,   8,      OPT2,   8,      OPT3,   8,
55         Offset (0xF4),  WDTC,   8,
56         Offset (0xF6),  GP01,   8,      GP02,   8,      GP04,   8
59 Method (ECFG, 0, NotSerialized)
61         INDX = 0x55
63 Method (XCFG, 0, NotSerialized)
65         INDX = 0xAA
68 Method (_CRS, 0, NotSerialized)
70         CreateWordField (MSBF, \_SB.PCI0.ICH0.SMSC._Y1B._MIN, IOM1)
71         CreateWordField (MSBF, \_SB.PCI0.ICH0.SMSC._Y1B._MAX, IOM2)
72         CreateByteField (MSBF, \_SB.PCI0.ICH0.SMSC._Y1B._LEN, IOML)
74         ECFG ()
75         \_SB.PCI0.ICH0.SMSC.LDN = 0x0A
76         IOM1 = 0x00
77         IOM2 = 0x00
78         IOM1 |= \_SB.PCI0.ICH0.SMSC.IOAH
79         IOM1 <<= 8
80         IOM1 |= \_SB.PCI0.ICH0.SMSC.IOAL
81         IOM2 = IOM1
82         If (IOM1 != 0)
83         {
84                 IOML = 0x80
85         }
86         XCFG ()
88         Return (MSBF)
92 Method (_INI, 0, NotSerialized)
94         /* GPIO configuration */
95         GC10 = 0x00
96         GC11 = 0x81
97         GC17 = 0x00
98         GC21 = 0x0c
99         GC22 = 0x00
100         GC27 = 0x04
101         GC30 = 0x04
102         GC31 = 0x01
103         GC32 = 0x01
104         GC33 = 0x01
105         GC34 = 0x01 /* GPI password jumper */
106         GC35 = 0x01 /* GPI scsi enable jumper */
107         GC42 = 0x01  /* GPI */
108         GC60 = 0x86 /* led 1 */
109         GC61 = 0x81 /* led 2 ?? */
111         /* GPIO initial output levels */
112         Local0 = GP_1
113         Local0 &= 0x7C
114         Local0 |= 0x81
115         GP_1 = Local0
117         Local0 = GP_2
118         Local0 &= 0xFE
119         Local0 |= 0
120         GP_2 = Local0
122         Local0 = GP_3
123         Local0 &= 0x7F
124         Local0 |= 0x80
125         GP_3 = Local0
127         Local0 = GP_4
128         Local0 &= 0x7F
129         Local0 |= 0
130         GP_4 = Local0
132         /* Power Led */
133         Local0 = LED1
134         Local0 &= 0xfc
135         Local0 |= 1
136         LED1 = Local0
140 Method (MLED, 1, NotSerialized)
142         If (Arg0 == 0x00)
143         {
144                 LED1 = 0x00
145         }
147         If (Arg0 == 0x01 || Arg0 == 0x02)
148         {
149                 LED1 = 0x01
150         }
152         If (Arg0 == 0x03)
153         {
154                 LED1 = 0x02
155         }
157         If (Arg0 == 0x04 || Arg0 == 0x05)
158         {
159                 LED1 = 0x03
160         }