File indexing completed on 2025-05-11 08:24:03
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059
0060
0061
0062
0063
0064
0065
0066
0067
0068
0069
0070
0071
0072
0073
0074
0075
0076
0077
0078
0079
0080
0081
0082
0083
0084
0085
0086
0087
0088
0089
0090
0091
0092
0093
0094
0095
0096
0097
0098
0099
0100
0101
0102
0103
0104
0105
0106
0107
0108
0109
0110
0111
0112
0113
0114
0115
0116
0117
0118
0119
0120
0121
0122
0123
0124
0125
0126
0127
0128
0129
0130
0131
0132
0133
0134
0135
0136
0137
0138
0139
0140
0141
0142
0143
0144
0145
0146
0147
0148
0149
0150
0151
0152 #include "acpi.h"
0153 #include "accommon.h"
0154 #include "acresrc.h"
0155
0156 #define _COMPONENT ACPI_RESOURCES
0157 ACPI_MODULE_NAME ("rsmisc")
0158
0159
0160 #define INIT_RESOURCE_TYPE(i) i->ResourceOffset
0161 #define INIT_RESOURCE_LENGTH(i) i->AmlOffset
0162 #define INIT_TABLE_LENGTH(i) i->Value
0163
0164 #define COMPARE_OPCODE(i) i->ResourceOffset
0165 #define COMPARE_TARGET(i) i->AmlOffset
0166 #define COMPARE_VALUE(i) i->Value
0167
0168
0169
0170
0171
0172
0173
0174
0175
0176
0177
0178
0179
0180
0181
0182
0183
0184 ACPI_STATUS
0185 AcpiRsConvertAmlToResource (
0186 ACPI_RESOURCE *Resource,
0187 AML_RESOURCE *Aml,
0188 ACPI_RSCONVERT_INFO *Info)
0189 {
0190 ACPI_RS_LENGTH AmlResourceLength;
0191 void *Source;
0192 void *Destination;
0193 char *Target;
0194 UINT8 Count;
0195 UINT8 FlagsMode = FALSE;
0196 UINT16 ItemCount = 0;
0197 UINT16 Temp16 = 0;
0198
0199
0200 ACPI_FUNCTION_TRACE (RsConvertAmlToResource);
0201
0202
0203 if (!Info)
0204 {
0205 return_ACPI_STATUS (AE_BAD_PARAMETER);
0206 }
0207
0208 if (((ACPI_SIZE) Resource) & 0x3)
0209 {
0210
0211
0212 ACPI_WARNING ((AE_INFO,
0213 "Misaligned resource pointer (get): %p Type 0x%2.2X Length %u",
0214 Resource, Resource->Type, Resource->Length));
0215 }
0216
0217
0218
0219 AmlResourceLength = AcpiUtGetResourceLength (Aml);
0220
0221
0222
0223
0224
0225 Count = INIT_TABLE_LENGTH (Info);
0226 while (Count)
0227 {
0228 Target = NULL;
0229
0230
0231
0232
0233
0234 Source = ACPI_ADD_PTR (void, Aml, Info->AmlOffset);
0235 Destination = ACPI_ADD_PTR (void, Resource, Info->ResourceOffset);
0236
0237 switch (Info->Opcode)
0238 {
0239 case ACPI_RSC_INITGET:
0240
0241
0242
0243 memset (Resource, 0, INIT_RESOURCE_LENGTH (Info));
0244 Resource->Type = INIT_RESOURCE_TYPE (Info);
0245 Resource->Length = INIT_RESOURCE_LENGTH (Info);
0246 break;
0247
0248 case ACPI_RSC_INITSET:
0249 break;
0250
0251 case ACPI_RSC_FLAGINIT:
0252
0253 FlagsMode = TRUE;
0254 break;
0255
0256 case ACPI_RSC_1BITFLAG:
0257
0258
0259
0260 ACPI_SET8 (Destination,
0261 ((ACPI_GET8 (Source) >> Info->Value) & 0x01));
0262 break;
0263
0264 case ACPI_RSC_2BITFLAG:
0265
0266
0267
0268 ACPI_SET8 (Destination,
0269 ((ACPI_GET8 (Source) >> Info->Value) & 0x03));
0270 break;
0271
0272 case ACPI_RSC_3BITFLAG:
0273
0274
0275
0276 ACPI_SET8 (Destination,
0277 ((ACPI_GET8 (Source) >> Info->Value) & 0x07));
0278 break;
0279
0280 case ACPI_RSC_6BITFLAG:
0281
0282
0283
0284 ACPI_SET8 (Destination,
0285 ((ACPI_GET8 (Source) >> Info->Value) & 0x3F));
0286 break;
0287
0288 case ACPI_RSC_COUNT:
0289
0290 ItemCount = ACPI_GET8 (Source);
0291 ACPI_SET8 (Destination, ItemCount);
0292
0293 Resource->Length = Resource->Length +
0294 (Info->Value * (ItemCount - 1));
0295 break;
0296
0297 case ACPI_RSC_COUNT16:
0298
0299 ItemCount = AmlResourceLength;
0300 ACPI_SET16 (Destination, ItemCount);
0301
0302 Resource->Length = Resource->Length +
0303 (Info->Value * (ItemCount - 1));
0304 break;
0305
0306 case ACPI_RSC_COUNT_GPIO_PIN:
0307
0308 Target = ACPI_ADD_PTR (void, Aml, Info->Value);
0309 ItemCount = ACPI_GET16 (Target) - ACPI_GET16 (Source);
0310
0311 Resource->Length = Resource->Length + ItemCount;
0312 ItemCount = ItemCount / 2;
0313 ACPI_SET16 (Destination, ItemCount);
0314 break;
0315
0316 case ACPI_RSC_COUNT_GPIO_VEN:
0317
0318 ItemCount = ACPI_GET8 (Source);
0319 ACPI_SET8 (Destination, ItemCount);
0320
0321 Resource->Length = Resource->Length + (Info->Value * ItemCount);
0322 break;
0323
0324 case ACPI_RSC_COUNT_GPIO_RES:
0325
0326
0327
0328
0329 Target = ACPI_ADD_PTR (void, Aml, (Info->Value + 2));
0330 if (ACPI_GET16 (Target))
0331 {
0332
0333
0334 Target = ACPI_ADD_PTR (void, Aml, Info->Value);
0335 ItemCount = ACPI_GET16 (Target) - ACPI_GET16 (Source);
0336 }
0337 else
0338 {
0339
0340
0341 ItemCount = Aml->LargeHeader.ResourceLength +
0342 sizeof (AML_RESOURCE_LARGE_HEADER) -
0343 ACPI_GET16 (Source);
0344 }
0345
0346 Resource->Length = Resource->Length + ItemCount;
0347 ACPI_SET16 (Destination, ItemCount);
0348 break;
0349
0350 case ACPI_RSC_COUNT_SERIAL_VEN:
0351
0352 ACPI_MOVE_16_TO_16(&Temp16, Source);
0353 ItemCount = Temp16 - Info->Value;
0354
0355 Resource->Length = Resource->Length + ItemCount;
0356 ACPI_SET16 (Destination, ItemCount);
0357 break;
0358
0359 case ACPI_RSC_COUNT_SERIAL_RES:
0360
0361 ACPI_MOVE_16_TO_16(&Temp16, Source);
0362 ItemCount = (AmlResourceLength +
0363 sizeof (AML_RESOURCE_LARGE_HEADER)) -
0364 Temp16 - Info->Value;
0365
0366 Resource->Length = Resource->Length + ItemCount;
0367 ACPI_SET16 (Destination, ItemCount);
0368 break;
0369
0370 case ACPI_RSC_LENGTH:
0371
0372 Resource->Length = Resource->Length + Info->Value;
0373 break;
0374
0375 case ACPI_RSC_MOVE8:
0376 case ACPI_RSC_MOVE16:
0377 case ACPI_RSC_MOVE32:
0378 case ACPI_RSC_MOVE64:
0379
0380
0381
0382
0383 if (Info->Value)
0384 {
0385 ItemCount = Info->Value;
0386 }
0387 AcpiRsMoveData (Destination, Source, ItemCount, Info->Opcode);
0388 break;
0389
0390 case ACPI_RSC_MOVE_GPIO_PIN:
0391
0392
0393
0394 Target = (char *) ACPI_ADD_PTR (void, Resource,
0395 (Resource->Length - ItemCount * 2));
0396 *(UINT16 **) Destination = ACPI_CAST_PTR (UINT16, Target);
0397
0398
0399
0400 Source = ACPI_ADD_PTR (void, Aml, ACPI_GET16 (Source));
0401 AcpiRsMoveData (Target, Source, ItemCount, Info->Opcode);
0402 break;
0403
0404 case ACPI_RSC_MOVE_GPIO_RES:
0405
0406
0407
0408 Target = (char *) ACPI_ADD_PTR (void, Resource,
0409 (Resource->Length - ItemCount));
0410 *(UINT8 **) Destination = ACPI_CAST_PTR (UINT8, Target);
0411
0412
0413
0414 Source = ACPI_ADD_PTR (void, Aml, ACPI_GET16 (Source));
0415 AcpiRsMoveData (Target, Source, ItemCount, Info->Opcode);
0416 break;
0417
0418 case ACPI_RSC_MOVE_SERIAL_VEN:
0419
0420
0421
0422 Target = (char *) ACPI_ADD_PTR (void, Resource,
0423 (Resource->Length - ItemCount));
0424 *(UINT8 **) Destination = ACPI_CAST_PTR (UINT8, Target);
0425
0426
0427
0428 Source = ACPI_ADD_PTR (void, Aml, Info->Value);
0429 AcpiRsMoveData (Target, Source, ItemCount, Info->Opcode);
0430 break;
0431
0432 case ACPI_RSC_MOVE_SERIAL_RES:
0433
0434
0435
0436 Target = (char *) ACPI_ADD_PTR (void, Resource,
0437 (Resource->Length - ItemCount));
0438 *(UINT8 **) Destination = ACPI_CAST_PTR (UINT8, Target);
0439
0440
0441
0442 ACPI_MOVE_16_TO_16 (&Temp16, Source);
0443 Source = ACPI_ADD_PTR (
0444 void, Aml, (Temp16 + Info->Value));
0445 AcpiRsMoveData (Target, Source, ItemCount, Info->Opcode);
0446 break;
0447
0448 case ACPI_RSC_SET8:
0449
0450 memset (Destination, Info->AmlOffset, Info->Value);
0451 break;
0452
0453 case ACPI_RSC_DATA8:
0454
0455 Target = ACPI_ADD_PTR (char, Resource, Info->Value);
0456 memcpy (Destination, Source, ACPI_GET16 (Target));
0457 break;
0458
0459 case ACPI_RSC_ADDRESS:
0460
0461
0462
0463 if (!AcpiRsGetAddressCommon (Resource, Aml))
0464 {
0465 return_ACPI_STATUS (AE_AML_INVALID_RESOURCE_TYPE);
0466 }
0467 break;
0468
0469 case ACPI_RSC_SOURCE:
0470
0471
0472
0473 Resource->Length +=
0474 AcpiRsGetResourceSource (AmlResourceLength, Info->Value,
0475 Destination, Aml, NULL);
0476 break;
0477
0478 case ACPI_RSC_SOURCEX:
0479
0480
0481
0482
0483 Target = ACPI_ADD_PTR (char, Resource,
0484 Info->AmlOffset + (ItemCount * 4));
0485
0486 Resource->Length +=
0487 AcpiRsGetResourceSource (AmlResourceLength, (ACPI_RS_LENGTH)
0488 (((ItemCount - 1) * sizeof (UINT32)) + Info->Value),
0489 Destination, Aml, Target);
0490 break;
0491
0492 case ACPI_RSC_BITMASK:
0493
0494
0495
0496 ItemCount = AcpiRsDecodeBitmask (ACPI_GET8 (Source), Destination);
0497 if (ItemCount)
0498 {
0499 Resource->Length += (ItemCount - 1);
0500 }
0501
0502 Target = ACPI_ADD_PTR (char, Resource, Info->Value);
0503 ACPI_SET8 (Target, ItemCount);
0504 break;
0505
0506 case ACPI_RSC_BITMASK16:
0507
0508
0509
0510 ACPI_MOVE_16_TO_16 (&Temp16, Source);
0511
0512 ItemCount = AcpiRsDecodeBitmask (Temp16, Destination);
0513 if (ItemCount)
0514 {
0515 Resource->Length += (ItemCount - 1);
0516 }
0517
0518 Target = ACPI_ADD_PTR (char, Resource, Info->Value);
0519 ACPI_SET8 (Target, ItemCount);
0520 break;
0521
0522 case ACPI_RSC_EXIT_NE:
0523
0524
0525
0526 switch (Info->ResourceOffset)
0527 {
0528 case ACPI_RSC_COMPARE_AML_LENGTH:
0529
0530 if (AmlResourceLength != Info->Value)
0531 {
0532 goto Exit;
0533 }
0534 break;
0535
0536 case ACPI_RSC_COMPARE_VALUE:
0537
0538 if (ACPI_GET8 (Source) != Info->Value)
0539 {
0540 goto Exit;
0541 }
0542 break;
0543
0544 default:
0545
0546 ACPI_ERROR ((AE_INFO, "Invalid conversion sub-opcode"));
0547 return_ACPI_STATUS (AE_BAD_PARAMETER);
0548 }
0549 break;
0550
0551 default:
0552
0553 ACPI_ERROR ((AE_INFO, "Invalid conversion opcode"));
0554 return_ACPI_STATUS (AE_BAD_PARAMETER);
0555 }
0556
0557 Count--;
0558 Info++;
0559 }
0560
0561 Exit:
0562 if (!FlagsMode)
0563 {
0564
0565
0566 Resource->Length = (UINT32)
0567 ACPI_ROUND_UP_TO_NATIVE_WORD (Resource->Length);
0568 }
0569 return_ACPI_STATUS (AE_OK);
0570 }
0571
0572
0573
0574
0575
0576
0577
0578
0579
0580
0581
0582
0583
0584
0585
0586
0587
0588 ACPI_STATUS
0589 AcpiRsConvertResourceToAml (
0590 ACPI_RESOURCE *Resource,
0591 AML_RESOURCE *Aml,
0592 ACPI_RSCONVERT_INFO *Info)
0593 {
0594 void *Source = NULL;
0595 void *Destination;
0596 char *Target;
0597 ACPI_RSDESC_SIZE AmlLength = 0;
0598 UINT8 Count;
0599 UINT16 Temp16 = 0;
0600 UINT16 ItemCount = 0;
0601
0602
0603 ACPI_FUNCTION_TRACE (RsConvertResourceToAml);
0604
0605
0606 if (!Info)
0607 {
0608 return_ACPI_STATUS (AE_BAD_PARAMETER);
0609 }
0610
0611
0612
0613
0614
0615 Count = INIT_TABLE_LENGTH (Info);
0616
0617 while (Count)
0618 {
0619
0620
0621
0622
0623 Source = ACPI_ADD_PTR (void, Resource, Info->ResourceOffset);
0624 Destination = ACPI_ADD_PTR (void, Aml, Info->AmlOffset);
0625
0626 switch (Info->Opcode)
0627 {
0628 case ACPI_RSC_INITSET:
0629
0630 memset (Aml, 0, INIT_RESOURCE_LENGTH (Info));
0631 AmlLength = INIT_RESOURCE_LENGTH (Info);
0632 AcpiRsSetResourceHeader (
0633 INIT_RESOURCE_TYPE (Info), AmlLength, Aml);
0634 break;
0635
0636 case ACPI_RSC_INITGET:
0637 break;
0638
0639 case ACPI_RSC_FLAGINIT:
0640
0641
0642
0643 ACPI_SET8 (Destination, 0);
0644 break;
0645
0646 case ACPI_RSC_1BITFLAG:
0647
0648
0649
0650 ACPI_SET_BIT (*ACPI_CAST8 (Destination), (UINT8)
0651 ((ACPI_GET8 (Source) & 0x01) << Info->Value));
0652 break;
0653
0654 case ACPI_RSC_2BITFLAG:
0655
0656
0657
0658 ACPI_SET_BIT (*ACPI_CAST8 (Destination), (UINT8)
0659 ((ACPI_GET8 (Source) & 0x03) << Info->Value));
0660 break;
0661
0662 case ACPI_RSC_3BITFLAG:
0663
0664
0665
0666 ACPI_SET_BIT (*ACPI_CAST8 (Destination), (UINT8)
0667 ((ACPI_GET8 (Source) & 0x07) << Info->Value));
0668 break;
0669
0670 case ACPI_RSC_6BITFLAG:
0671
0672
0673
0674 ACPI_SET_BIT (*ACPI_CAST8 (Destination), (UINT8)
0675 ((ACPI_GET8 (Source) & 0x3F) << Info->Value));
0676 break;
0677
0678 case ACPI_RSC_COUNT:
0679
0680 ItemCount = ACPI_GET8 (Source);
0681 ACPI_SET8 (Destination, ItemCount);
0682
0683 AmlLength = (UINT16)
0684 (AmlLength + (Info->Value * (ItemCount - 1)));
0685 break;
0686
0687 case ACPI_RSC_COUNT16:
0688
0689 ItemCount = ACPI_GET16 (Source);
0690 AmlLength = (UINT16) (AmlLength + ItemCount);
0691 AcpiRsSetResourceLength (AmlLength, Aml);
0692 break;
0693
0694 case ACPI_RSC_COUNT_GPIO_PIN:
0695
0696 ItemCount = ACPI_GET16 (Source);
0697 ACPI_SET16 (Destination, AmlLength);
0698
0699 AmlLength = (UINT16) (AmlLength + ItemCount * 2);
0700 Target = ACPI_ADD_PTR (void, Aml, Info->Value);
0701 ACPI_SET16 (Target, AmlLength);
0702 AcpiRsSetResourceLength (AmlLength, Aml);
0703 break;
0704
0705 case ACPI_RSC_COUNT_GPIO_VEN:
0706
0707 ItemCount = ACPI_GET16 (Source);
0708 ACPI_SET16 (Destination, ItemCount);
0709
0710 AmlLength = (UINT16) (
0711 AmlLength + (Info->Value * ItemCount));
0712 AcpiRsSetResourceLength (AmlLength, Aml);
0713 break;
0714
0715 case ACPI_RSC_COUNT_GPIO_RES:
0716
0717
0718
0719 ItemCount = ACPI_GET16 (Source);
0720 ACPI_SET16 (Destination, AmlLength);
0721
0722
0723
0724 AmlLength = (UINT16) (AmlLength + ItemCount);
0725 Target = ACPI_ADD_PTR (void, Aml, Info->Value);
0726
0727
0728
0729 ACPI_SET16 (Target, AmlLength);
0730
0731 AcpiRsSetResourceLength (AmlLength, Aml);
0732 break;
0733
0734 case ACPI_RSC_COUNT_SERIAL_VEN:
0735
0736 ItemCount = ACPI_GET16 (Source);
0737 ACPI_SET16 (Destination, ItemCount + Info->Value);
0738 AmlLength = (UINT16) (AmlLength + ItemCount);
0739 AcpiRsSetResourceLength (AmlLength, Aml);
0740 break;
0741
0742 case ACPI_RSC_COUNT_SERIAL_RES:
0743
0744 ItemCount = ACPI_GET16 (Source);
0745 AmlLength = (UINT16) (AmlLength + ItemCount);
0746 AcpiRsSetResourceLength (AmlLength, Aml);
0747 break;
0748
0749 case ACPI_RSC_LENGTH:
0750
0751 AcpiRsSetResourceLength (Info->Value, Aml);
0752 break;
0753
0754 case ACPI_RSC_MOVE8:
0755 case ACPI_RSC_MOVE16:
0756 case ACPI_RSC_MOVE32:
0757 case ACPI_RSC_MOVE64:
0758
0759 if (Info->Value)
0760 {
0761 ItemCount = Info->Value;
0762 }
0763 AcpiRsMoveData (Destination, Source, ItemCount, Info->Opcode);
0764 break;
0765
0766 case ACPI_RSC_MOVE_GPIO_PIN:
0767
0768 Destination = (char *) ACPI_ADD_PTR (void, Aml,
0769 ACPI_GET16 (Destination));
0770 Source = * (UINT16 **) Source;
0771 AcpiRsMoveData (Destination, Source, ItemCount, Info->Opcode);
0772 break;
0773
0774 case ACPI_RSC_MOVE_GPIO_RES:
0775
0776
0777
0778 Destination = (char *) ACPI_ADD_PTR (void, Aml,
0779 ACPI_GET16 (Destination));
0780 Source = * (UINT8 **) Source;
0781 AcpiRsMoveData (Destination, Source, ItemCount, Info->Opcode);
0782 break;
0783
0784 case ACPI_RSC_MOVE_SERIAL_VEN:
0785
0786 Destination = (char *) ACPI_ADD_PTR (void, Aml,
0787 (AmlLength - ItemCount));
0788 Source = * (UINT8 **) Source;
0789 AcpiRsMoveData (Destination, Source, ItemCount, Info->Opcode);
0790 break;
0791
0792 case ACPI_RSC_MOVE_SERIAL_RES:
0793
0794 Destination = (char *) ACPI_ADD_PTR (void, Aml,
0795 (AmlLength - ItemCount));
0796 Source = * (UINT8 **) Source;
0797 AcpiRsMoveData (Destination, Source, ItemCount, Info->Opcode);
0798 break;
0799
0800 case ACPI_RSC_ADDRESS:
0801
0802
0803
0804 AcpiRsSetAddressCommon (Aml, Resource);
0805 break;
0806
0807 case ACPI_RSC_SOURCEX:
0808
0809
0810
0811 AmlLength = AcpiRsSetResourceSource (
0812 Aml, (ACPI_RS_LENGTH) AmlLength, Source);
0813 AcpiRsSetResourceLength (AmlLength, Aml);
0814 break;
0815
0816 case ACPI_RSC_SOURCE:
0817
0818
0819
0820
0821 AmlLength = AcpiRsSetResourceSource (Aml, Info->Value, Source);
0822 AcpiRsSetResourceLength (AmlLength, Aml);
0823 break;
0824
0825 case ACPI_RSC_BITMASK:
0826
0827
0828
0829 ACPI_SET8 (Destination,
0830 AcpiRsEncodeBitmask (Source,
0831 *ACPI_ADD_PTR (UINT8, Resource, Info->Value)));
0832 break;
0833
0834 case ACPI_RSC_BITMASK16:
0835
0836
0837
0838 Temp16 = AcpiRsEncodeBitmask (
0839 Source, *ACPI_ADD_PTR (UINT8, Resource, Info->Value));
0840 ACPI_MOVE_16_TO_16 (Destination, &Temp16);
0841 break;
0842
0843 case ACPI_RSC_EXIT_LE:
0844
0845
0846
0847 if (ItemCount <= Info->Value)
0848 {
0849 goto Exit;
0850 }
0851 break;
0852
0853 case ACPI_RSC_EXIT_NE:
0854
0855
0856
0857 switch (COMPARE_OPCODE (Info))
0858 {
0859 case ACPI_RSC_COMPARE_VALUE:
0860
0861 if (*ACPI_ADD_PTR (UINT8, Resource,
0862 COMPARE_TARGET (Info)) != COMPARE_VALUE (Info))
0863 {
0864 goto Exit;
0865 }
0866 break;
0867
0868 default:
0869
0870 ACPI_ERROR ((AE_INFO, "Invalid conversion sub-opcode"));
0871 return_ACPI_STATUS (AE_BAD_PARAMETER);
0872 }
0873 break;
0874
0875 case ACPI_RSC_EXIT_EQ:
0876
0877
0878
0879 if (*ACPI_ADD_PTR (UINT8, Resource,
0880 COMPARE_TARGET (Info)) == COMPARE_VALUE (Info))
0881 {
0882 goto Exit;
0883 }
0884 break;
0885
0886 default:
0887
0888 ACPI_ERROR ((AE_INFO, "Invalid conversion opcode"));
0889 return_ACPI_STATUS (AE_BAD_PARAMETER);
0890 }
0891
0892 Count--;
0893 Info++;
0894 }
0895
0896 Exit:
0897 return_ACPI_STATUS (AE_OK);
0898 }
0899
0900
0901 #if 0
0902
0903
0904 if (Aml->ExtAddress64.RevisionID !=
0905 AML_RESOURCE_EXTENDED_ADDRESS_REVISION)
0906 {
0907 return_ACPI_STATUS (AE_SUPPORT);
0908 }
0909
0910 if (Resource->Data.StartDpf.PerformanceRobustness >= 3)
0911 {
0912 return_ACPI_STATUS (AE_AML_BAD_RESOURCE_VALUE);
0913 }
0914
0915 if (((Aml->Irq.Flags & 0x09) == 0x00) ||
0916 ((Aml->Irq.Flags & 0x09) == 0x09))
0917 {
0918
0919
0920
0921
0922
0923 ACPI_ERROR ((AE_INFO,
0924 "Invalid interrupt polarity/trigger in resource list, 0x%X",
0925 Aml->Irq.Flags));
0926 return_ACPI_STATUS (AE_BAD_DATA);
0927 }
0928
0929 Resource->Data.ExtendedIrq.InterruptCount = Temp8;
0930 if (Temp8 < 1)
0931 {
0932
0933
0934 return_ACPI_STATUS (AE_AML_BAD_RESOURCE_LENGTH);
0935 }
0936
0937 if (Resource->Data.Dma.Transfer == 0x03)
0938 {
0939 ACPI_ERROR ((AE_INFO,
0940 "Invalid DMA.Transfer preference (3)"));
0941 return_ACPI_STATUS (AE_BAD_DATA);
0942 }
0943 #endif