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.

[参考译文] TLV320AIC3254-Q1:TLV320AIC3254-Q1启动问题

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1348902/tlv320aic3254-q1-tlv320aic3254-q1-bringup-issue

器件型号:TLV320AIC3254-Q1
主题中讨论的其他器件: TLV320AIC3254

大家好、

我们在 Qualcomm SA525M 平台上使用 TI TLV320AIC3254-Q1

驱动程序似乎启动了

使用第三个 MI2S

但在播放声音时、会出现这样的日志、

请帮助我们进行此日志检查,非常感谢。

[ 480.977977973][T1486] aic3x_hw_params (): 无法设置 PLL

[ 480.984100][ T1486] tlv320aic3x 2-0018:aSOC:tlv320aic3x-hifi 上的 snd_soc_dai_hw_params 出错:-22

[ 480.994214][T1486] MI2S-ASOC LPAIF-RX-TERTIARY:SoC_PCM_HW_params ()出现故障(-22)

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

    尊敬的 Kevin

    我将时钟添加到编解码器的节点。

    但是、 不能探测 aic32x4_i2c_probe。

    你对此有什么评论吗?

    非常感谢

    &qupv3_se2_i2c {
    	status = "okay";
    	codec: tlv320aic32x4@18 {
    		compatible = "ti,tlv320aic32x4";
    		status = "okay";
    		reg = <0x18>;
    		iov-supply = <&codec_vreg>;
    		ldoin-supply = <&codec_vreg>;
    		reset-gpios = <&pmx75_gpios 01 GPIO_ACTIVE_LOW>;
    		clock-names = "bclk";
    		clocks = <&clock_audio_up 0>;
    		aic32x4-gpio-func= <
    			0xff /* AIC32X4_MFPX_DEFAULT_VALUE */
    			0xff /* AIC32X4_MFPX_DEFAULT_VALUE */
    			0x04 /* MFP3 AIC32X4_MFP3_GPIO_ENABLED */
    			0xff /* AIC32X4_MFPX_DEFAULT_VALUE */
    			0x08 /* MFP5 AIC32X4_MFP5_GPIO_INPUT */
    		>;
    	};
    };

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

    日志是否与上次相同? 您可以共享日志吗?

    谢谢

    凯文

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

    尊敬的 Kevin:  

    是的、日志相同、  不会触发 aic32x4_i2c_probe

    平台供应商表示

    "MCLK 已启用,您不必在编解码器驱动器中进行修改"

    这意味着我们不需要 在 dtsi 时添加时钟

    e2e.ti.com/.../no_5F00_sound_5F00_cards.txt

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

    该问题与 QCOM 平台中的时钟设置有关、我们没有该信息、您可以从 \arch\arm64\boot\dts\Qcom\中搜索该信息、应该有很多参考资料可供您参考。

    如果器件树时钟出现故障、则只能手动设置 PLL 的 PARTNER_RATE 和 RATE

    谢谢

    凯文

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

    尊敬的 Kevin

    "只能手动设置 PLL 的 PARTNER_RATE 和 RATE "

    =>是否是  在编解码器驱动程序中创建和配置父级?

    可以以及如何  在 aic32x4_register_clocks()初始化父项

    非常感谢

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

    您是否可以尝试在 aic32x4_clkdesc_array[]中添加"MCLK"&"BCLK" ?  

    static struct aic32x4_clkdesc aic32x4_clkdesc_array[] = {
    	{
    		.name = "pll",
    		.parent_names =
    			(const char* []) { "mclk", "bclk", "gpio", "din" },
    		.num_parents = 4,
    		.ops = &aic32x4_pll_ops,
    		.reg = 0,
    	},
    	{
    		.name = "codec_clkin",
    		.parent_names =
    			(const char *[]) { "mclk", "bclk", "gpio", "pll" },
    		.num_parents = 4,
    		.ops = &aic32x4_codec_clkin_ops,
    		.reg = 0,
    	},
    	{
    		.name = "ndac",
    		.parent_names = (const char * []) { "codec_clkin" },
    		.num_parents = 1,
    		.ops = &aic32x4_div_ops,
    		.reg = AIC32X4_NDAC,
    	},
    	{
    		.name = "mdac",
    		.parent_names = (const char * []) { "ndac" },
    		.num_parents = 1,
    		.ops = &aic32x4_div_ops,
    		.reg = AIC32X4_MDAC,
    	},
    	{
    		.name = "nadc",
    		.parent_names = (const char * []) { "codec_clkin" },
    		.num_parents = 1,
    		.ops = &aic32x4_div_ops,
    		.reg = AIC32X4_NADC,
    	},
    	{
    		.name = "madc",
    		.parent_names = (const char * []) { "nadc" },
    		.num_parents = 1,
    		.ops = &aic32x4_div_ops,
    		.reg = AIC32X4_MADC,
    	},
    	{
    		.name = "bdiv",
    		.parent_names =
    			(const char *[]) { "ndac", "mdac", "nadc", "madc" },
    		.num_parents = 4,
    		.ops = &aic32x4_bdiv_ops,
    		.reg = AIC32X4_BCLKN,
    	},
    	{
    		.name = "mclk",
    	},
    	{
    		.name = "bclk",
    	},
    };

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

    Daniel、您好!

    您能否告诉我 您方面的最新情况?  

    凯文

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

    尊敬的 Kevin

    在驱动器处添加这两个 clk 后、我出现以下寄存器错误

    我将对其进行调试

    [    7.129443][   T41] tlv320aic32x4 2-0018: aic32x4_register_clk, devname(2-0018) name(mclk)
    [    7.137943][   T41] tlv320aic32x4 2-0018: aic32x4_register_clk, clk_hw_register_clkdev ret(0)
    [    7.146735][   T41] ------------[ cut here ]------------
    [    7.152193][   T41] WARNING: CPU: 3 PID: 41 at drivers/clk/clk.c:3960 __clk_register+0x428/0x45c
    [    7.161210][   T41] Modules linked in:
    [    7.165062][   T41] CPU: 3 PID: 41 Comm: kworker/u8:1 Not tainted 5.15.104-debug-g7df3898d1b46-dirty #1
    [    7.174694][   T41] Hardware name: Qualcomm Technologies, Inc. SA522 IDP Overlay (DT)
    [    7.182725][   T41] Workqueue: events_unbound deferred_probe_work_func
    [    7.189434][   T41] pstate: 80400005 (Nzcv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    [    7.197291][   T41] pc : __clk_register+0x428/0x45c
    [    7.202302][   T41] lr : __clk_register+0x60/0x45c
    [    7.207220][   T41] sp : ffffffc0082637d0
    [    7.211338][   T41] x29: ffffffc0082637f0 x28: ffffffdabc3de4f0 x27: ffffffc008263898
    [    7.219374][   T41] x26: ffffffc008263880 x25: 0000000000000118 x24: ffffff8005f62280
    [    7.227409][   T41] x23: ffffffc008263880 x22: ffffff8005cf6820 x21: 00000000ffffffea
    [    7.235444][   T41] x20: ffffff8005f62280 x19: ffffff8005f62000 x18: 00000000120a403e
    [    7.243479][   T41] x17: 646b6c635f726574 x16: ffffffffffffffff x15: 0000000000000004
    [    7.251514][   T41] x14: ffffffdabc288e28 x13: ffffffa582a9c000 x12: ffffffdabc22cf90
    [    7.259550][   T41] x11: 0000000000000001 x10: 0000000000000100 x9 : f03e1d37b26ce900
    [    7.267585][   T41] x8 : 0000000000000000 x7 : 0000000000000000 x6 : 000000000000003f
    [    7.275620][   T41] x5 : 0000000000000040 x4 : 0000000000000100 x3 : 0000000000000001
    [    7.283655][   T41] x2 : 0000000000000dc0 x1 : 0000000000000cc0 x0 : ffffffdabc06ecf5
    [    7.291692][   T41] Call trace:
    [    7.294915][   T41]  __clk_register+0x428/0x45c
    [    7.299564][   T41]  devm_clk_register+0x78/0xb8
    [    7.304306][   T41]  aic32x4_register_clocks+0x180/0x1c4
    [    7.309767][   T41]  aic32x4_probe+0x19c/0x270
    [    7.314332][   T41]  aic32x4_i2c_probe+0x104/0x138
    [    7.319250][   T41]  i2c_device_probe+0x204/0x2d0
    [    7.324089][   T41]  call_driver_probe+0x38/0x110
    [    7.328924][   T41]  really_probe+0xc4/0x34c
    [    7.333312][   T41]  __driver_probe_device+0x114/0x17c
    [    7.338583][   T41]  driver_probe_device+0x48/0x1a0
    [    7.343594][   T41]  __device_attach_driver+0x12c/0x1d0
    [    7.348959][   T41]  bus_for_each_drv+0x84/0xd0
    [    7.353608][   T41]  __device_attach+0xd0/0x1c4
    [    7.358256][   T41]  device_initial_probe+0x14/0x20
    [    7.363267][   T41]  bus_probe_device+0x34/0x98
    [    7.367915][   T41]  deferred_probe_work_func+0xac/0x108
    [    7.373373][   T41]  process_one_work+0x1a8/0x3a0
    [    7.378211][   T41]  worker_thread+0x2d8/0x490
    [    7.382776][   T41]  kthread+0x154/0x218
    [    7.386803][   T41]  ret_from_fork+0x10/0x20
    [    7.391194][   T41] ---[ end trace f65ba6d7087d7f9c ]---

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

    Daniel、您好!

    看起来 像是调用了空指针、您必须添加一些内容。

    	{
    		.name = "mclk",
    		.parent_names = (const char *[]) {},
    		.num_parents = 0,
    		.ops = NULL,
    		.reg = 0,
    	},
    	{
    		.name = "bclk",
    		.parent_names = (const char *[]) {},
    		.num_parents = 0,
    		.ops = NULL,
    		.reg = 0,
    	},

    如果需要、我们可以设置调试目录。

    凯文

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

    还可以~我正在建设中,请等10分钟