mmc subsystem系列(持续更新中):
[mmc subsystem] 概念与框架
[mmc subsystem] mmc core(第一章)——概述
[mmc subsystem] mmc core(第二章)——数据结构和宏定义说明
[mmc subsystem] mmc core(第三章)——bus模块说明
[mmc subsystem] mmc core(第四章)——host模块说明
[mmc subsystem] mmc core(第五章)——card相关模块(mmc type card)
[mmc subsystem] mmc core(第六章)——mmc core主模块
[mmc subsystem] host(第一章)——概述
[mmc subsystem] host(第二章)——sdhci
[mmc subsystem] host(第三章)——sdhci-pltfm说明
[mmc subsystem] host(第四章)——host实例(sdhci-msm说明)
建议先参考《[mmc subsystem] 概念与框架》对整体有一个了解。
==========================================================================================================
一、sdhci-pltfm说明
sdhci-pltfm并不是实际某个host的driver。
sdhci-pltfm是指在sdhci core的基础上,提供了统一对sdhci_host的必要属性进行解析和设置的方法。
但是,对于sdhci类的host driver来说,使用sdhci-pltfm并不是必须的,host driver也可以自己来实现对应的操作。
通过《host(第二章)——sdhci》,我们知道了host driver调用sdhci_add_host注册sdhci_host的之前需要设置的信息如下:
- sdhci的寄存器的映射过后的基地址(sdhci_host->ioaddr)
- sdhci的癖好quirks、quirks2(sdhci_host->quirks,sdhci_host->quirks2)
- sdhci的中断号(sdhci_host->irq)
- host提供给sdhci core用来操作硬件的操作集(sdhci_host->ops)
因此,sdhci-pltfm实现了两个方法来统一设置这些信息,方便host driver对于sdhci driver的使用。
后续继续说明。
二、数据结构说明
1、sdhci_pltfm_data
首先看一下sdhci-pltfm要设置的sdhci_host的成员的来源信息:
- sdhci的寄存器的映射过后的基地址(sdhci_host->ioaddr)
由DTS节点中的地址属性解析出来寄存器的物理地址之后,进行映射得到 - sdhci的癖好quirks、quirks2(sdhci_host->quirks,sdhci_host->quirks2)
由平台host驱动(host driver)提供最基本的值,后续会进行调整 - sdhci的中断号(sdhci_host->irq)
由DTS节点中的中断属性解析出来 - host提供给sdhci core用来操作硬件的操作集(sdhci_host->ops)
由平台host驱动(host driver)提供
综上,ops、quirks和quirks2这几个的值是必须由平台host驱