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.

[参考译文] TLV320AIC3262:Linux 驱动程序和 mkcfw 固件文件

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1083907/tlv320aic3262-linux-driver-and-mkcfw-firmware-bin-file

部件号:TLV320AIC3262

您好,

我已从“/CS-file/__key/communityserver-discussion-components-files/6/3262_2D00_E2E.zip”下载用于 aic3262的 Linux 驱动 程序,并将其集成到我的内核中。

我还拥有 mkcfw 工具来生成 Linux 驱动程序请求的"tlv320aic3262_FW_v1.bin"。

请检查 CFD 文件,仅使用 PRB Mode1和 PLL 设置,miniDSP 编程不存在。

PFA CFD 文件和 PLL 设置

/resized-image/__size/320x240/__key/communityserver-discussion-components-files/6/tlv320aic3262_5F00_asi1_5F00_slave.cfd.PNG

#------------------------------
# DAC/ADC CLOCK CONFIG
#------------------------------
# MCLK is 38.4MHz
# PLL_CLK = r*j.D/p = 1*5.1200/2 = 98.304 MHz
# P=2, R=1 : XPPP RRRR
sreg[PLL_PR_POW] =  0b.0100001;
# J=5 :XXJJ JJJJ
sreg[PLL_J] =  0b..000101;
# D= 1200. MSB=04 LSB=B0
sreg[PLL_D_MSB] =  0x04;
sreg[PLL_D_LSB] =  0xb0;
# DIV = 1 XVVV VVVV (128,1-127)
sreg[PLL_CKIN_DIV] =  0b.0000001;
# NDAC = 2: XVVV VVVV (128,1-127)
sreg[NDAC_DIV_POW] =  0b.0000010;
# MDAC = 8 : XVVV VVVV (128,1-127)
sreg[MDAC_DIV_POW] =  0b.0001000;
# DOSR = 128 DOSRMSB = 0x00 DOSRLSB = 0x80
sreg[DOSR_MSB] =  0x00;
sreg[DOSR_LSB] =  0x80;
# NADC NADC = 2
sreg[NADC_DIV_POW] =  0b.0000010;
# MADC MADC = 48
sreg[MADC_DIV_POW] =  0b.0001000;
# AOSR = 128
sreg[AOSR] =  128;

#------------------------------
# ASI1 CLOCKS
#------------------------------
# ASI1 BCLK DIVIDER CLOCK INPUT = DAC_MOD_CLOCK : XXXX XX01
sreg[ASI1_BCLK_N_CNTL] =  0b......01;
# BCLK N DIVIDER = 4 : XVVV VVVV
sreg[ASI1_BCLK_N] =  0b.0000100;
# WCLK N DIVIDER = 32 : XVVV VVVV
sreg[ASI1_WCLK_N] =  0b.0100000;
# ASI1 BCLK WCLK OUTPUTS : XBBB XWWWW
# BCLK = BCLK DIV OUT
# WCLK = ASI1 WDIV
sreg[ASI1_BWCLK_OUT_CNTL] =  0b.000.010;

#------------------------------
# ASI2 CLOCKS
#------------------------------
# ASI2 BCLK DIVIDER CLOCK INPUT = DAC_MOD_CLOCK : XXXX XX01
sreg[ASI2_BCLK_N_CNTL] =  0b......01;
# BCLK N DIVIDER = 4 : XVVV VVVV
sreg[ASI2_BCLK_N] =  0b.0000100;
# WCLK N DIVIDER = 32 : XVVV VVVV
sreg[ASI2_WCLK_N] =  0b.0100000;
# ASI2 BCLK WCLK OUTPUTS : XBBB XWWWW
# BCLK = ASI2 BDIV
# WCLK = DAC_FS
sreg[ASI2_BWCLK_OUT_CNTL] =  0b.010.000;

#------------------------------
# ASI3 CLOCKS
#------------------------------
# ASI3 BCLK DIVIDER CLOCK INPUT = DAC_MOD_CLOCK : XXXX XX01
sreg[ASI3_BCLK_N_CNTL] =  0b......01;
# BCLK N DIVIDER = 4 : XVVV VVVV
sreg[ASI3_BCLK_N] =  0b.0000100;
# WCLK N DIVIDER = 32 : XVVV VVVV
sreg[ASI3_WCLK_N] =  0b.0100000;
# ASI3 BCLK WCLK OUTPUTS : XBBB XWWWW
# BCLK = ASI3 BDIV
# WCLK = DAC_FS
sreg[ASI3_BWCLK_OUT_CNTL] =  0b.100.000;

1) Linux 请求固件“tlv320aic3262_FW_v1.bin”,并尝试执行 PLL 设置和 PRB 模式设置

请告诉我,我是否需要通过 amixer 设置来自 Linux 用户空间的音频路由(用于播放的 HP 和用于拍摄的 in2)

或者我需要在固件文件中添加此详细信息?

2)如果编解码器作为主中继器工作,我可以通过 Linux 驱动程序更改 PLL 设置运行时间吗?

3)如果仅使用 PRB 模式,将启动 ADC 和 DAC 的 ADC 和 DAC

我是否需要通过 amixer 从 Linux 用户空间执行此操作?