1/* 2 * Some or all of this work - Copyright (c) 2006 - 2016, Intel Corp. 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without modification, 6 * are permitted provided that the following conditions are met: 7 * 8 * Redistributions of source code must retain the above copyright notice, 9 * this list of conditions and the following disclaimer. 10 * Redistributions in binary form must reproduce the above copyright notice, 11 * this list of conditions and the following disclaimer in the documentation 12 * and/or other materials provided with the distribution. 13 * Neither the name of Intel Corporation nor the names of its contributors 14 * may be used to endorse or promote products derived from this software 15 * without specific prior written permission. 16 * 17 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 23 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 25 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 26 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 */ 28 29/* 30 * Resource Descriptor macros 31 * 32 * Word Space Resource Descriptor Macro 33 */ 34 35Name (p430, Package() { 36 37 // Byte 4 (General Flags) of Word Address Space Descriptor 38 39 ResourceTemplate () { 40 WordSpace (0xc0, ResourceProducer, PosDecode, MinNotFixed, MaxNotFixed, 0x0a, 41 0xf6f7, 0xf8f9, 0xfafb, 0xfcfd, 0xfeff) 42 }, 43 ResourceTemplate () { 44 WordSpace (0xc1, ResourceProducer, PosDecode, MinNotFixed, MaxFixed, 0x1a, 45 0xf6f7, 0xf8f9, 0xfafb, 0xfcfd, 0xfeff) 46 }, 47 ResourceTemplate () { 48 WordSpace (0xc2, ResourceProducer, PosDecode, MinFixed, MaxNotFixed, 0x2a, 49 0xf6f7, 0xf8f9, 0xfafb, 0xfcfd, 0xfeff) 50 }, 51 ResourceTemplate () { 52 WordSpace (0xc3, ResourceProducer, PosDecode, MinFixed, MaxFixed, 0x3a, 53 0xf6f7, 0xf8f9, 0xfafb, 0xfcfd, 0xfeff) 54 }, 55 ResourceTemplate () { 56 WordSpace (0xc4, ResourceProducer, SubDecode, MinNotFixed, MaxNotFixed, 0x4a, 57 0xf6f7, 0xf8f9, 0xfafb, 0xfcfd, 0xfeff) 58 }, 59 ResourceTemplate () { 60 WordSpace (0xc5, ResourceProducer, SubDecode, MinNotFixed, MaxFixed, 0x5a, 61 0xf6f7, 0xf8f9, 0xfafb, 0xfcfd, 0xfeff) 62 }, 63 ResourceTemplate () { 64 WordSpace (0xc6, ResourceProducer, SubDecode, MinFixed, MaxNotFixed, 0x6a, 65 0xf6f7, 0xf8f9, 0xfafb, 0xfcfd, 0xfeff) 66 }, 67 ResourceTemplate () { 68 WordSpace (0xc7, ResourceProducer, SubDecode, MinFixed, MaxFixed, 0x7a, 69 0xf6f7, 0xf8f9, 0xfafb, 0xfcfd, 0xfeff) 70 }, 71 ResourceTemplate () { 72 WordSpace (0xc8, ResourceConsumer, PosDecode, MinNotFixed, MaxNotFixed, 0x8a, 73 0xf6f7, 0xf8f9, 0xfafb, 0xfcfd, 0xfeff) 74 }, 75 ResourceTemplate () { 76 WordSpace (0xc9, ResourceConsumer, PosDecode, MinNotFixed, MaxFixed, 0x9a, 77 0xf6f7, 0xf8f9, 0xfafb, 0xfcfd, 0xfeff) 78 }, 79 ResourceTemplate () { 80 WordSpace (0xca, ResourceConsumer, PosDecode, MinFixed, MaxNotFixed, 0xaa, 81 0xf6f7, 0xf8f9, 0xfafb, 0xfcfd, 0xfeff) 82 }, 83 ResourceTemplate () { 84 WordSpace (0xcb, ResourceConsumer, PosDecode, MinFixed, MaxFixed, 0xba, 85 0xf6f7, 0xf8f9, 0xfafb, 0xfcfd, 0xfeff) 86 }, 87 ResourceTemplate () { 88 WordSpace (0xcc, ResourceConsumer, SubDecode, MinNotFixed, MaxNotFixed, 0xca, 89 0xf6f7, 0xf8f9, 0xfafb, 0xfcfd, 0xfeff) 90 }, 91 ResourceTemplate () { 92 WordSpace (0xcd, ResourceConsumer, SubDecode, MinNotFixed, MaxFixed, 0xda, 93 0xf6f7, 0xf8f9, 0xfafb, 0xfcfd, 0xfeff) 94 }, 95 ResourceTemplate () { 96 WordSpace (0xce, ResourceConsumer, SubDecode, MinFixed, MaxNotFixed, 0xea, 97 0xf6f7, 0xf8f9, 0xfafb, 0xfcfd, 0xfeff) 98 }, 99 ResourceTemplate () { 100 WordSpace (0xff, ResourceConsumer, SubDecode, MinFixed, MaxFixed, 0xfa, 101 0xf6f7, 0xf8f9, 0xfafb, 0xfcfd, 0xfeff) 102 }, 103 104 // Byte 5 (Type Specific Flags) of Word Address Space Descriptor 105 106 ResourceTemplate () { 107 WordSpace (0xc0, , , , , 0x00, 108 0xf6f7, 0xf8f9, 0xfafb, 0xfcfd, 0xfeff) 109 }, 110 ResourceTemplate () { 111 WordSpace (0xc0, , , , , 0xff, 112 0xf6f7, 0xf8f9, 0xfafb, 0xfcfd, 0xfeff) 113 }, 114 115 // Particular cases 116 117 ResourceTemplate () { 118 WordSpace (0xc0, , , , , 0x5a, 119 0xf6f7, 0xf8f9, 0xfafb, 0xfcfd, 0xfeff, 120 , ) 121 }, 122 ResourceTemplate () { 123 WordSpace (0xc0, , , , , 0x5a, 124 0xf6f7, 0xf8f9, 0xfafb, 0xfcfd, 0xfeff, 125 , , ) 126 }, 127 128 // Resource Source 129 130 ResourceTemplate () { 131 WordSpace (0xc0, , , , , 0x5a, 132 0xf6f7, 0xf8f9, 0xfafb, 0xfcfd, 0xfeff, 133 0x01, "") 134 }, 135 ResourceTemplate () { 136 WordSpace (0xc0, , , , , 0x5a, 137 0xf6f7, 0xf8f9, 0xfafb, 0xfcfd, 0xfeff, 138 0x0f, "P") 139 }, 140 ResourceTemplate () { 141 WordSpace (0xc0, , , , , 0x5a, 142 0xf6f7, 0xf8f9, 0xfafb, 0xfcfd, 0xfeff, 143 0xf0, "PATH") 144 }, 145 ResourceTemplate () { 146 WordSpace (0xc0, , , , , 0x5a, 147 0xf6f7, 0xf8f9, 0xfafb, 0xfcfd, 0xfeff, 148 0xff, 149 "!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !\"#$%&'()*", 150 ) 151 }, 152 153 // Particular cases 154 155 ResourceTemplate () { 156 WordSpace (0xc0, ResourceConsumer, SubDecode, MinFixed, MaxFixed, 0x5a, 157 0xf6f7, 0xf8f9, 0xfafb, 0xfcfd, 0xfeff, 158 0xff, "PATHPATHPATH", WSP0) 159 }, 160 ResourceTemplate () { 161 WordSpace (0xc0, ResourceConsumer, SubDecode, MinFixed, MaxFixed, 0, 162 0, 0, 0, 0, 0, 163 0xff, "PATHPATHPATH", ) 164 }, 165 166 // 20051021, relaxation for omitted ResourceSource (bug-fix 70 rejection) 167 ResourceTemplate () { 168 WordSpace (0xc0, , , , , 0x5a, 169 0xf6f7, 0xf8f9, 0xfafb, 0xfcfd, 0xfeff, 170 0x0f) 171 }, 172}) 173 174/* 175ACPI Specification, Revision 3.0, September 2, 2004 1766.4.3.5.3 Word Address Space Descriptor 177 178Memory Word Address Space Descriptor layout: 179 180Byte 0 (Tag Bits): Value=10001000B (0x88) (Type = 1, Large item name = 0x8) 181Byte 1 (Length, bits[7:0]): Variable: Value = 13 (minimum) 182Byte 2 (Length, bits[15:8]): Variable: Value = 0 (minimum) 183Byte 3 (Resource Type): 184 192-255 Hardware Vendor Defined 185Byte 4 (General Flags): 186 Bits[7:4] Reserved (must be 0) 187 Bit[3] Min Address Fixed, _MAF: 188 1 The specified maximum address is fixed 189 0 The specified maximum address is not fixed 190 and can be changed 191 Bit[2] Max Address Fixed,_MIF: 192 1 The specified minimum address is fixed 193 0 The specified minimum address is not fixed 194 and can be changed 195 Bit[1] Decode Type, _DEC: 196 1 This bridge subtractively decodes this address 197 (top level bridges only) 198 0 This bridge positively decodes this address 199 Bit[0] Consumer/Producer: 200 1-This device consumes this resource 201 0-This device produces and consumes this resource 202Byte 5 (Type Specific Flags): 203 Flags that are specific to each resource type. The meaning of the flags 204 in this field depends on the value of the Resource Type field (see above) 205Byte 6 (Address space granularity, _GRA bits[7:0]): 206 A set bit in this mask means that this bit is decoded. All bits less 207 significant than the most significant set bit must be set. (in other 208 words, the value of the full Address Space Granularity field (all 16 209 bits) must be a number (2**n-1). 210Byte 7 (Address space granularity, _GRA bits[15:8]) 211Byte 8 (Address range minimum, _MIN bits [7:0]): 212 For bridges that translate addresses, this is the address space 213 on the secondary side of the bridge 214Byte 9 (Address range minimum, _MIN bits[15:8]) 215Byte 10 (Address range maximum, _MAX bits [7:0]): See comment for _MIN 216Byte 11 (Address range maximum, _MAX bits[15:8]) 217Byte 12 (Address Translation offset, _TRA bits [7:0]): 218 For bridges that translate addresses across the bridge, this is the 219 offset that must be added to the address on the secondary side to obtain 220 the address on the primary side. Non-bridge devices must list 0 for all 221 Address Translation offset bits 222Byte 13 (Address Translation offset, _TRA bits[15:8]) 223Byte 14 (Address Length, _LEN bits [7:0]) 224Byte 15 (Address Length, _LEN bits[15:8]) 225Byte 16 (Resource Source Index): 226 (Optional) Only present if Resource Source (below) is present. This 227 field gives an index to the specific resource descriptor that this 228 device consumes from in the current resource template for the device 229 object pointed to in Resource Source 230String (Resource Source): 231 (Optional) If present, the device that uses this descriptor consumes 232 its resources from the resources produced by the named device object. 233 If not present, the device consumes its resources out of a global pool. 234 If not present, the device consumes this resource from its hierarchical 235 parent. 236*/ 237 238Name (p431, Package() { 239 240 // Byte 4 (General Flags) of Word Address Space Descriptor 241 242 Buffer () {0x88, 0x0d, 0x00, 0xc0, 0x00, 0x0a, 243 0xf7, 0xf6, 0xf9, 0xf8, 0xfb, 0xfa, 0xfd, 0xfc, 0xff, 0xfe, 0x79, 0x00}, 244 Buffer () {0x88, 0x0d, 0x00, 0xc1, 0x08, 0x1a, 245 0xf7, 0xf6, 0xf9, 0xf8, 0xfb, 0xfa, 0xfd, 0xfc, 0xff, 0xfe, 0x79, 0x00}, 246 Buffer () {0x88, 0x0d, 0x00, 0xc2, 0x04, 0x2a, 247 0xf7, 0xf6, 0xf9, 0xf8, 0xfb, 0xfa, 0xfd, 0xfc, 0xff, 0xfe, 0x79, 0x00}, 248 Buffer () {0x88, 0x0d, 0x00, 0xc3, 0x0c, 0x3a, 249 0xf7, 0xf6, 0xf9, 0xf8, 0xfb, 0xfa, 0xfd, 0xfc, 0xff, 0xfe, 0x79, 0x00}, 250 Buffer () {0x88, 0x0d, 0x00, 0xc4, 0x02, 0x4a, 251 0xf7, 0xf6, 0xf9, 0xf8, 0xfb, 0xfa, 0xfd, 0xfc, 0xff, 0xfe, 0x79, 0x00}, 252 Buffer () {0x88, 0x0d, 0x00, 0xc5, 0x0a, 0x5a, 253 0xf7, 0xf6, 0xf9, 0xf8, 0xfb, 0xfa, 0xfd, 0xfc, 0xff, 0xfe, 0x79, 0x00}, 254 Buffer () {0x88, 0x0d, 0x00, 0xc6, 0x06, 0x6a, 255 0xf7, 0xf6, 0xf9, 0xf8, 0xfb, 0xfa, 0xfd, 0xfc, 0xff, 0xfe, 0x79, 0x00}, 256 Buffer () {0x88, 0x0d, 0x00, 0xc7, 0x0e, 0x7a, 257 0xf7, 0xf6, 0xf9, 0xf8, 0xfb, 0xfa, 0xfd, 0xfc, 0xff, 0xfe, 0x79, 0x00}, 258 Buffer () {0x88, 0x0d, 0x00, 0xc8, 0x01, 0x8a, 259 0xf7, 0xf6, 0xf9, 0xf8, 0xfb, 0xfa, 0xfd, 0xfc, 0xff, 0xfe, 0x79, 0x00}, 260 Buffer () {0x88, 0x0d, 0x00, 0xc9, 0x09, 0x9a, 261 0xf7, 0xf6, 0xf9, 0xf8, 0xfb, 0xfa, 0xfd, 0xfc, 0xff, 0xfe, 0x79, 0x00}, 262 Buffer () {0x88, 0x0d, 0x00, 0xca, 0x05, 0xaa, 263 0xf7, 0xf6, 0xf9, 0xf8, 0xfb, 0xfa, 0xfd, 0xfc, 0xff, 0xfe, 0x79, 0x00}, 264 Buffer () {0x88, 0x0d, 0x00, 0xcb, 0x0d, 0xba, 265 0xf7, 0xf6, 0xf9, 0xf8, 0xfb, 0xfa, 0xfd, 0xfc, 0xff, 0xfe, 0x79, 0x00}, 266 Buffer () {0x88, 0x0d, 0x00, 0xcc, 0x03, 0xca, 267 0xf7, 0xf6, 0xf9, 0xf8, 0xfb, 0xfa, 0xfd, 0xfc, 0xff, 0xfe, 0x79, 0x00}, 268 Buffer () {0x88, 0x0d, 0x00, 0xcd, 0x0b, 0xda, 269 0xf7, 0xf6, 0xf9, 0xf8, 0xfb, 0xfa, 0xfd, 0xfc, 0xff, 0xfe, 0x79, 0x00}, 270 Buffer () {0x88, 0x0d, 0x00, 0xce, 0x07, 0xea, 271 0xf7, 0xf6, 0xf9, 0xf8, 0xfb, 0xfa, 0xfd, 0xfc, 0xff, 0xfe, 0x79, 0x00}, 272 Buffer () {0x88, 0x0d, 0x00, 0xff, 0x0f, 0xfa, 273 0xf7, 0xf6, 0xf9, 0xf8, 0xfb, 0xfa, 0xfd, 0xfc, 0xff, 0xfe, 0x79, 0x00}, 274 275 // Byte 5 (Type Specific Flags) of Word Address Space Descriptor 276 277 Buffer () {0x88, 0x0d, 0x00, 0xc0, 0x01, 0x00, 278 0xf7, 0xf6, 0xf9, 0xf8, 0xfb, 0xfa, 0xfd, 0xfc, 0xff, 0xfe, 0x79, 0x00}, 279 Buffer () {0x88, 0x0d, 0x00, 0xc0, 0x01, 0xff, 280 0xf7, 0xf6, 0xf9, 0xf8, 0xfb, 0xfa, 0xfd, 0xfc, 0xff, 0xfe, 0x79, 0x00}, 281 282 // Particular cases 283 284 Buffer () {0x88, 0x0d, 0x00, 0xc0, 0x01, 0x5a, 285 0xf7, 0xf6, 0xf9, 0xf8, 0xfb, 0xfa, 0xfd, 0xfc, 0xff, 0xfe, 0x79, 0x00}, 286 Buffer () {0x88, 0x0d, 0x00, 0xc0, 0x01, 0x5a, 287 0xf7, 0xf6, 0xf9, 0xf8, 0xfb, 0xfa, 0xfd, 0xfc, 0xff, 0xfe, 0x79, 0x00}, 288 289 // Resource Source 290 291 Buffer () {0x88, 0x0f, 0x00, 0xc0, 0x01, 0x5a, 292 0xf7, 0xf6, 0xf9, 0xf8, 0xfb, 0xfa, 0xfd, 0xfc, 0xff, 0xfe, 293 0x01, 0x00, 0x79, 0x00}, 294 Buffer () {0x88, 0x10, 0x00, 0xc0, 0x01, 0x5a, 295 0xf7, 0xf6, 0xf9, 0xf8, 0xfb, 0xfa, 0xfd, 0xfc, 0xff, 0xfe, 296 0x0f, 0x50, 0x00, 0x79, 0x00}, 297 Buffer () {0x88, 0x13, 0x00, 0xc0, 0x01, 0x5a, 298 0xf7, 0xf6, 0xf9, 0xf8, 0xfb, 0xfa, 0xfd, 0xfc, 0xff, 0xfe, 299 0xf0, 0x50, 0x41, 0x54, 0x48, 0x00, 0x79, 0x00}, 300 Buffer () {0x88, 0xd7, 0x00, 0xc0, 0x01, 0x5a, 301 0xf7, 0xf6, 0xf9, 0xf8, 0xfb, 0xfa, 0xfd, 0xfc, 0xff, 0xfe, 302 0xff, 303 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 304 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 305 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 306 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 307 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 308 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 309 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 310 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 311 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 312 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 313 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 314 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x20, 0x21, 315 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 316 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 317 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 318 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 319 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 320 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 321 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 322 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 323 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 324 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 325 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 326 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x20, 0x21, 0x22, 327 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 328 0x00, 0x79, 0x00}, 329 330 // Particular cases 331 332 Buffer () {0x88, 0x1b, 0x00, 0xc0, 0x0f, 0x5a, 333 0xf7, 0xf6, 0xf9, 0xf8, 0xfb, 0xfa, 0xfd, 0xfc, 0xff, 0xfe, 334 0xff, 0x50, 0x41, 0x54, 0x48, 0x50, 0x41, 0x54, 335 0x48, 0x50, 0x41, 0x54, 0x48, 0x00, 0x79, 0x00}, 336 Buffer () {0x88, 0x1b, 0x00, 0xc0, 0x0f, 0x00, 337 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 338 0xff, 0x50, 0x41, 0x54, 0x48, 0x50, 0x41, 0x54, 339 0x48, 0x50, 0x41, 0x54, 0x48, 0x00, 0x79, 0x00}, 340 341 // 20051021, relaxation for omitted ResourceSource (bug-fix 70 rejection) 342 Buffer () {0x88, 0x0e, 0x00, 0xc0, 0x01, 0x5a, 343 0xf7, 0xf6, 0xf9, 0xf8, 0xfb, 0xfa, 0xfd, 0xfc, 0xff, 0xfe, 344 0x0f, 0x79, 0x00}, 345}) 346 347Method(RT16,, Serialized) 348{ 349 Name(ts, "RT16") 350 351 // Emit test header, set the filename 352 353 THDR (ts, "WordSpace Resource Descriptor Macro", __FILE__) 354 355 // Main test case for packages above 356 357 m330(ts, 27, "p430", p430, p431) 358 359 // Check resource descriptor tag offsets 360 361 Store ( 362 ResourceTemplate () { 363 WordSpace (0xc0, ResourceProducer, PosDecode, MinNotFixed, MaxNotFixed, 0x5a, 364 0xf6f7, 0xf8f9, 0xfafb, 0xfcfd, 0xfeff, , , WSP0) 365 WordSpace (0xc0, ResourceConsumer, PosDecode, MinNotFixed, MaxNotFixed, 0x5a, 366 0xf6f7, 0xf8f9, 0xfafb, 0xfcfd, 0xfeff, , , WSP1) 367 }, Local0) 368 369 m331(ts, 1, WSP0._DEC, 0x21, WSP1._DEC, 0xa1, "_DEC") 370 m331(ts, 2, WSP0._MIF, 0x22, WSP1._MIF, 0xa2, "_MIF") 371 m331(ts, 3, WSP0._MAF, 0x23, WSP1._MAF, 0xa3, "_MAF") 372 m331(ts, 7, WSP0._GRA, 0x30, WSP1._GRA, 0xB0, "_GRA") 373 m331(ts, 8, WSP0._MIN, 0x40, WSP1._MIN, 0xC0, "_MIN") 374 m331(ts, 9, WSP0._MAX, 0x50, WSP1._MAX, 0xD0, "_MAX") 375 m331(ts, 10, WSP0._TRA, 0x60, WSP1._TRA, 0xE0, "_TRA") 376 m331(ts, 11, WSP0._LEN, 0x70, WSP1._LEN, 0xF0, "_LEN") 377} 378