ReactOS 0.4.15-dev-7958-gcd0bb1a
rsserial.c
Go to the documentation of this file.
1/*******************************************************************************
2 *
3 * Module Name: rsserial - GPIO/SerialBus resource descriptors
4 *
5 ******************************************************************************/
6
7/*
8 * Copyright (C) 2000 - 2022, Intel Corp.
9 * All rights reserved.
10 *
11 * Redistribution and use in source and binary forms, with or without
12 * modification, are permitted provided that the following conditions
13 * are met:
14 * 1. Redistributions of source code must retain the above copyright
15 * notice, this list of conditions, and the following disclaimer,
16 * without modification.
17 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18 * substantially similar to the "NO WARRANTY" disclaimer below
19 * ("Disclaimer") and any redistribution must be conditioned upon
20 * including a substantially similar Disclaimer requirement for further
21 * binary redistribution.
22 * 3. Neither the names of the above-listed copyright holders nor the names
23 * of any contributors may be used to endorse or promote products derived
24 * from this software without specific prior written permission.
25 *
26 * Alternatively, this software may be distributed under the terms of the
27 * GNU General Public License ("GPL") version 2 as published by the Free
28 * Software Foundation.
29 *
30 * NO WARRANTY
31 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
34 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41 * POSSIBILITY OF SUCH DAMAGES.
42 */
43
44#include "acpi.h"
45#include "accommon.h"
46#include "acresrc.h"
47
48#define _COMPONENT ACPI_RESOURCES
49 ACPI_MODULE_NAME ("rsserial")
50
51
52/*******************************************************************************
53 *
54 * AcpiRsConvertGpio
55 *
56 ******************************************************************************/
57
59{
63
65 sizeof (AML_RESOURCE_GPIO),
66 0},
67
68 /*
69 * These fields are contiguous in both the source and destination:
70 * RevisionId
71 * ConnectionType
72 */
73 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.Gpio.RevisionId),
74 AML_OFFSET (Gpio.RevisionId),
75 2},
76
77 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Gpio.ProducerConsumer),
78 AML_OFFSET (Gpio.Flags),
79 0},
80
81 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Gpio.Shareable),
82 AML_OFFSET (Gpio.IntFlags),
83 3},
84
85 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Gpio.WakeCapable),
86 AML_OFFSET (Gpio.IntFlags),
87 4},
88
89 {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET (Data.Gpio.IoRestriction),
90 AML_OFFSET (Gpio.IntFlags),
91 0},
92
93 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Gpio.Triggering),
94 AML_OFFSET (Gpio.IntFlags),
95 0},
96
97 {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET (Data.Gpio.Polarity),
98 AML_OFFSET (Gpio.IntFlags),
99 1},
100
101 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.Gpio.PinConfig),
102 AML_OFFSET (Gpio.PinConfig),
103 1},
104
105 /*
106 * These fields are contiguous in both the source and destination:
107 * DriveStrength
108 * DebounceTimeout
109 */
110 {ACPI_RSC_MOVE16, ACPI_RS_OFFSET (Data.Gpio.DriveStrength),
111 AML_OFFSET (Gpio.DriveStrength),
112 2},
113
114 /* Pin Table */
115
116 {ACPI_RSC_COUNT_GPIO_PIN, ACPI_RS_OFFSET (Data.Gpio.PinTableLength),
117 AML_OFFSET (Gpio.PinTableOffset),
118 AML_OFFSET (Gpio.ResSourceOffset)},
119
121 AML_OFFSET (Gpio.PinTableOffset),
122 0},
123
124 /* Resource Source */
125
126 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.Gpio.ResourceSource.Index),
127 AML_OFFSET (Gpio.ResSourceIndex),
128 1},
129
130 {ACPI_RSC_COUNT_GPIO_RES, ACPI_RS_OFFSET (Data.Gpio.ResourceSource.StringLength),
131 AML_OFFSET (Gpio.ResSourceOffset),
132 AML_OFFSET (Gpio.VendorOffset)},
133
134 {ACPI_RSC_MOVE_GPIO_RES, ACPI_RS_OFFSET (Data.Gpio.ResourceSource.StringPtr),
135 AML_OFFSET (Gpio.ResSourceOffset),
136 0},
137
138 /* Vendor Data */
139
140 {ACPI_RSC_COUNT_GPIO_VEN, ACPI_RS_OFFSET (Data.Gpio.VendorLength),
141 AML_OFFSET (Gpio.VendorLength),
142 1},
143
144 {ACPI_RSC_MOVE_GPIO_RES, ACPI_RS_OFFSET (Data.Gpio.VendorData),
145 AML_OFFSET (Gpio.VendorOffset),
146 0},
147};
148
149/*******************************************************************************
150 *
151 * AcpiRsConvertPinfunction
152 *
153 ******************************************************************************/
154
156{
160
163 0},
164
165 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.PinFunction.RevisionId),
166 AML_OFFSET (PinFunction.RevisionId),
167 1},
168
169 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.PinFunction.Shareable),
170 AML_OFFSET (PinFunction.Flags),
171 0},
172
173 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.PinFunction.PinConfig),
174 AML_OFFSET (PinFunction.PinConfig),
175 1},
176
177 {ACPI_RSC_MOVE16, ACPI_RS_OFFSET (Data.PinFunction.FunctionNumber),
178 AML_OFFSET (PinFunction.FunctionNumber),
179 2},
180
181 /* Pin Table */
182
183 /*
184 * It is OK to use GPIO operations here because none of them refer GPIO
185 * structures directly but instead use offsets given here.
186 */
187
188 {ACPI_RSC_COUNT_GPIO_PIN, ACPI_RS_OFFSET (Data.PinFunction.PinTableLength),
189 AML_OFFSET (PinFunction.PinTableOffset),
190 AML_OFFSET (PinFunction.ResSourceOffset)},
191
192 {ACPI_RSC_MOVE_GPIO_PIN, ACPI_RS_OFFSET (Data.PinFunction.PinTable),
193 AML_OFFSET (PinFunction.PinTableOffset),
194 0},
195
196 /* Resource Source */
197
198 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.PinFunction.ResourceSource.Index),
199 AML_OFFSET (PinFunction.ResSourceIndex),
200 1},
201
202 {ACPI_RSC_COUNT_GPIO_RES, ACPI_RS_OFFSET (Data.PinFunction.ResourceSource.StringLength),
203 AML_OFFSET (PinFunction.ResSourceOffset),
204 AML_OFFSET (PinFunction.VendorOffset)},
205
206 {ACPI_RSC_MOVE_GPIO_RES, ACPI_RS_OFFSET (Data.PinFunction.ResourceSource.StringPtr),
207 AML_OFFSET (PinFunction.ResSourceOffset),
208 0},
209
210 /* Vendor Data */
211
212 {ACPI_RSC_COUNT_GPIO_VEN, ACPI_RS_OFFSET (Data.PinFunction.VendorLength),
213 AML_OFFSET (PinFunction.VendorLength),
214 1},
215
216 {ACPI_RSC_MOVE_GPIO_RES, ACPI_RS_OFFSET (Data.PinFunction.VendorData),
217 AML_OFFSET (PinFunction.VendorOffset),
218 0},
219};
220
221
222/*******************************************************************************
223 *
224 * AcpiRsConvertCsi2SerialBus
225 *
226 ******************************************************************************/
227
229{
233
236 0},
237
238 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.CommonSerialBus.RevisionId),
239 AML_OFFSET (CommonSerialBus.RevisionId),
240 1},
241
242 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.Csi2SerialBus.Type),
243 AML_OFFSET (Csi2SerialBus.Type),
244 1},
245
246 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Csi2SerialBus.ProducerConsumer),
247 AML_OFFSET (Csi2SerialBus.Flags),
248 1},
249
250 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Csi2SerialBus.SlaveMode),
251 AML_OFFSET (Csi2SerialBus.Flags),
252 0},
253
254 {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET (Data.Csi2SerialBus.PhyType),
255 AML_OFFSET (Csi2SerialBus.TypeSpecificFlags),
256 0},
257
258 {ACPI_RSC_6BITFLAG, ACPI_RS_OFFSET (Data.Csi2SerialBus.LocalPortInstance),
259 AML_OFFSET (Csi2SerialBus.TypeSpecificFlags),
260 2},
261
262 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.Csi2SerialBus.TypeRevisionId),
263 AML_OFFSET (Csi2SerialBus.TypeRevisionId),
264 1},
265
266 /* Vendor data */
267
268 {ACPI_RSC_COUNT_SERIAL_VEN, ACPI_RS_OFFSET (Data.Csi2SerialBus.VendorLength),
269 AML_OFFSET (Csi2SerialBus.TypeDataLength),
271
272 {ACPI_RSC_MOVE_SERIAL_VEN, ACPI_RS_OFFSET (Data.Csi2SerialBus.VendorData),
273 0,
275
276 /* Resource Source */
277
278 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.Csi2SerialBus.ResourceSource.Index),
279 AML_OFFSET (Csi2SerialBus.ResSourceIndex),
280 1},
281
282 {ACPI_RSC_COUNT_SERIAL_RES, ACPI_RS_OFFSET (Data.Csi2SerialBus.ResourceSource.StringLength),
283 AML_OFFSET (Csi2SerialBus.TypeDataLength),
285
286 {ACPI_RSC_MOVE_SERIAL_RES, ACPI_RS_OFFSET (Data.Csi2SerialBus.ResourceSource.StringPtr),
287 AML_OFFSET (Csi2SerialBus.TypeDataLength),
289};
290
291
292/*******************************************************************************
293 *
294 * AcpiRsConvertI2cSerialBus
295 *
296 ******************************************************************************/
297
299{
303
306 0},
307
308 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.CommonSerialBus.RevisionId),
309 AML_OFFSET (CommonSerialBus.RevisionId),
310 1},
311
312 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.CommonSerialBus.Type),
313 AML_OFFSET (CommonSerialBus.Type),
314 1},
315
316 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.CommonSerialBus.SlaveMode),
317 AML_OFFSET (CommonSerialBus.Flags),
318 0},
319
320 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.CommonSerialBus.ProducerConsumer),
321 AML_OFFSET (CommonSerialBus.Flags),
322 1},
323
324 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.CommonSerialBus.ConnectionSharing),
325 AML_OFFSET (CommonSerialBus.Flags),
326 2},
327
328 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.CommonSerialBus.TypeRevisionId),
329 AML_OFFSET (CommonSerialBus.TypeRevisionId),
330 1},
331
332 {ACPI_RSC_MOVE16, ACPI_RS_OFFSET (Data.CommonSerialBus.TypeDataLength),
333 AML_OFFSET (CommonSerialBus.TypeDataLength),
334 1},
335
336 /* Vendor data */
337
338 {ACPI_RSC_COUNT_SERIAL_VEN, ACPI_RS_OFFSET (Data.CommonSerialBus.VendorLength),
339 AML_OFFSET (CommonSerialBus.TypeDataLength),
341
342 {ACPI_RSC_MOVE_SERIAL_VEN, ACPI_RS_OFFSET (Data.CommonSerialBus.VendorData),
343 0,
345
346 /* Resource Source */
347
348 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.CommonSerialBus.ResourceSource.Index),
349 AML_OFFSET (CommonSerialBus.ResSourceIndex),
350 1},
351
352 {ACPI_RSC_COUNT_SERIAL_RES, ACPI_RS_OFFSET (Data.CommonSerialBus.ResourceSource.StringLength),
353 AML_OFFSET (CommonSerialBus.TypeDataLength),
355
356 {ACPI_RSC_MOVE_SERIAL_RES, ACPI_RS_OFFSET (Data.CommonSerialBus.ResourceSource.StringPtr),
357 AML_OFFSET (CommonSerialBus.TypeDataLength),
359
360 /* I2C bus type specific */
361
362 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.I2cSerialBus.AccessMode),
363 AML_OFFSET (I2cSerialBus.TypeSpecificFlags),
364 0},
365
366 {ACPI_RSC_MOVE32, ACPI_RS_OFFSET (Data.I2cSerialBus.ConnectionSpeed),
367 AML_OFFSET (I2cSerialBus.ConnectionSpeed),
368 1},
369
370 {ACPI_RSC_MOVE16, ACPI_RS_OFFSET (Data.I2cSerialBus.SlaveAddress),
371 AML_OFFSET (I2cSerialBus.SlaveAddress),
372 1},
373};
374
375
376/*******************************************************************************
377 *
378 * AcpiRsConvertSpiSerialBus
379 *
380 ******************************************************************************/
381
383{
387
390 0},
391
392 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.CommonSerialBus.RevisionId),
393 AML_OFFSET (CommonSerialBus.RevisionId),
394 1},
395
396 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.CommonSerialBus.Type),
397 AML_OFFSET (CommonSerialBus.Type),
398 1},
399
400 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.CommonSerialBus.SlaveMode),
401 AML_OFFSET (CommonSerialBus.Flags),
402 0},
403
404 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.CommonSerialBus.ProducerConsumer),
405 AML_OFFSET (CommonSerialBus.Flags),
406 1},
407
408 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.CommonSerialBus.ConnectionSharing),
409 AML_OFFSET (CommonSerialBus.Flags),
410 2},
411
412 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.CommonSerialBus.TypeRevisionId),
413 AML_OFFSET (CommonSerialBus.TypeRevisionId),
414 1},
415
416 {ACPI_RSC_MOVE16, ACPI_RS_OFFSET (Data.CommonSerialBus.TypeDataLength),
417 AML_OFFSET (CommonSerialBus.TypeDataLength),
418 1},
419
420 /* Vendor data */
421
422 {ACPI_RSC_COUNT_SERIAL_VEN, ACPI_RS_OFFSET (Data.CommonSerialBus.VendorLength),
423 AML_OFFSET (CommonSerialBus.TypeDataLength),
425
426 {ACPI_RSC_MOVE_SERIAL_VEN, ACPI_RS_OFFSET (Data.CommonSerialBus.VendorData),
427 0,
429
430 /* Resource Source */
431
432 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.CommonSerialBus.ResourceSource.Index),
433 AML_OFFSET (CommonSerialBus.ResSourceIndex),
434 1},
435
436 {ACPI_RSC_COUNT_SERIAL_RES, ACPI_RS_OFFSET (Data.CommonSerialBus.ResourceSource.StringLength),
437 AML_OFFSET (CommonSerialBus.TypeDataLength),
439
440 {ACPI_RSC_MOVE_SERIAL_RES, ACPI_RS_OFFSET (Data.CommonSerialBus.ResourceSource.StringPtr),
441 AML_OFFSET (CommonSerialBus.TypeDataLength),
443
444 /* Spi bus type specific */
445
446 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.SpiSerialBus.WireMode),
447 AML_OFFSET (SpiSerialBus.TypeSpecificFlags),
448 0},
449
450 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.SpiSerialBus.DevicePolarity),
451 AML_OFFSET (SpiSerialBus.TypeSpecificFlags),
452 1},
453
454 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.SpiSerialBus.DataBitLength),
455 AML_OFFSET (SpiSerialBus.DataBitLength),
456 1},
457
458 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.SpiSerialBus.ClockPhase),
459 AML_OFFSET (SpiSerialBus.ClockPhase),
460 1},
461
462 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.SpiSerialBus.ClockPolarity),
463 AML_OFFSET (SpiSerialBus.ClockPolarity),
464 1},
465
466 {ACPI_RSC_MOVE16, ACPI_RS_OFFSET (Data.SpiSerialBus.DeviceSelection),
467 AML_OFFSET (SpiSerialBus.DeviceSelection),
468 1},
469
470 {ACPI_RSC_MOVE32, ACPI_RS_OFFSET (Data.SpiSerialBus.ConnectionSpeed),
471 AML_OFFSET (SpiSerialBus.ConnectionSpeed),
472 1},
473};
474
475
476/*******************************************************************************
477 *
478 * AcpiRsConvertUartSerialBus
479 *
480 ******************************************************************************/
481
483{
487
490 0},
491
492 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.CommonSerialBus.RevisionId),
493 AML_OFFSET (CommonSerialBus.RevisionId),
494 1},
495
496 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.CommonSerialBus.Type),
497 AML_OFFSET (CommonSerialBus.Type),
498 1},
499
500 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.CommonSerialBus.SlaveMode),
501 AML_OFFSET (CommonSerialBus.Flags),
502 0},
503
504 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.CommonSerialBus.ProducerConsumer),
505 AML_OFFSET (CommonSerialBus.Flags),
506 1},
507
508 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.CommonSerialBus.ConnectionSharing),
509 AML_OFFSET (CommonSerialBus.Flags),
510 2},
511
512 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.CommonSerialBus.TypeRevisionId),
513 AML_OFFSET (CommonSerialBus.TypeRevisionId),
514 1},
515
516 {ACPI_RSC_MOVE16, ACPI_RS_OFFSET (Data.CommonSerialBus.TypeDataLength),
517 AML_OFFSET (CommonSerialBus.TypeDataLength),
518 1},
519
520 /* Vendor data */
521
522 {ACPI_RSC_COUNT_SERIAL_VEN, ACPI_RS_OFFSET (Data.CommonSerialBus.VendorLength),
523 AML_OFFSET (CommonSerialBus.TypeDataLength),
525
526 {ACPI_RSC_MOVE_SERIAL_VEN, ACPI_RS_OFFSET (Data.CommonSerialBus.VendorData),
527 0,
529
530 /* Resource Source */
531
532 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.CommonSerialBus.ResourceSource.Index),
533 AML_OFFSET (CommonSerialBus.ResSourceIndex),
534 1},
535
536 {ACPI_RSC_COUNT_SERIAL_RES, ACPI_RS_OFFSET (Data.CommonSerialBus.ResourceSource.StringLength),
537 AML_OFFSET (CommonSerialBus.TypeDataLength),
539
540 {ACPI_RSC_MOVE_SERIAL_RES, ACPI_RS_OFFSET (Data.CommonSerialBus.ResourceSource.StringPtr),
541 AML_OFFSET (CommonSerialBus.TypeDataLength),
543
544 /* Uart bus type specific */
545
546 {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET (Data.UartSerialBus.FlowControl),
547 AML_OFFSET (UartSerialBus.TypeSpecificFlags),
548 0},
549
550 {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET (Data.UartSerialBus.StopBits),
551 AML_OFFSET (UartSerialBus.TypeSpecificFlags),
552 2},
553
554 {ACPI_RSC_3BITFLAG, ACPI_RS_OFFSET (Data.UartSerialBus.DataBits),
555 AML_OFFSET (UartSerialBus.TypeSpecificFlags),
556 4},
557
558 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.UartSerialBus.Endian),
559 AML_OFFSET (UartSerialBus.TypeSpecificFlags),
560 7},
561
562 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.UartSerialBus.Parity),
563 AML_OFFSET (UartSerialBus.Parity),
564 1},
565
566 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.UartSerialBus.LinesEnabled),
567 AML_OFFSET (UartSerialBus.LinesEnabled),
568 1},
569
570 {ACPI_RSC_MOVE16, ACPI_RS_OFFSET (Data.UartSerialBus.RxFifoSize),
571 AML_OFFSET (UartSerialBus.RxFifoSize),
572 1},
573
574 {ACPI_RSC_MOVE16, ACPI_RS_OFFSET (Data.UartSerialBus.TxFifoSize),
575 AML_OFFSET (UartSerialBus.TxFifoSize),
576 1},
577
578 {ACPI_RSC_MOVE32, ACPI_RS_OFFSET (Data.UartSerialBus.DefaultBaudRate),
579 AML_OFFSET (UartSerialBus.DefaultBaudRate),
580 1},
581};
582
583
584/*******************************************************************************
585 *
586 * AcpiRsConvertPinConfig
587 *
588 ******************************************************************************/
589
591{
595
598 0},
599
600 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.PinConfig.RevisionId),
601 AML_OFFSET (PinConfig.RevisionId),
602 1},
603
604 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.PinConfig.Shareable),
605 AML_OFFSET (PinConfig.Flags),
606 0},
607
608 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.PinConfig.ProducerConsumer),
609 AML_OFFSET (PinConfig.Flags),
610 1},
611
612 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.PinConfig.PinConfigType),
613 AML_OFFSET (PinConfig.PinConfigType),
614 1},
615
616 {ACPI_RSC_MOVE32, ACPI_RS_OFFSET (Data.PinConfig.PinConfigValue),
617 AML_OFFSET (PinConfig.PinConfigValue),
618 1},
619
620 /* Pin Table */
621
622 /*
623 * It is OK to use GPIO operations here because none of them refer GPIO
624 * structures directly but instead use offsets given here.
625 */
626
627 {ACPI_RSC_COUNT_GPIO_PIN, ACPI_RS_OFFSET (Data.PinConfig.PinTableLength),
628 AML_OFFSET (PinConfig.PinTableOffset),
629 AML_OFFSET (PinConfig.ResSourceOffset)},
630
631 {ACPI_RSC_MOVE_GPIO_PIN, ACPI_RS_OFFSET (Data.PinConfig.PinTable),
632 AML_OFFSET (PinConfig.PinTableOffset),
633 0},
634
635 /* Resource Source */
636
637 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.PinConfig.ResourceSource.Index),
638 AML_OFFSET (PinConfig.ResSourceIndex),
639 1},
640
641 {ACPI_RSC_COUNT_GPIO_RES, ACPI_RS_OFFSET (Data.PinConfig.ResourceSource.StringLength),
642 AML_OFFSET (PinConfig.ResSourceOffset),
643 AML_OFFSET (PinConfig.VendorOffset)},
644
645 {ACPI_RSC_MOVE_GPIO_RES, ACPI_RS_OFFSET (Data.PinConfig.ResourceSource.StringPtr),
646 AML_OFFSET (PinConfig.ResSourceOffset),
647 0},
648
649 /* Vendor Data */
650
651 {ACPI_RSC_COUNT_GPIO_VEN, ACPI_RS_OFFSET (Data.PinConfig.VendorLength),
652 AML_OFFSET (PinConfig.VendorLength),
653 1},
654
655 {ACPI_RSC_MOVE_GPIO_RES, ACPI_RS_OFFSET (Data.PinConfig.VendorData),
656 AML_OFFSET (PinConfig.VendorOffset),
657 0},
658};
659
660/*******************************************************************************
661 *
662 * AcpiRsConvertPinGroup
663 *
664 ******************************************************************************/
665
667{
671
673 sizeof (AML_RESOURCE_PIN_GROUP),
674 0},
675
676 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.PinGroup.RevisionId),
677 AML_OFFSET (PinGroup.RevisionId),
678 1},
679
680 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.PinGroup.ProducerConsumer),
681 AML_OFFSET (PinGroup.Flags),
682 0},
683
684 /* Pin Table */
685
686 /*
687 * It is OK to use GPIO operations here because none of them refer GPIO
688 * structures directly but instead use offsets given here.
689 */
690
691 {ACPI_RSC_COUNT_GPIO_PIN, ACPI_RS_OFFSET (Data.PinGroup.PinTableLength),
692 AML_OFFSET (PinGroup.PinTableOffset),
693 AML_OFFSET (PinGroup.LabelOffset)},
694
695 {ACPI_RSC_MOVE_GPIO_PIN, ACPI_RS_OFFSET (Data.PinGroup.PinTable),
696 AML_OFFSET (PinGroup.PinTableOffset),
697 0},
698
699 /* Resource Label */
700
701 {ACPI_RSC_COUNT_GPIO_RES, ACPI_RS_OFFSET (Data.PinGroup.ResourceLabel.StringLength),
702 AML_OFFSET (PinGroup.LabelOffset),
703 AML_OFFSET (PinGroup.VendorOffset)},
704
705 {ACPI_RSC_MOVE_GPIO_RES, ACPI_RS_OFFSET (Data.PinGroup.ResourceLabel.StringPtr),
706 AML_OFFSET (PinGroup.LabelOffset),
707 0},
708
709 /* Vendor Data */
710
711 {ACPI_RSC_COUNT_GPIO_VEN, ACPI_RS_OFFSET (Data.PinGroup.VendorLength),
712 AML_OFFSET (PinGroup.VendorLength),
713 1},
714
715 {ACPI_RSC_MOVE_GPIO_RES, ACPI_RS_OFFSET (Data.PinGroup.VendorData),
716 AML_OFFSET (PinGroup.VendorOffset),
717 0},
718};
719
720/*******************************************************************************
721 *
722 * AcpiRsConvertPinGroupFunction
723 *
724 ******************************************************************************/
725
727{
731
734 0},
735
736 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.PinGroupFunction.RevisionId),
737 AML_OFFSET (PinGroupFunction.RevisionId),
738 1},
739
740 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.PinGroupFunction.Shareable),
741 AML_OFFSET (PinGroupFunction.Flags),
742 0},
743
744 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.PinGroupFunction.ProducerConsumer),
745 AML_OFFSET (PinGroupFunction.Flags),
746 1},
747
748 {ACPI_RSC_MOVE16, ACPI_RS_OFFSET (Data.PinGroupFunction.FunctionNumber),
749 AML_OFFSET (PinGroupFunction.FunctionNumber),
750 1},
751
752 /* Resource Source */
753
754 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.PinGroupFunction.ResourceSource.Index),
755 AML_OFFSET (PinGroupFunction.ResSourceIndex),
756 1},
757
758 {ACPI_RSC_COUNT_GPIO_RES, ACPI_RS_OFFSET (Data.PinGroupFunction.ResourceSource.StringLength),
759 AML_OFFSET (PinGroupFunction.ResSourceOffset),
760 AML_OFFSET (PinGroupFunction.ResSourceLabelOffset)},
761
762 {ACPI_RSC_MOVE_GPIO_RES, ACPI_RS_OFFSET (Data.PinGroupFunction.ResourceSource.StringPtr),
763 AML_OFFSET (PinGroupFunction.ResSourceOffset),
764 0},
765
766 /* Resource Source Label */
767
768 {ACPI_RSC_COUNT_GPIO_RES, ACPI_RS_OFFSET (Data.PinGroupFunction.ResourceSourceLabel.StringLength),
769 AML_OFFSET (PinGroupFunction.ResSourceLabelOffset),
770 AML_OFFSET (PinGroupFunction.VendorOffset)},
771
772 {ACPI_RSC_MOVE_GPIO_RES, ACPI_RS_OFFSET (Data.PinGroupFunction.ResourceSourceLabel.StringPtr),
773 AML_OFFSET (PinGroupFunction.ResSourceLabelOffset),
774 0},
775
776 /* Vendor Data */
777
778 {ACPI_RSC_COUNT_GPIO_VEN, ACPI_RS_OFFSET (Data.PinGroupFunction.VendorLength),
779 AML_OFFSET (PinGroupFunction.VendorLength),
780 1},
781
782 {ACPI_RSC_MOVE_GPIO_RES, ACPI_RS_OFFSET (Data.PinGroupFunction.VendorData),
783 AML_OFFSET (PinGroupFunction.VendorOffset),
784 0},
785};
786
787/*******************************************************************************
788 *
789 * AcpiRsConvertPinGroupConfig
790 *
791 ******************************************************************************/
792
794{
798
801 0},
802
803 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.PinGroupConfig.RevisionId),
804 AML_OFFSET (PinGroupConfig.RevisionId),
805 1},
806
807 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.PinGroupConfig.Shareable),
808 AML_OFFSET (PinGroupConfig.Flags),
809 0},
810
811 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.PinGroupConfig.ProducerConsumer),
812 AML_OFFSET (PinGroupConfig.Flags),
813 1},
814
815 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.PinGroupConfig.PinConfigType),
816 AML_OFFSET (PinGroupConfig.PinConfigType),
817 1},
818
819 {ACPI_RSC_MOVE32, ACPI_RS_OFFSET (Data.PinGroupConfig.PinConfigValue),
820 AML_OFFSET (PinGroupConfig.PinConfigValue),
821 1},
822
823 /* Resource Source */
824
825 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.PinGroupConfig.ResourceSource.Index),
826 AML_OFFSET (PinGroupConfig.ResSourceIndex),
827 1},
828
829 {ACPI_RSC_COUNT_GPIO_RES, ACPI_RS_OFFSET (Data.PinGroupConfig.ResourceSource.StringLength),
830 AML_OFFSET (PinGroupConfig.ResSourceOffset),
831 AML_OFFSET (PinGroupConfig.ResSourceLabelOffset)},
832
833 {ACPI_RSC_MOVE_GPIO_RES, ACPI_RS_OFFSET (Data.PinGroupConfig.ResourceSource.StringPtr),
834 AML_OFFSET (PinGroupConfig.ResSourceOffset),
835 0},
836
837 /* Resource Source Label */
838
839 {ACPI_RSC_COUNT_GPIO_RES, ACPI_RS_OFFSET (Data.PinGroupConfig.ResourceSourceLabel.StringLength),
840 AML_OFFSET (PinGroupConfig.ResSourceLabelOffset),
841 AML_OFFSET (PinGroupConfig.VendorOffset)},
842
843 {ACPI_RSC_MOVE_GPIO_RES, ACPI_RS_OFFSET (Data.PinGroupConfig.ResourceSourceLabel.StringPtr),
844 AML_OFFSET (PinGroupConfig.ResSourceLabelOffset),
845 0},
846
847 /* Vendor Data */
848
849 {ACPI_RSC_COUNT_GPIO_VEN, ACPI_RS_OFFSET (Data.PinGroupConfig.VendorLength),
850 AML_OFFSET (PinGroupConfig.VendorLength),
851 1},
852
853 {ACPI_RSC_MOVE_GPIO_RES, ACPI_RS_OFFSET (Data.PinGroupConfig.VendorData),
854 AML_OFFSET (PinGroupConfig.VendorOffset),
855 0},
856};
#define ACPI_RESOURCE_NAME_PIN_FUNCTION
Definition: aclocal.h:1341
#define ACPI_RESOURCE_NAME_PIN_GROUP
Definition: aclocal.h:1344
#define ACPI_RESOURCE_NAME_PIN_GROUP_CONFIG
Definition: aclocal.h:1346
#define ACPI_RESOURCE_NAME_PIN_GROUP_FUNCTION
Definition: aclocal.h:1345
#define ACPI_RESOURCE_NAME_GPIO
Definition: aclocal.h:1340
#define ACPI_RESOURCE_NAME_PIN_CONFIG
Definition: aclocal.h:1343
#define ACPI_RESOURCE_NAME_SERIAL_BUS
Definition: aclocal.h:1342
#define ACPI_MODULE_NAME(Name)
Definition: acoutput.h:216
@ ACPI_RSC_INITSET
Definition: acresrc.h:81
@ ACPI_RSC_COUNT_GPIO_PIN
Definition: acresrc.h:92
@ ACPI_RSC_COUNT_GPIO_RES
Definition: acresrc.h:93
@ ACPI_RSC_2BITFLAG
Definition: acresrc.h:84
@ ACPI_RSC_3BITFLAG
Definition: acresrc.h:85
@ ACPI_RSC_MOVE_SERIAL_VEN
Definition: acresrc.h:105
@ ACPI_RSC_COUNT_SERIAL_VEN
Definition: acresrc.h:96
@ ACPI_RSC_MOVE_GPIO_RES
Definition: acresrc.h:103
@ ACPI_RSC_MOVE8
Definition: acresrc.h:106
@ ACPI_RSC_6BITFLAG
Definition: acresrc.h:86
@ ACPI_RSC_COUNT_SERIAL_RES
Definition: acresrc.h:95
@ ACPI_RSC_COUNT_GPIO_VEN
Definition: acresrc.h:94
@ ACPI_RSC_MOVE16
Definition: acresrc.h:107
@ ACPI_RSC_MOVE32
Definition: acresrc.h:108
@ ACPI_RSC_1BITFLAG
Definition: acresrc.h:83
@ ACPI_RSC_MOVE_SERIAL_RES
Definition: acresrc.h:104
@ ACPI_RSC_INITGET
Definition: acresrc.h:80
@ ACPI_RSC_MOVE_GPIO_PIN
Definition: acresrc.h:102
#define ACPI_RSC_TABLE_SIZE(d)
Definition: acresrc.h:121
#define ACPI_RS_OFFSET(f)
Definition: acresrc.h:123
#define AML_OFFSET(f)
Definition: acresrc.h:124
#define ACPI_RESOURCE_TYPE_PIN_FUNCTION
Definition: acrestyp.h:743
#define ACPI_RESOURCE_TYPE_SERIAL_BUS
Definition: acrestyp.h:742
#define ACPI_RESOURCE_TYPE_GPIO
Definition: acrestyp.h:740
#define ACPI_RESOURCE_TYPE_PIN_CONFIG
Definition: acrestyp.h:744
#define ACPI_RESOURCE_TYPE_PIN_GROUP_CONFIG
Definition: acrestyp.h:747
#define ACPI_RESOURCE_TYPE_PIN_GROUP_FUNCTION
Definition: acrestyp.h:746
#define ACPI_RS_SIZE(Type)
Definition: acrestyp.h:808
#define ACPI_RESOURCE_TYPE_PIN_GROUP
Definition: acrestyp.h:745
#define AML_RESOURCE_UART_MIN_DATA_LEN
Definition: amlresrc.h:552
#define AML_RESOURCE_CSI2_MIN_DATA_LEN
Definition: amlresrc.h:492
struct aml_resource_pin_group AML_RESOURCE_PIN_GROUP
#define AML_RESOURCE_I2C_MIN_DATA_LEN
Definition: amlresrc.h:510
struct aml_resource_i2c_serialbus AML_RESOURCE_I2C_SERIALBUS
#define AML_RESOURCE_SPI_MIN_DATA_LEN
Definition: amlresrc.h:531
struct aml_resource_csi2_serialbus AML_RESOURCE_CSI2_SERIALBUS
struct aml_resource_gpio AML_RESOURCE_GPIO
struct aml_resource_common_serialbus AML_RESOURCE_COMMON_SERIALBUS
struct aml_resource_pin_group_function AML_RESOURCE_PIN_GROUP_FUNCTION
struct aml_resource_uart_serialbus AML_RESOURCE_UART_SERIALBUS
struct aml_resource_pin_function AML_RESOURCE_PIN_FUNCTION
struct aml_resource_pin_config AML_RESOURCE_PIN_CONFIG
struct aml_resource_spi_serialbus AML_RESOURCE_SPI_SERIALBUS
struct aml_resource_pin_group_config AML_RESOURCE_PIN_GROUP_CONFIG
ACPI_RSCONVERT_INFO AcpiRsConvertPinConfig[14]
Definition: rsserial.c:590
ACPI_RSCONVERT_INFO AcpiRsConvertPinGroup[10]
Definition: rsserial.c:666
ACPI_RSCONVERT_INFO AcpiRsConvertPinFunction[13]
Definition: rsserial.c:155
ACPI_RSCONVERT_INFO AcpiRsConvertCsi2SerialBus[14]
Definition: rsserial.c:228
ACPI_RSCONVERT_INFO AcpiRsConvertPinGroupConfig[14]
Definition: rsserial.c:793
ACPI_RSCONVERT_INFO AcpiRsConvertI2cSerialBus[17]
Definition: rsserial.c:298
ACPI_RSCONVERT_INFO AcpiRsConvertPinGroupFunction[13]
Definition: rsserial.c:726
ACPI_RSCONVERT_INFO AcpiRsConvertSpiSerialBus[21]
Definition: rsserial.c:382
ACPI_RSCONVERT_INFO AcpiRsConvertUartSerialBus[23]
Definition: rsserial.c:482
ACPI_RSCONVERT_INFO AcpiRsConvertGpio[18]
Definition: rsserial.c:58