ReactOS 0.4.17-dev-684-ga6524ef
resources.h File Reference
#include <uacpi/types.h>
Include dependency graph for resources.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  uacpi_resource_source
 
struct  uacpi_resource_irq
 
struct  uacpi_resource_extended_irq
 
struct  uacpi_resource_dma
 
struct  uacpi_resource_fixed_dma
 
struct  uacpi_resource_io
 
struct  uacpi_resource_fixed_io
 
struct  uacpi_memory_attribute
 
struct  uacpi_io_attribute
 
union  uacpi_address_attribute
 
struct  uacpi_resource_address_common
 
struct  uacpi_resource_address16
 
struct  uacpi_resource_address32
 
struct  uacpi_resource_address64
 
struct  uacpi_resource_address64_extended
 
struct  uacpi_resource_memory24
 
struct  uacpi_resource_memory32
 
struct  uacpi_resource_fixed_memory32
 
struct  uacpi_resource_start_dependent
 
struct  uacpi_resource_vendor_defined
 
struct  uacpi_resource_vendor_typed
 
struct  uacpi_resource_generic_register
 
struct  uacpi_interrupt_connection_flags
 
struct  uacpi_io_connection_flags
 
struct  uacpi_resource_gpio_connection
 
struct  uacpi_resource_serial_bus_common
 
struct  uacpi_resource_i2c_connection
 
struct  uacpi_resource_spi_connection
 
struct  uacpi_resource_uart_connection
 
struct  uacpi_resource_csi2_connection
 
struct  uacpi_resource_pin_function
 
struct  uacpi_resource_pin_configuration
 
struct  uacpi_resource_label
 
struct  uacpi_resource_pin_group
 
struct  uacpi_resource_pin_group_function
 
struct  uacpi_resource_pin_group_configuration
 
struct  uacpi_resource_clock_input
 
struct  uacpi_resource
 
struct  uacpi_resources
 

Macros

#define UACPI_TRIGGERING_EDGE   1
 
#define UACPI_TRIGGERING_LEVEL   0
 
#define UACPI_POLARITY_ACTIVE_HIGH   0
 
#define UACPI_POLARITY_ACTIVE_LOW   1
 
#define UACPI_POLARITY_ACTIVE_BOTH   2
 
#define UACPI_EXCLUSIVE   0
 
#define UACPI_SHARED   1
 
#define UACPI_WAKE_CAPABLE   1
 
#define UACPI_NOT_WAKE_CAPABLE   0
 
#define UACPI_TRANSFER_TYPE_8_BIT   0b00
 
#define UACPI_TRANSFER_TYPE_8_AND_16_BIT   0b01
 
#define UACPI_TRANSFER_TYPE_16_BIT   0b10
 
#define UACPI_BUS_MASTER   0b1
 
#define UACPI_DMA_COMPATIBILITY   0b00
 
#define UACPI_DMA_TYPE_A   0b01
 
#define UACPI_DMA_TYPE_B   0b10
 
#define UACPI_DMA_TYPE_F   0b11
 
#define UACPI_TRANSFER_WIDTH_8   0x00
 
#define UACPI_TRANSFER_WIDTH_16   0x01
 
#define UACPI_TRANSFER_WIDTH_32   0x02
 
#define UACPI_TRANSFER_WIDTH_64   0x03
 
#define UACPI_TRANSFER_WIDTH_128   0x04
 
#define UACPI_TRANSFER_WIDTH_256   0x05
 
#define UACPI_DECODE_16   0b1
 
#define UACPI_DECODE_10   0b0
 
#define UACPI_NON_WRITABLE   0
 
#define UACPI_WRITABLE   1
 
#define UACPI_NON_CACHEABLE   0
 
#define UACPI_CACHEABLE   1
 
#define UACPI_CACHEABLE_WRITE_COMBINING   2
 
#define UACPI_PREFETCHABLE   3
 
#define UACPI_RANGE_TYPE_MEMORY   0
 
#define UACPI_RANGE_TYPE_RESERVED   1
 
#define UACPI_RANGE_TYPE_ACPI   2
 
#define UACPI_RANGE_TYPE_NVS   3
 
#define UACPI_RANGE_MEMORY   0
 
#define UACPI_RANGE_IO   1
 
#define UACPI_RANGE_BUS   2
 
#define UACPI_IO_MEM_TRANSLATION   1
 
#define UACPI_IO_MEM_STATIC   0
 
#define UACPI_TRANSLATION_DENSE   0
 
#define UACPI_TRANSLATION_SPARSE   1
 
#define UACPI_PRODUCER   0
 
#define UACPI_CONSUMER   1
 
#define UACPI_POSITIVE_DECODE   0
 
#define UACPI_SUBTRACTIVE_DECODE   1
 
#define UACPI_ADDRESS_NOT_FIXED   0
 
#define UACPI_ADDRESS_FIXED   1
 
#define UACPI_GOOD   0
 
#define UACPI_ACCEPTABLE   1
 
#define UACPI_SUB_OPTIMAL   2
 
#define UACPI_GPIO_CONNECTION_INTERRUPT   0x00
 
#define UACPI_GPIO_CONNECTION_IO   0x01
 
#define UACPI_IO_RESTRICTION_NONE   0x0
 
#define UACPI_IO_RESTRICTION_INPUT   0x1
 
#define UACPI_IO_RESTRICTION_OUTPUT   0x2
 
#define UACPI_IO_RESTRICTION_NONE_PRESERVE   0x3
 
#define UACPI_PIN_CONFIG_DEFAULT   0x00
 
#define UACPI_PIN_CONFIG_PULL_UP   0x01
 
#define UACPI_PIN_CONFIG_PULL_DOWN   0x02
 
#define UACPI_PIN_CONFIG_NO_PULL   0x03
 
#define UACPI_MODE_CONTROLLER_INITIATED   0x0
 
#define UACPI_MODE_DEVICE_INITIATED   0x1
 
#define UACPI_I2C_7BIT   0x0
 
#define UACPI_I2C_10BIT   0x1
 
#define UACPI_SPI_4_WIRES   0
 
#define UACPI_SPI_3_WIRES   1
 
#define UACPI_SPI_ACTIVE_LOW   0
 
#define UACPI_SPI_ACTIVE_HIGH   1
 
#define UACPI_SPI_PHASE_FIRST   0
 
#define UACPI_SPI_PHASE_SECOND   1
 
#define UACPI_SPI_START_LOW   0
 
#define UACPI_SPI_START_HIGH   1
 
#define UACPI_UART_STOP_BITS_NONE   0b00
 
#define UACPI_UART_STOP_BITS_1   0b01
 
#define UACPI_UART_STOP_BITS_1_5   0b10
 
#define UACPI_UART_STOP_BITS_2   0b11
 
#define UACPI_UART_DATA_5BITS   0b000
 
#define UACPI_UART_DATA_6BITS   0b001
 
#define UACPI_UART_DATA_7BITS   0b010
 
#define UACPI_UART_DATA_8BITS   0b011
 
#define UACPI_UART_DATA_9BITS   0b100
 
#define UACPI_UART_LITTLE_ENDIAN   0
 
#define UACPI_UART_BIG_ENDIAN   1
 
#define UACPI_UART_PARITY_NONE   0x00
 
#define UACPI_UART_PARITY_EVEN   0x01
 
#define UACPI_UART_PARITY_ODD   0x02
 
#define UACPI_UART_PARITY_MARK   0x03
 
#define UACPI_UART_PARITY_SPACE   0x04
 
#define UACPI_UART_DATA_CARRIER_DETECT   (1 << 2)
 
#define UACPI_UART_RING_INDICATOR   (1 << 3)
 
#define UACPI_UART_DATA_SET_READY   (1 << 4)
 
#define UACPI_UART_DATA_TERMINAL_READY   (1 << 5)
 
#define UACPI_UART_CLEAR_TO_SEND   (1 << 6)
 
#define UACPI_UART_REQUEST_TO_SEND   (1 << 7)
 
#define UACPI_UART_FLOW_CONTROL_NONE   0b00
 
#define UACPI_UART_FLOW_CONTROL_HW   0b01
 
#define UACPI_UART_FLOW_CONTROL_XON_XOFF   0b10
 
#define UACPI_CSI2_PHY_C   0b00
 
#define UACPI_CSI2_PHY_D   0b01
 
#define UACPI_PIN_CONFIG_DEFAULT   0x00
 
#define UACPI_PIN_CONFIG_BIAS_PULL_UP   0x01
 
#define UACPI_PIN_CONFIG_BIAS_PULL_DOWN   0x02
 
#define UACPI_PIN_CONFIG_BIAS_DEFAULT   0x03
 
#define UACPI_PIN_CONFIG_BIAS_DISABLE   0x04
 
#define UACPI_PIN_CONFIG_BIAS_HIGH_IMPEDANCE   0x05
 
#define UACPI_PIN_CONFIG_BIAS_BUS_HOLD   0x06
 
#define UACPI_PIN_CONFIG_DRIVE_OPEN_DRAIN   0x07
 
#define UACPI_PIN_CONFIG_DRIVE_OPEN_SOURCE   0x08
 
#define UACPI_PIN_CONFIG_DRIVE_PUSH_PULL   0x09
 
#define UACPI_PIN_CONFIG_DRIVE_STRENGTH   0x0A
 
#define UACPI_PIN_CONFIG_SLEW_RATE   0x0B
 
#define UACPI_PIN_CONFIG_INPUT_DEBOUNCE   0x0C
 
#define UACPI_PIN_CONFIG_INPUT_SCHMITT_TRIGGER   0x0D
 
#define UACPI_SCALE_HZ   0b00
 
#define UACPI_SCALE_KHZ   0b01
 
#define UACPI_SCALE_MHZ   0b10
 
#define UACPI_FREQUENCY_FIXED   0x0
 
#define UACPI_FREQUENCY_VARIABLE   0x1
 
#define UACPI_NEXT_RESOURCE(cur)    ((uacpi_resource*)((uacpi_u8*)(cur) + (cur)->length))
 

Typedefs

typedef enum uacpi_resource_type uacpi_resource_type
 
typedef struct uacpi_resource_source uacpi_resource_source
 
typedef struct uacpi_resource_irq uacpi_resource_irq
 
typedef struct uacpi_resource_extended_irq uacpi_resource_extended_irq
 
typedef struct uacpi_resource_dma uacpi_resource_dma
 
typedef struct uacpi_resource_fixed_dma uacpi_resource_fixed_dma
 
typedef struct uacpi_resource_io uacpi_resource_io
 
typedef struct uacpi_resource_fixed_io uacpi_resource_fixed_io
 
typedef struct uacpi_memory_attribute uacpi_memory_attribute
 
typedef struct uacpi_io_attribute uacpi_io_attribute
 
typedef union uacpi_address_attribute uacpi_address_attribute
 
typedef struct uacpi_resource_address_common uacpi_resource_address_common
 
typedef struct uacpi_resource_address16 uacpi_resource_address16
 
typedef struct uacpi_resource_address32 uacpi_resource_address32
 
typedef struct uacpi_resource_address64 uacpi_resource_address64
 
typedef struct uacpi_resource_address64_extended uacpi_resource_address64_extended
 
typedef struct uacpi_resource_memory24 uacpi_resource_memory24
 
typedef struct uacpi_resource_memory32 uacpi_resource_memory32
 
typedef struct uacpi_resource_fixed_memory32 uacpi_resource_fixed_memory32
 
typedef struct uacpi_resource_start_dependent uacpi_resource_start_dependent
 
typedef struct uacpi_resource_vendor_defined uacpi_resource_vendor
 
typedef struct uacpi_resource_vendor_typed uacpi_resource_vendor_typed
 
typedef struct uacpi_resource_generic_register uacpi_resource_generic_register
 
typedef struct uacpi_interrupt_connection_flags uacpi_interrupt_connection_flags
 
typedef struct uacpi_io_connection_flags uacpi_io_connection_flags
 
typedef struct uacpi_resource_gpio_connection uacpi_resource_gpio_connection
 
typedef struct uacpi_resource_serial_bus_common uacpi_resource_serial_bus_common
 
typedef struct uacpi_resource_i2c_connection uacpi_resource_i2c_connection
 
typedef struct uacpi_resource_spi_connection uacpi_resource_spi_connection
 
typedef struct uacpi_resource_uart_connection uacpi_resource_uart_connection
 
typedef struct uacpi_resource_csi2_connection uacpi_resource_csi2_connection
 
typedef struct uacpi_resource_pin_function uacpi_resource_pin_function
 
typedef struct uacpi_resource_pin_configuration uacpi_resource_pin_configuration
 
typedef struct uacpi_resource_label uacpi_resource_label
 
typedef struct uacpi_resource_pin_group uacpi_resource_pin_group
 
typedef struct uacpi_resource_pin_group_function uacpi_resource_pin_group_function
 
typedef struct uacpi_resource_pin_group_configuration uacpi_resource_pin_group_configuration
 
typedef struct uacpi_resource_clock_input uacpi_resource_clock_input
 
typedef struct uacpi_resource uacpi_resource
 
typedef struct uacpi_resources uacpi_resources
 
typedef uacpi_iteration_decision(* uacpi_resource_iteration_callback) (void *user, uacpi_resource *resource)
 

Enumerations

enum  uacpi_resource_type {
  UACPI_RESOURCE_TYPE_IRQ , UACPI_RESOURCE_TYPE_EXTENDED_IRQ , UACPI_RESOURCE_TYPE_DMA , UACPI_RESOURCE_TYPE_FIXED_DMA ,
  UACPI_RESOURCE_TYPE_IO , UACPI_RESOURCE_TYPE_FIXED_IO , UACPI_RESOURCE_TYPE_ADDRESS16 , UACPI_RESOURCE_TYPE_ADDRESS32 ,
  UACPI_RESOURCE_TYPE_ADDRESS64 , UACPI_RESOURCE_TYPE_ADDRESS64_EXTENDED , UACPI_RESOURCE_TYPE_MEMORY24 , UACPI_RESOURCE_TYPE_MEMORY32 ,
  UACPI_RESOURCE_TYPE_FIXED_MEMORY32 , UACPI_RESOURCE_TYPE_START_DEPENDENT , UACPI_RESOURCE_TYPE_END_DEPENDENT , UACPI_RESOURCE_TYPE_VENDOR_SMALL ,
  UACPI_RESOURCE_TYPE_VENDOR_LARGE , UACPI_RESOURCE_TYPE_GENERIC_REGISTER , UACPI_RESOURCE_TYPE_GPIO_CONNECTION , UACPI_RESOURCE_TYPE_SERIAL_I2C_CONNECTION ,
  UACPI_RESOURCE_TYPE_SERIAL_SPI_CONNECTION , UACPI_RESOURCE_TYPE_SERIAL_UART_CONNECTION , UACPI_RESOURCE_TYPE_SERIAL_CSI2_CONNECTION , UACPI_RESOURCE_TYPE_PIN_FUNCTION ,
  UACPI_RESOURCE_TYPE_PIN_CONFIGURATION , UACPI_RESOURCE_TYPE_PIN_GROUP , UACPI_RESOURCE_TYPE_PIN_GROUP_FUNCTION , UACPI_RESOURCE_TYPE_PIN_GROUP_CONFIGURATION ,
  UACPI_RESOURCE_TYPE_CLOCK_INPUT , UACPI_RESOURCE_TYPE_END_TAG , UACPI_RESOURCE_TYPE_MAX = UACPI_RESOURCE_TYPE_END_TAG
}
 
enum  uacpi_resource_length_kind { UACPI_RESOURCE_LENGTH_KIND_DONT_CARE = 0 , UACPI_RESOURCE_LENGTH_KIND_ONE_LESS , UACPI_RESOURCE_LENGTH_KIND_FULL }
 

Functions

void uacpi_free_resources (uacpi_resources *)
 
uacpi_status uacpi_get_current_resources (uacpi_namespace_node *device, uacpi_resources **out_resources)
 
uacpi_status uacpi_get_possible_resources (uacpi_namespace_node *device, uacpi_resources **out_resources)
 
uacpi_status uacpi_get_device_resources (uacpi_namespace_node *device, const uacpi_char *method, uacpi_resources **out_resources)
 
uacpi_status uacpi_set_resources (uacpi_namespace_node *device, uacpi_resources *resources)
 
uacpi_status uacpi_for_each_resource (uacpi_resources *resources, uacpi_resource_iteration_callback cb, void *user)
 
uacpi_status uacpi_for_each_device_resource (uacpi_namespace_node *device, const uacpi_char *method, uacpi_resource_iteration_callback cb, void *user)
 
uacpi_status uacpi_get_resource_from_buffer (uacpi_data_view aml_buffer, uacpi_resource **out_resource)
 
void uacpi_free_resource (uacpi_resource *)
 

Macro Definition Documentation

◆ UACPI_ACCEPTABLE

#define UACPI_ACCEPTABLE   1

Definition at line 314 of file resources.h.

◆ UACPI_ADDRESS_FIXED

#define UACPI_ADDRESS_FIXED   1

Definition at line 219 of file resources.h.

◆ UACPI_ADDRESS_NOT_FIXED

#define UACPI_ADDRESS_NOT_FIXED   0

Definition at line 218 of file resources.h.

◆ UACPI_BUS_MASTER

#define UACPI_BUS_MASTER   0b1

Definition at line 133 of file resources.h.

◆ UACPI_CACHEABLE

#define UACPI_CACHEABLE   1

Definition at line 186 of file resources.h.

◆ UACPI_CACHEABLE_WRITE_COMBINING

#define UACPI_CACHEABLE_WRITE_COMBINING   2

Definition at line 187 of file resources.h.

◆ UACPI_CONSUMER

#define UACPI_CONSUMER   1

Definition at line 211 of file resources.h.

◆ UACPI_CSI2_PHY_C

#define UACPI_CSI2_PHY_C   0b00

Definition at line 498 of file resources.h.

◆ UACPI_CSI2_PHY_D

#define UACPI_CSI2_PHY_D   0b01

Definition at line 499 of file resources.h.

◆ UACPI_DECODE_10

#define UACPI_DECODE_10   0b0

Definition at line 165 of file resources.h.

◆ UACPI_DECODE_16

#define UACPI_DECODE_16   0b1

Definition at line 164 of file resources.h.

◆ UACPI_DMA_COMPATIBILITY

#define UACPI_DMA_COMPATIBILITY   0b00

Definition at line 136 of file resources.h.

◆ UACPI_DMA_TYPE_A

#define UACPI_DMA_TYPE_A   0b01

Definition at line 137 of file resources.h.

◆ UACPI_DMA_TYPE_B

#define UACPI_DMA_TYPE_B   0b10

Definition at line 138 of file resources.h.

◆ UACPI_DMA_TYPE_F

#define UACPI_DMA_TYPE_F   0b11

Definition at line 139 of file resources.h.

◆ UACPI_EXCLUSIVE

#define UACPI_EXCLUSIVE   0

Definition at line 99 of file resources.h.

◆ UACPI_FREQUENCY_FIXED

#define UACPI_FREQUENCY_FIXED   0x0

Definition at line 592 of file resources.h.

◆ UACPI_FREQUENCY_VARIABLE

#define UACPI_FREQUENCY_VARIABLE   0x1

Definition at line 593 of file resources.h.

◆ UACPI_GOOD

#define UACPI_GOOD   0

Definition at line 313 of file resources.h.

◆ UACPI_GPIO_CONNECTION_INTERRUPT

#define UACPI_GPIO_CONNECTION_INTERRUPT   0x00

Definition at line 344 of file resources.h.

◆ UACPI_GPIO_CONNECTION_IO

#define UACPI_GPIO_CONNECTION_IO   0x01

Definition at line 345 of file resources.h.

◆ UACPI_I2C_10BIT

#define UACPI_I2C_10BIT   0x1

Definition at line 411 of file resources.h.

◆ UACPI_I2C_7BIT

#define UACPI_I2C_7BIT   0x0

Definition at line 410 of file resources.h.

◆ UACPI_IO_MEM_STATIC

#define UACPI_IO_MEM_STATIC   0

Definition at line 203 of file resources.h.

◆ UACPI_IO_MEM_TRANSLATION

#define UACPI_IO_MEM_TRANSLATION   1

Definition at line 202 of file resources.h.

◆ UACPI_IO_RESTRICTION_INPUT

#define UACPI_IO_RESTRICTION_INPUT   0x1

Definition at line 356 of file resources.h.

◆ UACPI_IO_RESTRICTION_NONE

#define UACPI_IO_RESTRICTION_NONE   0x0

Definition at line 355 of file resources.h.

◆ UACPI_IO_RESTRICTION_NONE_PRESERVE

#define UACPI_IO_RESTRICTION_NONE_PRESERVE   0x3

Definition at line 358 of file resources.h.

◆ UACPI_IO_RESTRICTION_OUTPUT

#define UACPI_IO_RESTRICTION_OUTPUT   0x2

Definition at line 357 of file resources.h.

◆ UACPI_MODE_CONTROLLER_INITIATED

#define UACPI_MODE_CONTROLLER_INITIATED   0x0

Definition at line 393 of file resources.h.

◆ UACPI_MODE_DEVICE_INITIATED

#define UACPI_MODE_DEVICE_INITIATED   0x1

Definition at line 394 of file resources.h.

◆ UACPI_NEXT_RESOURCE

#define UACPI_NEXT_RESOURCE (   cur)     ((uacpi_resource*)((uacpi_u8*)(cur) + (cur)->length))

Definition at line 641 of file resources.h.

◆ UACPI_NON_CACHEABLE

#define UACPI_NON_CACHEABLE   0

Definition at line 185 of file resources.h.

◆ UACPI_NON_WRITABLE

#define UACPI_NON_WRITABLE   0

Definition at line 181 of file resources.h.

◆ UACPI_NOT_WAKE_CAPABLE

#define UACPI_NOT_WAKE_CAPABLE   0

Definition at line 104 of file resources.h.

◆ UACPI_PIN_CONFIG_BIAS_BUS_HOLD

#define UACPI_PIN_CONFIG_BIAS_BUS_HOLD   0x06

Definition at line 526 of file resources.h.

◆ UACPI_PIN_CONFIG_BIAS_DEFAULT

#define UACPI_PIN_CONFIG_BIAS_DEFAULT   0x03

Definition at line 523 of file resources.h.

◆ UACPI_PIN_CONFIG_BIAS_DISABLE

#define UACPI_PIN_CONFIG_BIAS_DISABLE   0x04

Definition at line 524 of file resources.h.

◆ UACPI_PIN_CONFIG_BIAS_HIGH_IMPEDANCE

#define UACPI_PIN_CONFIG_BIAS_HIGH_IMPEDANCE   0x05

Definition at line 525 of file resources.h.

◆ UACPI_PIN_CONFIG_BIAS_PULL_DOWN

#define UACPI_PIN_CONFIG_BIAS_PULL_DOWN   0x02

Definition at line 522 of file resources.h.

◆ UACPI_PIN_CONFIG_BIAS_PULL_UP

#define UACPI_PIN_CONFIG_BIAS_PULL_UP   0x01

Definition at line 521 of file resources.h.

◆ UACPI_PIN_CONFIG_DEFAULT [1/2]

#define UACPI_PIN_CONFIG_DEFAULT   0x00

Definition at line 520 of file resources.h.

◆ UACPI_PIN_CONFIG_DEFAULT [2/2]

#define UACPI_PIN_CONFIG_DEFAULT   0x00

Definition at line 520 of file resources.h.

◆ UACPI_PIN_CONFIG_DRIVE_OPEN_DRAIN

#define UACPI_PIN_CONFIG_DRIVE_OPEN_DRAIN   0x07

Definition at line 527 of file resources.h.

◆ UACPI_PIN_CONFIG_DRIVE_OPEN_SOURCE

#define UACPI_PIN_CONFIG_DRIVE_OPEN_SOURCE   0x08

Definition at line 528 of file resources.h.

◆ UACPI_PIN_CONFIG_DRIVE_PUSH_PULL

#define UACPI_PIN_CONFIG_DRIVE_PUSH_PULL   0x09

Definition at line 529 of file resources.h.

◆ UACPI_PIN_CONFIG_DRIVE_STRENGTH

#define UACPI_PIN_CONFIG_DRIVE_STRENGTH   0x0A

Definition at line 530 of file resources.h.

◆ UACPI_PIN_CONFIG_INPUT_DEBOUNCE

#define UACPI_PIN_CONFIG_INPUT_DEBOUNCE   0x0C

Definition at line 532 of file resources.h.

◆ UACPI_PIN_CONFIG_INPUT_SCHMITT_TRIGGER

#define UACPI_PIN_CONFIG_INPUT_SCHMITT_TRIGGER   0x0D

Definition at line 533 of file resources.h.

◆ UACPI_PIN_CONFIG_NO_PULL

#define UACPI_PIN_CONFIG_NO_PULL   0x03

Definition at line 369 of file resources.h.

◆ UACPI_PIN_CONFIG_PULL_DOWN

#define UACPI_PIN_CONFIG_PULL_DOWN   0x02

Definition at line 368 of file resources.h.

◆ UACPI_PIN_CONFIG_PULL_UP

#define UACPI_PIN_CONFIG_PULL_UP   0x01

Definition at line 367 of file resources.h.

◆ UACPI_PIN_CONFIG_SLEW_RATE

#define UACPI_PIN_CONFIG_SLEW_RATE   0x0B

Definition at line 531 of file resources.h.

◆ UACPI_POLARITY_ACTIVE_BOTH

#define UACPI_POLARITY_ACTIVE_BOTH   2

Definition at line 96 of file resources.h.

◆ UACPI_POLARITY_ACTIVE_HIGH

#define UACPI_POLARITY_ACTIVE_HIGH   0

Definition at line 94 of file resources.h.

◆ UACPI_POLARITY_ACTIVE_LOW

#define UACPI_POLARITY_ACTIVE_LOW   1

Definition at line 95 of file resources.h.

◆ UACPI_POSITIVE_DECODE

#define UACPI_POSITIVE_DECODE   0

Definition at line 214 of file resources.h.

◆ UACPI_PREFETCHABLE

#define UACPI_PREFETCHABLE   3

Definition at line 188 of file resources.h.

◆ UACPI_PRODUCER

#define UACPI_PRODUCER   0

Definition at line 210 of file resources.h.

◆ UACPI_RANGE_BUS

#define UACPI_RANGE_BUS   2

Definition at line 199 of file resources.h.

◆ UACPI_RANGE_IO

#define UACPI_RANGE_IO   1

Definition at line 198 of file resources.h.

◆ UACPI_RANGE_MEMORY

#define UACPI_RANGE_MEMORY   0

Definition at line 197 of file resources.h.

◆ UACPI_RANGE_TYPE_ACPI

#define UACPI_RANGE_TYPE_ACPI   2

Definition at line 193 of file resources.h.

◆ UACPI_RANGE_TYPE_MEMORY

#define UACPI_RANGE_TYPE_MEMORY   0

Definition at line 191 of file resources.h.

◆ UACPI_RANGE_TYPE_NVS

#define UACPI_RANGE_TYPE_NVS   3

Definition at line 194 of file resources.h.

◆ UACPI_RANGE_TYPE_RESERVED

#define UACPI_RANGE_TYPE_RESERVED   1

Definition at line 192 of file resources.h.

◆ UACPI_SCALE_HZ

#define UACPI_SCALE_HZ   0b00

Definition at line 587 of file resources.h.

◆ UACPI_SCALE_KHZ

#define UACPI_SCALE_KHZ   0b01

Definition at line 588 of file resources.h.

◆ UACPI_SCALE_MHZ

#define UACPI_SCALE_MHZ   0b10

Definition at line 589 of file resources.h.

◆ UACPI_SHARED

#define UACPI_SHARED   1

Definition at line 100 of file resources.h.

◆ UACPI_SPI_3_WIRES

#define UACPI_SPI_3_WIRES   1

Definition at line 422 of file resources.h.

◆ UACPI_SPI_4_WIRES

#define UACPI_SPI_4_WIRES   0

Definition at line 421 of file resources.h.

◆ UACPI_SPI_ACTIVE_HIGH

#define UACPI_SPI_ACTIVE_HIGH   1

Definition at line 426 of file resources.h.

◆ UACPI_SPI_ACTIVE_LOW

#define UACPI_SPI_ACTIVE_LOW   0

Definition at line 425 of file resources.h.

◆ UACPI_SPI_PHASE_FIRST

#define UACPI_SPI_PHASE_FIRST   0

Definition at line 429 of file resources.h.

◆ UACPI_SPI_PHASE_SECOND

#define UACPI_SPI_PHASE_SECOND   1

Definition at line 430 of file resources.h.

◆ UACPI_SPI_START_HIGH

#define UACPI_SPI_START_HIGH   1

Definition at line 434 of file resources.h.

◆ UACPI_SPI_START_LOW

#define UACPI_SPI_START_LOW   0

Definition at line 433 of file resources.h.

◆ UACPI_SUB_OPTIMAL

#define UACPI_SUB_OPTIMAL   2

Definition at line 315 of file resources.h.

◆ UACPI_SUBTRACTIVE_DECODE

#define UACPI_SUBTRACTIVE_DECODE   1

Definition at line 215 of file resources.h.

◆ UACPI_TRANSFER_TYPE_16_BIT

#define UACPI_TRANSFER_TYPE_16_BIT   0b10

Definition at line 130 of file resources.h.

◆ UACPI_TRANSFER_TYPE_8_AND_16_BIT

#define UACPI_TRANSFER_TYPE_8_AND_16_BIT   0b01

Definition at line 129 of file resources.h.

◆ UACPI_TRANSFER_TYPE_8_BIT

#define UACPI_TRANSFER_TYPE_8_BIT   0b00

Definition at line 128 of file resources.h.

◆ UACPI_TRANSFER_WIDTH_128

#define UACPI_TRANSFER_WIDTH_128   0x04

Definition at line 146 of file resources.h.

◆ UACPI_TRANSFER_WIDTH_16

#define UACPI_TRANSFER_WIDTH_16   0x01

Definition at line 143 of file resources.h.

◆ UACPI_TRANSFER_WIDTH_256

#define UACPI_TRANSFER_WIDTH_256   0x05

Definition at line 147 of file resources.h.

◆ UACPI_TRANSFER_WIDTH_32

#define UACPI_TRANSFER_WIDTH_32   0x02

Definition at line 144 of file resources.h.

◆ UACPI_TRANSFER_WIDTH_64

#define UACPI_TRANSFER_WIDTH_64   0x03

Definition at line 145 of file resources.h.

◆ UACPI_TRANSFER_WIDTH_8

#define UACPI_TRANSFER_WIDTH_8   0x00

Definition at line 142 of file resources.h.

◆ UACPI_TRANSLATION_DENSE

#define UACPI_TRANSLATION_DENSE   0

Definition at line 206 of file resources.h.

◆ UACPI_TRANSLATION_SPARSE

#define UACPI_TRANSLATION_SPARSE   1

Definition at line 207 of file resources.h.

◆ UACPI_TRIGGERING_EDGE

#define UACPI_TRIGGERING_EDGE   1

Definition at line 90 of file resources.h.

◆ UACPI_TRIGGERING_LEVEL

#define UACPI_TRIGGERING_LEVEL   0

Definition at line 91 of file resources.h.

◆ UACPI_UART_BIG_ENDIAN

#define UACPI_UART_BIG_ENDIAN   1

Definition at line 462 of file resources.h.

◆ UACPI_UART_CLEAR_TO_SEND

#define UACPI_UART_CLEAR_TO_SEND   (1 << 6)

Definition at line 476 of file resources.h.

◆ UACPI_UART_DATA_5BITS

#define UACPI_UART_DATA_5BITS   0b000

Definition at line 454 of file resources.h.

◆ UACPI_UART_DATA_6BITS

#define UACPI_UART_DATA_6BITS   0b001

Definition at line 455 of file resources.h.

◆ UACPI_UART_DATA_7BITS

#define UACPI_UART_DATA_7BITS   0b010

Definition at line 456 of file resources.h.

◆ UACPI_UART_DATA_8BITS

#define UACPI_UART_DATA_8BITS   0b011

Definition at line 457 of file resources.h.

◆ UACPI_UART_DATA_9BITS

#define UACPI_UART_DATA_9BITS   0b100

Definition at line 458 of file resources.h.

◆ UACPI_UART_DATA_CARRIER_DETECT

#define UACPI_UART_DATA_CARRIER_DETECT   (1 << 2)

Definition at line 472 of file resources.h.

◆ UACPI_UART_DATA_SET_READY

#define UACPI_UART_DATA_SET_READY   (1 << 4)

Definition at line 474 of file resources.h.

◆ UACPI_UART_DATA_TERMINAL_READY

#define UACPI_UART_DATA_TERMINAL_READY   (1 << 5)

Definition at line 475 of file resources.h.

◆ UACPI_UART_FLOW_CONTROL_HW

#define UACPI_UART_FLOW_CONTROL_HW   0b01

Definition at line 481 of file resources.h.

◆ UACPI_UART_FLOW_CONTROL_NONE

#define UACPI_UART_FLOW_CONTROL_NONE   0b00

Definition at line 480 of file resources.h.

◆ UACPI_UART_FLOW_CONTROL_XON_XOFF

#define UACPI_UART_FLOW_CONTROL_XON_XOFF   0b10

Definition at line 482 of file resources.h.

◆ UACPI_UART_LITTLE_ENDIAN

#define UACPI_UART_LITTLE_ENDIAN   0

Definition at line 461 of file resources.h.

◆ UACPI_UART_PARITY_EVEN

#define UACPI_UART_PARITY_EVEN   0x01

Definition at line 466 of file resources.h.

◆ UACPI_UART_PARITY_MARK

#define UACPI_UART_PARITY_MARK   0x03

Definition at line 468 of file resources.h.

◆ UACPI_UART_PARITY_NONE

#define UACPI_UART_PARITY_NONE   0x00

Definition at line 465 of file resources.h.

◆ UACPI_UART_PARITY_ODD

#define UACPI_UART_PARITY_ODD   0x02

Definition at line 467 of file resources.h.

◆ UACPI_UART_PARITY_SPACE

#define UACPI_UART_PARITY_SPACE   0x04

Definition at line 469 of file resources.h.

◆ UACPI_UART_REQUEST_TO_SEND

#define UACPI_UART_REQUEST_TO_SEND   (1 << 7)

Definition at line 477 of file resources.h.

◆ UACPI_UART_RING_INDICATOR

#define UACPI_UART_RING_INDICATOR   (1 << 3)

Definition at line 473 of file resources.h.

◆ UACPI_UART_STOP_BITS_1

#define UACPI_UART_STOP_BITS_1   0b01

Definition at line 449 of file resources.h.

◆ UACPI_UART_STOP_BITS_1_5

#define UACPI_UART_STOP_BITS_1_5   0b10

Definition at line 450 of file resources.h.

◆ UACPI_UART_STOP_BITS_2

#define UACPI_UART_STOP_BITS_2   0b11

Definition at line 451 of file resources.h.

◆ UACPI_UART_STOP_BITS_NONE

#define UACPI_UART_STOP_BITS_NONE   0b00

Definition at line 448 of file resources.h.

◆ UACPI_WAKE_CAPABLE

#define UACPI_WAKE_CAPABLE   1

Definition at line 103 of file resources.h.

◆ UACPI_WRITABLE

#define UACPI_WRITABLE   1

Definition at line 182 of file resources.h.

Typedef Documentation

◆ uacpi_address_attribute

◆ uacpi_interrupt_connection_flags

◆ uacpi_io_attribute

◆ uacpi_io_connection_flags

◆ uacpi_memory_attribute

◆ uacpi_resource

◆ uacpi_resource_address16

◆ uacpi_resource_address32

◆ uacpi_resource_address64

◆ uacpi_resource_address64_extended

◆ uacpi_resource_address_common

◆ uacpi_resource_clock_input

◆ uacpi_resource_csi2_connection

◆ uacpi_resource_dma

◆ uacpi_resource_extended_irq

◆ uacpi_resource_fixed_dma

◆ uacpi_resource_fixed_io

◆ uacpi_resource_fixed_memory32

◆ uacpi_resource_generic_register

◆ uacpi_resource_gpio_connection

◆ uacpi_resource_i2c_connection

◆ uacpi_resource_io

◆ uacpi_resource_irq

◆ uacpi_resource_iteration_callback

typedef uacpi_iteration_decision(* uacpi_resource_iteration_callback) (void *user, uacpi_resource *resource)

Definition at line 663 of file resources.h.

◆ uacpi_resource_label

◆ uacpi_resource_memory24

◆ uacpi_resource_memory32

◆ uacpi_resource_pin_configuration

◆ uacpi_resource_pin_function

◆ uacpi_resource_pin_group

◆ uacpi_resource_pin_group_configuration

◆ uacpi_resource_pin_group_function

◆ uacpi_resource_serial_bus_common

◆ uacpi_resource_source

◆ uacpi_resource_spi_connection

◆ uacpi_resource_start_dependent

◆ uacpi_resource_type

◆ uacpi_resource_uart_connection

◆ uacpi_resource_vendor

◆ uacpi_resource_vendor_typed

◆ uacpi_resources

Enumeration Type Documentation

◆ uacpi_resource_length_kind

This applies to IRQ & StartDependent resources only. The DONT_CARE value is used for deserialization into the AML format to signify that the serializer is allowed to optimize the length down if possible. Note that this is generally not allowed unless the resource is generated by the caller:

– ACPI 6.5 ---------------------------------------------------------— The resource descriptors in the byte stream argument must be specified exactly as listed in the _CRS byte stream - meaning that the identical resource descriptors must appear in the identical order, resulting in a buffer of exactly the same length. Optimizations such as changing an IRQ descriptor to an IRQNoFlags descriptor (or vice-versa) must not be performed. Similarly, changing StartDependentFn to StartDependentFnNoPri

is not allowed.

Enumerator
UACPI_RESOURCE_LENGTH_KIND_DONT_CARE 
UACPI_RESOURCE_LENGTH_KIND_ONE_LESS 
UACPI_RESOURCE_LENGTH_KIND_FULL 

Definition at line 83 of file resources.h.

83 {
87};
@ UACPI_RESOURCE_LENGTH_KIND_DONT_CARE
Definition: resources.h:84
@ UACPI_RESOURCE_LENGTH_KIND_ONE_LESS
Definition: resources.h:85
@ UACPI_RESOURCE_LENGTH_KIND_FULL
Definition: resources.h:86

◆ uacpi_resource_type

Enumerator
UACPI_RESOURCE_TYPE_IRQ 
UACPI_RESOURCE_TYPE_EXTENDED_IRQ 
UACPI_RESOURCE_TYPE_DMA 
UACPI_RESOURCE_TYPE_FIXED_DMA 
UACPI_RESOURCE_TYPE_IO 
UACPI_RESOURCE_TYPE_FIXED_IO 
UACPI_RESOURCE_TYPE_ADDRESS16 
UACPI_RESOURCE_TYPE_ADDRESS32 
UACPI_RESOURCE_TYPE_ADDRESS64 
UACPI_RESOURCE_TYPE_ADDRESS64_EXTENDED 
UACPI_RESOURCE_TYPE_MEMORY24 
UACPI_RESOURCE_TYPE_MEMORY32 
UACPI_RESOURCE_TYPE_FIXED_MEMORY32 
UACPI_RESOURCE_TYPE_START_DEPENDENT 
UACPI_RESOURCE_TYPE_END_DEPENDENT 
UACPI_RESOURCE_TYPE_VENDOR_SMALL 
UACPI_RESOURCE_TYPE_VENDOR_LARGE 
UACPI_RESOURCE_TYPE_GENERIC_REGISTER 
UACPI_RESOURCE_TYPE_GPIO_CONNECTION 
UACPI_RESOURCE_TYPE_SERIAL_I2C_CONNECTION 
UACPI_RESOURCE_TYPE_SERIAL_SPI_CONNECTION 
UACPI_RESOURCE_TYPE_SERIAL_UART_CONNECTION 
UACPI_RESOURCE_TYPE_SERIAL_CSI2_CONNECTION 
UACPI_RESOURCE_TYPE_PIN_FUNCTION 
UACPI_RESOURCE_TYPE_PIN_CONFIGURATION 
UACPI_RESOURCE_TYPE_PIN_GROUP 
UACPI_RESOURCE_TYPE_PIN_GROUP_FUNCTION 
UACPI_RESOURCE_TYPE_PIN_GROUP_CONFIGURATION 
UACPI_RESOURCE_TYPE_CLOCK_INPUT 
UACPI_RESOURCE_TYPE_END_TAG 
UACPI_RESOURCE_TYPE_MAX 

Definition at line 11 of file resources.h.

11 {
14
17
20
25
29
32
33 // Up to 7 bytes
35
36 // Up to 2^16 - 1 bytes
38
41
42 // These must always be contiguous in this order
47
53
55
uacpi_resource_type
Definition: resources.h:11
@ UACPI_RESOURCE_TYPE_PIN_GROUP_CONFIGURATION
Definition: resources.h:52
@ UACPI_RESOURCE_TYPE_ADDRESS32
Definition: resources.h:22
@ UACPI_RESOURCE_TYPE_START_DEPENDENT
Definition: resources.h:30
@ UACPI_RESOURCE_TYPE_SERIAL_UART_CONNECTION
Definition: resources.h:45
@ UACPI_RESOURCE_TYPE_VENDOR_SMALL
Definition: resources.h:34
@ UACPI_RESOURCE_TYPE_PIN_FUNCTION
Definition: resources.h:48
@ UACPI_RESOURCE_TYPE_EXTENDED_IRQ
Definition: resources.h:13
@ UACPI_RESOURCE_TYPE_MEMORY32
Definition: resources.h:27
@ UACPI_RESOURCE_TYPE_END_DEPENDENT
Definition: resources.h:31
@ UACPI_RESOURCE_TYPE_IO
Definition: resources.h:18
@ UACPI_RESOURCE_TYPE_SERIAL_I2C_CONNECTION
Definition: resources.h:43
@ UACPI_RESOURCE_TYPE_FIXED_DMA
Definition: resources.h:16
@ UACPI_RESOURCE_TYPE_GENERIC_REGISTER
Definition: resources.h:39
@ UACPI_RESOURCE_TYPE_ADDRESS16
Definition: resources.h:21
@ UACPI_RESOURCE_TYPE_SERIAL_SPI_CONNECTION
Definition: resources.h:44
@ UACPI_RESOURCE_TYPE_PIN_GROUP
Definition: resources.h:50
@ UACPI_RESOURCE_TYPE_MAX
Definition: resources.h:57
@ UACPI_RESOURCE_TYPE_IRQ
Definition: resources.h:12
@ UACPI_RESOURCE_TYPE_PIN_CONFIGURATION
Definition: resources.h:49
@ UACPI_RESOURCE_TYPE_FIXED_IO
Definition: resources.h:19
@ UACPI_RESOURCE_TYPE_VENDOR_LARGE
Definition: resources.h:37
@ UACPI_RESOURCE_TYPE_PIN_GROUP_FUNCTION
Definition: resources.h:51
@ UACPI_RESOURCE_TYPE_END_TAG
Definition: resources.h:56
@ UACPI_RESOURCE_TYPE_ADDRESS64
Definition: resources.h:23
@ UACPI_RESOURCE_TYPE_CLOCK_INPUT
Definition: resources.h:54
@ UACPI_RESOURCE_TYPE_SERIAL_CSI2_CONNECTION
Definition: resources.h:46
@ UACPI_RESOURCE_TYPE_GPIO_CONNECTION
Definition: resources.h:40
@ UACPI_RESOURCE_TYPE_ADDRESS64_EXTENDED
Definition: resources.h:24
@ UACPI_RESOURCE_TYPE_MEMORY24
Definition: resources.h:26
@ UACPI_RESOURCE_TYPE_FIXED_MEMORY32
Definition: resources.h:28
@ UACPI_RESOURCE_TYPE_DMA
Definition: resources.h:15

Function Documentation

◆ uacpi_for_each_device_resource()

uacpi_status uacpi_for_each_device_resource ( uacpi_namespace_node device,
const uacpi_char method,
uacpi_resource_iteration_callback  cb,
void user 
)

A shorthand for uacpi_get_device_resources() + uacpi_for_each_resource().

Use if you don't actually want to save the 'resources' list, but simply want to iterate it once to extract the resources you care about and then free it right away.

Definition at line 2157 of file resources.c.

2161{
2164
2167 return ret;
2168
2171
2172 return ret;
2173}
void user(int argc, const char *argv[])
Definition: cmds.c:1350
static MonoProfilerRuntimeShutdownBeginCallback cb
Definition: metahost.c:118
method
Definition: dragdrop.c:54
#define uacpi_unlikely_error(expr)
Definition: status.h:49
uacpi_status
Definition: status.h:10
return ret
Definition: mutex.c:147
uacpi_status uacpi_for_each_resource(uacpi_resources *resources, uacpi_resource_iteration_callback cb, void *user)
Definition: resources.c:2117
void uacpi_free_resources(uacpi_resources *resources)
Definition: resources.c:2058
static uacpi_status extract_native_resources_from_method(uacpi_namespace_node *device, const uacpi_char *method, uacpi_resources **out_resources)
Definition: resources.c:2074
FxCmResList * resources
Definition: devices.h:37

◆ uacpi_for_each_resource()

uacpi_status uacpi_for_each_resource ( uacpi_resources resources,
uacpi_resource_iteration_callback  cb,
void user 
)

A convenience helper for iterating over the resource list returned by any of the uacpi_get_*_resources functions.

Definition at line 2117 of file resources.c.

2120{
2121 uacpi_size bytes_left = resources->length;
2122 uacpi_resource *current = resources->entries;
2123 uacpi_iteration_decision decision;
2124
2125 while (bytes_left) {
2126 // At least the head bytes
2127 if (uacpi_unlikely(bytes_left < 4)) {
2128 uacpi_error("corrupted resource buffer %p length %zu",
2129 resources, resources->length);
2131 }
2132
2134 uacpi_error("invalid resource type %d", current->type);
2136 }
2137
2138 if (uacpi_unlikely(current->length > bytes_left)) {
2139 uacpi_error("corrupted resource@%p length %u (%zu bytes left)",
2140 current, current->length, bytes_left);
2142 }
2143
2144 decision = cb(user, current);
2145
2146 if (decision == UACPI_ITERATION_DECISION_BREAK ||
2148 return UACPI_STATUS_OK;
2149
2150 bytes_left -= current->length;
2151 current = (uacpi_resource*)((uacpi_u8*)current + current->length);
2152 }
2153
2155}
#define uacpi_error(...)
Definition: log.h:36
#define uacpi_unlikely(expr)
Definition: compiler.h:88
size_t uacpi_size
Definition: types.h:37
uint8_t uacpi_u8
Definition: types.h:19
@ UACPI_STATUS_INVALID_ARGUMENT
Definition: status.h:18
@ UACPI_STATUS_NO_RESOURCE_END_TAG
Definition: status.h:26
@ UACPI_STATUS_OK
Definition: status.h:11
uacpi_iteration_decision
Definition: types.h:28
@ UACPI_ITERATION_DECISION_BREAK
Definition: types.h:30
struct task_struct * current
Definition: linux.c:32

Referenced by native_resources_to_aml(), uacpi_for_each_device_resource(), and uacpi_native_resources_to_aml().

◆ uacpi_free_resource()

void uacpi_free_resource ( uacpi_resource resource)

Definition at line 2066 of file resources.c.

2067{
2068 if (resource == UACPI_NULL)
2069 return;
2070
2071 uacpi_free(resource, resource->length);
2072}
#define uacpi_free(mem, _)
Definition: stdlib.h:96
#define UACPI_NULL
Definition: types.h:33

Referenced by uacpi_get_resource_from_buffer().

◆ uacpi_free_resources()

void uacpi_free_resources ( uacpi_resources resources)

Definition at line 2058 of file resources.c.

2059{
2060 if (resources == UACPI_NULL)
2061 return;
2062
2063 uacpi_free(resources, sizeof(uacpi_resources) + resources->length);
2064}

Referenced by uacpi_for_each_device_resource(), and uacpi_native_resources_from_aml().

◆ uacpi_get_current_resources()

uacpi_status uacpi_get_current_resources ( uacpi_namespace_node device,
uacpi_resources **  out_resources 
)

Evaluate the _CRS method for a 'device' and get the returned resource list via 'out_resources'.

NOTE: the returned buffer must be released via uacpi_free_resources()

If you don't need to keep the resource array for later use you can uacpi_for_each_device_resource(device, "_CRS", ...) instead, which takes care of iteration & memory management on its own.

Definition at line 2095 of file resources.c.

2098{
2099 return extract_native_resources_from_method(device, "_CRS", out_resources);
2100}

◆ uacpi_get_device_resources()

uacpi_status uacpi_get_device_resources ( uacpi_namespace_node device,
const uacpi_char method,
uacpi_resources **  out_resources 
)

Evaluate an arbitrary method that is expected to return an AML resource buffer for a 'device' and get the returned resource list via 'out_resources'.

NOTE: the returned buffer must be released via uacpi_free_resources()

If you don't need to keep the resource array for later use you can uacpi_for_each_device_resource(device, method, ...) instead, which takes care of iteration & memory management on its own.

Definition at line 2109 of file resources.c.

2113{
2114 return extract_native_resources_from_method(device, method, out_resources);
2115}

◆ uacpi_get_possible_resources()

uacpi_status uacpi_get_possible_resources ( uacpi_namespace_node device,
uacpi_resources **  out_resources 
)

Evaluate the _PRS method for a 'device' and get the returned resource list via 'out_resources'.

NOTE: the returned buffer must be released via uacpi_free_resources()

If you don't need to keep the resource array for later use you can uacpi_for_each_device_resource(device, "_PRS", ...) instead, which takes care of iteration & memory management on its own.

Definition at line 2102 of file resources.c.

2105{
2106 return extract_native_resources_from_method(device, "_PRS", out_resources);
2107}

◆ uacpi_get_resource_from_buffer()

uacpi_status uacpi_get_resource_from_buffer ( uacpi_data_view  aml_buffer,
uacpi_resource **  out_resource 
)

Convert a single AML-encoded resource to native format.

This should be used for converting Connection() fields (passed during IO on GeneralPurposeIO or GenericSerialBus operation regions) or other similar buffers with only one resource to native format.

NOTE: the returned buffer must be released via uacpi_free_resource()

Definition at line 2024 of file resources.c.

2027{
2029 struct resource_conversion_ctx ctx = {
2030 .just_one = UACPI_TRUE,
2031 };
2033
2036 );
2038 return ret;
2039
2043
2044 uacpi_memzero(&ctx, sizeof(ctx));
2045 ctx.buf = resource;
2046 ctx.just_one = UACPI_TRUE;
2047
2051 return ret;
2052 }
2053
2054 *out_resource = resource;
2055 return ret;
2056}
#define uacpi_memzero(ptr, size)
Definition: stdlib.h:99
#define uacpi_kernel_alloc_zeroed
Definition: stdlib.h:127
#define UACPI_TRUE
Definition: types.h:29
@ UACPI_STATUS_OUT_OF_MEMORY
Definition: status.h:13
static uacpi_iteration_decision accumulate_native_buffer_size(void *opaque, uacpi_u8 *data, uacpi_u16 resource_size, const struct uacpi_resource_spec *spec)
Definition: resources.c:1942
static uacpi_iteration_decision do_aml_resource_to_native(void *opaque, uacpi_u8 *data, uacpi_u16 aml_size, const struct uacpi_resource_spec *spec)
Definition: resources.c:1675
uacpi_status uacpi_for_each_aml_resource(uacpi_data_view buffer, uacpi_aml_resource_iteration_callback cb, void *user)
Definition: resources.c:1425
void uacpi_free_resource(uacpi_resource *resource)
Definition: resources.c:2066
#define resource
Definition: kernel32.h:9

◆ uacpi_set_resources()

uacpi_status uacpi_set_resources ( uacpi_namespace_node device,
uacpi_resources resources 
)

Set the configuration to be used by the 'device' by calling its _SRS method.

Note that this expects 'resources' in the normal 'uacpi_resources' format, and not the raw AML resources bytestream, the conversion to the latter is done automatically by this API. If you want to _SRS a raw AML resources bytestream, use 'uacpi_execute' or similar API directly.

Definition at line 2548 of file resources.c.

2551{
2553 uacpi_object *res_template;
2555
2558 return ret;
2559
2560 args.objects = &res_template;
2561 args.count = 1;
2562 ret = uacpi_eval(device, "_SRS", &args, UACPI_NULL);
2563
2564 uacpi_object_unref(res_template);
2565 return ret;
2566}
void uacpi_object_unref(uacpi_object *obj)
Definition: types.c:762
uacpi_status uacpi_native_resources_to_aml(uacpi_resources *resources, uacpi_object **out_template)
Definition: resources.c:2495
#define args
Definition: format.c:66
Definition: match.c:390
uacpi_status uacpi_eval(uacpi_namespace_node *parent, const uacpi_char *path, const uacpi_object_array *args, uacpi_object **ret)
Definition: uacpi.c:709