Linux MMC子系統主要分成三個部分:
MMC核心層(sdio core):完成不同協議和規范的實現,為host層和設備驅動層提供接口函數。MMC核心層由三個部分組成:MMC,SD和SDIO,分別為三類設備驅動提供接口函數;
Host 驅動層(sdio host主設備):針對不同主機端的SDHC、MMC控制器的驅動;
Client 驅動層(sdio driver從設備):針對不同客戶端的設備驅動程序。如SD卡、T-flash卡、SDIO接口的GPS和wi-fi等設備驅動。
1 sdio device和sdio driver
wifi作為sdio的從設備
以linux-4.9.73\drivers\net\wireless\marvell\libertas\If_sdio.c的wifi driver為例:
2 sdio host
CPU的sdio主控制器作為sdio的主設備。
3 sdio core
3.1 注冊sdio 總線
3.2 add sdio host 設備
3.3 mmc_rescan詳解