RK3588_X703 音频调试笔记

x703项目扩接板有接喇叭音频,硬件如下:

 喇叭SPK播放无声的时候,首先要测R43贴片电压正常。

需要dts中正确配置SPK_CTL_H的GPIO脚:

es8316_sound: es8316-sound {
		status = "okay";
		compatible = "rockchip,multicodecs-card";
		rockchip,card-name = "rockchip-es8316";
		hp-det-gpio = <&gpio1 RK_PC4 GPIO_ACTIVE_HIGH>; // HP_DET_L
		io-channels = <&saradc 3>;
		io-channel-names = "adc-detect";
		keyup-threshold-microvolt = <1800000>;
		poll-interval = <100>;
		spk-con-gpio = <&gpio4 RK_PA0 GPIO_ACTIVE_HIGH>; // SPK_CTL_H
		hp-con-gpio = <&gpio4 RK_PC2 GPIO_ACTIVE_LOW>; // HP_CTL_L
		rockchip,format = "i2s";
		rockchip,mclk-fs = <256>;
		rockchip,cpu = <&i2s0_8ch>;
		rockchip,codec = <&es8316>;
		rockchip,audio-routing =
			"Headphone", "HPOL",
			"Headphone", "HPOR",
			"Speaker", "HPOL",
			"Speaker", "HPOR",
			"Headphone", "Headphone Power",
			"Headphone", "Headphone Power",
			"Speaker", "Speaker Power",
			"Speaker", "Speaker Power",
			"MIC1", "Main Mic",
			"MIC2", "Headset Mic";
		pinctrl-names = "default";
		pinctrl-0 = <&hp_det>;
		play-pause-key {
			label = "playpause";
			linux,code = <KEY_PLAYPAUSE>;
			press-threshold-microvolt = <2000>;
		};
	};

这里GPIO_ACTIVE_LOW(低有效) 和 GPIO_ACTIVE_HIGH(高有效):
GPIO_ACTIVE_LOW :那么 1 有效(灯亮) 就是低电平; 0 无效(灯灭) 就是高电平 (物理电平)
GPIO_ACTIVE_HIGH :那么 1 有效(灯亮) 就是高电平; 0 无效(灯灭) 就是低电平 (物理电平)

可以这样理解:例如一个LED,拉低点亮。那么在配置设备树的时候这个GPIO就应该设置GPIO_ACTIVE_LOW。

这里SPK_CTL_H配置拉高有效,有效为高电平。

正产情况下,播放音乐,这里SPK_CTL_H能够用万用表测到电压。(高电平)

hp_det:引脚配置:

headphone {
		hp_det: hp-det {
			rockchip,pins = 
			<1 RK_PC4 RK_FUNC_GPIO &pcfg_pull_up>,
			<4 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};

这里配置耳机检测脚pin内部拉高。如上的pcfg_pull_up。

H:高电平没插入耳机。

L:低电平插入耳机。

因为X703硬件没有耳机接口,不需要耳机功能。

并且配置hp-det-gpio脚为GPIO_ACTIVE_HIGH(高有效),不然耳机插入节点会被上层读取到。上层一直按照耳机插入的流程处理。

hp-con-gpio耳机控制脚硬件没有,可以用一个没用的脚位配置。

hp-con-gpio、hp-det-gpio和spk-con-gpio三个脚位在代码中sound/soc/rockchip/rockchip_multicodecs.c中rk_multicodecs_probe函数是需要配置,硬件没有可以的,可以用没有使用的GPIO口配置。

猜你喜欢

转载自blog.csdn.net/zhoudidong/article/details/130172462
今日推荐