数据结构设计
Read time: 2 minute(s)
struct aic_sdmc_host
属于 HAL 层接口,定义了 SDMC 控制器
管理信息:
struct aic_sdmc_host { volatile void *base; u32 is_sdio; u32 fifoth_val; #ifdef AIC_SDMC_IRQ_MODE aicos_sem_t complete; #endif };
struct aic_sdmc_idma_desc
属于 HAL 层接口,记录了 SDMC 控制器内部 DMA
访问的描述符:
struct aic_sdmc_idma_desc {
u32 flags;
u32 cnt;
u32 addr;
u32 next_addr;
} __aligned(8);
struct aic_sdmc
RT-Thread
属于 Driver 层的内部接口,用于记录 SDMC
控制器的管理信息:
struct aic_sdmc {
struct rt_mmcsd_host *rthost;
struct rt_mmcsd_req *req;
struct rt_mmcsd_cmd *cmd;
struct aic_sdmc_host host;
rt_uint32_t *buf;
u32 clk;
u32 irq;
u32 index;
u32 cid[4];
unsigned int quirks;
unsigned int caps;
unsigned int version;
unsigned int clock;
unsigned int sclk_rate;
unsigned int div;
int buswidth;
int ddr_mode;
/* use fifo mode to read and write data */
int fifo_mode;
struct aic_sdmc_pdata *pdata;
u8 is_enable;
};
Baremetal
属于 Baremetal Driver 层的内部接口,用于记录 SDMC
控制器的管理信息:
struct aic_sdmc { struct aic_sdmc_dev *dev; struct aic_sdmc_cmd *cmd; struct aic_sdmc_data *data; struct aic_sdmc_host host; u32 *buf; u32 clk; u32 irq; u32 index; unsigned int quirks; unsigned int caps; unsigned int version; unsigned int clock; unsigned int sclk_rate; unsigned int div; int buswidth; int ddr_mode; /* use fifo mode to read and write data */ int fifo_mode; struct aic_sdmc_pdata *pdata; };