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.

[参考译文] TMS320DM368:AIC 编解码器的内核支持

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/578919/tms320dm368-kernel-support-for-aic-codec

器件型号:TMS320DM368

您好!

我们使用的是 DM368 Leopard TB-02 EVM 和 IPNC RDK 5.1。 它具有片上语音编解码器和 AIC 3104编解码器芯片。 在默认内核中、在声卡支持中选择语音编解码器。

我们能够在语音编解码器输出引脚上收听音频

我在下面的路径中选择了音频编解码器 AIC 是内核菜单配置

器件驱动程序->声卡支持->高级 Linux 声音架构->用于 SoC 音频支持的 ALSA ->用于 DaVinci DM368 EVM 的 SoC 音频支持->选定的 DM365编解码器选择(音频编解码器- AIC3101)

现在、AIC 音频编解码器应该被用于音频接收和回放

启动后、内核中未检测到 ALSA 声音设备、如下所示:

[2.094156]错误:驱动程序'avinci-McBSP'已注册,正在中止...
[2.107184]######## 正在初始化声音 SoC 卡######
[2.108296] ALSA 器件列表:
[2.111774]未找到声卡。

通过检查引导打印件、我发现 McBSP 探针出现故障。

[0.549693]达芬奇-McBSP 达芬奇-McBSP:**获取资源时出错

上述故障的代码部分为:

/* FIFO 数据资源*/
RES = platform_get_resource (pdev、IORESOURCE_MEM、1);
如果(!res){
DEV_ERR(&pdev->dev,“**获取资源时出错\n");
转到 ioremap_fail_exit;

FIFO 数据资源获取失败。 什么是 FIFO 资源? 如何消除此错误?? 此错误是否是未找到 ALSA 声音设备的根本原因??

我还在附加内核日志。

正在启动内核...

[0.000000] Linux 版本2.6.37_IPNC_DM368_5.1.0 (Ubuntu@Ubuntu -高精度-工作站- T5500)(gcc 版本4.3.3 (GCC))#15取代 Mon Mar 6 17:05:20 IST 2017
[0.000000] CPU:ARM926EJ-S [41069265]修订版5 (ARMv5TEJ)、CR=00053177
[0.000000] CPU:VIVT 数据高速缓存、VIVT 指令高速缓存
[0.000000]机器:达芬奇 DM36x IPNC
[0.000000]内存策略:ECC 禁用、数据高速缓存写回
[0.000000]达芬奇 DM36x_rev1.2变体0x8
[0.000000]在区域顺序和移动分组中构建了1个区域列表。 总页数:15240页
[0.000000]内核命令行:console=ttyS0、115200n8 rw mem=60M root=/dev/nfs nfsroot=192.168.1.6:/home/ubuntu/pranay/radio_nor_demo/ipnc_rdk_dm36x/ipnc/Source/ipnc_rdk/target/filesys_dm368 ip=DHCP cmemk.phys_start="0x83C00000" cmemk.phys_end="0x88672" cmemk.phys_start_1="0x0000000" cmembr=0x0000000_off_lap1.lak_un.phon1000 memble=0x800001.lak_off.cpowcmemk.phon1000 memble=0x800001.lak_un.phon1000 memble=0x000" cmembr_off.phon1000
[0.000000] PID 哈希表条目:256 (顺序:-2、1024字节)
[0.000000]条目高速缓存散列表条目:8192 (顺序:3、32768字节)
[0.000000] inode 高速缓存散列表条目:4096 (顺序:2、16384字节)
[0.000000]内存:60MB =总共60MB
[0.000000]内存:56076k/56076k 可用、5364k 保留、0K HIGHMEM
[0.000000]虚拟内核内存布局:
[0.000000]矢量:0xff0000-0xff1000 (4KB)
[0.000000] fixmap:0xFF00000 - 0xFFE0000 (896 KB)
[0.000000] DMA:0x000000 - 0xE00000 (14 MB)
[0.000000] vmalloc:0xc4000000 - 0x羽毛00000 (938 MB)
[0.000000]低内存:0xC0000000 - 0xc3c00000 (60MB)
[0.000000]模块:bbf000000 - 0xC0000000 (16 MB)
[0.000000].init:0xc0008000 - 0xc002c000 (144 KB)
[0.000000].text:0xc002c000 - 0xc0456000 (4264 KB)
[0.000000].data:0xc0456000 - 0xc048f6c0 (230KB)
[0.000000] slub:Genslabs=13、HWalign=32、order=0-3、MinObjects=0、CPU=1、 节点= 1
[0.000000]可抢占的分层 RCU 实现。
[0.000000]禁用基于 RCU 的 CPU 停止检测。
[0.000000]禁用 Verbose 失速 CPU 检测。
[0.000000] NR_IRQ:245
[0.000000]控制台:彩色虚拟设备80x30
[0.000412]校准延迟环路... 147.86茂物剪(lpj=739328)
[0.220085] pid_max:默认值:32768最小值:301
[0.220423]安全框架已初始化
[0.220642]挂载高速缓存散列表条目:512
[0.221775] CPU:测试写入缓冲区一致性:好的
[0.224067] devtmpfs:已初始化
[0.228190]达芬奇:8个 GPIO IRQ
[0.229073] NET:注册协议系列16.
[0.270741] DM365_RMD_cs_RDK_150_WL_init
[0.273069]#### 正在初始化 DM365 AIC3X 编解码器######
[0.393434]生物:创建层块 为0
[0.399926] SCSI 子系统已初始化
[0.405802] usbcore:注册的新接口驱动程序 usbfs
[0.407651] usbcore:注册的新接口驱动程序集线器
[0.408925] usbcore:注册的新设备驱动程序 USB
[0.413821] VPSS VPSS:DM365_VPSS 已探测
[0.413908] VPSS VPSS:DM365_VPSS VPSS 探针成功
[0.419438]高级 Linux 声音架构驱动程序版本1.0.23。
[0.424810]切换到时钟源 timer0_1
[0.537579] NET:注册协议系列2.
[0.538002] IP 路由高速缓存散列表条目:1024 (顺序:0、4096字节)
[0.539084] TCP 建立哈希表条目:2048 (顺序:2、16384字节)
[0.539290] TCP 绑定哈希表条目:2048 (顺序:1、8192字节)
[0.539420] TCP:配置哈希表(建立2048 BIND 2048)
[0.539467] TCP 注册
[0.539528] UDP 哈希表条目:256 (顺序:0、4096字节)
[0.539620] UP-Lite 哈希表条目:256 (顺序:0、4096字节)
[0.540688] NET:注册协议系列1.
[0.542095] RPC:注册的 UDP 传输模块。
[0.542156] RPC:注册的 TCP 传输模块。
[0.542198] RPC:注册的 TCP NFSv4.1反向通道传输模块。
[0.549693]达芬奇-McBSP 达芬奇-McBSP:**获取资源时出错
[0.644184] Installing knfsd (版权所有(C) 1996 okir@monad.swb.de)。
[0.645200] JFFS2版本2.2。 (NAND)Copyright2001-2006 Red Hat, Inc.
[0.650777] msgmni 已设置为109
[0.657873]已注册 IO 调度程序 NOP (默认)
[0.660556] CSL:模块安装成功、器件主要编号= 254
[0.660620] CSL:模块版本0.10.00、构建于2017年2月27日17:28:26
[0.660696] I2C:模块安装成功、器件主要编号= 253
[0.660754] DMA:模块安装成功、器件主要编号= 252
[0.660794] DRV:模块安装成功
[0.660830] DRV:模块构建于2017年2月27日17:28:27
[0.660870] DRV:EMDMACC.QUEPRI = 00002777
[0.660904] DRV:system.MSTPRI0 = 00440011
[0.60937] DRV:system.MSTPRI1 = 00000444
[0.60969] DRV:ISP.BCR = 00000002
[0.661002] DRV:system.MISC = 00000399
[0.661036] EDMAK 模块:构建于2017年2月27日17:28:13
[0.661078]参考 Linux 2.6.37版
[0.661116]文件/home/ubuntu/pranay/radio_nor_demo/ipnc_rdk_dm36x/ipnc/Source/dvsdk_ipnctools/linuxutils_2_26_02_05/packages/ti/sdo/linuxutils/edma/src/module/edmak.c
[0.663497] IRQK 模块:构建于2017年2月27日17:28:12
[0.663566]参考 Linux 2.6.37版
[0.663606]文件/home/ubuntu/pranay/radio_nor_demo/ipnc_rdk_dm36x/ipnc/Source/dvsdk_ipnctools/linuxutils_2_26_02_05/packages/ti/sdo/linuxutils/irq/src/module/irqk.c
[0.665940] irqk 已初始化
[0.668262] CMEMK 模块:构建于2017年2月27日17:28:10
[0.668336]参考 Linux 2.6.37版
[0.668377]文件/home/ubuntu/pranay/radio_nor_demo/ipnc_rdk_dm36x/ipnc/Source/dvsdk_ipnctools/linuxutils_2_26_02_05/packages/ti/sdo/linuxutils/cmem/src/module/cmemk.c
[0.675045]已分配大小为0x4400000的堆缓冲器0xc5000000
[0.675115] CMEM 范围与内核物理重叠-允许重叠
[0.675168] CMEM PHYS_START (0x1000)与内核(0x8000000 -> 0x83c00000)重叠
[0.675364] cmemk 已初始化
[0.675439]串行:8250/16550驱动程序,2个端口,禁用 IRQ 共享
[0.771840] serial8250.0:MMIO 0x1c20000处的 ttyS0 (IRQ = 40)为16550A
[1.319024]控制台[ttyS0]已启用
[1.381689] serial8250.0:MMIO 0x1d06000 (IRQ = 41)处的 ttyS1为16550A
[1.424076]返修:模块已加载
[1.436673]检测到 ONFI 闪存
[1.440015] ONFI 参数页0有效
[1.443981] NAND 器件:制造商 ID:0x2C、芯片 ID:0xda (Micron NAND 256Mib3、3V 8位)
[1.454494]未找到芯片0的错误块表
[1.460854]未找到芯片0的坏块表
[1.465512]扫描设备、以查找坏块
[1.492132]错误的 eraseblock 248、位于0x000001f00000
[1.496844]错误的 eraseblock 249、位于0x000001f20000
[1.501629]错误的 eraseblock 250位于0x000001f40000
[1.506332]错误的 eraseblock 251位于0x000001f60000
[1.511104]错误的 eraseblock 252、位于0x000001f80000
[1.515809]错误的 eraseblock 253位于0x000001fa0000
[1.520573]错误的 eraseblock 254、位于0x000001fc0000
[1.525271]错误的 eraseblock 255、位于0x000001fe0000
[1.529961]错误的 eraseblock 256、位于0x000002000000
[1.534722]错误的 eraseblock 257、位于0x000002020000
[1.539421]错误的 eraseblock 258位于0x000002040000
[1.544202]错误的 eraseblock 259位于0x000002060000
[1.548902]错误的 eraseblock 260位于0x000002080000
[1.553686]错误的 eraseblock 261位于0x0000020a0000
[1.558388]错误的 eraseblock 262、位于0x0000020c0000
[1.563173]错误的 eraseblock 263位于0x0000020e0000
[1.730364]在"Davinci_nand.0"上创建7个 MTD 分区:
[1.735930] 0x000000000000-0x300000:“bootloader”
[1.747973] 0x000000300000-0x000000500000:"params"
[1.759767]0x000000500000-0x000000900000:"内核"
[1.772079] 0x000000900000-0x000003100000:"filesystem1"
[1.784509] 0x000003100000-0x000003900000:"data1"
[1.796196] 0x000003900000-0x000006100000:"filesystem2"
[1.808584] 0x000006100000-0x000010000000:"data2"
[1.821171] DaVinci_n 和 DaVinci_nand.0:控制器修订版2.3
[1.834409] SPI_DaVinci SPI_Davinci.0:控制器位于0xfec66000
[1.890162] DaVinci_MDIO DaVinci_MDIO.0:达芬奇 MDIO 修订版本1.4
[ 1.896400] DaVinci_MDIO DaVinci_MDIO.0:检测到的 phy 掩码 fffffffffc
[1.906949] DaVinci_MDIO.0:探测
[1.910696] DaVinci_MDIO DaVinci_MDIO.0:PHY[0]:器件0:00、驱动程序未知
[1.917806] DaVinci_MDIO DaVinci_MDIO.0:PHY[1]:器件0:01、驱动程序未知
[1.927341] i2c /dev/entries 驱动程序
[1.934261] Linux 媒体接口:v0.10
[1.939202] Linux 视频捕获接口:v2.00
[1.947085] vpbe-OSD vpbe-OSD:OSD 子设备探针成功
[1.954085] vpbe-venc vpbe-venc:VENC 子器件探测成功
[1.961471] vpbe v4l2 vpbe v4l2:vpbe v4l2器件已注册
[1.967411]将默认输出设置为复合
[1.972358]将默认模式设置为 NTSC
[1.976456] vpbe-v4l2 vpbe-v4l2:尝试注册 VPBE 显示设备。
[1.98338] vpbe-v4l2 vpbe-v4l2:lay=c34f1400,lay->video_dev=c34f14e8
[1.991764] vpbe-v4l2 vpbe-v4l2:尝试注册 VPBE 显示设备。
[1.998524] vpbe-v4l2 vpbe-v4l2:lay=c3573e00,lay->video_dev=c3573e8
[2.008293]看门狗:心跳60秒
[2.023698]旭化成 AK4104 ALSA SoC 编解码器驱动程序
[2.033576] Cirrus Logic CS4270 ALSA SoC 编解码器驱动程序
[2.094156]错误:驱动程序'avinci-McBSP'已注册,正在中止...
[2.107184]######## 正在初始化声音 SoC 卡######
[2.108296] ALSA 器件列表:
[2.111774]未找到声卡。
[2.116917] NF_conntrack 版本0.5.0 (876桶、最大3504)
[2.125909] IP_Tables:(c) 2000-2006年 Netfilter 核心小组
[2.132028] TCP 立方注册
[2.135351] NET:注册协议系列17.
[2.212651] net eth0:连接的 PHY 驱动程序[通用 PHY](MII_bus:phy_addr=0:01、id=221613)
[2.280116]发送 DHCP 请求。
[4.210467] PHY:0:01 -链路向上- 100/全
[5.100103],好的
[6.250172] IP-Config:从192.168.1.6获得 DHCP 应答、我的地址为192.168.1.70
[6.258489] IP-Config:完整:
[6.261698] device=eth0、addr=192.168.1.70、mask=255.255.255.0、gw=255.255.255.255、
[6.269797] host=192.168.1.70、domain=mydomain.example、nis-domain=(none)、
[6.277217] bootserver=192.168.1.6、rootserver=192.168.1.6、rootpath=
[6.430859] VFS:在设备0:14上安装了根(NFS 文件系统)。

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

    该错误表明平台设备未注册 AIC 3104。 我没有你的代码库、因此我可以从我的代码中提出建议。

    1.确保语音编解码器部件被禁用(在芯片编解码器中、在您的情况下工作)
    2.检查 arch/arm/mach-Davinc/中的特定板级配置文件中是否有与以下代码类似的内容:
    #ifdef CONFIG_SND_DM365_AIC3X_CODEC
    DM365_init_asp (&DM365_EVM_snd_data);
    3.确保在文件 arch/arm/mach-davinci/DM365.c 中,DM365_init_asp ()函数没有"#if 0"。 如果有、请将其移除。 DM368也有类似的器件。
    4.确保板级配置文件中包含以下内容:
    I2C_Board_info ("tlv320aic3x"、0x18)(确认从器件地址、在某些代码中我还会看到0x1b)

    以上只是提示性信息、因为我没有确切的代码。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Kashetty、您好!

    您是否找到时间尝试上述操作? 您是否能够取得进展?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Dwarakesh、

    很抱歉耽误你的回答。 我尚未尝试 您提到的修复程序。 我会尝试并返回给您。

    此致、

    Pranay Kumar