目錄
1. 簡介
1.1 mmc core概述
1.2 操作集說明
2. API總覽
2.1 mmc core初始化相關
2.2 mmc host的管理和維護相關
2.3 mmc card的操作相關(包括card狀态的擷取)
2.4 總線io setting相關
2.5 host的mmc總線相關
2.6 mmc請求相關
2.7 card檢測相關
2.8 bkops操作相關
2.9 regulator操作相關
2.10 card擦除操作相關
2.11 clock操作接口
2.12 mmc core電源管理操作
3. 參考文章
1. 簡介
1.1 mmc core概述
mmc core主子產品是mmc core的實作核心。也是本章的重點内容。
對應代碼位置drivers/mmc/core/core.c。
其主要負責如下功能:
(1)mmc core初始化,包括注冊mmc bus、mmc host class等等
(2)mmc host的管理和維護,包括為其他子產品提供mmc_host的操作接口,如下
host的啟動和停止
host的占用和釋放
host電源狀态的儲存和恢複
host總線操作集的綁定和解綁
host上卡狀态檢測
(3)為其他子產品提供mmc_card的操作接口,如下
card的喚醒和休眠
card擦除
card屬性的擷取
(4)為其他子產品提供總線io setting的接口
(5)為其他子產品提供mmc請求接口
(6)card檢測接口
(7)bkops操作接口
(8)regulator操作接口
(9)clock操作接口
(10)mmc core電源管理操作接口
1.2 操作集說明
在mmc_host中有兩個操作內建員,需要了解一下,以免在代碼中産生誤會:
mmc_host->struct mmc_host_ops *ops,這個是host的操作集,由host controller驅動決定。對于sdhci類host來說,就是sdhci_ops(sdhci.c中設定)。
mmc_host->struct mmc_bus_ops *bus_ops,這個是mmc總線的操作集(也可以了解為host的mmc bus handler,host的總線處理方法),由總線上的card type決定。對于mmc card type來說,就是mmc_ops_unsafe或者mmc_ops(mmc_attach_bus_ops中設定)。
2. API總覽
2.1 mmc core初始化相關
mmc_init & mmc_exit (子產品内使用)
2.2 mmc host的管理和維護相關
mmc_claim_host & mmc_try_claim_host & mmc_release_host (子產品内使用)
mmc_power_up & mmc_power_off
mmc_start_host & mmc_stop_host
mmc_power_save_host & mmc_power_restore_host
mmc_resume_host & mmc_suspend_host
mmc_pm_notify
2.3 mmc card的操作相關(包括card狀态的擷取)
mmc_hw_reset & mmc_hw_reset_check &
mmc_card_awake & mmc_card_sleep
mmc_card_is_prog_state
mmc_can_erase
mmc_can_trim
mmc_can_discard
mmc_can_sanitize
mmc_can_secure_erase_trim
mmc_erase_group_aligned
2.4 總線io setting相關
mmc_set_ios
mmc_set_chip_select
mmc_set_clock
mmc_set_bus_mode
mmc_set_bus_width
mmc_select_voltage
mmc_set_signal_voltage(特殊)
mmc_set_timing
mmc_set_driver_type
mmc_get_max_frequency & mmc_get_min_frequency
2.5 host的mmc總線相關
mmc_resume_bus
mmc_attach_bus & mmc_detach_bus
2.6 mmc請求相關
- mmc_request_done
- mmc_wait_for_req
- mmc_wait_for_cmd
- mmc_set_data_timeout
- mmc_align_data_size
2.7 card檢測相關
- mmc_detect_change
- mmc_rescan
- mmc_detect_card_removed
2.8 bkops操作相關
- mmc_blk_init_bkops_statistics
- mmc_start_delayed_bkops
- mmc_start_bkops & mmc_stop_bkops
- mmc_start_idle_time_bkops
- mmc_read_bkops_status
2.9 regulator操作相關
- mmc_regulator_get_ocrmask
- mmc_regulator_set_ocr
- mmc_regulator_get_supply
2.10 card擦除操作相關
- mmc_init_erase
- mmc_erase
2.11 clock操作接口
- mmc_init_clk_scaling & mmc_exit_clk_scaling
- mmc_can_scale_clk
- mmc_disable_clk_scaling
2.12 mmc core電源管理操作
- mmc_rpm_hold & mmc_rpm_release
3. 參考文章
[mmc subsystem] mmc core(第六章)——mmc core主子產品_ooonebook的部落格-CSDN部落格