天天看點

Linux核心4.14版本——mmc core(5)——mmc core主子產品(1)簡介1. 簡介2. API總覽3. 參考文章

目錄

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部落格