|
ra8-firmware 0.1.0
Bare-metal firmware for the Renesas RA8 family (RA8D2 / RA8P1)
|
IIC_B (I3C-based I2C) register layout for the Renesas RA8D2. More...
Go to the source code of this file.
Data Structures | |
| struct | r_i3c_i2c_regs_t |
| Memory-mapped register block for one IIC_B / I3C channel. More... | |
Functions | |
| static volatile r_i3c_i2c_regs_t * | i3c_i2c_regs (uint8_t channel) |
| Get a pointer to the IIC_B / I3C channel channel. | |
IIC_B (I3C-based I2C) register layout for the Renesas RA8D2.
One I3C channel at base 0x4035_F000 – the unified I2C/I3C peripheral. In I2C-only mode this is what the RA8D2 HUM calls the "IIC_B" controller driver and what FSP exports as r_iic_b_master.
This header is hand-derived from the RA8D2 Hardware User's Manual Chapter 40 "I3C Bus Interface (I3C)" register descriptions (HUM Ch 40.2, p 2452-2701) and cross-checked against the FSP RA8D1 CMSIS device header R7FA8D1BH.h (the closest-cousin part with a matching peripheral block).
Only the registers we exercise from the IIC_B controller polling driver are typed here – the full I3C dynamic-address table, IBI queue, and high-priority command queue are stubbed as volatile uint32_t holes so the struct still has the correct overall size.
Definition in file ra8_i3c_i2c_regs.h.
| enum ra8_i3c_i2c_ackctl_t : uint8_t |
ACKCTL field positions.
| Enumerator | |
|---|---|
| k_ra8_i3c_i2c_ackctl_ackt_pos | HUM 40.2 ACKCTL.ACKT, p 2468. |
| k_ra8_i3c_i2c_ackctl_acktwp_pos | HUM 40.2 ACKCTL.ACKTWP, p 2468. |
Definition at line 253 of file ra8_i3c_i2c_regs.h.
| enum ra8_i3c_i2c_addr_t : uintptr_t |
Hardware base addresses for the I3C / IIC_B block.
Single channel on the RA8D2; per HUM Ch 40.2 "I3C Bus Interface Register Descriptions" the secure alias lives at the corresponding NS+0x10000000 offset but the HAL only ever programmes the S/non-aliased view.
| Enumerator | |
|---|---|
| k_ra8_i3c_i2c0_base_addr | HUM Ch 40.2, p 2452. |
Definition at line 49 of file ra8_i3c_i2c_regs.h.
| enum ra8_i3c_i2c_bcst_t : uint8_t |
BCST (Bus Condition Status) field positions.
| Enumerator | |
|---|---|
| k_ra8_i3c_i2c_bcst_bfref_pos | HUM 40.2 BCST.BFREF, p 2491. |
Definition at line 322 of file ra8_i3c_i2c_regs.h.
| enum ra8_i3c_i2c_bctl_t : uint8_t |
BCTL field positions.
| Enumerator | |
|---|---|
| k_ra8_i3c_i2c_bctl_buse_pos | HUM 40.2 BCTL.BUSE, p 2454. |
Definition at line 207 of file ra8_i3c_i2c_regs.h.
| enum ra8_i3c_i2c_bfctl_t : uint8_t |
BFCTL field positions.
Definition at line 232 of file ra8_i3c_i2c_regs.h.
| enum ra8_i3c_i2c_bie_t : uint8_t |
BIE (Bus Interrupt Enable) field positions.
Definition at line 311 of file ra8_i3c_i2c_regs.h.
| enum ra8_i3c_i2c_bst_t : uint8_t |
BST (Bus Status) field positions.
Definition at line 280 of file ra8_i3c_i2c_regs.h.
| enum ra8_i3c_i2c_cectl_t : uint8_t |
CECTL field positions.
| Enumerator | |
|---|---|
| k_ra8_i3c_i2c_cectl_clke_pos | HUM 40.2 CECTL.CLKE, p 2453. |
Definition at line 199 of file ra8_i3c_i2c_regs.h.
| enum ra8_i3c_i2c_cndctl_t : uint8_t |
CNDCTL field positions.
| Enumerator | |
|---|---|
| k_ra8_i3c_i2c_cndctl_stcnd_pos | HUM 40.2 CNDCTL.STCND, p 2473. |
| k_ra8_i3c_i2c_cndctl_srcnd_pos | HUM 40.2 CNDCTL.SRCND, p 2473. |
| k_ra8_i3c_i2c_cndctl_spcnd_pos | HUM 40.2 CNDCTL.SPCND, p 2473. |
Definition at line 270 of file ra8_i3c_i2c_regs.h.
| enum ra8_i3c_i2c_limits_t : uint16_t |
Channel-count limits.
| Enumerator | |
|---|---|
| k_ra8_i3c_i2c_channel_count | HUM Ch 40.1.1, p 2445. |
Definition at line 57 of file ra8_i3c_i2c_regs.h.
| enum ra8_i3c_i2c_mask_t : uint32_t |
Composite bit masks used by the polling driver.
Definition at line 337 of file ra8_i3c_i2c_regs.h.
| enum ra8_i3c_i2c_ntie_t : uint8_t |
NTIE (Normal Transfer Interrupt Enable) field positions.
| Enumerator | |
|---|---|
| k_ra8_i3c_i2c_ntie_tdbeie0_pos | HUM 40.2 NTIE.TDBEIE0, p 2488. |
| k_ra8_i3c_i2c_ntie_rdbfie0_pos | HUM 40.2 NTIE.RDBFIE0, p 2488. |
Definition at line 302 of file ra8_i3c_i2c_regs.h.
| enum ra8_i3c_i2c_ntst_t : uint8_t |
NTST (Normal Transfer Status) field positions.
| Enumerator | |
|---|---|
| k_ra8_i3c_i2c_ntst_tdbef0_pos | HUM 40.2 NTST.TDBEF0, p 2486. |
| k_ra8_i3c_i2c_ntst_rdbff0_pos | HUM 40.2 NTST.RDBFF0, p 2486. |
Definition at line 293 of file ra8_i3c_i2c_regs.h.
| enum ra8_i3c_i2c_prsst_t : uint8_t |
PRSST field positions.
| Enumerator | |
|---|---|
| k_ra8_i3c_i2c_prsst_crms_pos | HUM 40.2 PRSST.CRMS, p 2457. |
| k_ra8_i3c_i2c_prsst_trmd_pos | HUM 40.2 PRSST.TRMD, p 2457. |
Definition at line 223 of file ra8_i3c_i2c_regs.h.
| enum ra8_i3c_i2c_prts_t : uint8_t |
PRTS field positions (HUM Ch 40.2.1 "PRTS : Protocol Selection" p 2449).
PRTMD = 0 selects I3C FIFO-buffer transfer (the post-reset default). PRTMD = 1 selects I2C single-buffer transfer. The polling driver in ra8_i3c_i2c.c only knows how to drive the I2C single-buffer mode (it writes NTDTBP0 directly without composing an I3C command queue entry), so it must set PRTMD = 1 during init.
| Enumerator | |
|---|---|
| k_ra8_i3c_i2c_prts_prtmd_pos | HUM 40.2.1 PRTS.PRTMD, p 2449. |
Definition at line 191 of file ra8_i3c_i2c_regs.h.
| enum ra8_i3c_i2c_rstctl_t : uint8_t |
RSTCTL field positions.
| Enumerator | |
|---|---|
| k_ra8_i3c_i2c_rstctl_ri3crst_pos | HUM 40.2 RSTCTL.RI3CRST, p 2456. |
Definition at line 215 of file ra8_i3c_i2c_regs.h.
| enum ra8_i3c_i2c_rsv_words_t : uint8_t |
Reserved-word array sizes (in 32-bit words) used inside the IIC_B / I3C register block.
Names each reserved gap so r_i3c_i2c_regs_t does not depend on raw integer literals. Cross-checked against HUM Ch 40.2 offset table.
| Enumerator | |
|---|---|
| k_ra8_i3c_i2c_rsv_words_svtdlg_to_stctl | +0x00C4..0x011F gap. |
| k_ra8_i3c_i2c_rsv_words_ntdtbp0_to_nibiqp | +0x015C..0x017B gap. |
| k_ra8_i3c_i2c_rsv_words_ntbthctl_to_nrqthc | +0x0198..0x01BF gap. |
Definition at line 71 of file ra8_i3c_i2c_regs.h.
| enum ra8_i3c_i2c_scstrctl_t : uint8_t |
SCSTRCTL field positions.
| Enumerator | |
|---|---|
| k_ra8_i3c_i2c_scstrctl_rwe_pos | HUM 40.2 SCSTRCTL.RWE, p 2469. |
Definition at line 262 of file ra8_i3c_i2c_regs.h.
| enum ra8_i3c_i2c_stdbr_t : uint8_t |
STDBR field positions.
| Enumerator | |
|---|---|
| k_ra8_i3c_i2c_stdbr_sbrlo_pos | HUM 40.2 STDBR.SBRLO, p 2462. |
| k_ra8_i3c_i2c_stdbr_sbrho_pos | HUM 40.2 STDBR.SBRHO, p 2462. |
Definition at line 244 of file ra8_i3c_i2c_regs.h.
|
inlinestatic |
Get a pointer to the IIC_B / I3C channel channel.
| [in] | channel | Channel index. Only 0 is valid on the RA8D2. |
Definition at line 387 of file ra8_i3c_i2c_regs.h.
References k_ra8_i3c_i2c0_base_addr, and k_ra8_i3c_i2c_channel_count.
Referenced by ra8_i3c_i2c_abort(), ra8_i3c_i2c_attach_handler(), ra8_i3c_i2c_clear_errors(), ra8_i3c_i2c_deinit(), ra8_i3c_i2c_get_errors(), ra8_i3c_i2c_init(), ra8_i3c_i2c_peripheral_close(), ra8_i3c_i2c_peripheral_open(), ra8_i3c_i2c_peripheral_receive(), ra8_i3c_i2c_peripheral_send(), ra8_i3c_i2c_peripheral_status(), ra8_i3c_i2c_read(), ra8_i3c_i2c_scan(), ra8_i3c_i2c_set_clock(), ra8_i3c_i2c_transfer(), and ra8_i3c_i2c_write().