File indexing completed on 2025-05-11 08:24:02
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 "amlcode.h"
0155 #include "acdispat.h"
0156 #include "acinterp.h"
0157 #include "acnamesp.h"
0158 #include "acparser.h"
0159
0160 #ifdef ACPI_EXEC_APP
0161 #include "aecommon.h"
0162 #endif
0163
0164
0165 #define _COMPONENT ACPI_DISPATCHER
0166 ACPI_MODULE_NAME ("dsfield")
0167
0168
0169
0170 #ifdef ACPI_ASL_COMPILER
0171 #include "acdisasm.h"
0172
0173 static ACPI_STATUS
0174 AcpiDsCreateExternalRegion (
0175 ACPI_STATUS LookupStatus,
0176 ACPI_PARSE_OBJECT *Op,
0177 char *Path,
0178 ACPI_WALK_STATE *WalkState,
0179 ACPI_NAMESPACE_NODE **Node);
0180 #endif
0181
0182 static ACPI_STATUS
0183 AcpiDsGetFieldNames (
0184 ACPI_CREATE_FIELD_INFO *Info,
0185 ACPI_WALK_STATE *WalkState,
0186 ACPI_PARSE_OBJECT *Arg);
0187
0188
0189 #ifdef ACPI_ASL_COMPILER
0190
0191
0192
0193
0194
0195
0196
0197
0198
0199
0200
0201
0202
0203
0204
0205
0206
0207 static ACPI_STATUS
0208 AcpiDsCreateExternalRegion (
0209 ACPI_STATUS LookupStatus,
0210 ACPI_PARSE_OBJECT *Op,
0211 char *Path,
0212 ACPI_WALK_STATE *WalkState,
0213 ACPI_NAMESPACE_NODE **Node)
0214 {
0215 ACPI_STATUS Status;
0216 ACPI_OPERAND_OBJECT *ObjDesc;
0217
0218
0219 if (LookupStatus != AE_NOT_FOUND)
0220 {
0221 return (LookupStatus);
0222 }
0223
0224
0225
0226
0227
0228
0229 AcpiDmAddOpToExternalList (Op, Path, ACPI_TYPE_REGION, 0, 0);
0230
0231 Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ACPI_TYPE_REGION,
0232 ACPI_IMODE_LOAD_PASS1, ACPI_NS_SEARCH_PARENT, WalkState, Node);
0233 if (ACPI_FAILURE (Status))
0234 {
0235 return (Status);
0236 }
0237
0238
0239
0240 ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_REGION);
0241 if (!ObjDesc)
0242 {
0243 return (AE_NO_MEMORY);
0244 }
0245
0246 ObjDesc->Region.Node = *Node;
0247 Status = AcpiNsAttachObject (*Node, ObjDesc, ACPI_TYPE_REGION);
0248 return (Status);
0249 }
0250 #endif
0251
0252
0253
0254
0255
0256
0257
0258
0259
0260
0261
0262
0263
0264
0265
0266
0267
0268
0269
0270
0271
0272 ACPI_STATUS
0273 AcpiDsCreateBufferField (
0274 ACPI_PARSE_OBJECT *Op,
0275 ACPI_WALK_STATE *WalkState)
0276 {
0277 ACPI_PARSE_OBJECT *Arg;
0278 ACPI_NAMESPACE_NODE *Node;
0279 ACPI_STATUS Status;
0280 ACPI_OPERAND_OBJECT *ObjDesc;
0281 ACPI_OPERAND_OBJECT *SecondDesc = NULL;
0282 UINT32 Flags;
0283
0284
0285 ACPI_FUNCTION_TRACE (DsCreateBufferField);
0286
0287
0288
0289
0290
0291 if (Op->Common.AmlOpcode == AML_CREATE_FIELD_OP)
0292 {
0293
0294
0295 Arg = AcpiPsGetArg (Op, 3);
0296 }
0297 else
0298 {
0299
0300
0301 Arg = AcpiPsGetArg (Op, 2);
0302 }
0303
0304 if (!Arg)
0305 {
0306 return_ACPI_STATUS (AE_AML_NO_OPERAND);
0307 }
0308
0309 if (WalkState->DeferredNode)
0310 {
0311 Node = WalkState->DeferredNode;
0312 }
0313 else
0314 {
0315
0316
0317 if (!(WalkState->ParseFlags & ACPI_PARSE_EXECUTE))
0318 {
0319 ACPI_ERROR ((AE_INFO,
0320 "Parse execute mode is not set"));
0321 return_ACPI_STATUS (AE_AML_INTERNAL);
0322 }
0323
0324
0325
0326 Flags = ACPI_NS_NO_UPSEARCH | ACPI_NS_DONT_OPEN_SCOPE |
0327 ACPI_NS_ERROR_IF_FOUND;
0328
0329
0330
0331
0332
0333 if (WalkState->MethodNode &&
0334 !(WalkState->ParseFlags & ACPI_PARSE_MODULE_LEVEL))
0335 {
0336 Flags |= ACPI_NS_TEMPORARY;
0337 }
0338
0339
0340
0341 Status = AcpiNsLookup (WalkState->ScopeInfo,
0342 Arg->Common.Value.String, ACPI_TYPE_ANY,
0343 ACPI_IMODE_LOAD_PASS1, Flags, WalkState, &Node);
0344 if ((WalkState->ParseFlags & ACPI_PARSE_DISASSEMBLE) &&
0345 Status == AE_ALREADY_EXISTS)
0346 {
0347 Status = AE_OK;
0348 }
0349 else if (ACPI_FAILURE (Status))
0350 {
0351 ACPI_ERROR_NAMESPACE (WalkState->ScopeInfo,
0352 Arg->Common.Value.String, Status);
0353 return_ACPI_STATUS (Status);
0354 }
0355 }
0356
0357
0358
0359
0360
0361
0362 Op->Common.Node = Node;
0363
0364
0365
0366
0367
0368
0369 ObjDesc = AcpiNsGetAttachedObject (Node);
0370 if (ObjDesc)
0371 {
0372 return_ACPI_STATUS (AE_OK);
0373 }
0374
0375
0376
0377
0378
0379
0380
0381
0382 ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_BUFFER_FIELD);
0383 if (!ObjDesc)
0384 {
0385 Status = AE_NO_MEMORY;
0386 goto Cleanup;
0387 }
0388
0389
0390
0391
0392
0393 SecondDesc = ObjDesc->Common.NextObject;
0394 SecondDesc->Extra.AmlStart = Op->Named.Data;
0395 SecondDesc->Extra.AmlLength = Op->Named.Length;
0396 ObjDesc->BufferField.Node = Node;
0397
0398
0399
0400 Status = AcpiNsAttachObject (Node, ObjDesc, ACPI_TYPE_BUFFER_FIELD);
0401 if (ACPI_FAILURE (Status))
0402 {
0403 goto Cleanup;
0404 }
0405
0406
0407 Cleanup:
0408
0409
0410
0411 AcpiUtRemoveReference (ObjDesc);
0412 return_ACPI_STATUS (Status);
0413 }
0414
0415
0416
0417
0418
0419
0420
0421
0422
0423
0424
0425
0426
0427
0428
0429
0430
0431 static ACPI_STATUS
0432 AcpiDsGetFieldNames (
0433 ACPI_CREATE_FIELD_INFO *Info,
0434 ACPI_WALK_STATE *WalkState,
0435 ACPI_PARSE_OBJECT *Arg)
0436 {
0437 ACPI_STATUS Status;
0438 UINT64 Position;
0439 ACPI_PARSE_OBJECT *Child;
0440
0441 #ifdef ACPI_EXEC_APP
0442 ACPI_OPERAND_OBJECT *ResultDesc;
0443 ACPI_OPERAND_OBJECT *ObjDesc;
0444 char *NamePath;
0445 #endif
0446
0447
0448 ACPI_FUNCTION_TRACE_PTR (DsGetFieldNames, Info);
0449
0450
0451
0452
0453 Info->FieldBitPosition = 0;
0454
0455
0456
0457 while (Arg)
0458 {
0459
0460
0461
0462
0463
0464
0465
0466 switch (Arg->Common.AmlOpcode)
0467 {
0468 case AML_INT_RESERVEDFIELD_OP:
0469
0470 Position = (UINT64) Info->FieldBitPosition +
0471 (UINT64) Arg->Common.Value.Size;
0472
0473 if (Position > ACPI_UINT32_MAX)
0474 {
0475 ACPI_ERROR ((AE_INFO,
0476 "Bit offset within field too large (> 0xFFFFFFFF)"));
0477 return_ACPI_STATUS (AE_SUPPORT);
0478 }
0479
0480 Info->FieldBitPosition = (UINT32) Position;
0481 break;
0482
0483 case AML_INT_ACCESSFIELD_OP:
0484 case AML_INT_EXTACCESSFIELD_OP:
0485
0486
0487
0488
0489
0490
0491
0492
0493
0494
0495
0496
0497
0498 Info->FieldFlags = (UINT8)
0499 ((Info->FieldFlags & ~(AML_FIELD_ACCESS_TYPE_MASK)) |
0500 ((UINT8) ((UINT32) (Arg->Common.Value.Integer & 0x07))));
0501
0502
0503
0504 Info->Attribute = (UINT8)
0505 ((Arg->Common.Value.Integer >> 8) & 0xFF);
0506
0507
0508
0509 Info->AccessLength = (UINT8)
0510 ((Arg->Common.Value.Integer >> 16) & 0xFF);
0511 break;
0512
0513 case AML_INT_CONNECTION_OP:
0514
0515
0516
0517
0518 Info->ResourceBuffer = NULL;
0519 Info->ConnectionNode = NULL;
0520 Info->PinNumberIndex = 0;
0521
0522
0523
0524
0525
0526 Child = Arg->Common.Value.Arg;
0527 if (Child->Common.AmlOpcode == AML_INT_BYTELIST_OP)
0528 {
0529 Info->ResourceBuffer = Child->Named.Data;
0530 Info->ResourceLength = (UINT16) Child->Named.Value.Integer;
0531 }
0532 else
0533 {
0534
0535
0536 Status = AcpiNsLookup (WalkState->ScopeInfo,
0537 Child->Common.Value.Name, ACPI_TYPE_ANY,
0538 ACPI_IMODE_EXECUTE, ACPI_NS_DONT_OPEN_SCOPE,
0539 WalkState, &Info->ConnectionNode);
0540 if (ACPI_FAILURE (Status))
0541 {
0542 ACPI_ERROR_NAMESPACE (WalkState->ScopeInfo,
0543 Child->Common.Value.Name, Status);
0544 return_ACPI_STATUS (Status);
0545 }
0546 }
0547 break;
0548
0549 case AML_INT_NAMEDFIELD_OP:
0550
0551
0552
0553 Status = AcpiNsLookup (WalkState->ScopeInfo,
0554 (char *) &Arg->Named.Name, Info->FieldType,
0555 ACPI_IMODE_EXECUTE, ACPI_NS_DONT_OPEN_SCOPE,
0556 WalkState, &Info->FieldNode);
0557 if (ACPI_FAILURE (Status))
0558 {
0559 ACPI_ERROR_NAMESPACE (WalkState->ScopeInfo,
0560 (char *) &Arg->Named.Name, Status);
0561 return_ACPI_STATUS (Status);
0562 }
0563 else
0564 {
0565 Arg->Common.Node = Info->FieldNode;
0566 Info->FieldBitLength = Arg->Common.Value.Size;
0567
0568
0569
0570
0571
0572
0573
0574 if (!AcpiNsGetAttachedObject (Info->FieldNode))
0575 {
0576 Status = AcpiExPrepFieldValue (Info);
0577 if (ACPI_FAILURE (Status))
0578 {
0579 return_ACPI_STATUS (Status);
0580 }
0581 #ifdef ACPI_EXEC_APP
0582 NamePath = AcpiNsGetExternalPathname (Info->FieldNode);
0583 if (ACPI_SUCCESS (AeLookupInitFileEntry (NamePath, &ObjDesc)))
0584 {
0585 AcpiExWriteDataToField (ObjDesc,
0586 AcpiNsGetAttachedObject (Info->FieldNode),
0587 &ResultDesc);
0588 AcpiUtRemoveReference (ObjDesc);
0589 }
0590 ACPI_FREE (NamePath);
0591 #endif
0592 }
0593 }
0594
0595
0596
0597 Position = (UINT64) Info->FieldBitPosition +
0598 (UINT64) Arg->Common.Value.Size;
0599
0600 if (Position > ACPI_UINT32_MAX)
0601 {
0602 ACPI_ERROR ((AE_INFO,
0603 "Field [%4.4s] bit offset too large (> 0xFFFFFFFF)",
0604 ACPI_CAST_PTR (char, &Info->FieldNode->Name)));
0605 return_ACPI_STATUS (AE_SUPPORT);
0606 }
0607
0608 Info->FieldBitPosition += Info->FieldBitLength;
0609 Info->PinNumberIndex++;
0610 break;
0611
0612 default:
0613
0614 ACPI_ERROR ((AE_INFO,
0615 "Invalid opcode in field list: 0x%X",
0616 Arg->Common.AmlOpcode));
0617 return_ACPI_STATUS (AE_AML_BAD_OPCODE);
0618 }
0619
0620 Arg = Arg->Common.Next;
0621 }
0622
0623 return_ACPI_STATUS (AE_OK);
0624 }
0625
0626
0627
0628
0629
0630
0631
0632
0633
0634
0635
0636
0637
0638
0639
0640
0641 ACPI_STATUS
0642 AcpiDsCreateField (
0643 ACPI_PARSE_OBJECT *Op,
0644 ACPI_NAMESPACE_NODE *RegionNode,
0645 ACPI_WALK_STATE *WalkState)
0646 {
0647 ACPI_STATUS Status;
0648 ACPI_PARSE_OBJECT *Arg;
0649 ACPI_CREATE_FIELD_INFO Info;
0650
0651
0652 ACPI_FUNCTION_TRACE_PTR (DsCreateField, Op);
0653
0654
0655
0656
0657 Arg = Op->Common.Value.Arg;
0658
0659 if (!RegionNode)
0660 {
0661 Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Common.Value.Name,
0662 ACPI_TYPE_REGION, ACPI_IMODE_EXECUTE,
0663 ACPI_NS_SEARCH_PARENT, WalkState, &RegionNode);
0664 #ifdef ACPI_ASL_COMPILER
0665 Status = AcpiDsCreateExternalRegion (Status, Arg,
0666 Arg->Common.Value.Name, WalkState, &RegionNode);
0667 #endif
0668 if (ACPI_FAILURE (Status))
0669 {
0670 ACPI_ERROR_NAMESPACE (WalkState->ScopeInfo,
0671 Arg->Common.Value.Name, Status);
0672 return_ACPI_STATUS (Status);
0673 }
0674 }
0675
0676 memset (&Info, 0, sizeof (ACPI_CREATE_FIELD_INFO));
0677
0678
0679
0680 Arg = Arg->Common.Next;
0681 Info.FieldFlags = (UINT8) Arg->Common.Value.Integer;
0682 Info.Attribute = 0;
0683
0684
0685
0686 Info.FieldType = ACPI_TYPE_LOCAL_REGION_FIELD;
0687 Info.RegionNode = RegionNode;
0688
0689 Status = AcpiDsGetFieldNames (&Info, WalkState, Arg->Common.Next);
0690 if (ACPI_FAILURE (Status))
0691 {
0692 return_ACPI_STATUS (Status);
0693 }
0694
0695 if (Info.RegionNode->Object->Region.SpaceId == ACPI_ADR_SPACE_PLATFORM_COMM)
0696 {
0697 RegionNode->Object->Field.InternalPccBuffer =
0698 ACPI_ALLOCATE_ZEROED(Info.RegionNode->Object->Region.Length);
0699 if (!RegionNode->Object->Field.InternalPccBuffer)
0700 {
0701 return_ACPI_STATUS (AE_NO_MEMORY);
0702 }
0703 }
0704
0705 return_ACPI_STATUS (Status);
0706 }
0707
0708
0709
0710
0711
0712
0713
0714
0715
0716
0717
0718
0719
0720
0721
0722
0723
0724 ACPI_STATUS
0725 AcpiDsInitFieldObjects (
0726 ACPI_PARSE_OBJECT *Op,
0727 ACPI_WALK_STATE *WalkState)
0728 {
0729 ACPI_STATUS Status;
0730 ACPI_PARSE_OBJECT *Arg = NULL;
0731 ACPI_NAMESPACE_NODE *Node;
0732 UINT8 Type = 0;
0733 UINT32 Flags;
0734
0735
0736 ACPI_FUNCTION_TRACE_PTR (DsInitFieldObjects, Op);
0737
0738
0739
0740
0741 if (!(WalkState->ParseFlags & ACPI_PARSE_EXECUTE))
0742 {
0743 if (WalkState->ParseFlags & ACPI_PARSE_DEFERRED_OP)
0744 {
0745
0746
0747 return_ACPI_STATUS (AE_OK);
0748 }
0749
0750 ACPI_ERROR ((AE_INFO,
0751 "Parse deferred mode is not set"));
0752 return_ACPI_STATUS (AE_AML_INTERNAL);
0753 }
0754
0755
0756
0757
0758
0759 switch (WalkState->Opcode)
0760 {
0761 case AML_FIELD_OP:
0762
0763 Arg = AcpiPsGetArg (Op, 2);
0764 Type = ACPI_TYPE_LOCAL_REGION_FIELD;
0765 break;
0766
0767 case AML_BANK_FIELD_OP:
0768
0769 Arg = AcpiPsGetArg (Op, 4);
0770 Type = ACPI_TYPE_LOCAL_BANK_FIELD;
0771 break;
0772
0773 case AML_INDEX_FIELD_OP:
0774
0775 Arg = AcpiPsGetArg (Op, 3);
0776 Type = ACPI_TYPE_LOCAL_INDEX_FIELD;
0777 break;
0778
0779 default:
0780
0781 return_ACPI_STATUS (AE_BAD_PARAMETER);
0782 }
0783
0784
0785
0786 Flags = ACPI_NS_NO_UPSEARCH | ACPI_NS_DONT_OPEN_SCOPE |
0787 ACPI_NS_ERROR_IF_FOUND;
0788
0789
0790
0791
0792
0793 if (WalkState->MethodNode &&
0794 !(WalkState->ParseFlags & ACPI_PARSE_MODULE_LEVEL))
0795 {
0796 Flags |= ACPI_NS_TEMPORARY;
0797 }
0798
0799 #ifdef ACPI_EXEC_APP
0800 Flags |= ACPI_NS_OVERRIDE_IF_FOUND;
0801 #endif
0802
0803
0804
0805
0806 while (Arg)
0807 {
0808
0809
0810
0811
0812 if (Arg->Common.AmlOpcode == AML_INT_NAMEDFIELD_OP)
0813 {
0814 Status = AcpiNsLookup (WalkState->ScopeInfo,
0815 (char *) &Arg->Named.Name, Type, ACPI_IMODE_LOAD_PASS1,
0816 Flags, WalkState, &Node);
0817 if (ACPI_FAILURE (Status))
0818 {
0819 ACPI_ERROR_NAMESPACE (WalkState->ScopeInfo,
0820 (char *) &Arg->Named.Name, Status);
0821 if (Status != AE_ALREADY_EXISTS)
0822 {
0823 return_ACPI_STATUS (Status);
0824 }
0825
0826
0827 }
0828
0829 Arg->Common.Node = Node;
0830 }
0831
0832
0833
0834 Arg = Arg->Common.Next;
0835 }
0836
0837 return_ACPI_STATUS (AE_OK);
0838 }
0839
0840
0841
0842
0843
0844
0845
0846
0847
0848
0849
0850
0851
0852
0853
0854
0855 ACPI_STATUS
0856 AcpiDsCreateBankField (
0857 ACPI_PARSE_OBJECT *Op,
0858 ACPI_NAMESPACE_NODE *RegionNode,
0859 ACPI_WALK_STATE *WalkState)
0860 {
0861 ACPI_STATUS Status;
0862 ACPI_PARSE_OBJECT *Arg;
0863 ACPI_CREATE_FIELD_INFO Info;
0864
0865
0866 ACPI_FUNCTION_TRACE_PTR (DsCreateBankField, Op);
0867
0868
0869
0870
0871 Arg = Op->Common.Value.Arg;
0872 if (!RegionNode)
0873 {
0874 Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Common.Value.Name,
0875 ACPI_TYPE_REGION, ACPI_IMODE_EXECUTE,
0876 ACPI_NS_SEARCH_PARENT, WalkState, &RegionNode);
0877 #ifdef ACPI_ASL_COMPILER
0878 Status = AcpiDsCreateExternalRegion (Status, Arg,
0879 Arg->Common.Value.Name, WalkState, &RegionNode);
0880 #endif
0881 if (ACPI_FAILURE (Status))
0882 {
0883 ACPI_ERROR_NAMESPACE (WalkState->ScopeInfo,
0884 Arg->Common.Value.Name, Status);
0885 return_ACPI_STATUS (Status);
0886 }
0887 }
0888
0889
0890
0891 Arg = Arg->Common.Next;
0892 Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Common.Value.String,
0893 ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE,
0894 ACPI_NS_SEARCH_PARENT, WalkState, &Info.RegisterNode);
0895 if (ACPI_FAILURE (Status))
0896 {
0897 ACPI_ERROR_NAMESPACE (WalkState->ScopeInfo,
0898 Arg->Common.Value.String, Status);
0899 return_ACPI_STATUS (Status);
0900 }
0901
0902
0903
0904
0905
0906
0907 Arg = Arg->Common.Next;
0908
0909
0910
0911 Arg = Arg->Common.Next;
0912 Info.FieldFlags = (UINT8) Arg->Common.Value.Integer;
0913
0914
0915
0916 Info.FieldType = ACPI_TYPE_LOCAL_BANK_FIELD;
0917 Info.RegionNode = RegionNode;
0918
0919
0920
0921
0922
0923
0924
0925
0926
0927
0928 Info.DataRegisterNode = (ACPI_NAMESPACE_NODE*) Op;
0929
0930 Status = AcpiDsGetFieldNames (&Info, WalkState, Arg->Common.Next);
0931 return_ACPI_STATUS (Status);
0932 }
0933
0934
0935
0936
0937
0938
0939
0940
0941
0942
0943
0944
0945
0946
0947
0948
0949 ACPI_STATUS
0950 AcpiDsCreateIndexField (
0951 ACPI_PARSE_OBJECT *Op,
0952 ACPI_NAMESPACE_NODE *RegionNode,
0953 ACPI_WALK_STATE *WalkState)
0954 {
0955 ACPI_STATUS Status;
0956 ACPI_PARSE_OBJECT *Arg;
0957 ACPI_CREATE_FIELD_INFO Info;
0958
0959
0960 ACPI_FUNCTION_TRACE_PTR (DsCreateIndexField, Op);
0961
0962
0963
0964
0965 Arg = Op->Common.Value.Arg;
0966 Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Common.Value.String,
0967 ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE,
0968 ACPI_NS_SEARCH_PARENT, WalkState, &Info.RegisterNode);
0969 if (ACPI_FAILURE (Status))
0970 {
0971 ACPI_ERROR_NAMESPACE (WalkState->ScopeInfo,
0972 Arg->Common.Value.String, Status);
0973 return_ACPI_STATUS (Status);
0974 }
0975
0976
0977
0978 Arg = Arg->Common.Next;
0979 Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Common.Value.String,
0980 ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE,
0981 ACPI_NS_SEARCH_PARENT, WalkState, &Info.DataRegisterNode);
0982 if (ACPI_FAILURE (Status))
0983 {
0984 ACPI_ERROR_NAMESPACE (WalkState->ScopeInfo,
0985 Arg->Common.Value.String, Status);
0986 return_ACPI_STATUS (Status);
0987 }
0988
0989
0990
0991 Arg = Arg->Common.Next;
0992 Info.FieldFlags = (UINT8) Arg->Common.Value.Integer;
0993
0994
0995
0996 Info.FieldType = ACPI_TYPE_LOCAL_INDEX_FIELD;
0997 Info.RegionNode = RegionNode;
0998
0999 Status = AcpiDsGetFieldNames (&Info, WalkState, Arg->Common.Next);
1000 return_ACPI_STATUS (Status);
1001 }