您好!
实际上、我正在开发在 devicetree 中实现 MAX9860单声道音频语音编解码器。
TLV320AIC3204音频编解码器工作正常 、操作系统(嵌入式 Linux)可以使用命令"aplay -l "来查看它。
因此、在内核中、我已经激活了 MAX9860音频编解码器、但是、我不知道如何在 TLV 编解码器旁边的器件树中声明它。
因此、我已经在 i2c 节点中尝试过类似的操作:
max9860:max9860@10{
兼容="maxim、max9860";
reg =<0x10>;
时钟=<&max9860_clock>;
时钟名称="MCLK";
supple-av =<_aud_AVDD>;
supple-dv =<_aud_dvdd>;
supple-dvdio =<_aud_dvdio>;
};
然后、我添加了一个稳压器
reg_aud_dvdio:reg_aud_dvdio{
兼容="稳压器固定";
电脑控制器名称="dvdio";
稳压器最小微伏=<1800000>;
稳压器最大值微伏=<1800000>;
稳压器常开;
};
然后、我在"时钟"中创建了一个子节点"max9860_clock"
时钟{
CODEC 时钟:clk12M{
兼容="固定时钟";
#clock-cells =<0>;
时钟频率=<12000000>;
};
max9860_clock:clkmax9860{
兼容="固定时钟";
#clock-cells =<0>;
时钟频率=<12288000>;
};
};
当我这样声明时、devicetree 编译良好、当我在嵌入式系统 Linux 的命令行上放置"i2cdetect -y 0"时、地址0x10 (MAX9860)会显示 UU。 但是、当我在 Linux 上执行命令"aplay -l "时、编解码器不会出现。
因此、我的声音节点看起来像这样:
听起来{
兼容="eukrea、ASOC-tlv320";
eukrea、model ="TLV320AIC3204音频编解码器";
SSI-controller =<&SSI1>;
codec-handle =<编解码器>;
FSL、mux-int-port =<1>;
FSL、mux-ext-port =<3>;
状态="正常";
};
SSI1{(&S)
codec-handle =<编解码器>;
FSL、MODE ="I2S-SLAVE;
状态="正常";
};
SSI2{
编解码器句柄=<&max9860>;
FSL、MODE ="I2S-SLAVE;
状态="正常";
};
我知道我应该修改声音节点来指定 MAX9860、但我已经尝试了、但这并不成功、我遇到了编译错误:
秘书长的报告
Sound0:声音@0{
兼容="简单音频卡";
简单音频卡、小工具="耳机"、"耳机插孔";
简单音频卡,路由=
"耳机插孔"、"HPLEFT"、
"耳机插孔"、"HPRIGHT"、
"LEFTIN"、"HPL"、
"RIGHTIN"、"HPR";
简单音频卡、CPU{
Sound-Dai =<&SSI2>;
};
简单音频卡、编解码器{
Sound-Dai =<&max9860>;
时钟=<&max9860_clock>;
};
}
Sound1:声音@1{
兼容="eukrea、ASOC-tlv320";
}
听起来{
兼容="eukrea、ASOC-tlv320";
eukrea、model ="TLV320AIC3204音频编解码器";
SSI-controller =<&SSI1>;
codec-handle =<编解码器>;
FSL、mux-int-port =<1>;
FSL、mux-ext-port =<3>;
状态="正常";
};
秘书长的报告
我在这种环境中很新,所以如果有人有一个可以帮助的想法,谢谢:-)
此致、Anthony