ra8-firmware 0.1.0
Bare-metal firmware for the Renesas RA8 family (RA8D2 / RA8P1)
Loading...
Searching...
No Matches
ra8_bkup_regs.h
Go to the documentation of this file.
1
40
41#pragma once
42
43#ifdef __cplusplus
44extern "C" {
45#endif
46
47#include <stdint.h>
48
59typedef enum : uintptr_t {
60 k_ra8_bkup_base_addr = 0x4001E000UL,
62
90
105
110typedef enum : uint8_t {
113
118typedef enum : uint8_t {
121
129
134
143
149
159
166
171
179
191
199
207
215
227
235
237typedef enum : uint8_t {
240
252
253/* =============================================================================
254 * Inline accessor functions (mirrors style of ra8_system_regs.h)
255 * =============================================================================
256 */
257
259static inline volatile uint8_t* ra8_bkup_vbattmnselr(void)
260{
261 return (volatile uint8_t*)((uintptr_t)k_ra8_bkup_base_addr +
262 (uintptr_t)k_ra8_bkup_off_vbattmnselr);
263}
264
266static inline volatile uint8_t* ra8_bkup_vbtbpcr1(void)
267{
268 return (volatile uint8_t*)((uintptr_t)k_ra8_bkup_base_addr + (uintptr_t)k_ra8_bkup_off_vbtbpcr1);
269}
270
272static inline volatile uint8_t* ra8_bkup_vbtber(void)
273{
274 return (volatile uint8_t*)((uintptr_t)k_ra8_bkup_base_addr + (uintptr_t)k_ra8_bkup_off_vbtber);
275}
276
278static inline volatile uint8_t* ra8_bkup_vbtbpcr2(void)
279{
280 return (volatile uint8_t*)((uintptr_t)k_ra8_bkup_base_addr + (uintptr_t)k_ra8_bkup_off_vbtbpcr2);
281}
282
284static inline volatile uint8_t* ra8_bkup_vbtbpsr(void)
285{
286 return (volatile uint8_t*)((uintptr_t)k_ra8_bkup_base_addr + (uintptr_t)k_ra8_bkup_off_vbtbpsr);
287}
288
290static inline volatile uint8_t* ra8_bkup_vbtadsr(void)
291{
292 return (volatile uint8_t*)((uintptr_t)k_ra8_bkup_base_addr + (uintptr_t)k_ra8_bkup_off_vbtadsr);
293}
294
296static inline volatile uint8_t* ra8_bkup_vbtadcr1(void)
297{
298 return (volatile uint8_t*)((uintptr_t)k_ra8_bkup_base_addr + (uintptr_t)k_ra8_bkup_off_vbtadcr1);
299}
300
302static inline volatile uint8_t* ra8_bkup_vbtadcr2(void)
303{
304 return (volatile uint8_t*)((uintptr_t)k_ra8_bkup_base_addr + (uintptr_t)k_ra8_bkup_off_vbtadcr2);
305}
306
308static inline volatile uint8_t* ra8_bkup_vbtadcr3(void)
309{
310 return (volatile uint8_t*)((uintptr_t)k_ra8_bkup_base_addr + (uintptr_t)k_ra8_bkup_off_vbtadcr3);
311}
312
314static inline volatile uint8_t* ra8_bkup_vbtictlr(void)
315{
316 return (volatile uint8_t*)((uintptr_t)k_ra8_bkup_base_addr + (uintptr_t)k_ra8_bkup_off_vbtictlr);
317}
318
320static inline volatile uint8_t* ra8_bkup_vbtictlr2(void)
321{
322 return (volatile uint8_t*)((uintptr_t)k_ra8_bkup_base_addr + (uintptr_t)k_ra8_bkup_off_vbtictlr2);
323}
324
326static inline volatile uint8_t* ra8_bkup_vbtimonr(void)
327{
328 return (volatile uint8_t*)((uintptr_t)k_ra8_bkup_base_addr + (uintptr_t)k_ra8_bkup_off_vbtimonr);
329}
330
332static inline volatile uint8_t* ra8_bkup_vbtncwcr(void)
333{
334 return (volatile uint8_t*)((uintptr_t)k_ra8_bkup_base_addr + (uintptr_t)k_ra8_bkup_off_vbtncwcr);
335}
336
338static inline volatile uint32_t* ra8_bkup_bbfsar(void)
339{
340 return (volatile uint32_t*)((uintptr_t)k_ra8_bkup_base_addr + (uintptr_t)k_ra8_bkup_off_bbfsar);
341}
342
344static inline volatile uint16_t* ra8_bkup_vbrsabar(void)
345{
346 return (volatile uint16_t*)((uintptr_t)k_ra8_bkup_base_addr + (uintptr_t)k_ra8_bkup_off_vbrsabar);
347}
348
350static inline volatile uint16_t* ra8_bkup_vbrpabars(void)
351{
352 return (volatile uint16_t*)((uintptr_t)k_ra8_bkup_base_addr +
353 (uintptr_t)k_ra8_bkup_off_vbrpabars);
354}
355
357static inline volatile uint16_t* ra8_bkup_vbrpabarns(void)
358{
359 return (volatile uint16_t*)((uintptr_t)k_ra8_bkup_base_addr +
360 (uintptr_t)k_ra8_bkup_off_vbrpabarns);
361}
362
372static inline volatile uint8_t* ra8_bkup_vbtbkr(uint16_t index)
373{
374 if (index >= k_ra8_bkup_reg_count) {
375 return nullptr;
376 }
377 return (volatile uint8_t*)(k_ra8_bkup_base_addr + (uintptr_t)k_ra8_bkup_off_vbtbkr0 +
378 ((uintptr_t)index * (uintptr_t)k_ra8_bkup_reg_stride));
379}
380
389static inline volatile uint32_t* ra8_bkup_vbtbkr_word(uint8_t word_index)
390{
391 if ((uint16_t)word_index >= k_ra8_bkup_word_count) {
392 return nullptr;
393 }
394 return (volatile uint32_t*)(k_ra8_bkup_base_addr + (uintptr_t)k_ra8_bkup_off_vbtbkr0 +
395 ((uintptr_t)word_index * (uintptr_t)k_ra8_bkup_word_stride));
396}
397
398#ifdef __cplusplus
399}
400#endif
static volatile uint8_t * ra8_bkup_vbtbpcr2(void)
Pointer to 8-bit VBTBPCR2 (HUM Ch 12.2.12 p 508).
ra8_bkup_vbtbpcr1_bit_t
Bit positions inside VBTBPCR1 (HUM Ch 12.2.11 p 507).
@ k_ra8_bkup_vbtbpcr1_bit_bpwswstp
Battery power-supply switch stop.
ra8_bkup_limits_t
Backup-register array dimensions and small numeric limits.
@ k_ra8_bkup_saba_align_mask
Lower-5-bits-must-be-zero mask.
@ k_ra8_bkup_word_count
128 bytes / 4 = 32 uint32_t words.
@ k_ra8_bkup_reg_stride
1 byte per VBTBKRn entry.
@ k_ra8_bkup_saba_max
Maximum boundary address (last 32-byte slot).
@ k_ra8_bkup_word_stride
Bytes per uint32_t word.
@ k_ra8_bkup_chan_count
RTCIC0..RTCIC2 tamper channels.
@ k_ra8_bkup_reg_count
128 byte-wide VBTBKRn slots.
@ k_ra8_bkup_saba_align
SABA boundary granularity (HUM Ch 12.2.2).
ra8_bkup_addr_t
Battery-backup register window base.
@ k_ra8_bkup_base_addr
SYSC + battery backup base.
ra8_bkup_vbtimonr_mask_t
Bit masks for VBTIMONR (HUM Ch 12.2.10 p 506).
@ k_ra8_bkup_vbtimonr_mask_vch1mon
VCH1MON @ bit 1.
@ k_ra8_bkup_vbtimonr_mask_vch2mon
VCH2MON @ bit 2.
@ k_ra8_bkup_vbtimonr_mask_all
All MON bits.
@ k_ra8_bkup_vbtimonr_mask_vch0mon
VCH0MON @ bit 0.
static volatile uint32_t * ra8_bkup_bbfsar(void)
Pointer to 32-bit BBFSAR (HUM Ch 12.2.1 p 500).
ra8_bkup_vbtbpcr2_bit_t
Bit positions inside VBTBPCR2 (HUM Ch 12.2.12 p 508).
@ k_ra8_bkup_vbtbpcr2_bit_vdete
VDETE: VCC drop-detection enable.
@ k_ra8_bkup_vbtbpcr2_shift_lvl
VDETLVL[2:0] @ [2:0].
ra8_bkup_off_t
Byte-offsets of every BAT* / VBT* register the driver touches.
@ k_ra8_bkup_off_vbtictlr2
VBTICTLR2 Ch 12.2.9 p 506.
@ k_ra8_bkup_off_vbtber
VBTBER Ch 12.2.6 p 504.
@ k_ra8_bkup_off_vbtncwcr
VBTNCWCR Ch 12.2.18 p 511.
@ k_ra8_bkup_off_vbrpabarns
VBRPABARNS Ch 12.2.4 p 503.
@ k_ra8_bkup_off_vbtadcr3
VBTADCR3 Ch 12.2.17 p 511.
@ k_ra8_bkup_off_vbtbpcr1
VBTBPCR1 Ch 12.2.11 p 507.
@ k_ra8_bkup_off_vbrsabar
VBRSABAR Ch 12.2.2 p 502.
@ k_ra8_bkup_off_vbtbpsr
VBTBPSR Ch 12.2.13 p 509.
@ k_ra8_bkup_off_vbtadcr2
VBTADCR2 Ch 12.2.16 p 511.
@ k_ra8_bkup_off_vbtimonr
VBTIMONR Ch 12.2.10 p 506.
@ k_ra8_bkup_off_vbtadsr
VBTADSR Ch 12.2.14 p 509.
@ k_ra8_bkup_off_vbrpabars
VBRPABARS Ch 12.2.3 p 502.
@ k_ra8_bkup_off_vbtictlr
VBTICTLR Ch 12.2.8 p 505.
@ k_ra8_bkup_off_vbtadcr1
VBTADCR1 Ch 12.2.15 p 510.
@ k_ra8_bkup_off_vbattmnselr
VBATTMNSELR Ch 12.2.5 p 503.
@ k_ra8_bkup_off_bbfsar
BBFSAR Ch 12.2.1 p 500.
@ k_ra8_bkup_off_vbtbkr0
VBTBKR0..127 Ch 12.2.7 p 505.
@ k_ra8_bkup_off_vbtbpcr2
VBTBPCR2 Ch 12.2.12 p 508.
ra8_bkup_vbtber_bit_t
Bit positions inside VBTBER (HUM Ch 12.2.6 p 504).
@ k_ra8_bkup_vbtber_bit_vbae
VBAE: VBTBKRn access enable.
ra8_bkup_vbtbpcr1_mask_t
Single-bit masks for VBTBPCR1.
@ k_ra8_bkup_vbtbpcr1_mask_bpwswstp
BPWSWSTP @ bit 0.
static volatile uint8_t * ra8_bkup_vbtber(void)
Pointer to 8-bit VBTBER (HUM Ch 12.2.6 p 504).
static volatile uint8_t * ra8_bkup_vbtictlr2(void)
Pointer to 8-bit VBTICTLR2 (HUM Ch 12.2.9 p 506).
static volatile uint8_t * ra8_bkup_vbtadcr3(void)
Pointer to 8-bit VBTADCR3 (HUM Ch 12.2.17 p 511).
ra8_bkup_vbattmnselr_mask_t
Single-bit masks for VBATTMNSELR (HUM Ch 12.2.5 p 503).
@ k_ra8_bkup_vbattmnselr_mask_vbtmnsel
VBTMNSEL @ bit 0.
ra8_bkup_vbtadcr3_mask_t
Bit masks for VBTADCR3 (HUM Ch 12.2.17 p 511).
@ k_ra8_bkup_vbtadcr3_mask_vbtadze1
VBTADZE1 @ bit 1.
@ k_ra8_bkup_vbtadcr3_mask_all
All zeroize bits.
@ k_ra8_bkup_vbtadcr3_mask_vbtadze2
VBTADZE2 @ bit 2.
@ k_ra8_bkup_vbtadcr3_mask_vbtadze0
VBTADZE0 @ bit 0.
static volatile uint8_t * ra8_bkup_vbattmnselr(void)
Pointer to 8-bit VBATTMNSELR (HUM Ch 12.2.5 p 503).
static volatile uint8_t * ra8_bkup_vbtbpsr(void)
Pointer to 8-bit VBTBPSR (HUM Ch 12.2.13 p 509).
ra8_bkup_vbtbpcr2_mask_t
Field masks for VBTBPCR2.
@ k_ra8_bkup_vbtbpcr2_mask_vdete
VDETE @ bit 4.
@ k_ra8_bkup_vbtbpcr2_mask_lvl
VDETLVL[2:0].
static volatile uint16_t * ra8_bkup_vbrsabar(void)
Pointer to 16-bit VBRSABAR (HUM Ch 12.2.2 p 502).
ra8_bkup_vbtbpsr_bit_t
Bit positions inside VBTBPSR (HUM Ch 12.2.13 p 509).
@ k_ra8_bkup_vbtbpsr_bit_swm
Battery switch monitor.
@ k_ra8_bkup_vbtbpsr_bit_vbporf
VBATT_POR flag (W0C).
@ k_ra8_bkup_vbtbpsr_bit_vbporm
VBATT_R level monitor.
static volatile uint8_t * ra8_bkup_vbtadcr2(void)
Pointer to 8-bit VBTADCR2 (HUM Ch 12.2.16 p 511).
static volatile uint8_t * ra8_bkup_vbtbkr(uint16_t index)
Pointer to one VBTBKRn byte (HUM Ch 12.2.7 p 505).
ra8_bkup_vbtncwcr_mask_t
Bit masks for VBTNCWCR (HUM Ch 12.2.18 p 511).
@ k_ra8_bkup_vbtncwcr_mask_vincw
VINCW[2:0] @ [2:0].
ra8_bkup_vbtber_mask_t
Single-bit masks for VBTBER fields.
@ k_ra8_bkup_vbtber_mask_vbae
VBAE @ bit 3.
static volatile uint8_t * ra8_bkup_vbtimonr(void)
Pointer to 8-bit VBTIMONR (HUM Ch 12.2.10 p 506).
ra8_bkup_vbtictlr2_mask_t
Bit masks for VBTICTLR2 (HUM Ch 12.2.9 p 506).
@ k_ra8_bkup_vbtictlr2_mask_vch1eg
VCH1EG @ bit 5.
@ k_ra8_bkup_vbtictlr2_mask_eg_all
All EG bits.
@ k_ra8_bkup_vbtictlr2_mask_nce_all
All NCE bits.
@ k_ra8_bkup_vbtictlr2_mask_vch0eg
VCH0EG @ bit 4.
@ k_ra8_bkup_vbtictlr2_mask_vch2eg
VCH2EG @ bit 6.
@ k_ra8_bkup_vbtictlr2_mask_vch1nce
VCH1NCE @ bit 1.
@ k_ra8_bkup_vbtictlr2_mask_vch2nce
VCH2NCE @ bit 2.
@ k_ra8_bkup_vbtictlr2_mask_vch0nce
VCH0NCE @ bit 0.
ra8_bkup_bbfsar_mask_t
BBFSAR target masks (HUM Ch 12.2.1 p 500).
@ k_ra8_bkup_bbfsar_mask_nonsec6
VBTNCWCR.
@ k_ra8_bkup_bbfsar_mask_nonsec2
VBTICTLR/2/MONR.
@ k_ra8_bkup_bbfsar_mask_nonsec0
VBATTMNSELR.
@ k_ra8_bkup_bbfsar_mask_nonsec1
VBTBER.
@ k_ra8_bkup_bbfsar_mask_nonsec4
VBTADSR/CR1/CR2.
@ k_ra8_bkup_bbfsar_mask_nonsec3
VBTBPCR1/2 + VBTBPSR.
@ k_ra8_bkup_bbfsar_mask_nonsec5
VBTADCR3.
@ k_ra8_bkup_bbfsar_mask_all
All NONSEC bits.
static volatile uint8_t * ra8_bkup_vbtadsr(void)
Pointer to 8-bit VBTADSR (HUM Ch 12.2.14 p 509).
static volatile uint8_t * ra8_bkup_vbtictlr(void)
Pointer to 8-bit VBTICTLR (HUM Ch 12.2.8 p 505).
static volatile uint16_t * ra8_bkup_vbrpabars(void)
Pointer to 16-bit VBRPABARS (HUM Ch 12.2.3 p 502).
static volatile uint8_t * ra8_bkup_vbtbpcr1(void)
Pointer to 8-bit VBTBPCR1 (HUM Ch 12.2.11 p 507).
static volatile uint8_t * ra8_bkup_vbtadcr1(void)
Pointer to 8-bit VBTADCR1 (HUM Ch 12.2.15 p 510).
ra8_bkup_vbtictlr_mask_t
Bit masks for VBTICTLR (HUM Ch 12.2.8 p 505).
@ k_ra8_bkup_vbtictlr_mask_vch0inen
VCH0INEN @ bit 0.
@ k_ra8_bkup_vbtictlr_mask_vch2inen
VCH2INEN @ bit 2.
@ k_ra8_bkup_vbtictlr_mask_vch1inen
VCH1INEN @ bit 1.
@ k_ra8_bkup_vbtictlr_mask_all
All input-enable bits.
ra8_bkup_vbtbpsr_mask_t
Single-bit masks for VBTBPSR.
@ k_ra8_bkup_vbtbpsr_mask_swm
Switch monitor.
@ k_ra8_bkup_vbtbpsr_mask_vbporm
VBATT_R OK.
@ k_ra8_bkup_vbtbpsr_mask_vbporf
VBATT_POR flag.
ra8_bkup_vbtadsr_mask_t
Single-bit masks for VBTADSR tamper-detection flags (HUM Ch 12.2.14 p 510).
@ k_ra8_bkup_vbtadsr_mask_all
Combined VBTADF[2:0].
@ k_ra8_bkup_vbtadsr_mask_vbtadf1
VBTADF1: RTCIC1 event.
@ k_ra8_bkup_vbtadsr_mask_vbtadf0
VBTADF0: RTCIC0 event.
@ k_ra8_bkup_vbtadsr_mask_vbtadf2
VBTADF2: RTCIC2 event.
static volatile uint8_t * ra8_bkup_vbtncwcr(void)
Pointer to 8-bit VBTNCWCR (HUM Ch 12.2.18 p 511).
ra8_bkup_vbtadcr2_mask_t
Bit masks for VBTADCR2 (HUM Ch 12.2.16 p 511).
@ k_ra8_bkup_vbtadcr2_mask_all
All event-source bits.
@ k_ra8_bkup_vbtadcr2_mask_vbrtces1
VBRTCES1 @ bit 1.
@ k_ra8_bkup_vbtadcr2_mask_vbrtces2
VBRTCES2 @ bit 2.
@ k_ra8_bkup_vbtadcr2_mask_vbrtces0
VBRTCES0 @ bit 0.
ra8_bkup_vbtadcr1_mask_t
Bit masks for VBTADCR1 (HUM Ch 12.2.15 p 510).
@ k_ra8_bkup_vbtadcr1_mask_vbtadie0
VBTADIE0 @ bit 0.
@ k_ra8_bkup_vbtadcr1_mask_vbtadce1
VBTADCE1 @ bit 5.
@ k_ra8_bkup_vbtadcr1_mask_vbtadie1
VBTADIE1 @ bit 1.
@ k_ra8_bkup_vbtadcr1_mask_vbtadce2
VBTADCE2 @ bit 6.
@ k_ra8_bkup_vbtadcr1_mask_vbtadce0
VBTADCE0 @ bit 4.
@ k_ra8_bkup_vbtadcr1_mask_ce_all
All CE bits.
@ k_ra8_bkup_vbtadcr1_mask_ie_all
All IE bits.
@ k_ra8_bkup_vbtadcr1_mask_vbtadie2
VBTADIE2 @ bit 2.
static volatile uint16_t * ra8_bkup_vbrpabarns(void)
Pointer to 16-bit VBRPABARNS (HUM Ch 12.2.4 p 503).
static volatile uint32_t * ra8_bkup_vbtbkr_word(uint8_t word_index)
Pointer to one VBTBKR 32-bit word slot (4 bytes).