ReactOS 0.4.16-dev-1946-g52006dd
registers.h File Reference
#include <uacpi/types.h>
Include dependency graph for registers.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Typedefs

typedef enum uacpi_register uacpi_register
 
typedef enum uacpi_register_field uacpi_register_field
 

Enumerations

enum  uacpi_register {
  UACPI_REGISTER_PM1_STS = 0 , UACPI_REGISTER_PM1_EN , UACPI_REGISTER_PM1_CNT , UACPI_REGISTER_PM_TMR ,
  UACPI_REGISTER_PM2_CNT , UACPI_REGISTER_SLP_CNT , UACPI_REGISTER_SLP_STS , UACPI_REGISTER_RESET ,
  UACPI_REGISTER_SMI_CMD , UACPI_REGISTER_MAX = UACPI_REGISTER_SMI_CMD
}
 
enum  uacpi_register_field {
  UACPI_REGISTER_FIELD_TMR_STS = 0 , UACPI_REGISTER_FIELD_BM_STS , UACPI_REGISTER_FIELD_GBL_STS , UACPI_REGISTER_FIELD_PWRBTN_STS ,
  UACPI_REGISTER_FIELD_SLPBTN_STS , UACPI_REGISTER_FIELD_RTC_STS , UACPI_REGISTER_FIELD_PCIEX_WAKE_STS , UACPI_REGISTER_FIELD_HWR_WAK_STS ,
  UACPI_REGISTER_FIELD_WAK_STS , UACPI_REGISTER_FIELD_TMR_EN , UACPI_REGISTER_FIELD_GBL_EN , UACPI_REGISTER_FIELD_PWRBTN_EN ,
  UACPI_REGISTER_FIELD_SLPBTN_EN , UACPI_REGISTER_FIELD_RTC_EN , UACPI_REGISTER_FIELD_PCIEXP_WAKE_DIS , UACPI_REGISTER_FIELD_SCI_EN ,
  UACPI_REGISTER_FIELD_BM_RLD , UACPI_REGISTER_FIELD_GBL_RLS , UACPI_REGISTER_FIELD_SLP_TYP , UACPI_REGISTER_FIELD_HWR_SLP_TYP ,
  UACPI_REGISTER_FIELD_SLP_EN , UACPI_REGISTER_FIELD_HWR_SLP_EN , UACPI_REGISTER_FIELD_ARB_DIS , UACPI_REGISTER_FIELD_MAX = UACPI_REGISTER_FIELD_ARB_DIS
}
 

Functions

uacpi_status uacpi_read_register (uacpi_register, uacpi_u64 *)
 
uacpi_status uacpi_write_register (uacpi_register, uacpi_u64)
 
uacpi_status uacpi_write_registers (uacpi_register, uacpi_u64, uacpi_u64)
 
uacpi_status uacpi_read_register_field (uacpi_register_field, uacpi_u64 *)
 
uacpi_status uacpi_write_register_field (uacpi_register_field, uacpi_u64)
 

Typedef Documentation

◆ uacpi_register

◆ uacpi_register_field

Enumeration Type Documentation

◆ uacpi_register

Enumerator
UACPI_REGISTER_PM1_STS 
UACPI_REGISTER_PM1_EN 
UACPI_REGISTER_PM1_CNT 
UACPI_REGISTER_PM_TMR 
UACPI_REGISTER_PM2_CNT 
UACPI_REGISTER_SLP_CNT 
UACPI_REGISTER_SLP_STS 
UACPI_REGISTER_RESET 
UACPI_REGISTER_SMI_CMD 
UACPI_REGISTER_MAX 

Definition at line 16 of file registers.h.

16 {
uacpi_register
Definition: registers.h:16
@ UACPI_REGISTER_RESET
Definition: registers.h:24
@ UACPI_REGISTER_SMI_CMD
Definition: registers.h:25
@ UACPI_REGISTER_MAX
Definition: registers.h:26
@ UACPI_REGISTER_PM1_EN
Definition: registers.h:18
@ UACPI_REGISTER_PM1_CNT
Definition: registers.h:19
@ UACPI_REGISTER_PM2_CNT
Definition: registers.h:21
@ UACPI_REGISTER_PM1_STS
Definition: registers.h:17
@ UACPI_REGISTER_PM_TMR
Definition: registers.h:20
@ UACPI_REGISTER_SLP_CNT
Definition: registers.h:22
@ UACPI_REGISTER_SLP_STS
Definition: registers.h:23

◆ uacpi_register_field

Enumerator
UACPI_REGISTER_FIELD_TMR_STS 
UACPI_REGISTER_FIELD_BM_STS 
UACPI_REGISTER_FIELD_GBL_STS 
UACPI_REGISTER_FIELD_PWRBTN_STS 
UACPI_REGISTER_FIELD_SLPBTN_STS 
UACPI_REGISTER_FIELD_RTC_STS 
UACPI_REGISTER_FIELD_PCIEX_WAKE_STS 
UACPI_REGISTER_FIELD_HWR_WAK_STS 
UACPI_REGISTER_FIELD_WAK_STS 
UACPI_REGISTER_FIELD_TMR_EN 
UACPI_REGISTER_FIELD_GBL_EN 
UACPI_REGISTER_FIELD_PWRBTN_EN 
UACPI_REGISTER_FIELD_SLPBTN_EN 
UACPI_REGISTER_FIELD_RTC_EN 
UACPI_REGISTER_FIELD_PCIEXP_WAKE_DIS 
UACPI_REGISTER_FIELD_SCI_EN 
UACPI_REGISTER_FIELD_BM_RLD 
UACPI_REGISTER_FIELD_GBL_RLS 
UACPI_REGISTER_FIELD_SLP_TYP 
UACPI_REGISTER_FIELD_HWR_SLP_TYP 
UACPI_REGISTER_FIELD_SLP_EN 
UACPI_REGISTER_FIELD_HWR_SLP_EN 
UACPI_REGISTER_FIELD_ARB_DIS 
UACPI_REGISTER_FIELD_MAX 

Definition at line 56 of file registers.h.

56 {
uacpi_register_field
Definition: registers.h:56
@ UACPI_REGISTER_FIELD_PWRBTN_EN
Definition: registers.h:68
@ UACPI_REGISTER_FIELD_PWRBTN_STS
Definition: registers.h:60
@ UACPI_REGISTER_FIELD_MAX
Definition: registers.h:80
@ UACPI_REGISTER_FIELD_WAK_STS
Definition: registers.h:65
@ UACPI_REGISTER_FIELD_RTC_STS
Definition: registers.h:62
@ UACPI_REGISTER_FIELD_SCI_EN
Definition: registers.h:72
@ UACPI_REGISTER_FIELD_ARB_DIS
Definition: registers.h:79
@ UACPI_REGISTER_FIELD_HWR_WAK_STS
Definition: registers.h:64
@ UACPI_REGISTER_FIELD_HWR_SLP_EN
Definition: registers.h:78
@ UACPI_REGISTER_FIELD_RTC_EN
Definition: registers.h:70
@ UACPI_REGISTER_FIELD_GBL_EN
Definition: registers.h:67
@ UACPI_REGISTER_FIELD_SLPBTN_STS
Definition: registers.h:61
@ UACPI_REGISTER_FIELD_SLP_TYP
Definition: registers.h:75
@ UACPI_REGISTER_FIELD_SLPBTN_EN
Definition: registers.h:69
@ UACPI_REGISTER_FIELD_GBL_STS
Definition: registers.h:59
@ UACPI_REGISTER_FIELD_GBL_RLS
Definition: registers.h:74
@ UACPI_REGISTER_FIELD_TMR_STS
Definition: registers.h:57
@ UACPI_REGISTER_FIELD_BM_STS
Definition: registers.h:58
@ UACPI_REGISTER_FIELD_TMR_EN
Definition: registers.h:66
@ UACPI_REGISTER_FIELD_SLP_EN
Definition: registers.h:77
@ UACPI_REGISTER_FIELD_PCIEX_WAKE_STS
Definition: registers.h:63
@ UACPI_REGISTER_FIELD_HWR_SLP_TYP
Definition: registers.h:76
@ UACPI_REGISTER_FIELD_PCIEXP_WAKE_DIS
Definition: registers.h:71
@ UACPI_REGISTER_FIELD_BM_RLD
Definition: registers.h:73

Function Documentation

◆ uacpi_read_register()

uacpi_status uacpi_read_register ( uacpi_register  reg_enum,
uacpi_u64 out_value 
)

Definition at line 227 of file registers.c.

230{
232 const struct register_spec *reg;
234
236
237 ret = get_reg(reg_enum, &reg, &mapping);
239 return ret;
240
243 return ret;
244
245 return do_read_register(reg, mapping, out_value);
246}
#define UACPI_ENSURE_INIT_LEVEL_AT_LEAST(lvl)
Definition: context.h:127
#define uacpi_unlikely_error(expr)
Definition: status.h:49
uacpi_status
Definition: status.h:10
@ UACPI_INIT_LEVEL_SUBSYSTEM_INITIALIZED
Definition: types.h:66
return ret
Definition: mutex.c:146
static uacpi_status ensure_register_mapped(const struct register_spec *spec, struct register_mapping *mapping)
Definition: registers.c:151
static uacpi_status get_reg(uacpi_u8 idx, const struct register_spec **out_spec, struct register_mapping **out_mapping)
Definition: registers.c:181
static uacpi_status do_read_register(const struct register_spec *reg, struct register_mapping *mapping, uacpi_u64 *out_value)
Definition: registers.c:204
GLenum GLenum GLenum GLenum mapping
Definition: glext.h:9031
static int reg
Definition: i386-dis.c:1290

Referenced by enter_sleep_state_hw_full(), handle_fixed_events(), and prepare_for_wake_from_sleep_state_hw_full().

◆ uacpi_read_register_field()

uacpi_status uacpi_read_register_field ( uacpi_register_field  field_enum,
uacpi_u64 out_value 
)

Definition at line 487 of file registers.c.

490{
492 uacpi_u8 field_idx = field_enum;
493 const struct register_field *field;
494 const struct register_spec *reg;
496
498
501
502 field = &g_fields[field_idx];
503 reg = &g_registers[field->reg];
505
508 return ret;
509
510 ret = do_read_register(reg, mapping, out_value);
512 return ret;
513
514 *out_value = (*out_value & field->mask) >> field->offset;
515 return UACPI_STATUS_OK;
516}
#define uacpi_unlikely(expr)
Definition: compiler.h:58
uint8_t uacpi_u8
Definition: types.h:19
@ UACPI_STATUS_INVALID_ARGUMENT
Definition: status.h:18
@ UACPI_STATUS_OK
Definition: status.h:11
static struct register_mapping g_register_mappings[UACPI_REGISTER_MAX+1]
Definition: registers.c:109
static const struct register_spec g_registers[UACPI_REGISTER_MAX+1]
Definition: registers.c:33
static const struct register_field g_fields[UACPI_REGISTER_FIELD_MAX+1]
Definition: registers.c:338
Definition: parser.c:44

Referenced by enter_sleep_state_hw_full(), enter_sleep_state_hw_reduced(), read_mode(), set_event(), and uacpi_fixed_event_info().

◆ uacpi_write_register()

uacpi_status uacpi_write_register ( uacpi_register  reg_enum,
uacpi_u64  in_value 
)

Definition at line 286 of file registers.c.

289{
291 const struct register_spec *reg;
293
295
296 ret = get_reg(reg_enum, &reg, &mapping);
298 return ret;
299
302 return ret;
303
304 return do_write_register(reg, mapping, in_value);
305}
static uacpi_status do_write_register(const struct register_spec *reg, struct register_mapping *mapping, uacpi_u64 in_value)
Definition: registers.c:258

Referenced by enter_sleep_state_hw_reduced(), prepare_for_wake_from_sleep_state_hw_reduced(), set_mode(), uacpi_clear_all_events(), and uacpi_reboot().

◆ uacpi_write_register_field()

uacpi_status uacpi_write_register_field ( uacpi_register_field  field_enum,
uacpi_u64  in_value 
)

Definition at line 518 of file registers.c.

521{
523 uacpi_u8 field_idx = field_enum;
524 const struct register_field *field;
525 const struct register_spec *reg;
527
530
532
535
536 field = &g_fields[field_idx];
537 reg = &g_registers[field->reg];
539
542 return ret;
543
544 in_value = (in_value << field->offset) & field->mask;
545
547
549 if (in_value == 0) {
551 goto out;
552 }
553
554 ret = do_write_register(reg, mapping, in_value);
555 goto out;
556 }
557
560 goto out;
561
562 data &= ~field->mask;
563 data |= in_value;
564
566
567out:
569 return ret;
570}
unsigned long uacpi_cpu_flags
Definition: arch_helpers.h:13
uint64_t uacpi_u64
Definition: types.h:22
static uacpi_handle g_reg_lock
Definition: registers.c:11
@ REGISTER_ACCESS_KIND_WRITE_TO_CLEAR
Definition: registers.c:20
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
GLbitfield flags
Definition: glext.h:7161
uacpi_cpu_flags uacpi_kernel_lock_spinlock(uacpi_handle)
Definition: uacpiosl.c:98
void uacpi_kernel_unlock_spinlock(uacpi_handle, uacpi_cpu_flags)
Definition: uacpiosl.c:105
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
Definition: wcsftime.cpp:383

Referenced by dispatch_fixed_event(), enter_sleep_state_hw_full(), enter_sleep_state_hw_reduced(), initialize_fixed_events(), set_event(), uacpi_clear_fixed_event(), uacpi_release_global_lock_to_firmware(), wake_from_sleep_state_hw_full(), and wake_from_sleep_state_hw_reduced().

◆ uacpi_write_registers()

uacpi_status uacpi_write_registers ( uacpi_register  reg_enum,
uacpi_u64  in_value0,
uacpi_u64  in_value1 
)

Definition at line 307 of file registers.c.

310{
312 const struct register_spec *reg;
314
316
317 ret = get_reg(reg_enum, &reg, &mapping);
319 return ret;
320
323 return ret;
324
325 ret = do_write_one(mapping, 0, in_value0);
327 return ret;
328
329 return do_write_one(mapping, 1, in_value1);
330}
static uacpi_status do_write_one(struct register_mapping *mapping, uacpi_u8 idx, uacpi_u64 in_value)
Definition: registers.c:248

Referenced by enter_sleep_state_hw_full(), and prepare_for_wake_from_sleep_state_hw_full().