Linux音频调试示例

硬件设计

cpu codec peripheral interface
nvidia-jetson max9867 line-in×1, hp×1

  codec与cpu之间通过i2c读写寄存器,i2s传输音频信号(i2s总线简介)。
  cpu作为主设备,codec作为从设备,cpu提供主时钟(aud_mclk)。
  codec连接1路line-in,1路headphone。

设备树

  因为cpu是nvidia jetson系列,所以基于Nvidia官方释放的“L4T Sources”(Jetson下载中心)修改。

在i2c节点添加设备

/ {
   
	i2c@c250000 {
   		// 硬件连通的i2c通道
		status = "okay";
		max9867: codec@18 {
   
			compatible = "maxim,max9867";		// 与官方驱动匹配
			reg = <0x18>;						// i2c地址
		};
	}};

使能i2s总线

// 在tegraxx_soc_audio.dtsi中查找
/ {
   
	aconnect@2a41000 {
   
		ahub {
   
			i2s@2901300 {
   		// 硬件连通的i2s通道
				status = "okay";
			};
		};
	};
};

添加dai_link

/ {
   
	sound {
   
		status = "okay";
		compatible = "nvidia,tegra-audio-t186ref-mobile";		// 修改,与rt565x解绑
		nvidia,model = "tegra-snd-t19x-mobile";		// 修改,与rt565x解绑

		nvidia,audio-routing =		// 需要与codec驱动匹配,从右到左,代表数据流向
                					// x是前缀,与dai-link的name-prefix匹配
			"x LINE_IN",    "x Linein",
			"x Headphone",  "x HPOUT"
                        
		nvidia,dai-link-1 {
   		// dai-link,与codec和i2s匹配
								// codec-dai-name与codec驱动匹配
			link-name = "max9867";
			cpu-dai = <&tegra_i2s1>;
			codec-dai = <&max9867>;
			cpu-dai-name = "I2S1";
			codec-dai-name = "max9867-aif1";
			name-prefix = "x";
		};
		// 只用到一路,其余nvidia,dai-link设置“disabled”
	};
};
// max9867.c
static struct snd_soc_dai_driver max9867_dai[] = {
   
        {
   
        .name = "max9867-aif1",		// 匹配nvidia,dai-link中的codec-dai-name
		... ...
        }
};

修改pinmux

/ {
   
	pinmux@2430000 {
   
		pinmux_default: common {
   
			// audio mclk pin
			aud_mclk_ps4 {
   
				nvidia,pins = "aud_mclk_ps4";
				nvidia,function = "aud";
				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
				nvidia,tristate = <TEGRA_PIN_DISABLE>;
				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
				nvidia,lpdr = <TEGRA_PIN_DISABLE>;
			};
			// i2s pins
			dap5_sclk_pt5 {
   
				nvidia,pins = "dap5_sclk_pt5";
				nvidia,function = "rsvd2";
				nvidia,pull = <TEGRA_PIN_PULL
  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值