Linux内核驱动基础(7)设备树相关总线使用实例

时间:2022-04-17 10:30:15

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(1.8v)

mmc-hs200-1_2v     支持eMMC HS200 mode(1.2v)

mmc-hs400-1_8v     支持eMMC HS400 mode(1.8v)

mmc-hs400-1_2v     支持eMMC HS400 mode(1.2v)

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设备

Linux内核驱动基础(7)设备树相关总线使用实例


上面有两个图,都是用来定义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内核驱动基础(7)设备树相关总线使用实例


上面有两个图,都是用来定义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内核驱动基础(7)设备树相关总线使用实例

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内核驱动基础(7)设备树相关总线使用实例

上图为spi控制器节点及其子节点属性:

网络phy芯片ks8995m使用cs0片选信号,spi总线频率为1MHZ

音频芯片tlv320aic26使用cs1片选信号,spi总线频率为100KHZ


转载,请注明  匠牛社区AM5728开发板

Linux内核驱动基础(7)设备树相关总线使用实例