1#pragma once
2
3#include <uacpi/internal/types.h>
4#include <uacpi/acpi.h>
5#include <uacpi/io.h>
6
7#ifndef UACPI_BAREBONES_MODE
8
9typedef struct uacpi_mapped_gas {
10 uacpi_handle mapping;
11 uacpi_u8 access_bit_width;
12 uacpi_u8 total_bit_width;
13 uacpi_u8 bit_offset;
14
15 uacpi_status (*read)(
16 uacpi_handle, uacpi_size offset, uacpi_u8 width, uacpi_u64 *out
17 );
18 uacpi_status (*write)(
19 uacpi_handle, uacpi_size offset, uacpi_u8 width, uacpi_u64 in
20 );
21
22 void (*unmap)(uacpi_handle, uacpi_size);
23} uacpi_mapped_gas;
24
25uacpi_status uacpi_map_gas_noalloc(
26 const struct acpi_gas *gas, uacpi_mapped_gas *out_mapped
27);
28void uacpi_unmap_gas_nofree(uacpi_mapped_gas *gas);
29
30uacpi_size uacpi_round_up_bits_to_bytes(uacpi_size bit_length);
31
32void uacpi_read_buffer_field(
33 const uacpi_buffer_field *field, void *dst
34);
35void uacpi_write_buffer_field(
36 uacpi_buffer_field *field, const void *src, uacpi_size size
37);
38
39uacpi_status uacpi_field_unit_get_read_type(
40 struct uacpi_field_unit *field, uacpi_object_type *out_type
41);
42
43uacpi_status uacpi_field_unit_get_bit_length(
44 struct uacpi_field_unit *field, uacpi_size *out_length
45);
46
47uacpi_status uacpi_read_field_unit(
48 uacpi_field_unit *field, void *dst, uacpi_size size,
49 uacpi_data_view *wtr_response
50);
51uacpi_status uacpi_write_field_unit(
52 uacpi_field_unit *field, const void *src, uacpi_size size,
53 uacpi_data_view *wtr_response
54);
55
56uacpi_status uacpi_system_memory_read(
57 void *ptr, uacpi_size offset, uacpi_u8 width, uacpi_u64 *out
58);
59uacpi_status uacpi_system_memory_write(
60 void *ptr, uacpi_size offset, uacpi_u8 width, uacpi_u64 in
61);
62
63uacpi_status uacpi_system_io_read(
64 uacpi_handle handle, uacpi_size offset, uacpi_u8 width, uacpi_u64 *out
65);
66uacpi_status uacpi_system_io_write(
67 uacpi_handle handle, uacpi_size offset, uacpi_u8 width, uacpi_u64 in
68);
69
70uacpi_status uacpi_pci_read(
71 uacpi_handle handle, uacpi_size offset, uacpi_u8 width, uacpi_u64 *out
72);
73uacpi_status uacpi_pci_write(
74 uacpi_handle handle, uacpi_size offset, uacpi_u8 width, uacpi_u64 in
75);
76
77#endif // !UACPI_BAREBONES_MODE
78