81 if (out_pin ==
nullptr) {
155 if (out_pin ==
nullptr) {
177 if (out_pressed ==
nullptr) {
425 for (uint32_t i = 0U; i < 4U; i++) {
426 if (prefix[i] ==
'\0') {
429 if (s[i] != prefix[i]) {
460 const char c0 = signal[0];
468 const char c1 = signal[1];
534 k_pfs_psel_shift = 24U,
535 k_pfs_pmr_bit = 1U << 16,
536 k_pfs_pdr_bit = 1U << 2,
540 volatile uint32_t*
const pfs =
ra8_pfs_pmn(port, bit);
541 if (pfs ==
nullptr) {
546 *pfs = ((uint32_t)
k_ra8_psel_glcdc << k_pfs_psel_shift) | k_pfs_pmr_bit | k_pfs_pdr_bit;
572 for (uint32_t i = 0U; i < count; ++i) {
611 k_reset_pulse_ms = 50U,
691typedef enum : uint32_t {
722 for (uint32_t i = 0U; i < count; ++i) {
769 for (uint32_t i = 0U; i < count; ++i) {
805 if (out_level ==
nullptr) {
Annotation-attribute framework macros for ra8-firmware.
#define RA8_INTERNAL
Marker that a function is intended to be static (file-local).
ra8_err_t ra8_board_sw_pin(ra8_board_sw_id_t sw, ra8_port_pin_t *out_pin)
Translate a board switch id into its underlying ra8_port_pin_t.
ra8_err_t ra8_board_led_toggle(ra8_board_led_id_t led)
Toggle led's output state.
static const uint8_t s_sw_irq_nums[k_ra8_board_sw_count]
Lookup table from ra8_board_sw_id_t to ICU IRQ channel.
ra8_err_t ra8_board_arduino_gpio_read(ra8_board_arduino_pin_t pin, ra8_level_t *out_level)
Sample a previously-initialized Arduino GPIO pin.
ra8_err_t ra8_board_sw_attach_irq(ra8_board_sw_id_t sw, ra8_board_sw_irq_cb_t cb, void *ctx)
Wire sw to the ICU and register a falling-edge callback.
ra8_err_t ra8_board_arduino_gpio_write(ra8_board_arduino_pin_t pin, ra8_level_t level)
Drive a previously-initialized Arduino GPIO pin.
ra8_board_xspi_reset_timing_t
Hardware reset pulse + post-reset settle times for IS25LX512M-JHLE.
@ k_ra8_board_xspi_reset_low_ms
Hold RESET_L low for >= tRLRH.
@ k_ra8_board_xspi_reset_high_ms
Wait >= tPUW before first CS.
ra8_err_t ra8_board_lcd_panel_power_on(void)
Implementation of ra8_board_lcd_panel_power_on.
ra8_err_t ra8_board_backlight_set(bool on)
Turn the J1 panel backlight (BLEN, P514) on or off.
static const ra8_port_pin_t s_led_pins[k_ra8_board_led_count]
Lookup table from ra8_board_led_id_t to ra8_port_pin_t.
ra8_err_t ra8_board_sw_read(ra8_board_sw_id_t sw, ra8_board_sw_state_t *out_pressed)
Sample the current state of sw.
ra8_err_t ra8_board_sw_init(ra8_board_sw_id_t sw)
Configure a switch pin as an input with internal pull-up.
ra8_err_t ra8_board_sdhi_pins_init(void)
Route the eight SDHI0 bus pins to the SDHI peripheral function.
ra8_err_t ra8_board_led_pin(ra8_board_led_id_t led, ra8_port_pin_t *out_pin)
Translate a board LED id into its underlying ra8_port_pin_t.
ra8_err_t ra8_board_led_init(ra8_board_led_id_t led)
Configure led as a digital output, initial level low (off).
static bool internal_glcdc_signal_is_output(const char *signal)
Test whether a J1 signal name corresponds to a GLCDC output.
static bool internal_glcdc_signal_starts_with(const char *s, const char *prefix)
Check whether a NUL-terminated string starts with prefix.
static const ra8_port_pin_t s_sw_pins[k_ra8_board_sw_count]
Lookup table from ra8_board_sw_id_t to ra8_port_pin_t.
ra8_err_t ra8_board_led_on(ra8_board_led_id_t led)
Drive led HIGH (light it).
ra8_err_t ra8_board_glcdc_init(ra8_board_glcdc_fmt_t fmt)
Program every J1 pin for fmt to its GLCDC alternate function.
ra8_err_t ra8_board_get_info(ra8_board_info_t *out)
Copy the three board-identity strings into out.
static const ra8_port_pin_t s_xspi_octa_pins[]
Lookup table for the 12 OCTA bus pins routed to PSEL=0x1C.
static void internal_glcdc_force_pin_output(ra8_port_pin_t pin)
Force a PFS register to PSEL=glcdc, PMR=1, PDR=1 in one write.
static bool internal_glcdc_signal_is_color_data(const char *signal)
Check whether a signal name is a GLCDC R/G/B data line.
ra8_err_t ra8_board_led_off(ra8_board_led_id_t led)
Drive led LOW (extinguish it).
static const ra8_port_pin_t s_sdhi_bus_pins[]
Lookup table for the eight SDHI0 bus pins routed to PSEL=0x15.
ra8_err_t ra8_board_xspi_pins_init(void)
Route the 12 OCTA bus pins to the xSPI peripheral and pulse RESET_L.
ra8_err_t ra8_board_arduino_pin_init(ra8_board_arduino_pin_t pin, ra8_board_arduino_mode_t mode)
Configure an Arduino header pin in GPIO mode.
Board-support layer for the Renesas EK-RA8D2 v1 evaluation kit.
const char *const k_ra8_board_doc_rev
"R20UT5523EG0101 Rev 1.01".
@ k_ra8_board_sdhi_cd
SDHI0 CD, P407.
@ k_ra8_board_sdhi_dat3
SDHI0 DAT3, P405.
@ k_ra8_board_sdhi_clk
SDHI0 CLK, P401.
@ k_ra8_board_sdhi_dat2
SDHI0 DAT2, P404.
@ k_ra8_board_sdhi_dat0
SDHI0 DAT0, P402.
@ k_ra8_board_sdhi_cmd
SDHI0 CMD, P400.
@ k_ra8_board_sdhi_dat1
SDHI0 DAT1, P403.
@ k_ra8_board_sdhi_wp
SDHI0 WP, P406.
ra8_board_arduino_mode_t
Direction mode for an Arduino-header GPIO pin.
@ k_ra8_board_arduino_mode_input_pullup
RA8 board arduino mode input pullup.
@ k_ra8_board_arduino_mode_input
RA8 board arduino mode input.
@ k_ra8_board_arduino_mode_output
RA8 board arduino mode output.
const uint32_t g_ra8_board_glcdc_rgb888_pin_count
Number of entries in each per-format pin table.
const char *const k_ra8_board_name
Human-readable strings identifying this BSP target.
const uint32_t g_ra8_board_glcdc_rgb565_pin_count
const ra8_board_glcdc_pin_t g_ra8_board_glcdc_rgb666_pins[]
RGB666-mode pin table for J1 (UM Table 33 p 42).
ra8_board_sw_id_t
Identifiers for the on-board user push-buttons.
@ k_ra8_board_sw_count
RA8 board sw count.
@ k_ra8_board_sw1
SW1, P009, IRQ13-DS (jumper E31).
@ k_ra8_board_sw2
SW2, P008, IRQ12-DS (jumper E32).
const char *const k_ra8_board_mcu
"R7KA8D2KFLCAC".
@ k_ra8_board_sw2_irq
SW2 -> IRQ12-DS.
@ k_ra8_board_sw1_irq
SW1 -> IRQ13-DS.
ra8_board_arduino_pin_t
Logical Arduino-header pins mapped to RA8D2 port pins.
const ra8_board_glcdc_pin_t g_ra8_board_glcdc_rgb888_pins[]
Pin tables for J1 in each pixel format (UM Table 33 p 42).
ra8_board_glcdc_fmt_t
GLCDC parallel-RGB pixel formats supported by EK-RA8D2 J1.
@ k_ra8_board_glcdc_fmt_rgb888
24-bit, 8 bits/colour.
@ k_ra8_board_glcdc_fmt_rgb565
16-bit, 5/6/5 bits.
@ k_ra8_board_glcdc_fmt_rgb666
18-bit, 6 bits/colour.
const uint32_t g_ra8_board_glcdc_rgb666_pin_count
void(* ra8_board_sw_irq_cb_t)(void *ctx)
Switch IRQ callback signature.
const ra8_board_glcdc_pin_t g_ra8_board_glcdc_rgb565_pins[]
RGB565-mode pin table for J1 (UM Table 33 p 42).
ra8_board_sw_state_t
Logical "pressed" / "released" state.
@ k_ra8_board_sw_released
RA8 board sw released.
@ k_ra8_board_sw_pressed
RA8 board sw pressed.
ra8_board_led_id_t
Identifiers for the three user LEDs on EK-RA8D2 v1.
@ k_ra8_board_led2
LED2, GREEN, P303 (jumper E26).
@ k_ra8_board_led_count
RA8 board led count.
@ k_ra8_board_led1
LED1, BLUE, P600 (jumper E27).
@ k_ra8_board_led3
LED3, RED, PA07 (jumper E28).
ra8_board_eth_pin_t pin
Pin.
@ k_ra8_board_xspi_dq2
OSPI_FLASH_DQ2, P103.
@ k_ra8_board_xspi_dq7
OSPI_FLASH_DQ7, P804.
@ k_ra8_board_xspi_dq6
OSPI_FLASH_DQ6, P802.
@ k_ra8_board_xspi_dq1
OSPI_FLASH_DQ1, P803.
@ k_ra8_board_xspi_dq5
OSPI_FLASH_DQ5, P800.
@ k_ra8_board_xspi_dq3
OSPI_FLASH_DQ3, P101.
@ k_ra8_board_xspi_dq0
OSPI_FLASH_DQ0, P100.
@ k_ra8_board_xspi_clk
OSPI_FLASH_C, P808.
@ k_ra8_board_xspi_reset
OSPI_FLASH_RESET_L, P106.
@ k_ra8_board_xspi_dqs
OSPI_FLASH_DQS, P801.
@ k_ra8_board_xspi_dq4
OSPI_FLASH_DQ4, P102.
@ k_ra8_board_xspi_cs
OSPI_FLASH_S_L, P104.
Event Link Controller (ELC) register layout for the Renesas RA8D2.
ra8_elc_event_t
Partial list of ELC events (populate as drivers need them).
@ k_ra8_elc_event_icu_irq12
External pin interrupt 12 (HUM Ch 14 ELC event 0x00D).
@ k_ra8_elc_event_icu_irq13
External pin interrupt 13 (HUM Ch 14 ELC event 0x00E).
Error Code Definitions for ra8-firmware.
@ k_ra8_err_invalid_arg
Invalid function argument.
@ k_ra8_ok
Success – operation completed with all postconditions satisfied.
ra8_err_codes_t ra8_err_t
Canonical error-return type used by every ra8-firmware API.
PSEL codes for peripheral pin routing on the RA8D2.
@ k_ra8_psel_qspi
11100b: OSPI / Octo-SPI / xSPI.
@ k_ra8_psel_glcdc
11001b: Graphics LCD Controller outputs.
@ k_ra8_psel_sdhi
10101b: SDHI SD / MMC.
Interrupt Control Unit driver (IRQ pins, NMI).
ra8_err_t ra8_icu_configure_irq_pin(uint8_t irq_num, const ra8_icu_irq_cfg_t *cfg)
Programme one IRQCRi register.
Interrupt Control Unit (ICU) register layout for the Renesas RA8D2.
@ k_ra8_icu_fclksel_pclkb
00: sample every PCLKB cycle.
@ k_ra8_icu_irqmd_falling
00: falling edge.
NVIC + ICU IELSR allocator.
void(* ra8_isr_handler_t)(void *ctx)
Driver-supplied callback invoked on interrupt entry.
@ k_ra8_isr_prio_default
Middle priority.
ra8_err_t ra8_isr_register(ra8_elc_event_t event, ra8_isr_handler_t handler, void *ctx, uint8_t priority, uint16_t *out_slot)
Allocate an IELSR slot for an ELC event + handler.
Pin Function Select (PFS) register layout for the Renesas RA8D2.
static void ra8_pfs_pwpr_lock(void)
Re-lock PFS writes.
static void ra8_pfs_pwpr_unlock(void)
Unlock PFS writes.
static volatile uint32_t * ra8_pfs_pmn(ra8_port_t port, ra8_pin_t pin)
Get pointer to the PmnPFS register for a single pin.
Typed Port / Pin Constants for the RA8D2 IOPORT Module.
ra8_port_pin_t
Packed (port << 8) | pin pin identifier.
@ k_ra8_pin_lcd_reset_l
J1-6 RST, P606 (active-low).
@ k_ra8_pin_none
Sentinel: no pin selected.
@ k_ra8_pin_lcd_blen
J1-1 BLEN, P514 (active-high).
ra8_port_t
Port indices for the RA8D2 IOPORT module.
@ k_ra8_port_9
RA8 port 9.
@ k_ra8_port_7
RA8 port 7.
@ k_ra8_port_3
RA8 port 3.
@ k_ra8_port_11
RA8 port 11.
@ k_ra8_port_2
RA8 port 2.
@ k_ra8_port_6
RA8 port 6.
@ k_ra8_port_5
RA8 port 5.
@ k_ra8_port_0
RA8 port 0.
@ k_ra8_port_8
RA8 port 8.
@ k_ra8_port_1
RA8 port 1.
@ k_ra8_port_10
RA8 port 10.
#define RA8_PIN(port, pin)
Build a ra8_port_pin_t from explicit port / pin indices.
ra8_level_t
Digital output / input level.
@ k_ra8_level_high
Drive or read 1.
@ k_ra8_level_low
Drive or read 0.
ra8_pin_t
Pin indices within an IOPORT port (0..15).
@ k_ra8_pin_11
RA8 pin 11.
@ k_ra8_pin_10
RA8 pin 10.
@ k_ra8_pin_13
RA8 pin 13.
@ k_ra8_pin_12
RA8 pin 12.
@ k_ra8_pin_14
RA8 pin 14.
@ k_ra8_pin_15
RA8 pin 15.
#define RA8_PIN_PORT(p)
Extract the port index from a packed ra8_port_pin_t.
@ k_ra8_pull_none
No internal pull.
@ k_ra8_pull_up
Internal pull-up.
#define RA8_PIN_PIN(p)
Extract the pin index from a packed ra8_port_pin_t.
High-level GPIO helpers on top of the PORT + PFS register layer.
ra8_err_t ra8_gpio_read(ra8_port_pin_t pin, ra8_level_t *out_level)
Read a previously-configured input.
ra8_err_t ra8_gpio_input_init(ra8_port_pin_t pin, ra8_pin_pull_t pull)
Configure a pin as a digital input.
ra8_err_t ra8_gpio_toggle(ra8_port_pin_t pin)
Toggle a previously-configured output.
ra8_err_t ra8_gpio_output_init(ra8_port_pin_t pin, ra8_level_t init_level)
Configure a pin as a digital output and drive it to an initial level.
ra8_err_t ra8_gpio_write(ra8_port_pin_t pin, ra8_level_t level)
Drive a previously-configured output to the given level.
ra8_err_t ra8_pfs_route_peripheral(ra8_port_pin_t pin, ra8_psel_t psel, const char *owner)
Route a pin to a non-IRQ peripheral function via PFS.PSEL.
SysTick-based tick counter, delay and timestamp helpers.
void ra8_delay_ms(uint32_t ms)
Busy-wait for at least ms milliseconds.
One row of the GLCDC pin table – (signal name, RA8D2 pin).
Snapshot of board identity strings.
const char * doc_rev
Same value as k_ra8_board_doc_rev.
const char * mcu
Same value as k_ra8_board_mcu.
const char * name
Same value as k_ra8_board_name.
One external-IRQ-pin configuration descriptor.