Warning, cross-references for /kernel/include/drivers/acpi/amlresrc.h need to be fixed.
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 #ifndef __AMLRESRC_H
0120 #define __AMLRESRC_H
0121
0122
0123
0124
0125
0126
0127 #define ACPI_RESTAG_ADDRESS "_ADR"
0128 #define ACPI_RESTAG_ALIGNMENT "_ALN"
0129 #define ACPI_RESTAG_ADDRESSSPACE "_ASI"
0130 #define ACPI_RESTAG_ACCESSSIZE "_ASZ"
0131 #define ACPI_RESTAG_TYPESPECIFICATTRIBUTES "_ATT"
0132 #define ACPI_RESTAG_BASEADDRESS "_BAS"
0133 #define ACPI_RESTAG_BUSMASTER "_BM_"
0134 #define ACPI_RESTAG_DECODE "_DEC"
0135 #define ACPI_RESTAG_DMA "_DMA"
0136 #define ACPI_RESTAG_DMATYPE "_TYP"
0137 #define ACPI_RESTAG_GRANULARITY "_GRA"
0138 #define ACPI_RESTAG_INTERRUPT "_INT"
0139 #define ACPI_RESTAG_INTERRUPTLEVEL "_LL_"
0140 #define ACPI_RESTAG_INTERRUPTSHARE "_SHR"
0141 #define ACPI_RESTAG_INTERRUPTTYPE "_HE_"
0142 #define ACPI_RESTAG_LENGTH "_LEN"
0143 #define ACPI_RESTAG_MEMATTRIBUTES "_MTP"
0144 #define ACPI_RESTAG_MEMTYPE "_MEM"
0145 #define ACPI_RESTAG_MAXADDR "_MAX"
0146 #define ACPI_RESTAG_MINADDR "_MIN"
0147 #define ACPI_RESTAG_MAXTYPE "_MAF"
0148 #define ACPI_RESTAG_MINTYPE "_MIF"
0149 #define ACPI_RESTAG_REGISTERBITOFFSET "_RBO"
0150 #define ACPI_RESTAG_REGISTERBITWIDTH "_RBW"
0151 #define ACPI_RESTAG_RANGETYPE "_RNG"
0152 #define ACPI_RESTAG_READWRITETYPE "_RW_"
0153 #define ACPI_RESTAG_TRANSLATION "_TRA"
0154 #define ACPI_RESTAG_TRANSTYPE "_TRS"
0155 #define ACPI_RESTAG_TYPE "_TTP"
0156 #define ACPI_RESTAG_XFERTYPE "_SIZ"
0157
0158
0159
0160
0161 #define ASL_RDESC_IRQ_SIZE 0x02
0162 #define ASL_RDESC_DMA_SIZE 0x02
0163 #define ASL_RDESC_ST_DEPEND_SIZE 0x00
0164 #define ASL_RDESC_END_DEPEND_SIZE 0x00
0165 #define ASL_RDESC_IO_SIZE 0x07
0166 #define ASL_RDESC_FIXED_IO_SIZE 0x03
0167 #define ASL_RDESC_END_TAG_SIZE 0x01
0168
0169
0170 typedef struct asl_resource_node
0171 {
0172 UINT32 BufferLength;
0173 void *Buffer;
0174 struct asl_resource_node *Next;
0175
0176 } ASL_RESOURCE_NODE;
0177
0178
0179
0180
0181 #define ACPI_AML_SIZE_LARGE(r) (sizeof (r) - sizeof (AML_RESOURCE_LARGE_HEADER))
0182 #define ACPI_AML_SIZE_SMALL(r) (sizeof (r) - sizeof (AML_RESOURCE_SMALL_HEADER))
0183
0184
0185
0186
0187
0188
0189
0190 #pragma pack(1)
0191
0192
0193
0194
0195 #define AML_RESOURCE_SMALL_HEADER_COMMON \
0196 UINT8 DescriptorType;
0197
0198 typedef struct aml_resource_small_header
0199 {
0200 AML_RESOURCE_SMALL_HEADER_COMMON
0201
0202 } AML_RESOURCE_SMALL_HEADER;
0203
0204
0205 typedef struct aml_resource_irq
0206 {
0207 AML_RESOURCE_SMALL_HEADER_COMMON
0208 UINT16 IrqMask;
0209 UINT8 Flags;
0210
0211 } AML_RESOURCE_IRQ;
0212
0213
0214 typedef struct aml_resource_irq_noflags
0215 {
0216 AML_RESOURCE_SMALL_HEADER_COMMON
0217 UINT16 IrqMask;
0218
0219 } AML_RESOURCE_IRQ_NOFLAGS;
0220
0221
0222 typedef struct aml_resource_dma
0223 {
0224 AML_RESOURCE_SMALL_HEADER_COMMON
0225 UINT8 DmaChannelMask;
0226 UINT8 Flags;
0227
0228 } AML_RESOURCE_DMA;
0229
0230
0231 typedef struct aml_resource_start_dependent
0232 {
0233 AML_RESOURCE_SMALL_HEADER_COMMON
0234 UINT8 Flags;
0235
0236 } AML_RESOURCE_START_DEPENDENT;
0237
0238
0239 typedef struct aml_resource_start_dependent_noprio
0240 {
0241 AML_RESOURCE_SMALL_HEADER_COMMON
0242
0243 } AML_RESOURCE_START_DEPENDENT_NOPRIO;
0244
0245
0246 typedef struct aml_resource_end_dependent
0247 {
0248 AML_RESOURCE_SMALL_HEADER_COMMON
0249
0250 } AML_RESOURCE_END_DEPENDENT;
0251
0252
0253 typedef struct aml_resource_io
0254 {
0255 AML_RESOURCE_SMALL_HEADER_COMMON
0256 UINT8 Flags;
0257 UINT16 Minimum;
0258 UINT16 Maximum;
0259 UINT8 Alignment;
0260 UINT8 AddressLength;
0261
0262 } AML_RESOURCE_IO;
0263
0264
0265 typedef struct aml_resource_fixed_io
0266 {
0267 AML_RESOURCE_SMALL_HEADER_COMMON
0268 UINT16 Address;
0269 UINT8 AddressLength;
0270
0271 } AML_RESOURCE_FIXED_IO;
0272
0273
0274 typedef struct aml_resource_vendor_small
0275 {
0276 AML_RESOURCE_SMALL_HEADER_COMMON
0277
0278 } AML_RESOURCE_VENDOR_SMALL;
0279
0280
0281 typedef struct aml_resource_end_tag
0282 {
0283 AML_RESOURCE_SMALL_HEADER_COMMON
0284 UINT8 Checksum;
0285
0286 } AML_RESOURCE_END_TAG;
0287
0288
0289
0290
0291
0292 #define AML_RESOURCE_LARGE_HEADER_COMMON \
0293 UINT8 DescriptorType;\
0294 UINT16 ResourceLength;
0295
0296 typedef struct aml_resource_large_header
0297 {
0298 AML_RESOURCE_LARGE_HEADER_COMMON
0299
0300 } AML_RESOURCE_LARGE_HEADER;
0301
0302
0303 typedef struct aml_resource_memory24
0304 {
0305 AML_RESOURCE_LARGE_HEADER_COMMON
0306 UINT8 Flags;
0307 UINT16 Minimum;
0308 UINT16 Maximum;
0309 UINT16 Alignment;
0310 UINT16 AddressLength;
0311
0312 } AML_RESOURCE_MEMORY24;
0313
0314
0315 typedef struct aml_resource_vendor_large
0316 {
0317 AML_RESOURCE_LARGE_HEADER_COMMON
0318
0319 } AML_RESOURCE_VENDOR_LARGE;
0320
0321
0322 typedef struct aml_resource_memory32
0323 {
0324 AML_RESOURCE_LARGE_HEADER_COMMON
0325 UINT8 Flags;
0326 UINT32 Minimum;
0327 UINT32 Maximum;
0328 UINT32 Alignment;
0329 UINT32 AddressLength;
0330
0331 } AML_RESOURCE_MEMORY32;
0332
0333
0334 typedef struct aml_resource_fixed_memory32
0335 {
0336 AML_RESOURCE_LARGE_HEADER_COMMON
0337 UINT8 Flags;
0338 UINT32 Address;
0339 UINT32 AddressLength;
0340
0341 } AML_RESOURCE_FIXED_MEMORY32;
0342
0343
0344 #define AML_RESOURCE_ADDRESS_COMMON \
0345 UINT8 ResourceType; \
0346 UINT8 Flags; \
0347 UINT8 SpecificFlags;
0348
0349
0350 typedef struct aml_resource_address
0351 {
0352 AML_RESOURCE_LARGE_HEADER_COMMON
0353 AML_RESOURCE_ADDRESS_COMMON
0354
0355 } AML_RESOURCE_ADDRESS;
0356
0357
0358 typedef struct aml_resource_extended_address64
0359 {
0360 AML_RESOURCE_LARGE_HEADER_COMMON
0361 AML_RESOURCE_ADDRESS_COMMON
0362 UINT8 RevisionID;
0363 UINT8 Reserved;
0364 UINT64 Granularity;
0365 UINT64 Minimum;
0366 UINT64 Maximum;
0367 UINT64 TranslationOffset;
0368 UINT64 AddressLength;
0369 UINT64 TypeSpecific;
0370
0371 } AML_RESOURCE_EXTENDED_ADDRESS64;
0372
0373 #define AML_RESOURCE_EXTENDED_ADDRESS_REVISION 1
0374
0375
0376 typedef struct aml_resource_address64
0377 {
0378 AML_RESOURCE_LARGE_HEADER_COMMON
0379 AML_RESOURCE_ADDRESS_COMMON
0380 UINT64 Granularity;
0381 UINT64 Minimum;
0382 UINT64 Maximum;
0383 UINT64 TranslationOffset;
0384 UINT64 AddressLength;
0385
0386 } AML_RESOURCE_ADDRESS64;
0387
0388
0389 typedef struct aml_resource_address32
0390 {
0391 AML_RESOURCE_LARGE_HEADER_COMMON
0392 AML_RESOURCE_ADDRESS_COMMON
0393 UINT32 Granularity;
0394 UINT32 Minimum;
0395 UINT32 Maximum;
0396 UINT32 TranslationOffset;
0397 UINT32 AddressLength;
0398
0399 } AML_RESOURCE_ADDRESS32;
0400
0401
0402 typedef struct aml_resource_address16
0403 {
0404 AML_RESOURCE_LARGE_HEADER_COMMON
0405 AML_RESOURCE_ADDRESS_COMMON
0406 UINT16 Granularity;
0407 UINT16 Minimum;
0408 UINT16 Maximum;
0409 UINT16 TranslationOffset;
0410 UINT16 AddressLength;
0411
0412 } AML_RESOURCE_ADDRESS16;
0413
0414
0415 typedef struct aml_resource_extended_irq
0416 {
0417 AML_RESOURCE_LARGE_HEADER_COMMON
0418 UINT8 Flags;
0419 UINT8 InterruptCount;
0420 UINT32 Interrupts[1];
0421
0422
0423 } AML_RESOURCE_EXTENDED_IRQ;
0424
0425
0426 typedef struct aml_resource_generic_register
0427 {
0428 AML_RESOURCE_LARGE_HEADER_COMMON
0429 UINT8 AddressSpaceId;
0430 UINT8 BitWidth;
0431 UINT8 BitOffset;
0432 UINT8 AccessSize;
0433 UINT64 Address;
0434
0435 } AML_RESOURCE_GENERIC_REGISTER;
0436
0437
0438
0439 #pragma pack()
0440
0441
0442
0443 typedef union aml_resource
0444 {
0445
0446
0447 UINT8 DescriptorType;
0448 AML_RESOURCE_SMALL_HEADER SmallHeader;
0449 AML_RESOURCE_LARGE_HEADER LargeHeader;
0450
0451
0452
0453 AML_RESOURCE_IRQ Irq;
0454 AML_RESOURCE_DMA Dma;
0455 AML_RESOURCE_START_DEPENDENT StartDpf;
0456 AML_RESOURCE_END_DEPENDENT EndDpf;
0457 AML_RESOURCE_IO Io;
0458 AML_RESOURCE_FIXED_IO FixedIo;
0459 AML_RESOURCE_VENDOR_SMALL VendorSmall;
0460 AML_RESOURCE_END_TAG EndTag;
0461
0462
0463
0464 AML_RESOURCE_MEMORY24 Memory24;
0465 AML_RESOURCE_GENERIC_REGISTER GenericReg;
0466 AML_RESOURCE_VENDOR_LARGE VendorLarge;
0467 AML_RESOURCE_MEMORY32 Memory32;
0468 AML_RESOURCE_FIXED_MEMORY32 FixedMemory32;
0469 AML_RESOURCE_ADDRESS16 Address16;
0470 AML_RESOURCE_ADDRESS32 Address32;
0471 AML_RESOURCE_ADDRESS64 Address64;
0472 AML_RESOURCE_EXTENDED_ADDRESS64 ExtAddress64;
0473 AML_RESOURCE_EXTENDED_IRQ ExtendedIrq;
0474
0475
0476
0477 AML_RESOURCE_ADDRESS Address;
0478 UINT32 DwordItem;
0479 UINT16 WordItem;
0480 UINT8 ByteItem;
0481
0482 } AML_RESOURCE;
0483
0484 #endif
0485