天天看點

Linux核心驅動基礎-裝置樹相關總線使用

mmc總線使用執行個體

broken-cd  表示沒有熱插拔探測引腳,使用輪詢檢測

cd-gpios  使用gpio管腳作為熱插拔探測引腳

non-removable  表示不能進行熱插拔,裝置一直連接配接(比如eMMC)

上面三個選項用于指定熱插拔探測選項,如果三個選項都沒有指定,則使用主機自帶的熱插拔引腳sdcd

bus-width  資料總線位寬,預設值是<1>,也可以是<4>,<8>

wp-gpios 使用gpio管腳作為寫保護引腳

max-frequency  表示mmc總線最大操作頻率

cd-inverted  表示cd引腳是active high

wp-inverted  表示wp引腳是active high

no-1-8-v  該選項存在的話,表示該總線控制器不支援1.8v裝置卡

         (即使該控制器硬體支援1.8v裝置卡)

cap-power-off-card   關閉該卡電源很安全

cap-sdio-irq         使能SDIO總線 IRQ

full-pwr-cycle       支援裝置卡的整個電源周期

cap-sd-highspeed    支援SD high-speed時序

cap-mmc-highspeed  支援MMC high-speed時序

sd-uhs-sdr12        支援SD UHS SDR12 speed

sd-uhs-sdr25        支援SD UHS SDR25 speed

sd-uhs-sdr50        支援SD UHS SDR50 speed

sd-uhs-sdr104       支援SD UHS SDR104 speed

sd-uhs-ddr12        支援SD UHS DDR12 speed

mmc-ddr-1_8v       支援eMMC high-speed DDR(1.8v)

mmc-ddr-1_2v       支援eMMC high-speed DDR(1.2v)

mmc-hs200-1_8v     支援eMMC HS200 mode

mmc-hs200-1_2v     支援eMMC HS200 mode

mmc-hs400-1_8v     支援eMMC HS400 mode

mmc-hs400-1_2v     支援eMMC HS400 mode

keep-power-in-suspend 表示待機時不掉電

enable-sdio-wakeup    SDIO中斷發生時允許喚醒主機系統

mmc-pwrseq  指定電源上電順序

dsr  表示卡的DSR寄存器的值[從0x00 … 0xffff]

vmmc-supply  指向regulator裝置樹節點

mmc控制器存在子節點時,必須指定下面兩個選項

#address-cells   值必須是1

#size-cells   值必須是0

MMC子節點屬性

reg  該值必須是0~7,其中0表示SD卡,1~7表示SDIO裝置

比如SDIO接口的WIFI晶片

Linux核心驅動基礎-裝置樹相關總線使用
Linux核心驅動基礎-裝置樹相關總線使用

上面有兩個圖,都是用來定義mmc控制器節點屬性

第一個圖描述mmc控制器的不變屬性,比如mmc控制器的寄存器位址,中斷,dma通道,一般定義在.dtsi檔案中

第二個圖描述mmc控制器的可變屬性及其子節點屬性,比如mmc控制器的引腳複用情況,總線位寬,一般定義在.dts檔案中

注意:一般在公用的.dtsi檔案中,添加不變屬性(比如reg屬性,中斷,dma通道),在具體闆卡的 .dts檔案中添加可變屬性(比如GPIO使用情況,引腳複用情況),以及子結點資訊,這樣使得.dtsi檔案和.dts檔案解耦

I2C總線使用執行個體

status  表示使能該總線控制器,enable或者disable

clock-frequency  設定i2c總線頻率,一般為400KHZ或者100KHZ

i2c控制器節點存在子節點時,該控制器節點必須指定下面兩個選項

#address-cells  值必須是1

#size-cells  值必須是0

由于I2C子節點屬性比較簡單,是以不進行任何講解

Linux核心驅動基礎-裝置樹相關總線使用
Linux核心驅動基礎-裝置樹相關總線使用

上面有兩個圖,都是用來定義i2c控制器節點屬性

第一個描述i2c控制器的不變屬性,比如i2c控制器的寄存器位址,中斷,一般定義在.dtsi檔案中

第二個描述子節點屬性,一般定義在.dts檔案中

SPI總線使用執行個體

status  表示使能該總線控制器,enable或者disable

cs-gpios  使用gpio管腳作為片選信号

num-cs  表示片選信号數量,包括原生片選信号和gpio片選信号

比如:cs-gpios = <0>  <0>  <&gpio1 18 GPIO_ACTIVE_LOW>

num-cs = <3>

上述spi控制器片選信号的映射關系如下圖所示

Linux核心驅動基礎-裝置樹相關總線使用

spi控制器節點存在子節點時,該控制器節點必須指定下面兩個選項

#address-cells  值必須是1

#size-cells  值必須是0

SPI子節點屬性

spi-max-frequency  設定spi總線頻率

spi-cs-high  表示spi子裝置片選信号為高電平

spi-tx-bus-width  設定spi控制器輸出總線位寬,預設為1(僅有一根資料線作為MOSI),QSPI(QUAD)總線位寬為4,spi-tx-bus-width = <4>

spi-rx-bus-width  設定spi控制器輸入總線位寬,預設為1(僅有一根資料線作為MISO),QSPI(QUAD)總線位寬為4,spi-rx-bus-width = <4>

Linux核心驅動基礎-裝置樹相關總線使用

上圖為spi控制器節點及其子節點屬性:

網絡phy晶片ks8995m使用cs0片選信号,spi總線頻率為1MHZ

音頻晶片tlv320aic26使用cs1片選信号,spi總線頻率為100KHZ