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.

[参考译文] AM3352:当 McASP 设置为 I2S 从设备且音频播放停止时、噪声会输出到左侧音频通道

Guru**** 2468610 points
Other Parts Discussed in Thread: AM3352

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1434022/am3352-when-mcasp-is-set-to-i2s-slave-and-audio-playback-is-stopped-noise-gets-outputted-to-the-left-audio-channel

器件型号:AM3352

工具与软件:

大家好!

我们在 TQMA335x SoM 上使用 AM3352 SoC、并且通过使用 devicetre 中的 simple-audio card 和内核(Linux 5.4)中的最小 snd_soc_dai_driver、我们已成功将一个 McASP 串行器设置为 I2S 从器件。

这是我们 devicetree 的相关部分:

/ {
    wssdsp1: wssdsp1 {
		#sound-dai-cells = <0>;
		compatible = "dwe,wssdsp1";
		status = "okay";
	};

	sound {
		compatible = "simple-audio-card";
		simple-audio-card,name = "WSSDSP1";
		simple-audio-card,format = "i2s";
		simple-audio-card,bitclock-master = <&sound_master>;
		simple-audio-card,frame-master = <&sound_master>;
		simple-audio-card,cpu {
			sound-dai = <&mcasp0>;
		};

		sound_master: simple-audio-card,codec {
			#sound-dai-cells = <0>;
			sound-dai = <&wssdsp1>; /* codec name */
			system-clock-frequency = <24000000>;
		};
};

&am33xx_pinmux {
mcasp0_pins_adsp: mcasp0_pins_adsp {
		pinctrl-single,pins = <
			0x194 (PIN_INPUT_PULLDOWN | MUX_MODE0) /* mcasp0_fsx.mcasp0_fsx */
			0x190 (PIN_INPUT_PULLDOWN | MUX_MODE0) /* mcasp0_aclkx.mcasp0_aclkx */
			0x198 (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* mcasp0_axr0.mcasp0_axr0 */
			0x1a8 (PIN_INPUT_PULLDOWN | MUX_MODE0) /* mcasp0_axr1.mcasp0_axr1 */
			0x19c (PIN_INPUT_PULLDOWN | MUX_MODE2) /* mcasp0_ahclkr.mcasp0_axr2 */
			0x1ac (PIN_INPUT_PULLDOWN | MUX_MODE2) /* mcasp0_ahclkx.mcasp0_axr3 */
			0x1a0 (PIN_INPUT_PULLDOWN | MUX_MODE0) /* mcasp0_aclkr.mcasp0_aclkr */
			0x1a4 (PIN_INPUT_PULLDOWN | MUX_MODE0) /* mcasp0_fsr.mcasp0_fsr */
		>;
	};

};

&mcasp0 {
	#sound-dai-cells = <0>;
	pinctrl-names = "default";
	pinctrl-0 = <&mcasp0_pins_adsp>;
	status = "okay";
	op-mode = <0>;		/* MCASP_IIS_MODE */
	tdm-slots = <2>;
	/* 4 serializers */
	serial-dir = <  /* 0: INACTIVE, 1: TX, 2: RX */
		1 0 0 0
	>;
	/* bit depth for tx and rx */
	tx-num-evt = <32>;
	rx-num-evt = <32>;
};

这是驱动程序:

#include <linux/init.h>
#include <linux/module.h>
#include <linux/platform_device.h>

#include <sound/soc.h>

static struct snd_soc_dai_driver wssdsp1_dai = {
	.name = "wssdsp1-hifi",
	.playback = {
		.stream_name	= "Playback",
		.channels_min = 2,
		.channels_max = 2,
		.rates = SNDRV_PCM_RATE_8000_384000,
		.formats = SNDRV_PCM_FMTBIT_S32_LE
	},
};

static struct snd_soc_component_driver soc_component_dev_wssdsp1 = {
};

static int wssdsp1_probe(struct platform_device *pdev)
{
	int ret;

	ret = devm_snd_soc_register_component(&pdev->dev, &soc_component_dev_wssdsp1,
										  &wssdsp1_dai, 1);

	if (ret) {
		printk("failed to register component wssdsp1: %d\n", ret);
		return ret;
	}
	else {
		printk("successfully registered component wssdsp1: %d\n", ret);
	}

	return 0;
}

static const struct of_device_id wssdsp1_of_match[] = {
	{ .compatible = "dwe,wssdsp1", },
	{ }
};
MODULE_DEVICE_TABLE(of, wssdsp1_of_match);

static struct platform_driver wssdsp1_codec_driver = {
	.probe		= wssdsp1_probe,
	.driver		= {
		.name	= "wssdsp1-codec",
		.of_match_table = wssdsp1_of_match,
	},
};

module_platform_driver(wssdsp1_codec_driver);

MODULE_DESCRIPTION("ASoC WSSDSP1 codec driver");
MODULE_AUTHOR("Rolf Anderegg <rolf.anderegg@weiss.ch>");
MODULE_LICENSE("GPL");

打开了 播放期间无噪音 . 不过、 每当回放停止时、左侧 I2S 通道上都会出现随机噪声!

这就像未再下拉 I2S 数据引脚(McASP0_axr0)一样。

当尝试使用示波器测量 I2S 数据引脚时、噪声会消失、这表明引脚确实处于悬空状态。

噪声根据 AM3352的 CPU 负载而变化、这表明存在串扰。

我们在内核3.x 上运行完全相同的硬件、没有任何噪声、因此这必然是软件问题。

任何帮助都将非常感谢。

此致、

Michele

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

    尊敬的 Michele:

    正如您提到的、内核3.x 上没有噪声、内核5.4中有噪声。 您是否在 McASP 驱动程序或音频相关更改中看到任何您认为可能导致问题弹出的更改?

    此外、由于它是定制电路板、因此可以在我们的 EVM 上重现吗?

    此致、

    Suren

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

    您好、Suren、感谢您的答复。 在回答您的问题之前、我想发布相关 devicetree 器件的更新版本、其中删除了一些不必要的属性和 PinMux。

    / {
    	wssdsp1: wssdsp1 {
    		#sound-dai-cells = <0>;
    		compatible = "dwe,wssdsp1";
    		status = "okay";
    	};
    
    	sound {
    		compatible = "simple-audio-card";
    		simple-audio-card,name = "WSSDSP1";
    		simple-audio-card,format = "i2s";
    		simple-audio-card,bitclock-master = <&sound_master>;
    		simple-audio-card,frame-master = <&sound_master>;
    
    		simple-audio-card,cpu {
    			sound-dai = <&mcasp0>;
    		};
    
    		sound_master: simple-audio-card,codec {
    			#sound-dai-cells = <0>;
    			sound-dai = <&wssdsp1>; /* codec name */
    		};
    };
    
    &am33xx_pinmux {
    	mcasp0_pins_adsp: mcasp0_pins_adsp {
    		pinctrl-single,pins = <
    			0x198 (PIN_OUTPUT_PULLDOWN | MUX_MODE0)  /* (D12) mcasp0_axr0.mcasp0_axr0    - I2S data tx/rx 0 */
    			0x194 (PIN_INPUT_PULLDOWN | MUX_MODE0)   /* (B13) mcasp0_fsx.mcasp0_fsx      - WCLK rx          */
    			0x190 (PIN_INPUT_PULLDOWN | MUX_MODE0)   /* (A13) mcasp0_aclkx.mcasp0_aclkx  - BCLK rx          */
    		>;
    	};
    
    };
    
    &mcasp0 {
    	#sound-dai-cells = <0>;
    	pinctrl-names = "default";
    	pinctrl-0 = <&mcasp0_pins_adsp>;
    	status = "okay";
    	op-mode = <0>;		/* MCASP_IIS_MODE */
    	tdm-slots = <2>;
    	/* 4 serializers */
    	serial-dir = <  /* 0: INACTIVE, 1: TX, 2: RX */
    		1 0 0 0
    	>;
    	/* bit depth for tx and rx */
    	tx-num-evt = <32>;
    	rx-num-evt = <32>;
    };

    现在回到你的问题--在 Linux 3.14天里、我们没有使用简单的音频卡(我想它还没有)、有三个要素:

    • devicetree.
    • sound/ soc /编解码器内的 SOC 编解码器
    • 增补声音中的 DAI 链接 soc davinci/davinci-evm.c

    在 devicetree 中、我们有以下代码:

    / {
    	am33xx_pinmux: pinmux@44e10800 {
    		mcasp0_pins_adsp: mcasp0_pins_adsp {
    			pinctrl-single,pins = <
    				0x194 (PIN_INPUT_PULLDOWN | MUX_MODE0) /* mcasp0_fsx.mcasp0_fsx */
    				0x190 (PIN_INPUT_PULLDOWN | MUX_MODE0) /* mcasp0_aclkx.mcasp0_aclkx */
    				0x198 (PIN_INPUT_PULLDOWN | MUX_MODE0) /* mcasp0_axr0.mcasp0_axr0 */
    				0x1a8 (PIN_INPUT_PULLDOWN | MUX_MODE0) /* mcasp0_axr1.mcasp0_axr1 */
    				0x19c (PIN_INPUT_PULLDOWN | MUX_MODE2) /* mcasp0_ahclkr.mcasp0_axr2 */
    				0x1ac (PIN_INPUT_PULLDOWN | MUX_MODE2) /* mcasp0_ahclkx.mcasp0_axr3 */
    				0x1a0 (PIN_INPUT_PULLDOWN | MUX_MODE0) /* mcasp0_aclkr.mcasp0_aclkr */
    				0x1a4 (PIN_INPUT_PULLDOWN | MUX_MODE0) /* mcasp0_fsr.mcasp0_fsr */
    			>;
    		};
    	};
    	
    	wh17_adsp_dit: wh17_adsp_dit {
    		compatible = "linux,wh17-adsp-dit";
        };
    	sound {
    		compatible = "ti,am335x-wh17-adsp-audio";
    		ti,model = "Weiss WH17 ADSP";
    		ti,audio-codec = <&wh17_adsp_dit>;
    		ti,mcasp-controller = <&mcasp0>;
    		ti,codec-clock-rate = <24000000>;
    	};
    };
    
    &mcasp0 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&mcasp0_pins_adsp>;
    
    	status = "okay";
    
    	op-mode = <0>;		/* MCASP_IIS_MODE */
    	tdm-slots = <2>;
    	/* 16 serializer */
    	serial-dir = <  /* 0: INACTIVE, 1: TX, 2: RX */
    		1 2 0 0
    		0 0 0 0
    		0 0 0 0
    		0 0 0 0
    	>;
    	tx-num-evt = <32>;
    	rx-num-evt = <32>;
    };

    SOC 编解码器外观如下:

    #define DRV_NAME "wh17-adsp-dit" 
    #define STUB_RATES  SNDRV_PCM_RATE_8000_384000 
    #define STUB_FORMATS    (SNDRV_PCM_FMTBIT_S32_LE) 
    
    static struct snd_soc_codec_driver soc_codec_wh17_adsp_dit = { 
    }; 
    
    static struct snd_soc_dai_driver dit_stub_dai = { 
        .name       = "wh17-adsp-tx-hifi", 
        .playback   = { 
            .stream_name    = "Playback", 
            .channels_min   = 2, 
            .channels_max   = 2, 
            .rates      = STUB_RATES, 
            .formats    = STUB_FORMATS, 
        }, 
    }; 
    
    static int wh17_adsp_dit_probe(struct platform_device *pdev) 
    { 
        return snd_soc_register_codec(&pdev->dev, &soc_codec_wh17_adsp_dit, 
        &dit_stub_dai, 1); 
    } 
    
    static int wh17_adsp_dit_remove(struct platform_device *pdev) 
    { 
        snd_soc_unregister_codec(&pdev->dev); 
        return 0; 
    } 
    
    #ifdef CONFIG_OF 
        static const struct of_device_id wh17_adsp_dit_dt_ids[] = { 
        { .compatible = "linux,wh17-adsp-dit", }, 
        { } 
        }; 
        MODULE_DEVICE_TABLE(of, wh17_adsp_dit_dt_ids); 
    #endif 
    
    static struct platform_driver wh17_adsp_dit_driver = { 
        .probe      = wh17_adsp_dit_probe, 
        .remove     = wh17_adsp_dit_remove, 
        .driver     = { 
            .name   = DRV_NAME, 
            .owner  = THIS_MODULE, 
            .of_match_table = of_match_ptr(wh17_adsp_dit_dt_ids), 
        }, 
    }; 
    
    module_platform_driver(wh17_adsp_dit_driver);

    至于 DAI 链路:

    static int wh17_adsp_hw_params(struct snd_pcm_substream *substream, 
                                    struct snd_pcm_hw_params *params) 
    { 
        struct snd_soc_pcm_runtime *rtd = substream->private_data; 
        struct snd_soc_dai *cpu_dai = rtd->cpu_dai; 
        struct snd_soc_card *soc_card = rtd->card; 
        int ret = 0; 
        unsigned sysclk = ((struct snd_soc_card_drvdata_davinci *) 
                            snd_soc_card_get_drvdata(soc_card))->sysclk; 
    
        /* set the CPU system clock */ 
        printk("WH17 ADSP hw params: sysclk:%d\n", sysclk); 
        ret = snd_soc_dai_set_sysclk(cpu_dai, 0, sysclk, SND_SOC_CLOCK_OUT); 
        if (ret < 0) { 
            return ret; 
        }
    
        return 0; 
    } 
    
    static struct snd_soc_ops wh17_adsp_ops = { 
        .hw_params = wh17_adsp_hw_params, 
    }; 
    
    
    static struct snd_soc_dai_link evm_dai_wh17_adsp = { 
        .name       = "Weiss Engineering WH17 ADSP",
        .stream_name    = "Playback",
        .codec_dai_name = "wh17-adsp-tx-hifi",
        .ops        = &wh17_adsp_ops, 
        .dai_fmt    = ( SND_SOC_DAIFMT_CBM_CFM | /* This indicates to the McASP that the WH17 ADSP will 
                                                    be a clock master for both the bit clock and the frame 
                                                    sync. In other words, the McASP is slaved to the bit clock 
                                                    and frame sync, which are generated by the WH17 ADSP. */ 
        SND_SOC_DAIFMT_I2S | /* I2S mode */ 
        SND_SOC_DAIFMT_NB_NF), /* normal bit clock + normal frame sync */ 
    }; 
     	
    static const struct of_device_id davinci_evm_dt_ids[] = { 
        .compatible = "ti,am335x-wh17-adsp-audio", 
        .data = &evm_dai_wh17_adsp, 
    }, 
        { /* sentinel */ } 
    };
    
    MODULE_DEVICE_TABLE(of, davinci_evm_dt_ids); 

    关于您的最后一个问题、很遗憾、我没有 TI EVM。 这就是我们要使用的电路板: TQMA335x

    如果您需要更多信息、请告诉我。

    再次感谢、

    Michele

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

    尊敬的 Michele:  

    您已尝试调整与回放相关的 ALSA 混音器控件、并调整增益以查看回放是否在没有噪声的情况下正常工作。

    此致、

    Suren

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

    尊敬的 Suren:

    如前所述、只有在播放停止时才会出现噪声。 例如、当我们这么做时

    speaker-test -D hw:CARD=WSSDSP1,DEV=0 -c 2 -F S32_LE -r 44100 -t sine -f 440

    没有噪声、只有测试正弦信号、从左到右交替。

    当我们停止扬声器测试时、左声道出现噼啪声。

    此致、

    Rolf

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

    尊敬的 Michele/Rolf:

    您能否使用 SDK 发布的 Linux 内核软件(6.1)进行相同测试

    https://dr-download.ti.com/software-development/software-development-kit-sdk/MD-1BUptXj3op/09.01.00.001/tisdk-default-image-am335x-evm.wic.xz

    您会发现这个已发布软件的问题吗?

    此致、

    Suren

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

    尊敬的 Suren:

    遗憾的是、我们无法测试 除5.4之外的任何其他 Linux 内核、因为这正是我们的 BSP 所提供的功能。

    我们已尝试更仔细地查看了 内核附带的 Davinci-McASP/c、并将其与内核3.14中的情况进行了再次比较。 我们找不到可以解释这种行为的东西。

    但是引起我注意的一件事是 DISMOD 属性。 此处记录了相关信息

    Optional properties:
    
    - dismod : Specify the drive on TX pin during inactive slots
    	0 : 3-state
    	2 : logic low
    	3 : logic high
    	Defaults to 'logic low' when the property is not present

    我是否正确理解这应该定义 ALSA 播放停止时串行器引脚的状态? 如果是这样、它显然无法正常工作!

    此致、

    Michele

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

    尊敬的 Michele:

    我本周正在出差、下周早些时候再来时、一定要查看一下。  
    同时、您能否参考以下主题、看看它是否有帮助:

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/737730/am3352-mcasp-dismod-not-working

    此致、

    Suren

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

    您好、Suren:

    我们看了一下你建议的主题、我们通过读写 McASP 0串行器控制寄存器(SRCTL0 --下面的数据表屏幕截图)运行了一系列测试。

    起初、除非 ALSA 播放正在运行、否则我们无法读取 SRCTL0中的任何内容(devmem 中出现总线错误)。 但我们需要的正是这个--否则我们怎么能检查串行器是否处于非活动状态、什么是值 od dismod 等等? 因此、我们 devicetree 中的&McASP0节点添加了 ti、no-idle;属性。

    此时、我们可以始终从 SRCTL0中读取数据、我们得到的就是:

    1.当系统启动且 ALSA 设备尚未访问时:

    root@Livebox-0004:~# devmem 0x48038180 32
    0x00000000

    2.播放时:

    root@Livebox-0004:~# devmem 0x48038180 32
    0x00000009

    • XRDY 为0:发送缓冲区(XBUF)包含数据
    • DISMOD 为2h:引脚驱动为逻辑低电平
    • SRMOD 为1h:串行器为发送器

    3.播放停止后:

    root@Livebox-0004:~# devmem 0x48038180 32
    0x00000019

    • XRDY 为1:发送缓冲区(XBUF)为空、需要在下一个时隙开始或发生发送欠载之前写入
    • DISMOD 为2h:引脚驱动为逻辑低电平
    • SRMOD 为1h:串行器为发送器

    这就是事情变得怪异的地方:

    1. 为什么 SRMOD 显示串行器是发送器、且 XRDY 在器件关闭后缓冲器为空? SRMOD 不应该为0 (串行器未激活)?
    2. 为什么在我将 SRMOD 设置为0、将 XRDY 设置为0并将 DISMOD 设置为2后未下拉串行器引脚?  如下面所示、该值设置成功。 但噪声仍然存在、因此显然没有下拉该引脚。  
      root@Livebox-0004:~# devmem 0x48038180 32 0x8
      root@Livebox-0004:~# devmem 0x48038180
      0x00000008

    我们在旧的 Linux 3.x 设置上重复相同的实验:

    1.系统启动后立即执行以下操作:

    root@DAC501-4ch-0001:~ devmem 0x48038180 32
    0x00000000

    2.在 McASP 播放期间:

    root@DAC501-4ch-0001:~ devmem 0x48038180 32
    0x00000001

    3.播放停止后:

    root@DAC501-4ch-0001:~ devmem 0x48038180 32
    0x00000011

    它几乎与 Linux 5.4上的情况相同、只是 DISMOD 似乎始终处于 tri 状态、但尽管如此、引脚实际上被下拉、并且串行器没有任何噪声。

    如果您能告诉我们这种行为的哪一部分是预期行为、哪一部分不是预期行为、我们将不胜感激。

    谢谢!

    Michele

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

    尊敬的 Michele:

    新年快乐!  

    对于延迟、我们深表歉意。 我上个月出差。

    请允许我留出几天的时间来分析您分享的数据并给您回复。

    此致、

    Suren

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

    尊敬的 Michele:

    我在 AM335x 板上运行的是 v07x 版本的软件(Linux 内核5.4)  

    https://dr-download.ti.com/software-development/software-development-kit-sdk/MD-1BUptXj3op/07.03.00.005/am335x-evm-linux-tisdk-default-image-07.03.00.005.wic.xz

    播放停止后未看到任何音频问题。

    此致、

    Suren

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

    您好、Suren

    感谢您对 Linux 内核5.4的检查。 这似乎是一个与将 McASP 配置为 I2S 从器件相关的问题。 您是否尝试过此设置?

    同时、我们可能已经发现了问题的根源:

    由于我们现在能够可靠地读取 McASP 寄存器、因此我们将搜索范围扩大到了所有类型的 McASP 寄存器。 然后、我们注意到 引脚方向寄存器 (PDIR)根据启动/停止状态正在执行一些奇怪的操作:

    播放时:

    root@Livebox-0001:~# devmem 0x48038014 32
    0x00000001


    播放停止时:
    root@Livebox-0001:~# devmem 0x48038014 32
    0x00000000


    这意味着该AXR0引脚在播放期间正确设置为输出、但在停止时复位为输入。
    这不能正确。 当我们随后AXR0在 STOP 状态期间手动将设置为输出时、噪音消失!

    root@Livebox-0001:~# devmem 0x48038014 32 1
    root@Livebox-0001:~# devmem 0x48038014 32
    0x00000001


    因此、显然AXR0将该引脚设置为输入基本上具有以下效果:容易受到相邻信号的信号注入。

    因此、我们已尝试在 McASP 驱动程序中找到导致此行为的机制、并在 Davinci-McASP.c 中出现以下函数
    static void mcasp_stop_tx(struct davinci_mcasp *mcasp)
    {
    ...
        mcasp_set_axr_pdir(mcasp, false);
    }

    这种机制是由 Peter Ujfalusi 在2018年提交的,它PDIR在回放停止时清除所有位,无论 McASP 是配置为时钟主机还是从机。 我们认为、这种机制在时钟主器件设置中是有意义的、但在从器件设置中却无法实现

    将引脚配置回输入、使其遵守有关上拉/下拉的全局引脚配置

    正如 Peter Ujfalusi 的提交信息所建议的那样。

    因此、我们应用了以下补丁、可能需要进一步修整并考虑主/从时钟上下文:

    diff --git a/sound/soc/ti/davinci-mcasp.c b/sound/soc/ti/davinci-mcasp.c
    index c9dbda233951..65d47bdb16ec 100644
    --- a/sound/soc/ti/davinci-mcasp.c
    +++ b/sound/soc/ti/davinci-mcasp.c
    @@ -346,7 +346,8 @@ static void mcasp_stop_tx(struct davinci_mcasp *mcasp)
     		mcasp_clr_bits(mcasp, reg, FIFO_ENABLE);
     	}
     
    -	mcasp_set_axr_pdir(mcasp, false);
    +	if (false /*todo: disable if codec is clock slave*/)
    +		mcasp_set_axr_pdir(mcasp, false);
     }
     
     static void davinci_mcasp_stop(struct davinci_mcasp *mcasp, int stream)
    


    也许我们可以邀请 Peter Ujfalusi 在此主题中就此问题发表评论?

    此致、
    Rolf Anderegg

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

    尊敬的 Rolf:  

    由于您能够解决该问题、我将关闭此主题。  

    此外、您还可以联系开源社区的 Peter 进行澄清。  

    此致、

    Suren

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

    您好、Suren

    我不同意、此主题不应关闭。 就我而言、这是澄清和解决这一问题的最佳论坛。 毕竟此问题是由 TI 开发团队的内核提交导致的。

    遗憾的是、这里没有任何机制可邀请人们进行鸣叫。 我如何邀请 Peter 来此主题?

    此致、

    Rolf