ra8-firmware 0.1.0
Bare-metal firmware for the Renesas RA8 family (RA8D2 / RA8P1)
Loading...
Searching...
No Matches
ra8_sdhi.h
Go to the documentation of this file.
1
33
34#pragma once
35
36#ifdef __cplusplus
37extern "C" {
38#endif
39
40#include <stdint.h>
41
42#include "ra8_err.h"
43
48typedef void (*ra8_sdhi_event_fn_t)(void* ctx, uint8_t instance, uint32_t status_mask);
49
72
79[[nodiscard]] ra8_err_t ra8_sdhi_init(uint8_t instance);
80
97[[nodiscard]] ra8_err_t
98ra8_sdhi_send_command(uint8_t instance, uint32_t cmd, uint32_t arg, uint32_t* out_rsp);
99
104[[nodiscard]] ra8_err_t ra8_sdhi_set_clock(uint8_t instance, uint32_t divider);
105
138[[nodiscard]] ra8_err_t ra8_sdhi_set_bus_width(uint8_t instance, ra8_sdhi_bus_width_t width);
139
177[[nodiscard]] ra8_err_t ra8_sdhi_set_bus_width_4bit(uint8_t instance, uint16_t rca);
178
217[[nodiscard]] ra8_err_t ra8_sdhi_set_bus_width_8bit(uint8_t instance);
218
223[[nodiscard]] ra8_err_t ra8_sdhi_deinit(uint8_t instance);
224
229[[nodiscard]] ra8_err_t ra8_sdhi_get_status(uint8_t instance, uint32_t* out_mask);
230
235[[nodiscard]] ra8_err_t ra8_sdhi_clear_status(uint8_t instance, uint32_t mask);
236
241[[nodiscard]] ra8_err_t ra8_sdhi_attach_handler(ra8_sdhi_event_fn_t fn, void* ctx);
242
264void ra8_sdhi_dispatch(uint8_t instance);
265
270[[nodiscard]] ra8_err_t ra8_sdhi_enter_stop(uint8_t instance);
271
276[[nodiscard]] ra8_err_t ra8_sdhi_exit_stop(uint8_t instance);
277
323[[nodiscard]] ra8_err_t
324ra8_sdhi_read_block(uint8_t instance, uint32_t lba, uint8_t* buf, uint32_t block_count);
325
358[[nodiscard]] ra8_err_t
359ra8_sdhi_write_block(uint8_t instance, uint32_t lba, const uint8_t* buf, uint32_t block_count);
360
385[[nodiscard]] ra8_err_t ra8_sdhi_attach_dma(uint8_t instance, uint8_t enable);
386
387#ifdef __cplusplus
388}
389#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
ra8_err_t ra8_sdhi_read_block(uint8_t instance, uint32_t lba, uint8_t *buf, uint32_t block_count)
Read one or more 512-byte SD blocks via the SD_BUF0 FIFO.
Definition ra8_sdhi.c:677
ra8_err_t ra8_sdhi_get_status(uint8_t instance, uint32_t *out_mask)
Read the SD_INFO1 status register.
Definition ra8_sdhi.c:335
ra8_err_t ra8_sdhi_write_block(uint8_t instance, uint32_t lba, const uint8_t *buf, uint32_t block_count)
Write one or more 512-byte SD blocks via the SD_BUF0 FIFO.
Definition ra8_sdhi.c:702
ra8_err_t ra8_sdhi_exit_stop(uint8_t instance)
Exit MSTP-gated stop.
Definition ra8_sdhi.c:389
ra8_err_t ra8_sdhi_set_clock(uint8_t instance, uint32_t divider)
Set the SD bus clock divider (SD_CLK_CTRL).
Definition ra8_sdhi.c:223
ra8_err_t ra8_sdhi_send_command(uint8_t instance, uint32_t cmd, uint32_t arg, uint32_t *out_rsp)
Issue a single SD command and read the 4-word response.
Definition ra8_sdhi.c:184
void ra8_sdhi_dispatch(uint8_t instance)
Dispatch an SDHI event – snapshot status + fire callback.
Definition ra8_sdhi.c:365
void(* ra8_sdhi_event_fn_t)(void *ctx, uint8_t instance, uint32_t status_mask)
SDHI event callback.
Definition ra8_sdhi.h:48
ra8_err_t ra8_sdhi_clear_status(uint8_t instance, uint32_t mask)
Clear SD_INFO1 status bits via write-0-to-clear.
Definition ra8_sdhi.c:345
ra8_err_t ra8_sdhi_attach_dma(uint8_t instance, uint8_t enable)
Enable or disable DMAC-driven SDHI transfers.
Definition ra8_sdhi.c:726
ra8_err_t ra8_sdhi_init(uint8_t instance)
Initialise an SDHI instance.
Definition ra8_sdhi.c:106
ra8_err_t ra8_sdhi_attach_handler(ra8_sdhi_event_fn_t fn, void *ctx)
Attach an SDHI event callback (shared across instances).
Definition ra8_sdhi.c:357
ra8_err_t ra8_sdhi_deinit(uint8_t instance)
Tear down an SDHI instance.
Definition ra8_sdhi.c:165
ra8_err_t ra8_sdhi_enter_stop(uint8_t instance)
Put an SDHI instance into MSTP-gated stop.
Definition ra8_sdhi.c:381
ra8_err_t ra8_sdhi_set_bus_width(uint8_t instance, ra8_sdhi_bus_width_t width)
Program the host-side SD data-bus width (SD_OPTION.WIDTH / WIDTH8).
Definition ra8_sdhi.c:239
ra8_err_t ra8_sdhi_set_bus_width_4bit(uint8_t instance, uint16_t rca)
Negotiate a 4-bit data bus with the card via CMD55 + ACMD6.
Definition ra8_sdhi.c:269
ra8_err_t ra8_sdhi_set_bus_width_8bit(uint8_t instance)
Negotiate an 8-bit data bus with an eMMC device via CMD6 SWITCH.
Definition ra8_sdhi.c:307
ra8_sdhi_bus_width_t
SD data-bus width accepted by ra8_sdhi_set_bus_width.
Definition ra8_sdhi.h:66
@ k_ra8_sdhi_bus_width_1bit
Single data lane (power-on safe default).
Definition ra8_sdhi.h:68
@ k_ra8_sdhi_bus_width_4bit
Four data lanes (SD default-speed wide).
Definition ra8_sdhi.h:69
@ k_ra8_sdhi_bus_width_unset
Unset: leave the bus at its power-on width.
Definition ra8_sdhi.h:67
@ k_ra8_sdhi_bus_width_8bit
Eight data lanes (eMMC only).
Definition ra8_sdhi.h:70