音频设备树结点分析

设备树结点描述的设备的硬件信息,最简单的设备树结点描述的是GPIO结点,相对复杂的是需要有通信协议的设备节点,下面就通过分析音频模块的设备节点来解析这类设备的设备树结点结构。

音频模块分为三个部分:音频数据接口,控制接口,普通IO接口。

音频模块的描述代码如下:

    sound {
            compatible = "fsl,imx6ul-evk-wm8960",
                     "fsl,imx-audio-wm8960";
            model = "wm8960-audio";
            cpu-dai = <&sai2>;
            audio-codec = <&codec>;
            asrc-controller = <&asrc>;
            codec-master;
            gpr = <&gpr 4 0x100000 0x100000>;
            hp-det = <3 0>;
            hp-det-gpios = <&gpio5 4 0>;
            mic-det-gpios = <&gpio5 4 0>;
            audio-routing =
                "Headphone Jack", "HP_L",
                "Headphone Jack", "HP_R",
                "Ext Spk", "SPK_LP",
                "Ext Spk", "SPK_LN",
                "Ext Spk", "SPK_RP",
                "Ext Spk", "SPK_RN",
                "LINPUT2", "Mic Jack",
                "LINPUT3", "Mic Jack",
                "RINPUT1", "Main MIC",
                "RINPUT2", "Main MIC",    
                "Mic Jack", "MICB",
                "Main MIC", "MICB",
                "CPU-Playback", "ASRC-Playback",
                "Playback", "CPU-Playback",
                "ASRC-Capture", "CPU-Capture",
                "CPU-Capture", "Capture";
            status = "okay";
}

节点中指出:音频数据接口使用sai2节点,而控制接口使用codec节点,还有一个耳机探测使用hp-det-gpios节点。

(1)音频数据节点的代码如下

&sai2 {
    pinctrl-names = "default";
    pinctrl-0 = <&pinctrl_sai2>;

    assigned-clocks = <&clks IMX6UL_CLK_SAI2_SEL>,
              <&clks IMX6UL_CLK_SAI2>;
    assigned-clock-parents = <&clks IMX6UL_CLK_PLL4_AUDIO_DIV>;
    assigned-clock-rates = <0>, <12288000>;

    status = "okay";
};

在节点中使用pinctrl子系统来定义引脚属性,相关引脚的属性在pinctrl_sai2节点中定义,而pinctrl_sai2节点的代码如下

pinctrl_sai2: sai2grp {
            fsl,pins = <
                MX6UL_PAD_JTAG_TDI__SAI2_TX_BCLK    0x17088
                MX6UL_PAD_JTAG_TDO__SAI2_TX_SYNC    0x17088
                MX6UL_PAD_JTAG_TRST_B__SAI2_TX_DATA    0x11088
                MX6UL_PAD_JTAG_TCK__SAI2_RX_DATA    0x11088
                MX6UL_PAD_JTAG_TMS__SAI2_MCLK        0x17088
            >;
        };

(2)控制接口节点,控制接口使用I2C通信协议,定义如下

&i2c2 {
    clock_frequency = <100000>;
    pinctrl-names = "default";
    pinctrl-0 = <&pinctrl_i2c2>;
    status = "okay";

    codec: wm8960@1a {
        compatible = "wlf,wm8960";
        reg = <0x1a>;
        clocks = <&clks IMX6UL_CLK_SAI2>;
        clock-names = "mclk";
        wlf,shared-lrclk;
        };
}

使用哪个I2C控制器,就要在哪个i2c节点下填入设备节点,i2c设备节点描述主要包括时钟频率和地址。

(3)耳机接口

耳机探测接口使用的是PINCTRL节点来定义引脚属性,使用GPIO子系统,方便使用同一的API来输出制定的电平。

总结起来,使用协议的模块通过放在不同的控制器节点下来适配电路板上使用的pin脚,gpio功能的引脚使用pinctrl子系统来定义对应引脚功能,之后定义gpio节点,定义使用什么接口和什么电平是有效电平。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式螺丝钉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值