ra8-firmware 0.1.0
Bare-metal firmware for the Renesas RA8 family (RA8D2 / RA8P1)
Loading...
Searching...
No Matches
ra8_pwr.h
Go to the documentation of this file.
1
44
45#pragma once
46
47#ifdef __cplusplus
48extern "C" {
49#endif
50
51#include <stdint.h>
52
53#include "ra8_cgc.h"
54#include "ra8_err.h"
55#include "ra8_mstp_regs.h"
56
57/* =============================================================================
58 * Wake-up source identifiers
59 * =============================================================================
60 */
61
70
83typedef enum : uint16_t {
85 k_ra8_pwr_wake_irq1 = (uint16_t)((k_ra8_pwr_wupen_reg_0 << 8) | 1U),
86 k_ra8_pwr_wake_irq2 = (uint16_t)((k_ra8_pwr_wupen_reg_0 << 8) | 2U),
87 k_ra8_pwr_wake_irq3 = (uint16_t)((k_ra8_pwr_wupen_reg_0 << 8) | 3U),
88 k_ra8_pwr_wake_irq4 = (uint16_t)((k_ra8_pwr_wupen_reg_0 << 8) | 4U),
89 k_ra8_pwr_wake_irq5 = (uint16_t)((k_ra8_pwr_wupen_reg_0 << 8) | 5U),
90 k_ra8_pwr_wake_irq6 = (uint16_t)((k_ra8_pwr_wupen_reg_0 << 8) | 6U),
91 k_ra8_pwr_wake_irq7 = (uint16_t)((k_ra8_pwr_wupen_reg_0 << 8) | 7U),
92
93 k_ra8_pwr_wake_iwdt = (uint16_t)((k_ra8_pwr_wupen_reg_0 << 8) | 16U),
94 k_ra8_pwr_wake_lvd1 = (uint16_t)((k_ra8_pwr_wupen_reg_0 << 8) | 18U),
95 k_ra8_pwr_wake_lvd2 = (uint16_t)((k_ra8_pwr_wupen_reg_0 << 8) | 19U),
97 (uint16_t)((k_ra8_pwr_wupen_reg_0 << 8) | 24U),
99 (uint16_t)((k_ra8_pwr_wupen_reg_0 << 8) | 25U),
101 (uint16_t)((k_ra8_pwr_wupen_reg_0 << 8) | 26U),
103 (uint16_t)((k_ra8_pwr_wupen_reg_0 << 8) | 27U),
104
106 k_ra8_pwr_wake_agt1 = (uint16_t)((k_ra8_pwr_wupen_reg_1 << 8) | 1U),
107 k_ra8_pwr_wake_ulpt0 = (uint16_t)((k_ra8_pwr_wupen_reg_1 << 8) | 2U),
108 k_ra8_pwr_wake_ulpt1 = (uint16_t)((k_ra8_pwr_wupen_reg_1 << 8) | 3U),
110
111/* =============================================================================
112 * Lifecycle
113 * =============================================================================
114 */
115
139[[nodiscard]] ra8_err_t ra8_pwr_init(void);
140
141/* =============================================================================
142 * Module request / release
143 * =============================================================================
144 */
145
167
187
188/* =============================================================================
189 * Wake source enable / disable
190 * =============================================================================
191 */
192
215
236
259[[nodiscard]] ra8_err_t ra8_pwr_wake_source_is_enabled(ra8_pwr_wake_t source, bool* out_enabled);
260
261/* =============================================================================
262 * Sleep entry
263 * =============================================================================
264 */
265
290void ra8_pwr_enter_sleep(void);
291
317[[nodiscard]] ra8_err_t ra8_pwr_enter_software_standby(void);
318
319/* =============================================================================
320 * Clock-domain forwarding
321 * =============================================================================
322 */
323
345[[nodiscard]] ra8_err_t ra8_pwr_get_clock_hz(ra8_clock_id_t id, uint32_t* out_hz);
346
347#ifdef __cplusplus
348}
349#endif
High-level Clock Generation Circuit driver.
ra8_clock_id_t
Identifiers for the clock-tree frequencies queryable at runtime.
Definition ra8_cgc.h:69
Error Code Definitions for ra8-firmware.
ra8_err_codes_t ra8_err_t
Canonical error-return type used by every ra8-firmware API.
Definition ra8_err.h:546
Module Stop Control (MSTP) register layout for the Renesas RA8D2.
ra8_mstp_t
Packed (reg << 8) | bit module-stop identifier.
ra8_err_t ra8_pwr_module_request(ra8_mstp_t id)
Ask for a peripheral's clock to be enabled.
Definition ra8_pwr.c:158
ra8_pwr_wupen_reg_t
Which of the two WUPEN registers a wake source lives in.
Definition ra8_pwr.h:66
@ k_ra8_pwr_wupen_reg_0
WUPEN0 (sources 0..31).
Definition ra8_pwr.h:67
@ k_ra8_pwr_wupen_reg_1
WUPEN1 (sources 32..63).
Definition ra8_pwr.h:68
void ra8_pwr_enter_sleep(void)
Enter CPU sleep mode (peripherals continue running).
Definition ra8_pwr.c:212
ra8_err_t ra8_pwr_wake_source_is_enabled(ra8_pwr_wake_t source, bool *out_enabled)
Read the current WUPEN bit value for a source.
Definition ra8_pwr.c:198
ra8_err_t ra8_pwr_init(void)
Initialise the LPM substrate.
Definition ra8_pwr.c:141
ra8_err_t ra8_pwr_enter_software_standby(void)
Enter Software Standby mode.
Definition ra8_pwr.c:217
ra8_err_t ra8_pwr_module_release(ra8_mstp_t id)
Release a previously-requested peripheral.
Definition ra8_pwr.c:163
ra8_err_t ra8_pwr_get_clock_hz(ra8_clock_id_t id, uint32_t *out_hz)
Forward to ra8_cgc_get_clock_hz() for naming consistency.
Definition ra8_pwr.c:240
ra8_err_t ra8_pwr_set_wake_source(ra8_pwr_wake_t source)
Enable an LPM wake source.
Definition ra8_pwr.c:168
ra8_err_t ra8_pwr_clear_wake_source(ra8_pwr_wake_t source)
Disable an LPM wake source.
Definition ra8_pwr.c:183
ra8_pwr_wake_t
Packed (WUPEN register, bit) wake-source identifier.
Definition ra8_pwr.h:83
@ k_ra8_pwr_wake_lvd1
RA8 pwr wake lvd1.
Definition ra8_pwr.h:94
@ k_ra8_pwr_wake_irq1
RA8 pwr wake irq1.
Definition ra8_pwr.h:85
@ k_ra8_pwr_wake_irq5
RA8 pwr wake irq5.
Definition ra8_pwr.h:89
@ k_ra8_pwr_wake_irq7
RA8 pwr wake irq7.
Definition ra8_pwr.h:91
@ k_ra8_pwr_wake_ulpt0
RA8 pwr wake ulpt0.
Definition ra8_pwr.h:107
@ k_ra8_pwr_wake_rtc_alarm
RA8 pwr wake rtc alarm.
Definition ra8_pwr.h:96
@ k_ra8_pwr_wake_rtc_period
RA8 pwr wake rtc period.
Definition ra8_pwr.h:98
@ k_ra8_pwr_wake_usbhs_resume
RA8 pwr wake usbhs resume.
Definition ra8_pwr.h:100
@ k_ra8_pwr_wake_irq2
RA8 pwr wake irq2.
Definition ra8_pwr.h:86
@ k_ra8_pwr_wake_agt0
RA8 pwr wake agt0.
Definition ra8_pwr.h:105
@ k_ra8_pwr_wake_irq6
RA8 pwr wake irq6.
Definition ra8_pwr.h:90
@ k_ra8_pwr_wake_ulpt1
RA8 pwr wake ulpt1.
Definition ra8_pwr.h:108
@ k_ra8_pwr_wake_lvd2
RA8 pwr wake lvd2.
Definition ra8_pwr.h:95
@ k_ra8_pwr_wake_agt1
RA8 pwr wake agt1.
Definition ra8_pwr.h:106
@ k_ra8_pwr_wake_irq0
RA8 pwr wake irq0.
Definition ra8_pwr.h:84
@ k_ra8_pwr_wake_irq4
RA8 pwr wake irq4.
Definition ra8_pwr.h:88
@ k_ra8_pwr_wake_irq3
RA8 pwr wake irq3.
Definition ra8_pwr.h:87
@ k_ra8_pwr_wake_usbfs_resume
RA8 pwr wake usbfs resume.
Definition ra8_pwr.h:102
@ k_ra8_pwr_wake_iwdt
RA8 pwr wake iwdt.
Definition ra8_pwr.h:93