34static const char*
const s_tag =
"ra8_io_blockdev_sdspi";
47typedef enum : uint32_t {
static const char * s_tag
Logging / check tag.
Annotation-attribute framework macros for ra8-firmware.
#define RA8_INTERNAL
Marker that a function is intended to be static (file-local).
Validation and Error-Checking Macros for ra8-firmware.
#define RA8_RETURN_ON_ERROR(err, tag, message)
Early return on error, propagating the code upward.
#define RA8_CHECK_NULL_PTR(ptr, tag, message)
Reject nullptr pointer, returning k_ra8_err_null_ptr.
Error Code Definitions for ra8-firmware.
@ 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.
ra8_io block-device fabric – one LBA vtable across every storage medium.
struct ra8_io_blockdev_iface ra8_io_blockdev_iface_t
@ k_ra8_io_erase_value_zero
Block reads back as 0x00 after erase.
@ k_ra8_io_block_size_bytes
Bytes per logical block (the only size).
Backend implementation contract for the ra8_io block-device fabric.
static ra8_err_t internal_sdspi_write(void *ctx, uint32_t lba, uint32_t count, const uint8_t *buf)
SD-SPI backend: write count blocks from buf at lba.
ra8_io_sdspi_const_t
SD-SPI backend layout constants.
@ k_ra8_io_sdspi_erase_unit_blocks
One logical block per erase unit.
ra8_err_t ra8_io_blockdev_sdspi_init(ra8_io_blockdev_t *bd)
Bind the micro-SD-over-SPI backend into a caller-owned handle.
static ra8_err_t internal_sdspi_get_caps(const void *ctx, ra8_io_blockdev_caps_t *out)
SD-SPI backend: report card capabilities.
static const ra8_io_blockdev_iface_t s_sdspi_iface
SD-SPI backend vtable.
static ra8_err_t internal_sdspi_read(void *ctx, uint32_t lba, uint32_t count, uint8_t *buf)
SD-SPI backend: read count blocks at lba into buf.
static ra8_err_t internal_sdspi_erase(void *ctx, uint32_t lba, uint32_t count)
SD-SPI backend: erase count blocks at lba to all-zero.
ra8_io block-device backend over the micro-SD-in-SPI-mode driver.
SD card driver in SPI-mode (PMOD-attached cards).
ra8_err_t ra8_sdmmc_spi_read_blocks(uint32_t lba, uint8_t *buf, uint32_t count)
Read count contiguous 512-byte blocks in one CMD18 transaction.
ra8_err_t ra8_sdmmc_spi_erase_blocks(uint32_t lba, uint32_t count)
Bulk-erase count blocks at lba, guaranteeing a zero read-back.
ra8_err_t ra8_sdmmc_spi_get_capacity(uint32_t *out_blocks)
Return the card capacity in 512-byte blocks.
ra8_err_t ra8_sdmmc_spi_write_blocks(uint32_t lba, const uint8_t *buf, uint32_t count)
Write count contiguous 512-byte blocks in one CMD25 transaction.
Static properties a backend reports about its medium.
uint32_t erase_unit_blocks
Erase granularity, in logical blocks.
uint32_t block_count
Total addressable logical blocks.
bool must_erase_before_write
true => program needs a prior erase.
bool read_only
true => writes/erases are rejected.
uint8_t erase_value
Post-erase byte (ra8_io_erase_value_t).
uint16_t logical_block_bytes
Logical block size (always 512).
uint32_t program_size_bytes
Minimum program granularity in bytes.
Caller-allocated block-device handle binding a backend to its context.
const ra8_io_blockdev_iface_t * iface
Bound backend vtable (private).
void * ctx
Backend-private context (private).