Edit online

数据结构设计

SDMC 数据类型及其结构描述如下:
  • struct aic_sdmc_host:属于 HAL 层接口,定义了 SDMC 控制器 管理信息。
    struct aic_sdmc_host {
        volatile void *base;
        u32 is_sdio;
        u32 fifoth_val;
    };
  • 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;
      
          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;
      };
    • 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;
      };