以下接口皆为 MMC 子系统所需要的标准接口,通过 mmc_host_ops 注册到 MMC
子系统。
static const struct mmc_host_ops artinchip_mmc_ops = {
.request = artinchip_mmc_request,
.pre_req = artinchip_mmc_pre_req,
.post_req = artinchip_mmc_post_req,
.set_ios = artinchip_mmc_set_ios,
.get_ro = artinchip_mmc_get_ro,
.get_cd = artinchip_mmc_get_cd,
.hw_reset = artinchip_mmc_hw_reset,
.enable_sdio_irq = artinchip_mmc_enable_sdio_irq,
.ack_sdio_irq = artinchip_mmc_ack_sdio_irq,
.execute_tuning = artinchip_mmc_execute_tuning,
.card_busy = artinchip_mmc_card_busy,
.start_signal_voltage_switch = artinchip_mmc_switch_voltage,
.init_card = artinchip_mmc_init_card,
};表 1. artinchip_mmc_request| 函数原型 | static void artinchip_mmc_request(struct mmc_host *mmc, struct
mmc_request *mrq) |
|---|
| 功能说明 | 读取当前的 RTC 时间 |
| 功能说明 | 操作寄存器实现 request |
| 参数定义 |
- mmc:MMC 设备指针
- mrq:请求的参数和资源
|
| 返回值 | - |
| 注意事项 | - |
表 2. artinchip_mmc_pre_req| 函数原型 | static void artinchip_mmc_pre_req(struct mmc_host *mmc, struct
mmc_request *mrq) |
|---|
| 功能说明 | 准备下一个 request |
| 参数定义 |
- mmc:MMC 设备指针
- mrq:请求的参数和资源
|
| 返回值 | - |
| 注意事项 | 在准备下一个请求前,一般需要调用 artinchip_mmc_post_request |
表 3. artinchip_mmc_post_req| 函数原型 | static void artinchip_mmc_post_req(struct mmc_host *mmc, struct
mmc_request *mrq, int err) |
|---|
| 功能说明 | 送出一个 request |
| 参数定义 |
- mmc:MMC 设备指针
- mrq:请求的参数和资源
- err:如果非零,需要清理掉 pre_req() 中申请的资源
|
| 返回值 | - |
| 注意事项 | - |
表 4. artinchip_mmc_set_ios| 函数原型 | static void artinchip_mmc_set_ios(struct mmc_host *mmc, struct
mmc_ios *ios) |
|---|
| 功能说明 | 对设备的位宽、DDR 模式、clock、power 模式等进行配置 |
| 参数定义 |
|
| 返回值 | - |
| 注意事项 | - |
表 5. artinchip_mmc_get_cd| 函数原型 | static int artinchip_mmc_get_cd(struct mmc_host *mmc) |
|---|
| 功能说明 | 探测外部 SD 设备 |
| 参数定义 | mmc:MMC 设备指针 |
| 返回值 | 执行成功则返回 1 |
| 注意事项 | - |
表 6. artinchip_mmc_hw_reset| 函数原型 | static void artinchip_mmc_hw_reset(struct mmc_host *mmc) |
|---|
| 功能说明 | 对 MMC 控制器、DMA 等进行一次 reset |
| 参数定义 | mmc:MMC 设备指针 |
| 返回值 | - |
| 注意事项 | - |
表 7. artinchip_mmc_enable_sdio_irq| 函数原型 | static void artinchip_mmc_enable_sdio_irq(struct mmc_host *mmc,
int enb) |
|---|
| 功能说明 | 使能或者关闭 MMC 控制器的中断 |
| 参数定义 |
|
| 返回值 | - |
| 注意事项 | - |
表 8. artinchip_mmc_ack_sdio_irq| 函数原型 | static void artinchip_mmc_ack_sdio_irq(struct mmc_host
*mmc) |
|---|
| 功能说明 | 打开 MMC 控制器的中断 |
| 参数定义 | mmc:MMC 设备指针 |
| 返回值 | - |
| 注意事项 | - |
表 9. artinchip_mmc_execute_tuning| 函数原型 | static int artinchip_mmc_execute_tuning(struct mmc_host *mmc, u32
opcode) |
|---|
| 功能说明 | MMC 的 tuning 功能接口 |
| 参数定义 |
- mmc:MMC 设备指针
- opcode:tuning 命令码
|
| 返回值 | - |
| 注意事项 | - |
表 10. artinchip_mmc_card_busy| 函数原型 | static int artinchip_mmc_card_busy(struct mmc_host *mmc) |
|---|
| 功能说明 | 查看 MMC 设备是否处于 Busy 状态 |
| 参数定义 | mmc:MMC 设备指针 |
| 返回值 | 若处于 idle 状态返回 0,busy 则返回 1 |
| 注意事项 | - |
表 11. artinchip_mmc_switch_voltage| 函数原型 | static int artinchip_mmc_switch_voltage(struct mmc_host *mmc,
struct mmc_ios *ios) |
|---|
| 功能说明 | 设置 MMC 设备的工作电压 |
| 参数定义 |
|
| 返回值 | 0,成功。 < 0,失败 |
| 注意事项 | - |
表 12. artinchip_mmc_init_card| 函数原型 | static void artinchip_mmc_init_card(struct mmc_host *mmc, struct
mmc_card *card) |
|---|
| 功能说明 | 初始化外部 mmc 设备 |
| 参数定义 |
- mmc:MMC 设备指针
- card:card 设备指针
|
| 返回值 | - |
| 注意事项 | - |