1/* SPDX-License-Identifier: GPL-2.0-only */ 2 3 4/* SuperIO GPIO configuration via logical device 0x0A */ 5 6Name (MSBF, ResourceTemplate () 7{ 8 IO (Decode16, 0x0000, 0x0000, 0x01, 0x80, _Y1B) 9}) 10 11OperationRegion (LPC0, SystemIO, 0x0E00, 0x60) 12Field (LPC0, ByteAcc, NoLock, Preserve) 13{ 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, 23 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, 27 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, 32} 33 34OperationRegion (SMC1, SystemIO, 0x2E, 0x02) 35Field (SMC1, ByteAcc, NoLock, Preserve) 36{ 37 INDX, 8, DATA, 8 38} 39 40IndexField (INDX, DATA, ByteAcc, NoLock, Preserve) 41{ 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, 48 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 57} 58 59Method (ECFG, 0, NotSerialized) 60{ 61 INDX = 0x55 62} 63Method (XCFG, 0, NotSerialized) 64{ 65 INDX = 0xAA 66} 67 68Method (_CRS, 0, NotSerialized) 69{ 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) 73 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 () 87 88 Return (MSBF) 89} 90 91 92Method (_INI, 0, NotSerialized) 93{ 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 ?? */ 110 111 /* GPIO initial output levels */ 112 Local0 = GP_1 113 Local0 &= 0x7C 114 Local0 |= 0x81 115 GP_1 = Local0 116 117 Local0 = GP_2 118 Local0 &= 0xFE 119 Local0 |= 0 120 GP_2 = Local0 121 122 Local0 = GP_3 123 Local0 &= 0x7F 124 Local0 |= 0x80 125 GP_3 = Local0 126 127 Local0 = GP_4 128 Local0 &= 0x7F 129 Local0 |= 0 130 GP_4 = Local0 131 132 /* Power Led */ 133 Local0 = LED1 134 Local0 &= 0xfc 135 Local0 |= 1 136 LED1 = Local0 137 138} 139 140Method (MLED, 1, NotSerialized) 141{ 142 If (Arg0 == 0x00) 143 { 144 LED1 = 0x00 145 } 146 147 If (Arg0 == 0x01 || Arg0 == 0x02) 148 { 149 LED1 = 0x01 150 } 151 152 If (Arg0 == 0x03) 153 { 154 LED1 = 0x02 155 } 156 157 If (Arg0 == 0x04 || Arg0 == 0x05) 158 { 159 LED1 = 0x03 160 } 161} 162