ra8-firmware 0.1.0
Bare-metal firmware for the Renesas RA8 family (RA8D2 / RA8P1)
Loading...
Searching...
No Matches
ra8_xspi.h
Go to the documentation of this file.
1
15
16#pragma once
17
18#ifdef __cplusplus
19extern "C" {
20#endif
21
22#include <stdint.h>
23
24#include "ra8_err.h"
25#include "ra8_ospi_regs.h"
26
37[[nodiscard]] ra8_err_t ra8_xspi_init(uint8_t instance, ra8_xspi_lio_mode_t mode);
38
47[[nodiscard]] ra8_err_t
48ra8_xspi_direct_command(uint8_t instance, const uint8_t* cmd_buf, uint8_t len);
49
74[[nodiscard]] ra8_err_t
75ra8_xspi_flash_read(uint8_t instance, uint32_t flash_addr, uint8_t* buf, uint32_t len);
76
101[[nodiscard]] ra8_err_t
102ra8_xspi_flash_program(uint8_t instance, uint32_t flash_addr, const uint8_t* data, uint32_t len);
103
119[[nodiscard]] ra8_err_t ra8_xspi_flash_erase_sector(uint8_t instance, uint32_t flash_addr);
120
131[[nodiscard]] ra8_err_t ra8_xspi_flash_read_status(uint8_t instance, uint8_t* out_status);
132
148[[nodiscard]] ra8_err_t ra8_xspi_flash_read_id(uint8_t instance, uint32_t* out_id);
149
154typedef void (*ra8_xspi_event_fn_t)(void* ctx, uint32_t status_mask);
155
160[[nodiscard]] ra8_err_t ra8_xspi_deinit(uint8_t instance);
161
166[[nodiscard]] ra8_err_t ra8_xspi_get_status(uint8_t instance, uint32_t* out_mask);
167
172[[nodiscard]] ra8_err_t ra8_xspi_clear_status(uint8_t instance, uint32_t mask);
173
178[[nodiscard]] ra8_err_t
179ra8_xspi_attach_handler(uint8_t instance, ra8_xspi_event_fn_t fn, void* ctx);
180
202void ra8_xspi_dispatch(uint8_t instance);
203
208[[nodiscard]] ra8_err_t ra8_xspi_enter_stop(uint8_t instance);
209
214[[nodiscard]] ra8_err_t ra8_xspi_exit_stop(uint8_t instance);
215
241[[nodiscard]] ra8_err_t ra8_xspi_xip_enter(uint8_t instance, uint8_t enter_code, uint8_t exit_code);
242
263[[nodiscard]] ra8_err_t ra8_xspi_xip_exit(uint8_t instance);
264
294[[nodiscard]] ra8_err_t
295ra8_xspi_set_xip_mode(uint8_t instance, bool enable, uint8_t read_cmd, uint8_t addr_bytes);
296
316[[nodiscard]] ra8_err_t ra8_xspi_set_dtr_mode(uint8_t instance, bool enable);
317
343[[nodiscard]] ra8_err_t ra8_xspi_calibrate_dqs(uint8_t instance);
344
366[[nodiscard]] ra8_err_t ra8_xspi_suspend(uint8_t instance);
367
384[[nodiscard]] ra8_err_t ra8_xspi_resume(uint8_t instance);
385
439[[nodiscard]] ra8_err_t ra8_xspi_software_reset(uint8_t instance, uint8_t cmd_bytes);
440
441#ifdef __cplusplus
442}
443#endif
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
xSPI / Octo-SPI controller register layout for the Renesas RA8D2
ra8_xspi_lio_mode_t
Protocol mode values written to LIOCFGCS[n].PRTMD.
ra8_err_t ra8_xspi_attach_handler(uint8_t instance, ra8_xspi_event_fn_t fn, void *ctx)
Attach a completion callback.
Definition ra8_xspi.c:483
ra8_err_t ra8_xspi_calibrate_dqs(uint8_t instance)
Run the data-strobe (DQS) calibration sequence.
Definition ra8_xspi.c:664
ra8_err_t ra8_xspi_enter_stop(uint8_t instance)
Put an xSPI instance into MSTP-gated stop.
Definition ra8_xspi.c:517
ra8_err_t ra8_xspi_xip_enter(uint8_t instance, uint8_t enter_code, uint8_t exit_code)
Enable XIP (execute-in-place) memory-mapped read mode.
Definition ra8_xspi.c:533
ra8_err_t ra8_xspi_deinit(uint8_t instance)
Tear down the xSPI instance (disable + MSTP release).
Definition ra8_xspi.c:449
ra8_err_t ra8_xspi_set_xip_mode(uint8_t instance, bool enable, uint8_t read_cmd, uint8_t addr_bytes)
Enable or disable memory-mapped (XIP) read mode.
Definition ra8_xspi.c:617
ra8_err_t ra8_xspi_flash_program(uint8_t instance, uint32_t flash_addr, const uint8_t *data, uint32_t len)
Program (write) len bytes at flash_addr.
ra8_err_t ra8_xspi_set_dtr_mode(uint8_t instance, bool enable)
Enable or disable double-data-rate (DDR / DTR) link mode.
Definition ra8_xspi.c:648
ra8_err_t ra8_xspi_exit_stop(uint8_t instance)
Exit MSTP-gated stop.
Definition ra8_xspi.c:525
ra8_err_t ra8_xspi_direct_command(uint8_t instance, const uint8_t *cmd_buf, uint8_t len)
Issue a raw command via the direct-command registers.
Definition ra8_xspi.c:402
ra8_err_t ra8_xspi_software_reset(uint8_t instance, uint8_t cmd_bytes)
Issue the JEDEC software-reset pair (RSTEN 0x66 + RST 0x99).
Definition ra8_xspi.c:756
ra8_err_t ra8_xspi_init(uint8_t instance, ra8_xspi_lio_mode_t mode)
Initialise an xSPI instance in the chosen link-layer IO mode.
Definition ra8_xspi.c:372
ra8_err_t ra8_xspi_flash_read(uint8_t instance, uint32_t flash_addr, uint8_t *buf, uint32_t len)
Read len bytes from external flash into buf.
ra8_err_t ra8_xspi_get_status(uint8_t instance, uint32_t *out_mask)
Read the xSPI COMSTT busy/error mask.
Definition ra8_xspi.c:464
ra8_err_t ra8_xspi_flash_read_status(uint8_t instance, uint8_t *out_status)
Read the flash Status Register (opcode 0x05).
void(* ra8_xspi_event_fn_t)(void *ctx, uint32_t status_mask)
xSPI event callback.
Definition ra8_xspi.h:154
ra8_err_t ra8_xspi_suspend(uint8_t instance)
Suspend a long-running flash erase / program operation.
Definition ra8_xspi.c:683
ra8_err_t ra8_xspi_clear_status(uint8_t instance, uint32_t mask)
Clear transfer-complete / error bits in INTS via INTC.
Definition ra8_xspi.c:474
ra8_err_t ra8_xspi_resume(uint8_t instance)
Resume a previously suspended erase / program.
Definition ra8_xspi.c:690
ra8_err_t ra8_xspi_xip_exit(uint8_t instance)
Disable XIP mode and restore command-only access.
Definition ra8_xspi.c:555
ra8_err_t ra8_xspi_flash_erase_sector(uint8_t instance, uint32_t flash_addr)
Erase the 4 KiB sector containing flash_addr.
void ra8_xspi_dispatch(uint8_t instance)
Dispatch an xSPI event – snapshot INTS + fire callback.
Definition ra8_xspi.c:494
ra8_err_t ra8_xspi_flash_read_id(uint8_t instance, uint32_t *out_id)
Read the JEDEC ID (opcode 0x9F), returning 24 bits in a uint32_t.