SyterKit 0.4.0.x
SyterKit is a bare-metal framework
Loading...
Searching...
No Matches
Classes | Enumerations | Functions | Variables
sys-sdcard.h File Reference
#include <io.h>
#include <stdarg.h>
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include <types.h>
#include "sys-sdhci.h"
#include "log.h"
Include dependency graph for sys-sdcard.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  sdmmc_t
 
struct  sdmmc_pdata_t
 

Enumerations

enum  {
  MMC_GO_IDLE_STATE = 0 , MMC_SEND_OP_COND = 1 , MMC_ALL_SEND_CID = 2 , MMC_SET_RELATIVE_ADDR = 3 ,
  MMC_SET_DSR = 4 , MMC_SWITCH = 6 , MMC_SELECT_CARD = 7 , MMC_SEND_EXT_CSD = 8 ,
  MMC_SEND_CSD = 9 , MMC_SEND_CID = 10 , MMC_READ_DAT_UNTIL_STOP = 11 , MMC_STOP_TRANSMISSION = 12 ,
  MMC_SEND_STATUS = 13 , MMC_GO_INACTIVE_STATE = 15 , MMC_SPI_READ_OCR = 58 , MMC_SPI_CRC_ON_OFF = 59 ,
  MMC_SET_BLOCKLEN = 16 , MMC_READ_SINGLE_BLOCK = 17 , MMC_READ_MULTIPLE_BLOCK = 18 , MMC_WRITE_DAT_UNTIL_STOP = 20 ,
  MMC_SET_BLOCK_COUNT = 23 , MMC_WRITE_SINGLE_BLOCK = 24 , MMC_WRITE_MULTIPLE_BLOCK = 25 , MMC_PROGRAM_CID = 26 ,
  MMC_PROGRAM_CSD = 27 , MMC_ERASE_GROUP_START = 35 , MMC_ERASE_GROUP_END = 36 , MMC_ERASE = 38 ,
  MMC_SET_WRITE_PROT = 28 , MMC_CLR_WRITE_PROT = 29 , MMC_SEND_WRITE_PROT = 30 , MMC_LOCK_UNLOCK = 42 ,
  MMC_APP_CMD = 55 , MMC_GEN_CMD = 56 , MMC_FAST_IO = 39 , MMC_GO_IRQ_STATE = 40
}
 
enum  {
  SD_CMD_SEND_RELATIVE_ADDR = 3 , SD_CMD_SWITCH_FUNC = 6 , SD_CMD_SEND_IF_COND = 8 , SD_CMD_APP_SET_BUS_WIDTH = 6 ,
  SD_CMD_ERASE_WR_BLK_START = 32 , SD_CMD_ERASE_WR_BLK_END = 33 , SD_CMD_APP_SEND_OP_COND = 41 , SD_CMD_APP_SEND_SCR = 51
}
 
enum  {
  MMC_RSP_PRESENT = (1 << 0) , MMC_RSP_136 = (1 << 1) , MMC_RSP_CRC = (1 << 2) , MMC_RSP_BUSY = (1 << 3) ,
  MMC_RSP_OPCODE = (1 << 4)
}
 
enum  {
  MMC_RSP_NONE = (0 << 24) , MMC_RSP_R1 = (1 << 24) | (MMC_RSP_PRESENT | MMC_RSP_CRC | MMC_RSP_OPCODE) , MMC_RSP_R1B = (1 << 24) | (MMC_RSP_PRESENT | MMC_RSP_CRC | MMC_RSP_OPCODE | MMC_RSP_BUSY) , MMC_RSP_R2 = (2 << 24) | (MMC_RSP_PRESENT | MMC_RSP_136 | MMC_RSP_CRC) ,
  MMC_RSP_R3 = (3 << 24) | (MMC_RSP_PRESENT) , MMC_RSP_R4 = (4 << 24) | (MMC_RSP_PRESENT) , MMC_RSP_R5 = (5 << 24) | (MMC_RSP_PRESENT | MMC_RSP_CRC | MMC_RSP_OPCODE) , MMC_RSP_R6 = (6 << 24) | (MMC_RSP_PRESENT | MMC_RSP_CRC | MMC_RSP_OPCODE) ,
  MMC_RSP_R7 = (7 << 24) | (MMC_RSP_PRESENT | MMC_RSP_CRC | MMC_RSP_OPCODE)
}
 
enum  {
  MMC_STATUS_IDLE = 0 , MMC_STATUS_READY = 1 , MMC_STATUS_IDENT = 2 , MMC_STATUS_STBY = 3 ,
  MMC_STATUS_TRAN = 4 , MMC_STATUS_DATA = 5 , MMC_STATUS_RCV = 6 , MMC_STATUS_PRG = 7 ,
  MMC_STATUS_DIS = 8 , MMC_STATUS_BTST = 9 , MMC_STATUS_SLP = 10
}
 
enum  { OCR_BUSY = 0x80000000 , OCR_HCS = 0x40000000 , OCR_VOLTAGE_MASK = 0x00ffff80 , OCR_ACCESS_MODE = 0x60000000 }
 
enum  { MMC_DATA_READ = (1 << 0) , MMC_DATA_WRITE = (1 << 1) }
 
enum  { MMC_VDD_27_36 = (1 << 0) , MMC_VDD_165_195 = (1 << 1) }
 
enum  { MMC_BUS_WIDTH_1 = 1 , MMC_BUS_WIDTH_4 = 2 , MMC_BUS_WIDTH_8 = 3 }
 
enum  { MMC_CONTROLLER_0 = 0 , MMC_CONTROLLER_1 = 1 , MMC_CONTROLLER_2 = 2 }
 
enum  {
  SD_VERSION_SD = 0x20000 , SD_VERSION_3 = (SD_VERSION_SD | 0x300) , SD_VERSION_2 = (SD_VERSION_SD | 0x200) , SD_VERSION_1_0 = (SD_VERSION_SD | 0x100) ,
  SD_VERSION_1_10 = (SD_VERSION_SD | 0x10a) , MMC_VERSION_MMC = 0x10000 , MMC_VERSION_UNKNOWN = (MMC_VERSION_MMC) , MMC_VERSION_1_2 = (MMC_VERSION_MMC | 0x102) ,
  MMC_VERSION_1_4 = (MMC_VERSION_MMC | 0x104) , MMC_VERSION_2_2 = (MMC_VERSION_MMC | 0x202) , MMC_VERSION_3 = (MMC_VERSION_MMC | 0x300) , MMC_VERSION_4 = (MMC_VERSION_MMC | 0x400) ,
  MMC_VERSION_4_1 = (MMC_VERSION_MMC | 0x401) , MMC_VERSION_4_2 = (MMC_VERSION_MMC | 0x402) , MMC_VERSION_4_3 = (MMC_VERSION_MMC | 0x403) , MMC_VERSION_4_41 = (MMC_VERSION_MMC | 0x429) ,
  MMC_VERSION_4_5 = (MMC_VERSION_MMC | 0x405) , MMC_VERSION_5_0 = (MMC_VERSION_MMC | 0x500) , MMC_VERSION_5_1 = (MMC_VERSION_MMC | 0x501)
}
 

Functions

int sdmmc_init (sdmmc_pdata_t *data, sdhci_t *hci)
 Initialize the SDMMC controller with the specified platform data and SDHCI driver.
 
uint64_t sdmmc_blk_read (sdmmc_pdata_t *data, uint8_t *buf, uint64_t blkno, uint64_t blkcnt)
 Read data from the SDMMC card into the provided buffer.
 

Variables

sdmmc_pdata_t card0
 External declaration of the 'card0' SDMMC platform data structure.
 

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
MMC_GO_IDLE_STATE 
MMC_SEND_OP_COND 
MMC_ALL_SEND_CID 
MMC_SET_RELATIVE_ADDR 
MMC_SET_DSR 
MMC_SWITCH 
MMC_SELECT_CARD 
MMC_SEND_EXT_CSD 
MMC_SEND_CSD 
MMC_SEND_CID 
MMC_READ_DAT_UNTIL_STOP 
MMC_STOP_TRANSMISSION 
MMC_SEND_STATUS 
MMC_GO_INACTIVE_STATE 
MMC_SPI_READ_OCR 
MMC_SPI_CRC_ON_OFF 
MMC_SET_BLOCKLEN 
MMC_READ_SINGLE_BLOCK 
MMC_READ_MULTIPLE_BLOCK 
MMC_WRITE_DAT_UNTIL_STOP 
MMC_SET_BLOCK_COUNT 
MMC_WRITE_SINGLE_BLOCK 
MMC_WRITE_MULTIPLE_BLOCK 
MMC_PROGRAM_CID 
MMC_PROGRAM_CSD 
MMC_ERASE_GROUP_START 
MMC_ERASE_GROUP_END 
MMC_ERASE 
MMC_SET_WRITE_PROT 
MMC_CLR_WRITE_PROT 
MMC_SEND_WRITE_PROT 
MMC_LOCK_UNLOCK 
MMC_APP_CMD 
MMC_GEN_CMD 
MMC_FAST_IO 
MMC_GO_IRQ_STATE 

◆ anonymous enum

anonymous enum
Enumerator
SD_CMD_SEND_RELATIVE_ADDR 
SD_CMD_SWITCH_FUNC 
SD_CMD_SEND_IF_COND 
SD_CMD_APP_SET_BUS_WIDTH 
SD_CMD_ERASE_WR_BLK_START 
SD_CMD_ERASE_WR_BLK_END 
SD_CMD_APP_SEND_OP_COND 
SD_CMD_APP_SEND_SCR 

◆ anonymous enum

anonymous enum
Enumerator
MMC_RSP_PRESENT 
MMC_RSP_136 
MMC_RSP_CRC 
MMC_RSP_BUSY 
MMC_RSP_OPCODE 

◆ anonymous enum

anonymous enum
Enumerator
MMC_RSP_NONE 
MMC_RSP_R1 
MMC_RSP_R1B 
MMC_RSP_R2 
MMC_RSP_R3 
MMC_RSP_R4 
MMC_RSP_R5 
MMC_RSP_R6 
MMC_RSP_R7 

◆ anonymous enum

anonymous enum
Enumerator
MMC_STATUS_IDLE 
MMC_STATUS_READY 
MMC_STATUS_IDENT 
MMC_STATUS_STBY 
MMC_STATUS_TRAN 
MMC_STATUS_DATA 
MMC_STATUS_RCV 
MMC_STATUS_PRG 
MMC_STATUS_DIS 
MMC_STATUS_BTST 
MMC_STATUS_SLP 

◆ anonymous enum

anonymous enum
Enumerator
OCR_BUSY 
OCR_HCS 
OCR_VOLTAGE_MASK 
OCR_ACCESS_MODE 

◆ anonymous enum

anonymous enum
Enumerator
MMC_DATA_READ 
MMC_DATA_WRITE 

◆ anonymous enum

anonymous enum
Enumerator
MMC_VDD_27_36 
MMC_VDD_165_195 

◆ anonymous enum

anonymous enum
Enumerator
MMC_BUS_WIDTH_1 
MMC_BUS_WIDTH_4 
MMC_BUS_WIDTH_8 

◆ anonymous enum

anonymous enum
Enumerator
MMC_CONTROLLER_0 
MMC_CONTROLLER_1 
MMC_CONTROLLER_2 

◆ anonymous enum

anonymous enum
Enumerator
SD_VERSION_SD 
SD_VERSION_3 
SD_VERSION_2 
SD_VERSION_1_0 
SD_VERSION_1_10 
MMC_VERSION_MMC 
MMC_VERSION_UNKNOWN 
MMC_VERSION_1_2 
MMC_VERSION_1_4 
MMC_VERSION_2_2 
MMC_VERSION_3 
MMC_VERSION_4 
MMC_VERSION_4_1 
MMC_VERSION_4_2 
MMC_VERSION_4_3 
MMC_VERSION_4_41 
MMC_VERSION_4_5 
MMC_VERSION_5_0 
MMC_VERSION_5_1 

Function Documentation

◆ sdmmc_blk_read()

uint64_t sdmmc_blk_read ( sdmmc_pdata_t data,
uint8_t buf,
uint64_t  blkno,
uint64_t  blkcnt 
)

Read data from the SDMMC card into the provided buffer.

Parameters
dataPointer to the SDMMC platform data structure.
bufPointer to the destination buffer to store the read data.
blknoThe starting block number to read from.
blkcntThe number of blocks to read.
Returns
The total number of bytes read, or an error code if failed.

◆ sdmmc_init()

int sdmmc_init ( sdmmc_pdata_t data,
sdhci_t hci 
)

Initialize the SDMMC controller with the specified platform data and SDHCI driver.

Parameters
dataPointer to the SDMMC platform data structure.
hciPointer to the SDHCI driver instance.
Returns
0 if successful, or an error code if failed.

Variable Documentation

◆ card0

sdmmc_pdata_t card0
extern

External declaration of the 'card0' SDMMC platform data structure.