ra8-firmware 0.1.0
Bare-metal firmware for the Renesas RA8 family (RA8D2 / RA8P1)
Loading...
Searching...
No Matches
board_periph_mstp_model.c
Go to the documentation of this file.
1
37
38#include <stdint.h>
39
41#include "ra8_attributes.h"
42#include "ra8_mstp_regs.h"
43
53
63typedef enum : uint32_t {
64 k_mstp_reset_a = 0xFFFFFFF0U,
65 k_mstp_reset_rest = 0xFFFFFFFFU,
67
68/* =============================================================================
69 * Shadow state + observability.
70 * =============================================================================
71 */
72
73static uint32_t s_mstpcr[k_mstp_reg_count];
74static uint32_t s_gated_reads;
75static uint32_t s_gated_writes;
76static const char* s_last_gated = "-";
77
78/* =============================================================================
79 * Address -> module-stop-bit gate table.
80 *
81 * A family covers one strided run of instances, each mapping to the packed
82 * ra8_mstp_t bit at the same index; a single-instance peripheral is a family of
83 * count 1 whose stride equals its whole register window. The bit values come
84 * from ra8_mstp_regs.h -- their HUM Ch/page citations live there.
85 * =============================================================================
86 */
87
89static const uint16_t s_k_ids_sci[] = {
90 (uint16_t)k_ra8_mstp_sci0,
91 (uint16_t)k_ra8_mstp_sci1,
92 (uint16_t)k_ra8_mstp_sci2,
93 (uint16_t)k_ra8_mstp_sci3,
94 (uint16_t)k_ra8_mstp_sci4,
95 (uint16_t)k_ra8_mstp_sci5,
96 (uint16_t)k_ra8_mstp_sci6,
97 (uint16_t)k_ra8_mstp_sci7,
98 (uint16_t)k_ra8_mstp_sci8,
99 (uint16_t)k_ra8_mstp_sci9,
100};
101
102static const uint16_t s_k_ids_spi[] = {
103 (uint16_t)k_ra8_mstp_spi0,
104 (uint16_t)k_ra8_mstp_spi1,
105};
106
107static const uint16_t s_k_ids_riic[] = {
108 (uint16_t)k_ra8_mstp_iic0,
109 (uint16_t)k_ra8_mstp_iic1,
110 (uint16_t)k_ra8_mstp_iic2,
111};
112
113static const uint16_t s_k_ids_i3c[] = {(uint16_t)k_ra8_mstp_i3c};
115static const uint16_t s_k_ids_agt[] = {
116 (uint16_t)k_ra8_mstp_agt0,
117 (uint16_t)k_ra8_mstp_agt1,
118};
119
121static const uint16_t s_k_ids_gpt[] = {
122 (uint16_t)k_ra8_mstp_gpt0,
123 (uint16_t)k_ra8_mstp_gpt1,
124 (uint16_t)k_ra8_mstp_gpt2,
125 (uint16_t)k_ra8_mstp_gpt3,
126 (uint16_t)k_ra8_mstp_gpt4_9,
127 (uint16_t)k_ra8_mstp_gpt4_9,
128 (uint16_t)k_ra8_mstp_gpt4_9,
129 (uint16_t)k_ra8_mstp_gpt4_9,
130 (uint16_t)k_ra8_mstp_gpt4_9,
131 (uint16_t)k_ra8_mstp_gpt4_9,
132 (uint16_t)k_ra8_mstp_gpt10,
133 (uint16_t)k_ra8_mstp_gpt11,
134 (uint16_t)k_ra8_mstp_gpt12,
135 (uint16_t)k_ra8_mstp_gpt13,
136};
137
138static const uint16_t s_k_ids_ulpt[] = {
139 (uint16_t)k_ra8_mstp_ulpt0,
140 (uint16_t)k_ra8_mstp_ulpt1,
141};
142
143static const uint16_t s_k_ids_dac[] = {
144 (uint16_t)k_ra8_mstp_dac12_0,
145 (uint16_t)k_ra8_mstp_dac12_1,
146};
147
148static const uint16_t s_k_ids_ssie[] = {
149 (uint16_t)k_ra8_mstp_ssie0,
150 (uint16_t)k_ra8_mstp_ssie1,
151};
152
153static const uint16_t s_k_ids_poeg[] = {
154 (uint16_t)k_ra8_mstp_poeg_a,
155 (uint16_t)k_ra8_mstp_poeg_b,
156 (uint16_t)k_ra8_mstp_poeg_c,
157 (uint16_t)k_ra8_mstp_poeg_d,
158};
159
160static const uint16_t s_k_ids_canfd0[] = {(uint16_t)k_ra8_mstp_canfd0};
162static const uint16_t s_k_ids_canfd1[] = {(uint16_t)k_ra8_mstp_canfd1};
164static const uint16_t s_k_ids_cac[] = {(uint16_t)k_ra8_mstp_cac};
166static const uint16_t s_k_ids_crc[] = {(uint16_t)k_ra8_mstp_crc};
168static const uint16_t s_k_ids_doc[] = {(uint16_t)k_ra8_mstp_doc};
170static const uint16_t s_k_ids_ceu[] = {(uint16_t)k_ra8_mstp_ceu};
172static const uint16_t s_k_ids_pdm[] = {(uint16_t)k_ra8_mstp_pdmif};
174static const uint16_t s_k_ids_adc[] = {(uint16_t)k_ra8_mstp_adc16h};
176static const uint16_t s_k_ids_sdhi[] = {(uint16_t)k_ra8_mstp_sdhi0};
178static const uint16_t s_k_ids_xspi[] = {(uint16_t)k_ra8_mstp_ospi0};
180static const uint16_t s_k_ids_drw[] = {(uint16_t)k_ra8_mstp_drw};
181
189typedef struct {
190 uint64_t base;
191 uint64_t stride;
192 uint32_t count;
193 const uint16_t* ids;
194 const char* name;
196
198typedef enum : uint64_t {
199 k_mstp_base_sci = 0x40358000UL,
200 k_mstp_base_spi = 0x4035C000UL,
201 k_mstp_base_riic = 0x4025E000UL,
202 k_mstp_base_i3c = 0x4035F000UL,
203 k_mstp_base_agt = 0x40221000UL,
204 k_mstp_base_gpt = 0x40322000UL,
205 k_mstp_base_ulpt = 0x40220000UL,
206 k_mstp_base_dac = 0x40233000UL,
207 k_mstp_base_ssie = 0x4025D000UL,
208 k_mstp_base_poeg = 0x40212000UL,
209 k_mstp_base_canfd0 = 0x40380000UL,
210 k_mstp_base_canfd1 = 0x40382000UL,
211 k_mstp_base_cac = 0x40202400UL,
212 k_mstp_base_crc = 0x40310000UL,
213 k_mstp_base_doc = 0x40311000UL,
214 k_mstp_base_ceu = 0x40348000UL,
215 k_mstp_base_pdm = 0x40256000UL,
216 k_mstp_base_adc = 0x40338000UL,
217 k_mstp_base_sdhi = 0x40252000UL,
218 k_mstp_base_xspi = 0x40268000UL,
219 k_mstp_base_drw = 0x40444000UL,
221
223typedef enum : uint64_t {
225 k_mstp_span_i3c = 0x214UL,
226 k_mstp_span_canfd = 0x1920UL,
230 k_mstp_span_pdm = 0x400UL,
231 k_mstp_span_adc = 0x2224UL,
234 k_mstp_span_drw = 0x104UL,
236
246
248static const mstp_family_t s_k_families[] = {
249 {(uint64_t)k_mstp_base_sci,
250 (uint64_t)k_mstp_chan_stride,
251 (uint32_t)k_mstp_count_10,
253 "SCI"},
254 {(uint64_t)k_mstp_base_spi,
255 (uint64_t)k_mstp_chan_stride,
256 (uint32_t)k_mstp_count_2,
258 "SPI_B"},
259 {(uint64_t)k_mstp_base_riic,
260 (uint64_t)k_mstp_chan_stride,
261 (uint32_t)k_mstp_count_3,
263 "RIIC"},
264 {(uint64_t)k_mstp_base_i3c,
265 (uint64_t)k_mstp_span_i3c,
266 (uint32_t)k_mstp_count_1,
268 "I3C"},
269 {(uint64_t)k_mstp_base_agt,
270 (uint64_t)k_mstp_chan_stride,
271 (uint32_t)k_mstp_count_2,
273 "AGT"},
274 {(uint64_t)k_mstp_base_gpt,
275 (uint64_t)k_mstp_chan_stride,
276 (uint32_t)k_mstp_count_14,
278 "GPT"},
279 {(uint64_t)k_mstp_base_ulpt,
280 (uint64_t)k_mstp_chan_stride,
281 (uint32_t)k_mstp_count_2,
283 "ULPT"},
284 {(uint64_t)k_mstp_base_dac,
285 (uint64_t)k_mstp_chan_stride,
286 (uint32_t)k_mstp_count_2,
288 "DAC_B"},
289 {(uint64_t)k_mstp_base_ssie,
290 (uint64_t)k_mstp_chan_stride,
291 (uint32_t)k_mstp_count_2,
293 "SSIE"},
294 {(uint64_t)k_mstp_base_poeg,
295 (uint64_t)k_mstp_chan_stride,
296 (uint32_t)k_mstp_count_4,
298 "POEG"},
299 {(uint64_t)k_mstp_base_canfd0,
300 (uint64_t)k_mstp_span_canfd,
301 (uint32_t)k_mstp_count_1,
303 "CANFD0"},
304 {(uint64_t)k_mstp_base_canfd1,
305 (uint64_t)k_mstp_span_canfd,
306 (uint32_t)k_mstp_count_1,
308 "CANFD1"},
309 {(uint64_t)k_mstp_base_cac,
310 (uint64_t)k_mstp_span_cac,
311 (uint32_t)k_mstp_count_1,
313 "CAC"},
314 {(uint64_t)k_mstp_base_crc,
315 (uint64_t)k_mstp_span_crc,
316 (uint32_t)k_mstp_count_1,
318 "CRC"},
319 {(uint64_t)k_mstp_base_doc,
320 (uint64_t)k_mstp_span_doc,
321 (uint32_t)k_mstp_count_1,
323 "DOC"},
324 {(uint64_t)k_mstp_base_ceu,
325 (uint64_t)k_mstp_chan_stride,
326 (uint32_t)k_mstp_count_1,
328 "CEU"},
329 {(uint64_t)k_mstp_base_pdm,
330 (uint64_t)k_mstp_span_pdm,
331 (uint32_t)k_mstp_count_1,
333 "PDM-IF"},
334 {(uint64_t)k_mstp_base_adc,
335 (uint64_t)k_mstp_span_adc,
336 (uint32_t)k_mstp_count_1,
338 "ADC_B"},
339 {(uint64_t)k_mstp_base_sdhi,
340 (uint64_t)k_mstp_span_sdhi,
341 (uint32_t)k_mstp_count_1,
343 "SDHI0"},
344 {(uint64_t)k_mstp_base_xspi,
345 (uint64_t)k_mstp_span_xspi,
346 (uint32_t)k_mstp_count_1,
348 "XSPI0"},
349 {(uint64_t)k_mstp_base_drw,
350 (uint64_t)k_mstp_span_drw,
351 (uint32_t)k_mstp_count_1,
353 "DRW"},
354};
355
356/* =============================================================================
357 * Internal helpers.
358 * =============================================================================
359 */
360
370static const mstp_family_t* internal_mstp_family_for_addr(uint64_t addr, uint32_t* out_idx)
371{
372 for (uint32_t f = 0U; f < (sizeof(s_k_families) / sizeof(s_k_families[0])); f++) {
373 const mstp_family_t* fam = &s_k_families[f];
374 const uint64_t span = fam->stride * (uint64_t)fam->count;
375 if ((addr >= fam->base) && (addr < (fam->base + span))) {
376 *out_idx = (uint32_t)((addr - fam->base) / fam->stride);
377 return fam;
378 }
379 }
380 return nullptr;
381}
382
395static bool internal_mstp_bit_set(uint16_t id)
396{
397 const uint32_t reg = ((uint32_t)id >> (uint32_t)k_mstp_id_reg_shift) & (uint32_t)k_mstp_byte_mask;
398 const uint32_t bit = (uint32_t)id & (uint32_t)k_mstp_id_bit_mask;
399 if (reg >= (uint32_t)k_mstp_reg_count) {
400 return false; /* defensive: a malformed id gates nothing. */
401 }
402 return (s_mstpcr[reg] & ((uint32_t)1U << bit)) != 0U;
403}
404
405/* =============================================================================
406 * Public (module-private) API.
407 * =============================================================================
408 */
409
411{
412 s_mstpcr[0] = (uint32_t)k_mstp_reset_a;
413 for (uint32_t r = 1U; r < (uint32_t)k_mstp_reg_count; r++) {
414 s_mstpcr[r] = (uint32_t)k_mstp_reset_rest;
415 }
416 s_gated_reads = 0U;
417 s_gated_writes = 0U;
418 s_last_gated = "-";
419}
420
421RA8_PRIV void priv_board_mstp_apply_write(uint64_t off, unsigned size, uint32_t value)
422{
423 for (unsigned i = 0U; i < size; i++) {
424 const uint64_t b = off + (uint64_t)i;
425 if (b >= (uint64_t)k_board_mstp_win_span) {
426 break;
427 }
428 const uint32_t reg = (uint32_t)(b / (uint64_t)k_mstp_bytes_per_reg);
429 const uint32_t sh = (uint32_t)(b % (uint64_t)k_mstp_bytes_per_reg) * (uint32_t)k_mstp_byte_bits;
430 const uint32_t vb =
431 (value >> ((uint32_t)i * (uint32_t)k_mstp_byte_bits)) & (uint32_t)k_mstp_byte_mask;
432 s_mstpcr[reg] = (s_mstpcr[reg] & ~((uint32_t)k_mstp_byte_mask << sh)) | (vb << sh);
433 }
434}
435
436RA8_PRIV uint32_t priv_board_mstp_read_reg(uint64_t off, unsigned size)
437{
438 uint32_t v = 0U;
439 for (unsigned i = 0U; i < size; i++) {
440 const uint64_t b = off + (uint64_t)i;
441 if (b >= (uint64_t)k_board_mstp_win_span) {
442 continue;
443 }
444 const uint32_t reg = (uint32_t)(b / (uint64_t)k_mstp_bytes_per_reg);
445 const uint32_t sh = (uint32_t)(b % (uint64_t)k_mstp_bytes_per_reg) * (uint32_t)k_mstp_byte_bits;
446 const uint32_t vb = (s_mstpcr[reg] >> sh) & (uint32_t)k_mstp_byte_mask;
447 v |= vb << ((uint32_t)i * (uint32_t)k_mstp_byte_bits);
448 }
449 return v;
450}
451
453{
454 uint32_t idx = 0U;
455 const mstp_family_t* fam = internal_mstp_family_for_addr(addr, &idx);
456 if (fam == nullptr) {
457 return false; /* not gated: unmodelled or a peripheral with no module-stop. */
458 }
459 return internal_mstp_bit_set(fam->ids[idx]);
460}
461
462RA8_PRIV void priv_board_mstp_note_gated_access(uint64_t addr, bool is_write)
463{
464 uint32_t idx = 0U;
465 const mstp_family_t* fam = internal_mstp_family_for_addr(addr, &idx);
466 if (fam != nullptr) {
467 s_last_gated = fam->name;
468 }
469 if (is_write) {
471 } else {
473 }
474}
475
477{
478 return s_gated_reads;
479}
480
482{
483 return s_gated_writes;
484}
485
487{
488 return s_last_gated;
489}
Module-private module-stop (MSTP) gate state shared with the core.
@ k_board_mstp_win_span
MSTPCRA..E = 5 x uint32 = 20 B.
static const uint16_t s_k_ids_dac[]
DAC_B0..DAC_B1 (0x40233000, 0x100 stride) – MSTPCRD20..19, HUM 11.2.9.
static const uint16_t s_k_ids_xspi[]
XSPI0 / OSPI0 (0x40268000) – MSTPCRB16, HUM 11.2.7.
mstp_reset_t
Per-register reset values: all peripheral bits stopped (HUM 11.2.6).
@ k_mstp_reset_a
MSTPCRA: SRAM0-3 (bits 0-3) running.
@ k_mstp_reset_rest
MSTPCRB..E: all peripherals stopped.
static const uint16_t s_k_ids_i3c[]
I3C0 (0x4035F000) – MSTPCRB4, HUM 11.2.7.
static const uint16_t s_k_ids_agt[]
AGT0..AGT1 (0x40221000, 0x100 stride) – MSTPCRD5..4, HUM 11.2.9.
static const uint16_t s_k_ids_crc[]
CRC (0x40310000) – MSTPCRC1, HUM 11.2.8.
void priv_board_mstp_note_gated_access(uint64_t addr, bool is_write)
Record that an MMIO access to a module-stopped peripheral was dropped.
static const char * s_last_gated
Label of last gated access.
static const uint16_t s_k_ids_sdhi[]
SDHI0 (0x40252000) – MSTPCRC12, HUM 11.2.8.
static const uint16_t s_k_ids_ulpt[]
ULPT0..ULPT1 (0x40220000, 0x100 stride) – MSTPCRE9..8, HUM 11.2.10.
mstp_family_base_t
Peripheral-family register-window bases (RA8D2 peripheral memory map).
@ k_mstp_base_sdhi
SDHI0.
@ k_mstp_base_drw
DRW / D-AVE 2D.
@ k_mstp_base_riic
IIC0 (RIIC family base).
@ k_mstp_base_adc
ADC_B.
@ k_mstp_base_crc
CRC.
@ k_mstp_base_sci
SCI0 (SCI family base).
@ k_mstp_base_pdm
PDM-IF.
@ k_mstp_base_poeg
POEG group A (POEG base).
@ k_mstp_base_i3c
I3C0.
@ k_mstp_base_canfd1
CANFD1.
@ k_mstp_base_xspi
XSPI0.
@ k_mstp_base_ulpt
ULPT0 (ULPT family base).
@ k_mstp_base_agt
AGT0 (AGT family base).
@ k_mstp_base_ssie
SSIE0 (SSIE family base).
@ k_mstp_base_spi
SPI0 (SPI_B family base).
@ k_mstp_base_gpt
GPT0 (GPT family base).
@ k_mstp_base_ceu
CEU.
@ k_mstp_base_dac
DAC_B0 (DAC family base).
@ k_mstp_base_doc
DOC.
@ k_mstp_base_cac
CAC.
@ k_mstp_base_canfd0
CANFD0.
static const uint16_t s_k_ids_cac[]
CAC (0x40202400) – MSTPCRC0, HUM 11.2.8.
static const mstp_family_t * internal_mstp_family_for_addr(uint64_t addr, uint32_t *out_idx)
Resolve addr to the family + instance index that owns it.
uint32_t priv_board_mstp_read_reg(uint64_t off, unsigned size)
Read the tracked MSTPCRA..MSTPCRE shadow (the read-back path).
mstp_dim_t
Shadow-array dimensions + bit-field packing constants.
@ k_mstp_byte_mask
Low-byte mask.
@ k_mstp_reg_count
MSTPCRA..MSTPCRE.
@ k_mstp_bytes_per_reg
32-bit registers.
@ k_mstp_id_reg_shift
ra8_mstp_t: reg in bits 15:8.
@ k_mstp_id_bit_mask
ra8_mstp_t: bit in bits 7:0.
@ k_mstp_byte_bits
Bits per byte.
static const uint16_t s_k_ids_gpt[]
GPT0..GPT13 (0x40322000, 0x100 stride) – MSTPCRE31..18, GPT4..9 share MSTPE27, HUM 11....
uint32_t priv_board_mstp_gated_write_count(void)
Number of writes dropped because their peripheral was module-stopped.
uint32_t priv_board_mstp_gated_read_count(void)
Number of reads zeroed because their peripheral was module-stopped.
const char * priv_board_mstp_last_gated_name(void)
Label of the peripheral whose access was most recently gated off.
void priv_board_mstp_reset(void)
Restore MSTPCRA..MSTPCRE to their all-stopped reset values.
static uint32_t s_gated_reads
Reads zeroed (peripheral off).
static const uint16_t s_k_ids_ssie[]
SSIE0..SSIE1 (0x4025D000, 0x100 stride) – MSTPCRC8..7, HUM 11.2.8.
mstp_family_span_t
Per-family instance stride / single-instance window span (bytes).
@ k_mstp_span_adc
ADC_B register window.
@ k_mstp_span_doc
DOC register window.
@ k_mstp_span_sdhi
SDHI0 register window.
@ k_mstp_span_i3c
I3C window (through BCST).
@ k_mstp_chan_stride
Channel stride (also CEU window).
@ k_mstp_span_pdm
PDM common + channel banks.
@ k_mstp_span_cac
CAC register window.
@ k_mstp_span_canfd
CANFD channel window.
@ k_mstp_span_drw
DRW register window.
@ k_mstp_span_crc
CRC register window.
@ k_mstp_span_xspi
XSPI0 register window.
static const uint16_t s_k_ids_sci[]
SCI0..SCI9 (0x40358000, 0x100 stride) – MSTPCRB31..22, HUM 11.2.7.
bool priv_board_mstp_addr_stopped(uint64_t addr)
Report whether the peripheral instance owning addr is module-stopped.
static uint32_t s_gated_writes
Writes dropped (periph off).
void priv_board_mstp_apply_write(uint64_t off, unsigned size, uint32_t value)
Apply a firmware write to the MSTPCRA..MSTPCRE shadow.
static const uint16_t s_k_ids_spi[]
SPI0..SPI1 (0x4035C000, 0x100 stride) – MSTPCRB19..18, HUM 11.2.7.
static const uint16_t s_k_ids_canfd1[]
CANFD1 (0x40382000) – MSTPCRC26, HUM 11.2.8.
static const uint16_t s_k_ids_adc[]
ADC_B (0x40338000) – MSTPCRD21, HUM 11.2.9.
static const mstp_family_t s_k_families[]
The gate table: every module-stop-gated modelled peripheral instance.
static const uint16_t s_k_ids_pdm[]
PDM-IF (0x40256000) – MSTPCRC24, HUM 11.2.8.
static const uint16_t s_k_ids_doc[]
DOC (0x40311000) – MSTPCRC13, HUM 11.2.8.
static const uint16_t s_k_ids_poeg[]
POEG group A..D (0x40212000, 0x100 stride) – MSTPCRD14..11, HUM 11.2.9.
static bool internal_mstp_bit_set(uint16_t id)
True iff the module-stop bit id (packed ra8_mstp_t) reads set.
static const uint16_t s_k_ids_canfd0[]
CANFD0 (0x40380000) – MSTPCRC27, HUM 11.2.8.
static const uint16_t s_k_ids_riic[]
IIC0..IIC2 / RIIC (0x4025E000, 0x100 stride) – MSTPCRB9..7, HUM 11.2.7.
static const uint16_t s_k_ids_ceu[]
CEU (0x40348000) – MSTPCRC16, HUM 11.2.8.
mstp_family_count_t
Instance counts per family (channels with a module-stop bit).
@ k_mstp_count_14
GPT (fourteen channels).
@ k_mstp_count_1
Single-instance peripheral.
@ k_mstp_count_4
POEG (four groups).
@ k_mstp_count_3
RIIC (three channels).
@ k_mstp_count_10
SCI (ten channels).
@ k_mstp_count_2
SPI/AGT/ULPT/DAC/SSIE (two).
static uint32_t s_mstpcr[k_mstp_reg_count]
MSTPCRA..E live values.
static const uint16_t s_k_ids_drw[]
DRW / D-AVE 2D (0x40444000) – MSTPCRC6, HUM 11.2.8.
Annotation-attribute framework macros for ra8-firmware.
#define RA8_PRIV
Module-private helper: shared across TUs but only inside one library.
#define RA8_INTERNAL
Marker that a function is intended to be static (file-local).
Module Stop Control (MSTP) register layout for the Renesas RA8D2.
@ k_ra8_mstp_sci2
MSTPB29 SCI2.
@ k_ra8_mstp_sci4
MSTPB27 SCI4.
@ k_ra8_mstp_agt0
MSTPD5 AGT0.
@ k_ra8_mstp_gpt2
MSTPE29 GPT2.
@ k_ra8_mstp_sci7
MSTPB24 SCI7.
@ k_ra8_mstp_ulpt1
MSTPE8 ULPT1.
@ k_ra8_mstp_agt1
MSTPD4 AGT1.
@ k_ra8_mstp_ssie1
MSTPC7 SSIE1.
@ k_ra8_mstp_crc
MSTPC1 CRC.
@ k_ra8_mstp_pdmif
MSTPC24 PDM-IF.
@ k_ra8_mstp_gpt11
MSTPE20 GPT11.
@ k_ra8_mstp_iic2
MSTPB7 IIC2.
@ k_ra8_mstp_sci9
MSTPB22 SCI9.
@ k_ra8_mstp_sci0
MSTPB31 SCI0.
@ k_ra8_mstp_gpt3
MSTPE28 GPT3.
@ k_ra8_mstp_ospi0
MSTPB16 OSPI0+DOTF0.
@ k_ra8_mstp_iic0
MSTPB9 IIC0.
@ k_ra8_mstp_sci5
MSTPB26 SCI5.
@ k_ra8_mstp_adc16h
MSTPD21 ADC16H.
@ k_ra8_mstp_iic1
MSTPB8 IIC1.
@ k_ra8_mstp_gpt10
MSTPE21 GPT10.
@ k_ra8_mstp_ulpt0
MSTPE9 ULPT0.
@ k_ra8_mstp_cac
MSTPC0 CAC.
@ k_ra8_mstp_drw
MSTPC6 2D Drawing.
@ k_ra8_mstp_ssie0
MSTPC8 SSIE0.
@ k_ra8_mstp_spi0
MSTPB19 SPI0.
@ k_ra8_mstp_sci1
MSTPB30 SCI1.
@ k_ra8_mstp_ceu
MSTPC16 CEU.
@ k_ra8_mstp_sdhi0
MSTPC12 SDHI0.
@ k_ra8_mstp_sci6
MSTPB25 SCI6.
@ k_ra8_mstp_poeg_c
MSTPD12 POEG group C.
@ k_ra8_mstp_dac12_0
MSTPD20 DAC12 ch 0.
@ k_ra8_mstp_canfd1
MSTPC26 CANFD1.
@ k_ra8_mstp_gpt4_9
MSTPE27 GPT4..GPT9.
@ k_ra8_mstp_gpt1
MSTPE30 GPT1.
@ k_ra8_mstp_poeg_a
MSTPD14 POEG group A.
@ k_ra8_mstp_poeg_d
MSTPD11 POEG group D.
@ k_ra8_mstp_gpt13
MSTPE18 GPT13.
@ k_ra8_mstp_dac12_1
MSTPD19 DAC12 ch 1.
@ k_ra8_mstp_canfd0
MSTPC27 CANFD0.
@ k_ra8_mstp_spi1
MSTPB18 SPI1.
@ k_ra8_mstp_gpt0
MSTPE31 GPT0.
@ k_ra8_mstp_doc
MSTPC13 DOC.
@ k_ra8_mstp_i3c
MSTPB4 I3C.
@ k_ra8_mstp_sci8
MSTPB23 SCI8.
@ k_ra8_mstp_gpt12
MSTPE19 GPT12.
@ k_ra8_mstp_poeg_b
MSTPD13 POEG group B.
@ k_ra8_mstp_sci3
MSTPB28 SCI3.
One strided family of peripheral instances sharing a mapping shape.
uint32_t count
Number of gated instances in the family.
uint64_t base
Window base of instance 0.
uint64_t stride
Bytes between consecutive instances.
const uint16_t * ids
[count] packed ra8_mstp_t per instance.
const char * name
Short label for the dropped-access report.