This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] BEAGL-BON-BLACK:TLV320AIC3256的 AM335x-bonebblack-common.dtsi 更改了 DT

Guru**** 661510 points
Other Parts Discussed in Thread: TLV320AIC3256, TLV320AIC3256EVM-U, AM3358, TLV320AIC3106
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1129617/beagl-bone-black-dt-changes-for-am335x-boneblack-common-dtsi-for-tlv320aic3256

部件号:BEAGL-Bone-BLK
主题中讨论的其他器件:TLV320AIC3256TLV320AIC3256EVM-UAM3358TLV320AIC3106

您好!

我们尝试使用 Beagle Bone Black 修订版 C 配置 TLV320AIC3256音频编解码器

以下是我们所做的 DT 节点更改:

&i2c2 {

	status = "okay";
	//tda19988: tda19988@70 {
	//	compatible = "nxp,tda998x";
	//	reg = <0x70>;
	//	nxp,calib-gpios = <&gpio1 25 0>;
	//	interrupts-extended = <&gpio1 25 IRQ_TYPE_LEVEL_LOW>;
	//
	//	pinctrl-names = "default", "off";
	//	pinctrl-0 = <&nxp_hdmi_bonelt_pins>;
	//	pinctrl-1 = <&nxp_hdmi_bonelt_off_pins>;

		/* Convert 24bit BGR to RGB, e.g. cross red and blue wiring */
		/* video-ports = <0x234501>; */

	//	#sound-dai-cells = <0>;
	//	audio-ports = <	TDA998x_I2S	0x03>;

	//	ports {
	//		port@0 {
	//			hdmi_0: endpoint@0 {
	//				remote-endpoint = <&lcdc_0>;
	//			};
	//		};
	//	};
	//};

	tlv320aic32x6: tlv320aic32x6@18 {
		status = "okay";
		compatible = "ti,tlv320aic32x6";
		reg = <0x18>;
		ldoin-supply = <&reg_audio_3v3>;
		iov-supply = <&reg_audio_3v3>;
	};

};

sound {
    ...
		simple-audio-card,codec {
			sound-dai = <&tlv320aic32x6>;
		};
	...
};

reg_audio_3v3: regulator-audio-3v3 {
		compatible = "regulator-fixed";
		regulator-name = "VCC3V3_AUDIO";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		regulator-always-on;
};

&am33xx_pinmux {
    ...
    mcasp0_pins: mcasp0_pins {
		pinctrl-single,pins = <
			AM33XX_PADCONF(AM335X_PIN_MCASP0_AHCLKX, PIN_INPUT_PULLUP, MUX_MODE0) /* mcasp0_ahcklx.mcasp0_ahclkx */
			AM33XX_PADCONF(AM335X_PIN_MCASP0_AHCLKR, PIN_OUTPUT_PULLDOWN, MUX_MODE2) /* mcasp0_ahclkr.mcasp0_axr2*/
			AM33XX_PADCONF(AM335X_PIN_MCASP0_FSX, PIN_OUTPUT_PULLUP, MUX_MODE0)
			AM33XX_PADCONF(AM335X_PIN_MCASP0_ACLKX, PIN_OUTPUT_PULLDOWN, MUX_MODE0)
			AM33XX_PADCONF(AM335X_PIN_MCASP0_AXR0, PIN_OUTPUT_PULLDOWN, MUX_MODE0)
			AM33XX_PADCONF(AM335X_PIN_GPMC_A11, PIN_OUTPUT_PULLDOWN, MUX_MODE7) /* gpmc_a11.GPIO1_27 */
		>;
    };
    ...
};

我们在 Audio Codeck EVK 和 BBB 之间建立了以下连接:

我们在内核启动期间收到此错误: 'tlv320aic32x4 2-0018:无法解析 DT 节点'

我们还无法确定是否需要在 DT 中添加 I2C2引脚配置、因为在 AM335x-bonebreblack 中、我们在前面提到的端口0引脚 i2c2中看到了 DTS、

&gpio0 {
        gpio-line-names =
                ...
                "P9_20 [i2c2_sda]",
                "P9_19 [i2c2_scl]",
                ...;
};

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您是否曾尝试将 print 语句添加到  tlv320aic32x4驱动程序中,以确定 解析 DT 节点失败的原因?

    此致、
    Krunal

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Krunal、

    我们能够发现、不在 tlv320aic32x6节点中定义时钟是触发该错误的原因。 我仍然对如何定义该时钟属性感到困惑。 下面是我正在使用的更新的 i2c2节点:

    &i2c2 {
    
            pinctrl-names = "default";
            pinctrl-0 = <&i2c2_pins>;
            status = "okay";
            tlv320aic32x6: tlv320aic32x6@18 {
                    compatible = "ti,tlv320aic32x6";
                    reg = <0x18>;
                    #clock-cells = <0>;
                    clock-names = "mclk";
                    //clocks = <117>;
                    clocks = <&gpio3 21 0>;
                    ldoin-supply = <&reg_audio_3v3>;
                    iov-supply = <&reg_audio_3v3>;
                    status = "okay";
            };
    };
    
    &am33xx_pinmux {
            ...
            i2c2_pins: i2c2_pins {
                    pinctrl-single,pins = <
                            AM33XX_PADCONF(AM335X_PIN_UART1_RTSN, PIN_INPUT, MUX_MODE3) /* UART1_RTSN.I2C2_SCL*/
                            AM33XX_PADCONF(AM335X_PIN_UART1_CTSN, PIN_INPUT, MUX_MODE3) /* UART1_RTSN.I2C2_SDA*/
                    >;
            };
            ...
    };

    对于时钟、我们使用了与 I2S 用作 MCLK 相同的引脚

    但现在我们可以在内核日志中看到、由于某种原因、tlv320aic32x6使用 i2c0而不是 i2c2进行探测

    错误:  

    [ 13.121743]、共页:/ocp/interconnect@48000000/段@100000/目标模块@9c000/i2c@0/tlv320aic32x6@18:无法获取/ocp/interconnect@48000000/segmnt@100000/目标模块@ae000/GPIO@0的#clock-cells
    [ 13.142736]、共:/ocp/interconnect@48000000/段@100000/目标模块@9c000/i2c@0/tlv320aic32x6@18:无法获取/ocp/interconnect@48000000/段@100000 /目标模块@ae000/GPIO@0的#clock-cells

    此外、我无法从 TLV320AIC3256数据表中找到从器件地址。 我使用了0x18、因为各种示例都使用了相同的值。 如果需要纠正、请告诉我。

    我希望能为推动这一进程提供任何帮助。

    谢谢、

    闪烁。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Twinkle、

    如果您要执行 i2cdetect -r -y 2、您是否看到检测到地址?

    此致、
    Krunal

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Krunal、

    我想在2天前的回复中有一些问题。 无论如何、删除该内容并重新发布以下内容。

    是的、正在检测到设备。 编解码器的从器件地址为0x18。 下面是 i2cdetect 的响应:

    谢谢、

    闪烁

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    器件正在探测中、我不确定您仍遇到什么问题。

    此致、
    Krunal

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Krunal、

    即使在 i2c 中检测到器件、aplay -l 或 record -l 也不显示任何器件。 在下面添加最新的 AM335x-bonebblack-common.dtsi 文件、

    // SPDX-License-Identifier: GPL-2.0-only
    /*
     * Copyright (C) 2012 Texas Instruments Incorporated - https://www.ti.com/
     */
    
    #include <dt-bindings/display/tda998x.h>
    #include <dt-bindings/interrupt-controller/irq.h>
    
    &ldo3_reg {
    	regulator-min-microvolt = <1800000>;
    	regulator-max-microvolt = <1800000>;
    	regulator-always-on;
    };
    
    &mmc1 {
    	vmmc-supply = <&vmmcsd_fixed>;
    };
    
    &mmc2 {
    	vmmc-supply = <&vmmcsd_fixed>;
    	pinctrl-names = "default";
    	pinctrl-0 = <&emmc_pins>;
    	bus-width = <8>;
    	status = "okay";
    	non-removable;
    };
    
    &am33xx_pinmux {
    	nxp_hdmi_bonelt_pins: nxp_hdmi_bonelt_pins {
    		pinctrl-single,pins = <
    			AM33XX_PADCONF(AM335X_PIN_XDMA_EVENT_INTR0, PIN_OUTPUT_PULLDOWN, MUX_MODE3)
    			AM33XX_PADCONF(AM335X_PIN_LCD_DATA0, PIN_OUTPUT, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_LCD_DATA1, PIN_OUTPUT, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_LCD_DATA2, PIN_OUTPUT, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_LCD_DATA3, PIN_OUTPUT, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_LCD_DATA4, PIN_OUTPUT, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_LCD_DATA5, PIN_OUTPUT, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_LCD_DATA6, PIN_OUTPUT, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_LCD_DATA7, PIN_OUTPUT, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_LCD_DATA8, PIN_OUTPUT, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_LCD_DATA9, PIN_OUTPUT, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_LCD_DATA10, PIN_OUTPUT, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_LCD_DATA11, PIN_OUTPUT, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_LCD_DATA12, PIN_OUTPUT, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_LCD_DATA13, PIN_OUTPUT, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_LCD_DATA14, PIN_OUTPUT, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_LCD_DATA15, PIN_OUTPUT, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_LCD_VSYNC, PIN_OUTPUT_PULLDOWN, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_LCD_HSYNC, PIN_OUTPUT_PULLDOWN, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_LCD_PCLK, PIN_OUTPUT_PULLDOWN, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_LCD_AC_BIAS_EN, PIN_OUTPUT_PULLDOWN, MUX_MODE0)
    		>;
    	};
    
    	nxp_hdmi_bonelt_off_pins: nxp_hdmi_bonelt_off_pins {
    		pinctrl-single,pins = <
    			AM33XX_PADCONF(AM335X_PIN_XDMA_EVENT_INTR0, PIN_OUTPUT_PULLDOWN, MUX_MODE3)
    		>;
    	};
    
    	mcasp0_pins: mcasp0_pins {
    		pinctrl-single,pins = <
    			AM33XX_PADCONF(AM335X_PIN_MCASP0_AHCLKX, PIN_INPUT_PULLUP, MUX_MODE0)  /*mcasp0_ahcklx.mcasp0_ahclkx */
    			AM33XX_PADCONF(AM335X_PIN_MCASP0_AHCLKR, PIN_OUTPUT_PULLDOWN, MUX_MODE2) /* mcasp0_ahclkr.mcasp0_axr2*/
    			AM33XX_PADCONF(AM335X_PIN_MCASP0_FSX, PIN_OUTPUT_PULLUP, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_MCASP0_ACLKX, PIN_OUTPUT_PULLDOWN, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_MCASP0_AXR0, PIN_OUTPUT_PULLDOWN, MUX_MODE0)
    			/*AM33XX_PADCONF(AM335X_PIN_GPMC_A11, PIN_OUTPUT_PULLDOWN, MUX_MODE7)  gpmc_a11.GPIO1_27 */
    		>;
    	};
    	i2c2_pins: i2c2_pins {
    		pinctrl-single,pins = <
    			AM33XX_PADCONF(AM335X_PIN_UART1_RTSN, PIN_INPUT, MUX_MODE3) /* uart1_rtsn.i2c2_scl*/
    			AM33XX_PADCONF(AM335X_PIN_UART1_CTSN, PIN_INPUT, MUX_MODE3) /* uart1_ctsn.i2c2_sda*/
    		>;
    	};
    };
    
    &lcdc {
    	status = "okay";
    
    	/* If you want to get 24 bit RGB and 16 BGR mode instead of
    	 * current 16 bit RGB and 24 BGR modes, set the propety
    	 * below to "crossed" and uncomment the video-ports -property
    	 * in tda19988 node.
    	 */
    	blue-and-red-wiring = "straight";
    
    	port {
    		lcdc_0: endpoint@0 {
    			remote-endpoint = <&hdmi_0>;
    		};
    	};
    };
    
    &i2c0 {
    
    	tda19988: tda19988@70 {
    		compatible = "nxp,tda998x";
    		reg = <0x70>;
    		nxp,calib-gpios = <&gpio1 25 0>;
    		interrupts-extended = <&gpio1 25 IRQ_TYPE_LEVEL_LOW>;
    		pinctrl-names = "default", "off";
    		pinctrl-0 = <&nxp_hdmi_bonelt_pins>;
    		pinctrl-1 = <&nxp_hdmi_bonelt_off_pins>;
    
    		/* Convert 24bit BGR to RGB, e.g. cross red and blue wiring */
    		/* video-ports = <0x234501>; */
    
    		#sound-dai-cells = <0>;
    		audio-ports = <	TDA998x_I2S	0x03>;
    
    		ports {
    			port@0 {
    				hdmi_0: endpoint@0 {
    					remote-endpoint = <&lcdc_0>;
    				};
    			};
    		};
    	};
    };
    
    &i2c2 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&i2c2_pins>;
    	clock-frequency = <400000>;
    	status = "okay";
    
    	tlv320aic32x6: tlv320aic32x6@18 {
    		#sound-dai-cells = <0>;
    		compatible = "ti,tlv320aic32x6";
    		reg = <0x18>;
    		clock-names = "mclk";
    		clocks = <&clk_mcasp0>;
    		iov-supply = <&reg_audio_3v3>;
    		dv-supply = <&reg_audio_1v8>;
    		av-supply = <&reg_audio_1v8>;
    		reset-gpios = <&gpio1 16 GPIO_ACTIVE_LOW>;
    		status = "okay";
    	};
    
    };
    
    &rtc {
    	system-power-controller;
    };
    
    &mcasp0	{
    	#sound-dai-cells = <0>;
    	pinctrl-names = "default";
    	pinctrl-0 = <&mcasp0_pins>;
    	status = "okay";
    	op-mode = <0>;	/* MCASP_IIS_MODE */
    	tdm-slots = <2>;
    	serial-dir = <	/* 0: INACTIVE, 1: TX, 2: RX */
    			1 0 2 0
    		>;
    	tx-num-evt = <32>;
    	rx-num-evt = <32>;
    };
    
    / {
    	memory@80000000 {
    		device_type = "memory";
    		reg = <0x80000000 0x20000000>; /* 512 MB */
    	};
    
    	clk_mcasp0_fixed: clk_mcasp0_fixed {
    		#clock-cells = <0>;
    		compatible = "fixed-clock";
    		clock-frequency = <24576000>;
    	};
    
    	clk_mcasp0: clk_mcasp0 {
    		#clock-cells = <0>;
    		compatible = "gpio-gate-clock";
    		clocks = <&clk_mcasp0_fixed>;
    		enable-gpios = <&gpio1 27 0>; /* BeagleBone Black Clk enable on GPIO1_27 */
    	};
    
    	sound {
    		compatible = "simple-audio-card";
    		status = "okay";
    		simple-audio-card,name = "TI BeagleBone Black";
    		simple-audio-card,widgets =
    			"Headphone", "Headphone Jack",
    			"Line", "Line Out",
    			"Mic", "Mic Bias";
    		simple-audio-card,routing =
    			"Headphone Jack", "HPL",
            		"Headphone Jack", "HPR",
    		        "Line Out", "LOL",
    		        "Line Out", "LOR",
    		        "Mic Jack", "IN1_L",
    		        "Mic Jack", "IN1_R",
    		        "Mic Jack", "IN2_L",
    		        "Mic Jack", "IN2_R",
    		        "Mic Jack", "IN3_L",
    		        "Mic Jack", "IN3_R",
    		        "Mic Jack", "Mic Bias",
    		        "CM_L", "Mic Bias",
    		        "CM_R", "Mic Bias";
    		simple-audio-card,format = "i2s";
    		simple-audio-card,bitclock-master = <&dailink0_master>;
    		simple-audio-card,frame-master = <&dailink0_master>;
    
    		dailink0_master: simple-audio-card,cpu {
    			sound-dai = <&mcasp0>;
    			clocks = <&clk_mcasp0>;
    		};
    
    		simple-audio-card,codec {
    			sound-dai = <&tlv320aic32x6>;
    			//sound-dai = <&tda19988>;
    		};
    	};
    
    	reg_audio_3v3: regulator-audio-3v3 {
    		compatible = "regulator-fixed";
    		regulator-name = "VCC3V3_AUDIO";
    		regulator-min-microvolt = <3300000>;
    		regulator-max-microvolt = <3300000>;
    		regulator-always-on;
    	};
    
    	reg_audio_1v8: regulator-audio-1v8 {
    		compatible = "regulator-fixed";
    		regulator-name = "VCC1V8_AUDIO";
    		regulator-min-microvolt = <1800000>;
    		regulator-max-microvolt = <1800000>;
    		regulator-always-on;
    	};
    };

    我们尝试观察不同的时钟:MCLK:11.3MHz、WCLK:44KHz、BCLK:2.8MHz。

    我们仍然不明白为什么 alsa 实用程序无法检测编解码器。 我们 还通过 menuconfig 启用了驱动程序、

    我们感谢帮助我们使这项工作得以开展。

    谢谢、

    闪烁

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Twinkle、

    McASP 是您系统中的主站吗? 在引导日志中观察到任何 McASP 或编解码器错误?  

    此致、
    Krunal

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Krunal、

    根据当前的 AM335x-bonebblack-common.dtsi、McASP0是主器件。

    我们没有看到有关 tlv、McASP、音频或声音的任何错误。 日志如下:

    root@beaglebone:~# dmesg | grep -i tlv
    [    7.122265] of_get_named_gpiod_flags: parsed 'reset-gpios' property of node '/ocp/interconnect@48000000/segment@100000/target-module@9c000/i2c@0/tlv320aic32x6@18[0]-
     status (0)
    root@beaglebone:~# dmesg | grep -i audio
    [    3.203092] reg-fixed-voltage regulator-audio-3v3: GPIO lookup for consumer (null)
    [    3.203112] reg-fixed-voltage regulator-audio-3v3: using device tree for GPIO lookup
    [    3.203161] of_get_named_gpiod_flags: can't parse 'gpios' property of node '/regulator-audio-3v3[0]'
    [    3.203201] of_get_named_gpiod_flags: can't parse 'gpio' property of node '/regulator-audio-3v3[0]'
    [    3.203226] reg-fixed-voltage regulator-audio-3v3: using lookup tables for GPIO lookup
    [    3.203245] reg-fixed-voltage regulator-audio-3v3: No GPIO consumer (null) found
    [    3.204142] reg-fixed-voltage regulator-audio-1v8: GPIO lookup for consumer (null)
    [    3.204160] reg-fixed-voltage regulator-audio-1v8: using device tree for GPIO lookup
    [    3.204204] of_get_named_gpiod_flags: can't parse 'gpios' property of node '/regulator-audio-1v8[0]'
    [    3.204244] of_get_named_gpiod_flags: can't parse 'gpio' property of node '/regulator-audio-1v8[0]'
    [    3.204269] reg-fixed-voltage regulator-audio-1v8: using lookup tables for GPIO lookup
    [    3.204287] reg-fixed-voltage regulator-audio-1v8: No GPIO consumer (null) found
    [   10.162356] hdmi-audio-codec hdmi-audio-codec.1.auto: no of_node; not parsing pinctrl DT
    root@beaglebone:~# dmesg | grep -i sound
    [    3.214371] Advanced Linux Sound Architecture Driver Initialized.
    [    7.310250]   No soundcards found.
    root@beaglebone:~# dmesg | grep -i mcasp
    root@beaglebone:~# 

    在下面添加最新的 AM335x-bonebblack-common.dtsi 文件、

    &i2c2 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&i2c2_pins>;
    	clock-frequency = <400000>;
    	status = "okay";
    
    	tlv320aic32x6: tlv320aic32x6@18 {
    		#sound-dai-cells = <0>;
    		compatible = "ti,tlv320aic32x6";
    		reg = <0x18>;
    		clock-names = "mclk";
    		clocks = <&tlv320aic3256_mclk>;
    		iov-supply = <&reg_audio_3v3>;
    		dv-supply = <&reg_audio_1v8>;
    		av-supply = <&reg_audio_1v8>;
    		reset-gpios = <&gpio1 16 GPIO_ACTIVE_LOW>;
    		status = "okay";
    	};
    };
    
    &mcasp0	{
    	#sound-dai-cells = <0>;
    	pinctrl-names = "default";
    	pinctrl-0 = <&mcasp0_pins>;
    	status = "okay";
    	op-mode = <0>;	/* MCASP_IIS_MODE */
    	tdm-slots = <2>;
    	serial-dir = <	/* 0: INACTIVE, 1: TX, 2: RX */
    			1 0 2 0
    		>;
    	tx-num-evt = <32>;
    	rx-num-evt = <32>;
    };
    
    / {
    	...
    
    	tlv320aic3256_mclk: tlv320aic3256_mclk {
                    compatible = "fixed-clock";
                    #clock-cells = <0>;
                    clock-frequency = <25000000>;
            };
    
    	sound {
    		compatible = "simple-audio-card";
    		status = "okay";
    		simple-audio-card,name = "Twinkle Audio Card";
    		simple-audio-card,widgets =
    			"Headphone", "Headphone Jack",
    			"Line Out", "Line Out",
    			"Line In", "Mic Jack";
    		simple-audio-card,routing =
    			"Headphone Jack", "HPL",
            		"Headphone Jack", "HPR",
    		        "Line Out", "LOL",
    		        "Line Out", "LOR",
    		        "Mic Jack", "IN1_L",
    		        "Mic Jack", "IN1_R",
    		        "Mic Jack", "IN2_L",
    		        "Mic Jack", "IN2_R",
    		        "Mic Jack", "IN3_L",
    		        "Mic Jack", "IN3_R",
    		        "Mic Jack", "Mic Bias",
    		        "CM_L", "Mic Bias",
    		        "CM_R", "Mic Bias";
    
    		simple-audio-card,format = "i2s";
    		simple-audio-card,bitclock-master = <&dailink0_master>;
    		simple-audio-card,frame-master = <&dailink0_master>;
    
    		dailink0_master: simple-audio-card,cpu {
    			sound-dai = <&mcasp0>;
    		};
    
    		simple-audio-card,codec {
    			sound-dai = <&tlv320aic32x6>;
    		};
    	};
    
    	reg_audio_3v3: regulator-audio-3v3 {
    		compatible = "regulator-fixed";
    		regulator-name = "VCC3V3_AUDIO";
    		regulator-min-microvolt = <3300000>;
    		regulator-max-microvolt = <3300000>;
    		regulator-always-on;
    		regulator-boot-on;
    	};
    
    	reg_audio_1v8: regulator-audio-1v8 {
    		compatible = "regulator-fixed";
    		regulator-name = "VCC1V8_AUDIO";
    		regulator-min-microvolt = <1800000>;
    		regulator-max-microvolt = <1800000>;
    		regulator-always-on;
    		regulator-boot-on;
    	};
    };

    感谢您的帮助。

    谢谢、

    闪烁

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Krunal、

    我们 发现之前提到的时钟是由 TLV320AIC3256EVM-U 而非 AM3358提供的。 我们能够禁用从 TLV EVK 通过 USB 控制器的时钟。 我们能够在 BBB 上启用来自 MCASP 的 MCK、但现在我们观察到 AM3358未向 TLV IC 提供 WCLK 或 BCLK。 您能不能详细了解我们的 dtsi 配置、并告诉我们时钟出了什么问题?

    此致、

    闪烁

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我 还会在 dailink0_master 节点中添加以下内容:

    系统时钟频率=<24000000>; 
    系统时钟方向输出; 

    此外、如果 McASP 处于空闲状态、并且您需要使用 aplay 或 gstreamer 播放声音、则不会提供时钟。

    此致、
    Krunal

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Krunal、

    我们尝试添加时钟因子、但使用12MHz、因为这是我们想要的频率。 我们仍然看不到 MCLK。 我们也无法运行 aplay、因为没有检测到声卡。 日志、

    root@BeagleBone:~# aplay /usr/share/sounds/alsa/Noise.wav
    ALSA lib ./../alsa-lib-1.2.1.2/src/confmisc.c:767:(parse_card)找不到卡"0"
    ALSA lib ./../alsa-lib-1.2.1.2/src/conf.c:4660:(_snd_config_evaluate)函数 snd_func_card_driver 返回错误:没有此类文件或目录
    ALSA lib ./../alsa-lib-1.2.1.2/src/confmisc.c:392:(snd_func_connat)评估字符串时出错
    ALSA lib ./../alsa-lib-1.2.1.2/src/conf.c:4660:(_snd_config_evaluate)函数 snd_func_connat 返回错误:没有此类文件或目录
    ALSA lib ./../alsa-lib-1.2.1.2/src/confmisc.c:1246:(snd_func_refe)评估名称时出错
    ALSA lib ./../alsa-lib-1.2.1.2/src/conf.c:4660:(_snd_config_evaluate)函数 snd_func_refer 返回错误:无此类文件或目录
    ALSA lib ./../alsa-lib-1.2.1.2/src/conf.c:5148:(snd_config_expand) evaluate error:no such file or directory
    ALSA lib ./../../alsa-lib-1.2.1.2/src/pcm/pcm.c:2642:(snd_pcm_open_noupdate)未知 PCM 默认值
    aplay:main:828:音频打开错误:无此类文件或目录
    root@BeagleBone:~# arecord test.wav
    ALSA lib ./../alsa-lib-1.2.1.2/src/confmisc.c:767:(parse_card)找不到卡"0"
    ALSA lib ./../alsa-lib-1.2.1.2/src/conf.c:4660:(_snd_config_evaluate)函数 snd_func_card_driver 返回错误:没有此类文件或目录
    ALSA lib ./../alsa-lib-1.2.1.2/src/confmisc.c:392:(snd_func_connat)评估字符串时出错
    ALSA lib ./../alsa-lib-1.2.1.2/src/conf.c:4660:(_snd_config_evaluate)函数 snd_func_connat 返回错误:没有此类文件或目录
    ALSA lib ./../alsa-lib-1.2.1.2/src/confmisc.c:1246:(snd_func_refe)评估名称时出错
    ALSA lib ./../alsa-lib-1.2.1.2/src/conf.c:4660:(_snd_config_evaluate)函数 snd_func_refer 返回错误:无此类文件或目录
    ALSA lib ./../alsa-lib-1.2.1.2/src/conf.c:5148:(snd_config_expand) evaluate error:no such file or directory
    ALSA lib ./../../alsa-lib-1.2.1.2/src/pcm/pcm.c:2642:(snd_pcm_open_noupdate)未知 PCM 默认值
    arecord:main:828:音频打开错误:无此类文件或目录
    根目录@BeagleBone:~# aplay -l
    aplay:device_list:272:未找到声卡...
    root@BeagleBone:~# arecord -l
    arecord:device_list:272:找不到声卡...

    下面是 i2cdump。 请注意、我们尚未对 tlv320aic32x4驱动程序进行任何更改。 如果需要进行任何更改、请告知我们。

    在下面添加最新的 AM335x-bonebblack-common.dtsi 文件、

     

    &am33xx_pinmux {
    	mcasp0_pins: mcasp0_pins {
    		pinctrl-single,pins = <
    			AM33XX_PADCONF(AM335X_PIN_MCASP0_AHCLKX, PIN_OUTPUT_PULLUP, MUX_MODE0) 
    			AM33XX_PADCONF(AM335X_PIN_MCASP0_AHCLKR, PIN_INPUT_PULLDOWN, MUX_MODE2) /* mcasp0_ahclkr.mcasp0_axr2*/
    			AM33XX_PADCONF(AM335X_PIN_MCASP0_AXR0, PIN_OUTPUT_PULLDOWN, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_MCASP0_FSX, PIN_OUTPUT_PULLUP, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_MCASP0_ACLKX, PIN_OUTPUT_PULLDOWN, MUX_MODE0)
    			/*AM33XX_PADCONF(AM335X_PIN_GPMC_A11, PIN_OUTPUT_PULLDOWN, MUX_MODE7)  gpmc_a11.GPIO1_27 */
    		>;
    	};
    	i2c2_pins: i2c2_pins {
    		pinctrl-single,pins = <
    			AM33XX_PADCONF(AM335X_PIN_UART1_RTSN, PIN_INPUT, MUX_MODE3) /* uart1_rtsn.i2c2_scl*/
    			AM33XX_PADCONF(AM335X_PIN_UART1_CTSN, PIN_INPUT, MUX_MODE3) /* uart1_ctsn.i2c2_sda*/
    		>;
    	};
    };
    
    &i2c2 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&i2c2_pins>;
    	clock-frequency = <100000>;
    	status = "okay";
    
    	tlv320aic32x6: tlv320aic32x6@18 {
    		#sound-dai-cells = <0>;
    		compatible = "ti,tlv320aic32x6";
    		reg = <0x18>;
    		clock-names = "mclk";
    		clocks = <&codec_mclk>;
    		iov-supply = <&reg_audio_3v3>;
    		dv-supply = <&reg_audio_1v8>;
    		av-supply = <&reg_audio_1v8>;
    		reset-gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
    		status = "okay";
    	};
    };
    
    &mcasp0	{
    	#sound-dai-cells = <0>;
    	pinctrl-names = "default";
    	pinctrl-0 = <&mcasp0_pins>;
    	status = "okay";
    	op-mode = <0>;	/* MCASP_IIS_MODE */
    	tdm-slots = <2>;
    	serial-dir = <	/* 0: INACTIVE, 1: TX, 2: RX */
    			1 0 2 0
    		>;
    	tx-num-evt = <32>;
    	rx-num-evt = <32>;
    };
    
    / {
    	...
    
    	codec_mclk: codec_mclk {
                    compatible = "fixed-clock";
                    #clock-cells = <0>;
    		clock-frequency = <12000000>;
            };
    
    	sound {
    		compatible = "simple-audio-card";
    		status = "okay";
    		simple-audio-card,name = "Twinkle Audio Card";
    		simple-audio-card,widgets =
    			"Headphone", "Headphone Jack",
    			"Line Out", "Line Out",
    			"Line In", "Mic Jack";
    		simple-audio-card,routing =
    			"Headphone Jack", "HPL",
            		"Headphone Jack", "HPR",
    		        "Line Out", "LOL",
    		        "Line Out", "LOR",
    		        "Mic Jack", "IN1_L",
    		        "Mic Jack", "IN1_R",
    		        "Mic Jack", "IN2_L",
    		        "Mic Jack", "IN2_R",
    		        "Mic Jack", "IN3_L",
    		        "Mic Jack", "IN3_R",
    		        "Mic Jack", "Mic Bias",
    		        "CM_L", "Mic Bias",
    		        "CM_R", "Mic Bias";
    		simple-audio-card,format = "i2s";
    		simple-audio-card,bitclock-master = <&dailink0_master>;
    		simple-audio-card,frame-master = <&dailink0_master>;
    
    		dailink0_master: simple-audio-card,cpu {
    			sound-dai = <&mcasp0>;
    			system-clock-frequency = <12000000>;
    			system-clock-direction-out;
    		};
    
    		simple-audio-card,codec {
    			sound-dai = <&tlv320aic32x6>;
    		};
    	};
    
    	reg_audio_3v3: regulator-audio-3v3 {
    		compatible = "regulator-fixed";
    		regulator-name = "VCC3V3_AUDIO";
    		regulator-min-microvolt = <3300000>;
    		regulator-max-microvolt = <3300000>;
    		regulator-always-on;
    		regulator-boot-on;
    	};
    
    	reg_audio_1v8: regulator-audio-1v8 {
    		compatible = "regulator-fixed";
    		regulator-name = "VCC1V8_AUDIO";
    		regulator-min-microvolt = <1800000>;
    		regulator-max-microvolt = <1800000>;
    		regulator-always-on;
    		regulator-boot-on;
    	};

    谢谢、

    闪烁

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Twinkle、

    1)抱歉、请删除 系统时钟方向输出;因为这将强制 McASP 使用内部时钟、而不是 AHCLKX。  

    2) 2)此外、不会写入 McASP 驱动程序以在 ASYS 模式下运行。 我建议移除 AHCLKR 并将 MCLK 驱动至 AHCLKX。

    3) 3)是否有方法使 McASP 成为 从器件并驱动从 AIC 到 McASP 的所有时钟?  

    4) 4)奇怪的是、未检测到您的音频卡。 即使时钟设置不正确、也应至少注意到音频节点。  

    此致、
    Krunal  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Krunal、

    感谢快速响应。

    1.尝试删除系统时钟方向输出并运行系统、但没有改进。

    2.如果您将再次查看 DTS、我们将使用  AHCLKR 引脚、但在模式2中将其启用为 AXR2。 我们已经按照 您的建议使用 AHCLKX 来驱动 MCLK。
    AM33XX_PADCONF (AM335X_PIN_McASP0_AHCLKR、PIN_INPUT 下拉、MUX_MODE2)/* McASP0_ahclkr.McASP0_axr2*/

    3.我们没有外部晶体来驱动 MCLK 和来自 AIC 的其它时钟、因此这对我们来说是不可行的。

    我们可以采取哪些进一步措施来使这个问题符合要求?

    谢谢、

    闪烁

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Twinkle、

    我们没有采用 tlv320aic32x4驱动程序的 EVM、我建议您查看 我们的声音节点是否适用于 tlv320aic3106[1]。 我知道它与您拥有的不同、但它是一个已知有效的参考。 此外,请与 Beagle 社区联系,以获得有关声音节点的更多参考。  

    [1] https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/arch/arm/boot/dts/am437x-gp-evm.dts?h=ti-linux-5.10.y#n115 

    此致、
    Krunal

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Krunal、

    我尝试使用您提到的参考、但结果相同。 但是、我发现在 sound/soc/cgeneral/simple-card.c 中放置一些额外的调试打印件时、simple-audio-card 探测器出现故障

    我能够在某种程度上降低函数调用、 错误源会下降到 ASOC_simple_parse_cpu、 ASOC_simple_parse_codec 等函数调用。 驱动程序文件中。

    从我们从多个参考文献中可以看到、我们的音频节点中的 CPU 和编解码器节点看起来简单且正确。

    您可以在此处建议进一步操作吗?

    谢谢、此致、

    闪烁

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Krunal、

    除了上述问题、我们无法看到 AM3358生成 MCLK。 是否需要某些特定于处理器的补丁或 PLL 配置?

    等待您的回复。

    此致、

    闪烁

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我认为 MCLK 是由 AIC 编解码器生成的。 上面的 DTS 将 AHCLKX 显示为输入、因此我认为 McASP 从 AIC 编解码器中获得该输入。  

    此致、
    Krunal

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Krunal、

    我们从未提到 过 AHCLKX 作为输入、我们之前也提到过、

    [引用 userid="528155" URL"~/support/processors-group/processors/f/processors-forum/1129617/beagl-bone-black-dt-changes-for-am335x-boneblack-common-dtsi-for-tlv320aic3256/4205362 #4205362"]我们没有外部晶体来驱动来自 AIC 的 MCLK 和其他时钟、因此这对我们来说是不可行的。

    因此、我无法理解您的回答。

    此致、
    闪烁

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Twinkle、

    1) 1)您能否共享 DTS 文件(请勿在聊天中复制/粘贴)?

    2) 2)您能否共享系统方框图以及希望 McASP 为 AIC 提供什么时钟?

    3) 3)此外 、共享您在简易卡或 Linux 引导中观察到的任何错误。 我将向我们的内部 开发团队寻求任何 其他反馈。  

    此致、
    Krunal

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Krunal、

    在下面添加编辑过的 DDSS 和 DTI。 它还包含补丁文件、用于了解我们在 simple-card.c 和 tlv320aic32x4.c 中放置的调试打印以及 error.log 文件中的错误。

    下面是方框图、

    我们还尝试通过更改 BCLK 和 WCLK 引脚的方向以及将'codec'标记为'dailink0_master'而不是'cpu'在'sound node '中将 TLV320AIC3256作为主器件、但结果相同。

    请告诉我 是否需要我们一方提供任何其他数据。

    谢谢、此致、

    闪烁

    e2e.ti.com/.../5516.Files.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢! 我将与我们的开发人员进行内部审核、并在本周结束前回复您。

    此致、
    Krunal

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Twinkle、

    根据我的内部讨论、我们看到以下内容:

    [6.382431]  双频段:sound/soc/co-core.c:2998标志寄存器:-517

    [6.388518]  双频段:sound/soc/co-core.c:2998标志寄存器:-517  

    声音节点日志中的错误"ret:-517"表示它正在等待其中一个相关组件探测器完成。 https://github.com/torvalds/linux/blob/master/include/linux/errno.h#L19。 我们看到正在探测 McASP、但我们能否在编解码器节点中添加更多的打印内容、以查看是否已完全初始化且探测成功。  

    此致、
    Krunal

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Krunal、

    感谢您的输入。 我将尝试在 McASP 和 tlv320aic32x4驱动程序中添加更多调试日志、并向您发送完整的 dmesg。

    同时、我尝试使用现成的 TI AM335x SDK 中的内核(Linux 5.10.100+)、并使用该内核检测 TLV 声卡。 我无法播放或录制任何音频、但正在获取声卡。 我尝试将相同的.config 文件与具有 Linux 5.9.16的 Yocto Setup 一起使用。  使用该功能、我可以在启动日志中观察到已检测到声卡、但控制台未出现。 我尝试验证  SDK 配置中的 Yocto 配置缺少哪种声音相关的配置 、但无法确定。 如果您能找到有关缺失内容的任何线索、我会附加这两个配置文件供您参考。

    谢谢、此致、

    闪烁

    e2e.ti.com/.../defconfig_2D00_sdk.txte2e.ti.com/.../defconfig_2D00_yocto.txt

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    将最新的 dtsi 与修补程序和 dmesg 输出连接起来。 我无法从他们那里收集大量信息、但确实看了一下。 如果您希望我添加大量调试打印、请告诉我。

    谢谢、

    闪烁

    e2e.ti.com/.../7142.File.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Twinkle、

    奇怪的是、默认 SDK Linux 具有声卡检测功能、但您的自定义内核没有检测到。 出于调试目的、让我们将 PSDK Linux 用作基准、如果您尝试使用 aplay 命令、您是否看到 McASP 发出的任何时钟? 我知道您仍然听不到声音、但让我们看看 McASP 是否正在生成任何时钟。  

    此致、
    Krunal

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Krunal、

    aplay 命令仍然不会在任何一个时钟线路上提供任何时钟。

    此致、

    闪烁

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Krunal、

    我参考 了 https://www.ti.com/lit/ug/spruh73q/spruh73q.pdf?ts=1664872266051
    这表明 AUXCLK 是 AHCLKX 的源。 您能告诉我如何生成 AUXCLK 来帮助我吗? 或它的原始值是什么?

    谢谢、

    闪烁

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Twinkle、

    默认情况下、内部 AUXCLK 为24MHz。 如果 McASP 被配置 为主器 件、您要么使用内部 AUXCLK 来生成 FSYNC/BCLK、要么使用外部晶振来为 AHCLKX 提供时钟来生成 FSYNC 或 BLCK。 根据我的理解、默认驱动程序不会自动将24MHz 输出到 AHCLKX。 我们尚未测试上述用例、无法提供任何参考/文档。   

    此致、
    Krunal

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Krunal、

    我们能够使用 am33xx-clocks.dtsi 中定义的 McASP0_fck 时钟信号来获取您提到的输出24MHz 时钟。

    但是、根据 TLV320AIC3201的示例 PLL 配置、不支持24MHz 作为 MCLK。 因此、我们需要实施分频器并将其提高到12MHz。 我们尝试在 DTS 中进行如下所示的必要更改、但输出仍然为24MHz。

    请告知我们如何对该时钟进行分频、以将其降低至12MHz。

    谢谢、此致、

    闪烁

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Twinkle、

    遗憾的是、您不能更改内部 AUXCLK 频率。 此外、请随时查看时钟树工具、了解是否有其他 PLL 可用于12MHz 信号: https://www.ti.com/tool/CLOCKTREETOOL

    此致、
    Krunal

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Krunal、

    时钟树似乎无法帮助我们。 由于所有 PLL 根据连接的振荡器输出24MHz、或者它们以 KHz 输出频率、如32KHz 等

    我们尝试使用 AHCLKXCTL 和 ACLKXCTL 中提到的时钟分频器。 但我们无法确定如何 使用驱动程序或设备树对其进行编辑。
    您能不能深入了解一下、并告诉我们您是否可以提供帮助?

    谢谢、此致、
    闪烁

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    默认情况下、我认为驱动程序不支持上述用例。 作为实验、您是否尝试使用 devmem 手动修改位15和位11-0?

    此致、
    Krunal

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Krunal、

    是的、我尝试使用 devmem2修改这些寄存器。 我尝试将 AHCLKXCTL 的值设置为0x00008001。 但是、当没有音频播放或正在录制时、该寄存器无法访问。 当我在音频播放或录制过程中尝试修改它时、该命令返回成功、 但立即读取该值后、寄存器值为0x00000000。

    我从 以下链接中看到 、应该可以通过编辑 AHCLKXCTL 将24MHz OSC 频率除以12MHz、但我无法确定如何以及在哪里进行更改。 非常感谢您的帮助。

    谢谢、此致、

    闪烁

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Krunal、

    当  arecord 在后台运行时、通过 devmem2手动将 AHCLKXCTL 配置为0x00008001、我能够从 AHCLKX 获得12MHz 频率。

    但我需要了解如何通过 DTS 或在 arecord 命令之前执行此操作。 请提供帮助、因为这非常关键。

    此致、

    闪烁

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Twinkle、

    在以下主题中: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1161741/beagl-bone-black-i2s-mic-configuration-incorrect-bclk-aclkx-lrclk-fsx、 您能够输出 BCLK 和 FSYNC。 我知道在一种情况下、它是在当前线程中的录制与回放、但 McASP 配置保持不变。 我想知道这两种配置之间是否存在任何增量?

    此致、
    Krunal

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Krunal、

    根据您提到的线程、我能够接收 BCLK 和 FSYNC、但它们都不正确。 我必须使用 devmem2通过 AHCLKXCTL、ACLKXCTL 和 XFMT 寄存器手动设置它们。 在这两种情况下、我使用的配置几乎相同。 不同之处在于 TLV、我希望编解码器成为主器件、而在 Mic 的情况下、AM3358是主器件。

    然而、在这两种情况下、输出上接收到的 AHCLKX 为24MHz。 我想知道如何在 AHCLKX 上获得12MHz、而无需手动更改寄存器。

    谢谢、此致、

    闪烁  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Twinkle、

    默认情况下、我们的驱动程序不支持上述用例。 如果您选择 McASP 作为主器件并使用内部 AUX 时钟、它将生成24MHz 信号。 现在、可以通过更改 Davinci-EVM.c 文件来修改驱动程序。 驱动程序将检查您是否要使用 AUXCLK 或外部信号。 请参阅"Davinci_McASP_SET_SYSCLK"函数、方向在"simple-card-utils.c"文件(函数名称 ASOC_simple_parse_clk)中设置。 如果 McASP 是主器件并且您定义了"system-clock-direction out"属性、则 DaVinci_McASP_Set_SYSCLK 将执行"else"状态。 在该"else"语句中、您可以随意添加逻辑以执行除法。 总之、您需要对 DaVinci-EVM.c 文件进行实验、以满足您的时钟输出要求。

    此致、
    Krunal