2023-10-14 17:49:00 +08:00

33 lines
1.4 KiB
C

#pragma once
#include "types.h"
// Possible error codes for most of the functions below.
// TODO: Merge with WiFi error codes?
enum
{
SDIO_ERR_NONE = 0u, // No error.
SDIO_ERR_GO_IDLE_STATE = 1u, // GO_IDLE_STATE CMD error.
SDIO_ERR_IO_SEND_OP_COND = 2u, // IO_SEND_OP_COND CMD error.
SDIO_ERR_IO_OP_COND_TMOUT = 3u, // Card initialization timeout.
SDIO_ERR_VOLT_SUPPORT = 4u, // Voltage not supported.
SDIO_ERR_SEND_RCA = 5u, // SEND_RELATIVE_ADDR CMD error.
SDIO_ERR_SELECT_CARD = 6u, // SELECT_CARD CMD error.
SDIO_ERR_INVALID_ARG = 7u, // Invalid function argument(s).
SDIO_ERR_IO_RW_DIRECT = 8u, // IO_RW_DIRECT CMD error.
SDIO_ERR_IO_RW_EXTENDED = 9u, // IO_RW_EXTENDED CMD error.
SDIO_ERR_R5_ERROR = 10u, // SDIO R5 ERROR bit set in response.
SDIO_ERR_R5_INVALID_FUNC = 11u, // SDIO R5 FUNCTION_NUMBER bit set in response.
SDIO_ERR_R5_OUT_OF_RANGE = 12u // SDIO R5 OUT_OF_RANGE bit set in response.
};
u32 SDIO_init(void);
u32 SDIO_reset(void);
u32 SDIO_io_rw_direct(const bool write, const u8 func, const u32 addr, const u8 in, u8 *const out);
u32 SDIO_io_rw_extended(const bool write, const u8 func, const u32 addr, const bool incAddr, u8 *buf, const u16 count, const u16 size);
u8 SDIO_readReg8(const u8 func, const u32 addr);
u32 SDIO_writeReg8(const u8 func, const u32 addr, const u8 in);
u8 SDIO_writeReadReg8(const u8 func, const u32 addr, const u8 in);