飞凌OKMX6Q/DL-C声卡移植,从板级文件到设备树

OKMX6Q/DL-C使用得内核是3.0.35而移植使用得是4.1.15,,OKMX6Q/DL-C使用的是板级文件,移植后使用设备树。

内核使用得是飞思卡尔官方得IMX6Q的内核,设备树关于声卡部分也是参考飞思卡尔imx6qdl-sabresd.dtsi的。芯片都是使用的是WM8962.

这是飞思卡尔官方的声卡电路图,


这个是飞凌需要移植声卡驱动板子的电路图


由于他们使用的管脚都是相同的,所以就直接将飞思卡尔的设备树信息直接考过来,下面就是拷贝下来的,顺序是乱的。

sound {
		compatible = "fsl,imx6q-sabresd-wm8962",
			   "fsl,imx-audio-wm8962";
		model = "wm8962-audio";
		cpu-dai = <&ssi2>;
		audio-codec = <&codec>;
		asrc-controller = <&asrc>;
		audio-routing =
		"Headphone Jack", "HPOUTL",
		"Headphone Jack", "HPOUTR",
		"Ext Spk", "SPKOUTL",
		"Ext Spk", "SPKOUTR",
		"AMIC","MICBIAS", 
		"IN3R", "MICBIAS",
		"DMIC", "MICBIAS",
		"DMICDAT", "DMIC",
			 "CPU-Playback", "ASRC-Playback",
			  "Playback", "CPU-Playback",
			 "ASRC-Capture",  "CPU-Capture",
			 "CPU-Capture", "Capture";
		mux-int-port = <2>;
		mux-ext-port = <3>;
		codec-master;
		hp-det-gpios = <&gpio7 8 0>;
		mic-det-gpios = <&gpio1 9 0>;
	};

sound-hdmi {
		compatible = "fsl,imx6q-audio-hdmi",
			     "fsl,imx-audio-hdmi";
		model = "imx-audio-hdmi";
		hdmi-controller = <&hdmi_audio>;
	};
//这是在I2C1下面的
codec: wm8962@1a {
		compatible = "wlf,wm8962";
		reg = <0x1a>;
		clocks = <&clks IMX6QDL_CLK_CKO>;
		DCVDD-supply = <&reg_audio>;
		DBVDD-supply = <&reg_audio>;
		AVDD-supply = <&reg_audio>;
		CPVDD-supply = <&reg_audio>;
		MICVDD-supply = <&reg_audio>;
		PLLVDD-supply = <&reg_audio>;
		SPKVDD1-supply = <&reg_audio>;
		SPKVDD2-supply = <&reg_audio>;
		gpio-cfg = <
			0x0000 /* 0:Default */
			0x0000 /* 1:Default */
			0x0013 /* 2:FN_DMICCLK */
			0x0000 /* 3:Default */
			0x8014 /* 4:FN_DMICCDAT */
			0x0000 /* 5:Default */
		>;
       };

&ssi2 {
	status = "okay";
};

                MX6QDL_PAD_DISP0_DAT19__AUD5_RXD 0x130b0
		MX6QDL_PAD_KEY_COL0__AUD5_TXC 0x130b0
		MX6QDL_PAD_KEY_ROW0__AUD5_TXD 0x110b0
		MX6QDL_PAD_KEY_COL1__AUD5_TXFS 0x130b0
		MX6QDL_PAD_GPIO_5__CCM_CLKO1 0x130b0	

编译后运行内核打印出现如下信息:



然后也没有声音,一度认识是使能的端口配置错误,还有就是ASoC打印的错误,错误认为驱动没有编译完全,还差一些模块。结果很长一段时间后,在网上看到说出现了ASoC这样这个一样的错误,但是也能够有声音输出。

最后是因为声音没有打开,在最小,所以没有声音,用amixer scontrols查看声音控制对应的名字,因为我用的是耳机,所以用amixer set Headphone 100%把声音开到最大,然后就有声音了。



发现完全耳机插进去没有声音,反而需要拔出来一点才有声音,如上图紫色圈出的控制端口来控制耳机接口与音响接口的声音切换。控制的电平反了,所以在设备树中原来是1的设置为0就正确了。


总结:虽然移植很简单,但是被内核打印的错误信息给误导了,使得浪费了很多时间。还是得记录一下,免得以后忘记了,再次被误导。

猜你喜欢

转载自blog.csdn.net/qq_41133610/article/details/80366336
今日推荐