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.

[参考译文] Linux/AM3358:McASP 配置

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/668884/linux-am3358-mcasp-configuration

器件型号:AM3358
主题中讨论的其他器件: PCM1681PCM5102A

工具/软件:Linux

您好,

我开发了一款 AM3358定制板、类似于 AM335x 通用 EVM。

在我的板上、我要求将 McASP 与 DSP 的 McBSP 连接。

问题是、我在论坛中看到人们在使用大约32个信道进行类似操作、但对我来说、要求仅对单个信道进行 TDM。

必须做些什么以及如何做?

请尽早帮助我解决这个问题。

此致

MAD_HU

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

    我想详细说明这一点。

    我有一个 DSP、它将具有解调后获得的数字音频数据、并将通过其 McBSP 端口将该数字音频转发到我的处理器。 现在,DSP 的 McBSP 已连接到我的处理器的 McASP,我需要接收这些数字音频样本。
    因此、我不需要这两个论坛之间的任何编解码器活动、就像大多数论坛中所介绍的那样。
    我已经看到在一些论坛中创建和使用了虚拟编解码器驱动程序。 我不知道为什么要这样做?


    请尽早帮助我。

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

    根据我的理解、您需要从 TI DSP McBSP 模块在 AM335x McASP 端口上接收音频数据。

    关于 AM335x McASP 端口数据音频接收、是的、您应该使用虚拟编解码器驱动程序。 有关详细信息、请参阅以下 Wiki。

    processors.wiki.ti.com/.../Sitara_Linux_Audio_DAC_Example
    processors.wiki.ti.com/.../TI81XX_PSP_AUDIO_Driver_User_Guide

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

    您好、Pavel、

    在简要了解 上述内容后、我了解到我需要创建一个虚拟编解码器驱动程序、这将通过链接中提到的过程来完成。 但我现在的问题是、如何访问应用中的 McASP 端口以从 DSP 读取数据和向 DSP 写入数据。

    例如,我们使用 fD=open(...) 适用于 i2c、SPI 等 那么、需要执行什么操作才能将数据读取/写入 McASP。

    我真的很困惑,因为人们使用 aplay 等将数据写入 McASP ,但我没有任何文件使用该实用程序。 我手上有纯数字数据。

    因此、请帮助我从 McASP 读取数据并将数据写入 McASP。

     

    请尽早帮助我。

    此致

    MAD_HU。

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

    有两种方法可以访问 AM335x McASP 模块的音频数据。 一种是用户空间工具(aplay/arecord)、另一种是使用 ALSA API。 示例 ALSA API 是 snd_PCM_READI()函数,它从 PCM 读取交错帧。 有关 ALSA API 的更多信息、请查看以下链接:

    processors.wiki.ti.com/.../Sitara_Linux_Audio_Introduction
    processors.wiki.ti.com/.../Sitara_SDK_Linux_Audio_ALSA_User_Space
    processors.wiki.ti.com/.../Sitara_Linux_Audio_Sample_Application_Overview
    processors.wiki.ti.com/.../AM335x_Audio_Driver's_Guide
    processors.wiki.ti.com/.../AM335x-PSP_04.06.00.11_Features_and_Performance_Guide
    www.equalarea.com/.../alsa-audio.html
    www.saunalahti.fi/.../Full Duplex ALSA

    还有与音频相关的 gstreamer 和 PulseAudio:

    processors.wiki.ti.com/.../Sitara_Linux_Audio_gstreamer
    processors.wiki.ti.com/.../Sitara_Linux_Audio_pulseaudio

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

    我的板上有编解码器 Max9860、因此我考虑将 MCASP 线路连接到编解码器 IC 的 I2S、以测试我创建的驱动程序是否正确、现在使用给定的虚拟过程为 max9860编解码器 IC 创建了一个声音驱动程序 卡。

    我可以执行除内核 menuconfig 以外的所有操作。(它的抛出错误表示没有定义 menuconfig 的目标,我也检查了 make file。 未定义此类目标)

    由于我无法这样做、我已在 defconfig 文件/arch/arm/configs 中添加了 CONFIG_SND_SOC_MAX9860并创建了 snd-SoC-max9860.ko

    现在请告诉我,这只能说是足够的,或者我需要其他的东西,因为在初始阶段没有检测到声卡,而且当我使用 aplay 时,它的抛出错误表示没有检测到声卡。

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

    在 DAC 示例中,当我们创建虚拟驱动程序时,会理所当然地考虑某些事项,但在这里,我们将为现有 IC 创建一个驱动程序。 这需要对 DaVinci 文件进行任何认真的内容修改吗?


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

    [引用 user="Madhu GANDEPALLI">我可以执行除内核 menuconfig 以外的所有操作。(它的抛出错误表示没有定义 menuconfig 的目标,我也检查了 make 文件。 未定义此类目标)

    请附加控制台日志以进行分析。

    [引用 user="Madhu GANDEPALLI"]现在告诉我,单凭此 ko 就足够了,或者我需要其他一些东西,因为在初始阶段,没有检测到声卡,而且当我使用 aplay 时,它的抛出错误表明没有检测到声卡。

    请附加控制台日志以进行分析(引导日志+ aplay 日志)。

    此致、
    帕维尔

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

    你好 Pavel

    Kindl 查找 引导日志+ aplay 日志的 Belo 日志。

    此致

    MAD_HU

    #
    U-Boot SPL 2017.01 (2019年2月23日-15:22:13)
    尝试从 MMC1中启动
    ,读取 uboot.env
    
    **无法从 mmc0:1中读取“uboot.env”**
    使用默认环境
    
    读取 u-boot.img
    读取 u-boot.img
    读取 u-boot.img
    读取 u-boot.img 读取 u-boot.rev
    
    
    2017.01
    
    
    模型(AM35X:23:13)+13:20191:201:201:201:23:023:23 CPU TI AM335x EVM
    DRAM:1 GiB
    NAND:0 MIB
    MMC:OMAP SD/MMC:0、OMAP SD/MMC:1
    读取 uboot.env
    
    **无法使用
    默认环境从 mmc0:1 **读取"uboot.env"
    
    未设置。 验证第一个电子保险丝 MAC
    网络:cpsw、USB_ether
    按任意键以停止自动引导: 2 ### 1 ### 0
    切换到分区#0,确定
    mmc0是在
    设备0
    上找到的当前设备 SD/MMC,正在读取 boot.scr
    **无法读取文件 boot.scr **
    读取 uEnv.txt
    **无法读取文件 uEnv.txt **
    切换到分区#0,确定
    mmc0是当前设备
    正在扫描 MMC 0:1...
    切换到分区#0、好
    的 mmc0是当前器件
    SD/MMC 在器件0
    上找到3612408字节在444ms (7.8 mB/s)内读取
    39417字节在22ms (1.7 mB/s)
    ###平展器件树状引脚在88000000使用
    0x88000000处的 FDT 引脚
    将器件树加载到8fff3000、 结束8ff9f8... 确定
    
    启动内核...
    
    [0.000000]在物理 CPU 上引导 Linux 0x0
    [0.000000] Linux 版本4.9.59-ga75d8e9305 (Madhu@Madhu-VirtualBox)(gcc 版本6.2.1 20161016 (Linaro GCC 6.2-2016.11))#91 preempt tue Mar 5 17:03:44 IST 2019
    [0.82] CPU:ARMv7处理器[ARC67=v72] CPU 版本4cr (cr)
    PIPT / VIPT 非混叠数据高速缓存、VIPT 别名指令高速缓存
    [0.000000]、共页:FDT:机器模型:TI AM335x EVM
    [0.000000] EFI:从 FDT 获取 EFI 参数:
    [0.000000] EFI:未找到 UEFI。
    [0.000000] CMA:在 bbd000000
    [0.000000]保留48 MIB 内存策略:数据高速缓存写回
    [0.000000] CPU:所有 CPU 均在 SVC 模式下启动。
    [0.000000] AM335X ES2.1 (SGX NEON)
    [0.000000]在区域顺序中构建了1个区域列表,移动分组打开。 总页数:260416
    [0.000000]内核命令行:console=ttyO0、115200n8 root=PARTUUUUUID=0002eec4-02 RW rootfstype=ext4
    
    
    536等待[0.000000] PID 哈希表条目:4096 (顺序:2、16384字节)[0.144] Dentry 高速缓存哈希表条目:131072 (顺序:7、1.6000000
    :2250字节) 977356K/1048576K 可用(7168K 内核代码、280k rwdata、2360K rodata、1024K init、280k BSS、 22068K 保留、49152K CMA 保留、212992K HIGHMEM)
    [0.000000]虚拟内核内存布局:
    [0.000000] 向量:0xffffff0000 - 0xffffff1000 (4KB)
    [0.000000] Fixmap:0xc00000 - 0xc00000 (3072 KB)
    [0.000000] vmalloc:0xf0800000 - 0x0x800000 (240MB)
    [0.000000] 低内存:0xC0000000 - 0xf0000000 (768 MB)
    [0.000000] pkmap:bfe00000 - 0xC0000000 (2 MB)
    [0.000000] 模块:bbbf000000 - bbfe00000 (14 MB)
    [0.000000] .text:0xc0008000 - 0xc0800000 (8160 KB)
    [0.000000] init:0xc0b00000 - 0xc0c00000 (1024KB)
    [0.000000] .data:0xc0c00000 - 0xc0c462d0 (281KB)
    [0.000000] .bss:0xc0c462d0 - 0xc0c8c534 (281KB)
    [0.000000] slub:HWalign=64、order=0-3、MinObjects=0、CPU=1、Nodes =1
    [0.000000]可抢占分层 RCU 实现。
    [0.000000]叶扇出的生成时间调整为32。
    [0.000000] NR_IRQ:16 nr_IRQ:16
    16 [0.000000] IRQ:在0xfa200000 (修订版本5.0)处找到 INTC、具有128个中断
    [0.000000] OMAP 时钟事件源:timer2为240000Hz
    [0.000018] sched_clock:32位为24MHz、分辨率41ns、每894784849ns 换行
    一次 TimerFFFF 时钟源:0x0000_FFFF 时钟源:0x0000_max:0x0000FFFF 时钟源:0x0000.FFFF:0x0000.FFFF 79635851949 ns
    [0.000059] OMAP 时钟源:24000000 Hz
    时钟发生器1 [0.000276]时钟源探针:未找到匹配的时钟源
    [0.000481]控制台:彩色虚拟设备80x30
    [0.000512]警告:'console=ttyO0'已被'ttyS0'
    [0.00052]取代,这可确保您仍然看到内核消息。 请
    [0.000529]更新您的内核命令行。
    [0.000558]校准延迟环路... 597.60 BogoMips (lpj=2988032)
    [0.118874] pid_max:默认值:32768最小值:301
    [0.119042]安装高速缓存散列表条目:2048 (顺序:1、8192字节)
    [0.120059]安装点高速缓存散列表条目:2048 (顺序:1、8192字节)
    [0.120065] CPU 一致性测试: OK
    [0.120498]为0x80100000 - 0x80100060
    [0.121587] EFI 服务设置静态标识映射将不可用。
    [0.123427] devtmpfs:已初始
    化[0.140126] VFP 支持 v0.3:Implementor 41体系结构3第30部分版本 c rev 3
    [0.140557]时钟源:jiffies:MASK:0xFFFFFFFF max_cycles:0xFFFFFFFF、max_idle_ns:19112604462750000 ns
    [ 0.140] futex:0.589[0.4872 bytex:intrl
    1、intrl inc 列单[0.4889 bytes:] 初始化的 pinctrl 子系统
    [0.146439] NET:注册的协议系列16
    [0.148723] DMA:预分配的256 KiB 池用于原子相干分配
    [0.167672] OMAP_hwmod:debugss:_wait_target_disable failed
    [0.248876] cputle: Using guler ladder
    [0.278867] cpudle: Using geld: using guler menu GP5000.903[0.903[0.300]
    gm gmcus.300] gpio 硬件菜单[0.287230]
    无法找到节点/ocp/l4_wkup@44c0000000/CSCM@210000/ pinmux@800/nandflash_pins_s0的 pctldev、推迟探测器
    [0.311642]无 ATAG?
    [0.311669]硬件断点:不支持调试架构0x4。
    [0.360466] EDMA 49000000.EDMA:TI EDMA 引擎驱动
    程序[0.362496] reg-fixed-voltage regulator3:分配电源名称
    失败[0.362534] reg-fixed-voltage:probe of pcator3失败、错误-12[0.366908]
    omap_i44e0b000.iSCM:无法找到/ocp/l4_wkup mux_regulator3@pin2c、mc000_mu000/ pin2c@
    、@pin2c000_mu000_mu000_mu000_mu000_mu000_mu32c 找不到节点/ocp/l4_wkup@44c00000/SCM@210000/ pinmux@800/pinmux_i2c2_pins 的 pctldev,推迟探测器
    [0.367172]介质:Linux 介质接口:v0.10
    [0.367246] Linux 视频捕获接口:v2.00
    [0.368301] pps_core:Linuxpps API。 1寄存
    [0.3673111] pps_core:软件版本。 5.3.6 -版权所有2005-2007 Rodolfo Giometti 
    [0.367341]登记的 PTP 时钟支持
    [0.367392] EDAC MC:版本:3.0.0
    [0.36785] OMAP-mailbox 480c8000.mailbox:OMAP mailbox 版本0x400
    [0.369349]已初始化高级 Linux 声音架构驱动程序。
    [0.370887]时钟源:切换到时钟源 Timer1
    [0.385125] NET:注册协议系列2[0.386098]
    TCP 建立哈希表条目:8192 (顺序:3、32768字节)
    [0.386219] TCP 绑定哈希表条目:8192 (顺序:3、32768字节)
    [0.386329] TCP: 配置的哈希表(建立的8192 BIND 8192)
    [0.386449] UDP 哈希表条目:512 (顺序:1、8192字节)
    [0.386487] UP-Lite 哈希表条目:512 (顺序:1、8192字节)
    [0.386671] NET:注册协议系列1[0.387196]
    RPC:注册命名的 UNIX 套接字传输模块。
    [0.387213] RPC:注册的 UDP 传输模块。
    [0.387222] RPC:注册的 TCP 传输模块。
    [0.387230] RPC:注册的 TCP NFSv4.1反向通道传输模块。
    [0.388355]硬件性能事件:通过 armv7_cortex_A8 PMU 驱动程序启用、5个可用计数
    器[0.391723]工作集:timestimer_bits=14 max_order=18 bucke_order=4
    [0.402673] squashfs:4.0版(2009/01/31) Phillip Lougher
    [0.40403959]注册
    
    密钥类型[0.40404019]:注册密钥旋变体类型[0.4019]
    驱动程序2.1.32 [标志:R/O]。
    [0.406294]退回:池大小:64页
    [0.406560]块层 SCSI 通用(BSG)驱动程序0.4版已加载(主要246)
    [0.406577]已注册的 IO 调度程序 noop
    [0.406587]已注册的 IO 调度程序
    [0.406789]已注册的 IO inccfq (默认)
    [0.408550] pintrl-44ex: 使用
    虚拟稳压
    器[0.497129]串行:8250/16550驱动器,10个端口,禁用 IRQ 共享
    [0.502387] 44e09000.serial:,PA f9e10800大小568 [0.412947]未找到142个引脚背光电源 MMIO 0x44e09000 (IRQ = 158、base_baud = 3000000)处的 ttyS0是启用的8250
    [ 1.134614]控制台[ttyS0]
    48022000.serial:在 MMIO 0x48022000 (IRQ = 159、base_baud = 3000000)处的 ttyS1是8250
    [ 1.149662] 481a8000.serial: MMIO 0x481a8000 (IRQ = 160、base_baud = 3000000)上的 ttyS4是8250
    [ 1.161114] OMAP-rng 48310010.rng:OMAP 随机数生成器版本。 20
    [1.167951][DRM]已初始化
    [1.172322]面板:找到背光
    [1.177430][DRM]支持 vblank timestamp 缓存版本2 (21.10.2013)。
    [1.184174][DRM]不支持 vblank 时间戳查询的驱动程序。
    [1.217080]控制台:切换到彩色帧缓冲器器件40x30
    [1.25030] tilcdc 4830e000.lcdc:fb0:帧缓冲器件
    [1.269124]返修:模块已加载
    [1.280863]循环:模块已加载
    [1.289103] libphy:固定 MDIO 总线:探测
    [1.360938] davinci MDIO 修订版1.10IO
    :1004aMDIO 10IO:1.3604a1000 davinci_mDIO 1.000.10io 检测到的 phy mask FFFFFFFE
    [1.374214] libphy:4a101000/MDIO:探测
    [1.378265] DaVinci_MDIO 4a101000.MDIO:PHY[0]:device 4a101000.MDIO:00、driver Atheros 8031以太网
    [ 1.388581] DaVinciw 4a1000.madc:1000.5485s
    :vs 以太网查找失败[1.5]以太网节点:100cCPs:1.5a:100cpts:1.5a:100cpts
    溢出检查周期500 (jiffies)
    [1.412264] mousedev:PS/2鼠标设备通用于所有鼠标
    [1.418332] i2c /dev/entries 驱动程序
    [1.424490] cpudidle: enable-method property 'ti,am3352' found operations
    [1.4933] ledtrig-cpu:registered to indicate activities[1.506927]
    cpuNET protocol 系列[1.510]
    IPv6、IPv4和 MPLS over IPv4隧道驱动程序
    [1.520473] NET:registered protocol family 17
    [1.525594]注册的密钥类型 DNS_resolver 注册
    [ 1.530184] OMAP_VOLTAGE_LARGE_INIT:不添加电压驱动程序支持
    [ 1.543995] INIT-GPMC 50000000。GPMC:GPMC 修订版6.0
    [ 1.549195] GPMC_mem_late 0x570000
    :在0x1000000处禁用0x1000000:0x540000:0x540000:0x1000000:0x1000000 未找到 NAND 器件
    [1.561474] OMAP2-nand 8000000.nand:扫描失败、可能是总线宽度不匹配
    [1.570127] OMAP_i2c 44e0b000.i2c:总线0 rev0.11、频率为400kHz
    [ 1.577275] i2c i2c-2:f_iDALIIA 失败、/ocp/i2c@482c.19000@
    @482c2c2c.i2c2c2c]创建 iOMAP-i282c.i2c2c2c2c2c2c2c2c2c.ina.i2c.ina.i2c.19000/ i282c2c.ini2c2c.ina.i2c.ina.i2c.in@/ocp/i2c
    100kHz 时的总线2版本0.11
    [1.598307] hctosys:无法打开 RTC 设备(rtc0)
    [1.604247] VBAT:禁用
    [1.607118] lis3_reg:禁用
    [1.610308] WLAN-en-regulator:禁用
    [1.614411] v3v3:禁用
    [1.617255] ALSA 设备列表:
    未找到声音卡。
    [1.624683]正在等待根设备 PARTUUUUID=0002eec4-02...
    [1.633049] mmc0:主机不支持读取只读开关、假设写入启用
    [1.645011] mmc0:位于地址 AAAA
    [1.651582]的新高速 SDHC 卡 mmcblk0:mmc0:AAAA SA08G
    
    
    364 7.40 GiB [1.658777] mmcblk0:p1 1.75p2](快速完成)[1.75p2] 已装入的文件系统具有已排序的数据模式。 opts:(null)
    [ 1.766769] VFS:在器件179:2上安装根(ext4文件系统)。
    [1.776680] devtmpfs:已挂载
    [1.781696]释放未使用的内核内存:1024K
    [2.083941] systemd[1]:构建时间之前的系统时间、提前时钟。
    [2.142336] systemd[1]:systemd 230在系统模式下运行。 (+PAM -audit -selinux +IMA -AppArmor +smack +sysvinit +utmp -LIBCRYPTSETUP -GCRYPT -GNUTLS +ACL +XZ -LZ4 -SECCOMP +blkid -ELFUTILS +KMOD -IDN)
    [2.161585] systemd[1]:检测到的架构 ARM。
    
    欢迎使用#[1mArago 2017.10#[0m!
    
    [2.203422] systemd[1]:将主机名设置为 。
    [2.500867] systemd[1]:[/lib/systemd/system/gadget-init.service:15]在"服务"部分中添加了未知 lvalue "ExecStopPre"
    [2.874511] systemd[1]:侦听日志套接字(/dev/log)。
    [#[0;32m OK #[0m] Listening on Journal Socket (/dev/log)。
    [2.911505] systemd[1]:侦听 Syslog 套接字。
    [#[0;32m OK #[0m]正在侦听 Syslog 套接字。
    [2.941183] systemd[1]:已达到目标远程文件系统。
    [#[0;32m OK #[0m]已达到目标远程文件系统。
    [2.971542] systemd[1]:侦听 udev 控制套接字。
    [#[0;32m OK #[0m]正在侦听 udev 控制套接字。
    [3.001549] systemd[1]:侦听日志套接字。
    [#[0;32m OK #[0m]正在侦听日志套接字。
    [3.040135] systemd[1]:侦听进程内核转储套接。
    [#[0;32m OK #[0m]正在侦听处理内核转储套接。
    [#[0;32m OK #[0m]已开始向控制台目录监视发送密码请求。
    [#[0;32m OK #[0m]已达到目标交换。
    [#[0;32m OK #[0m] created slice User and Session Slice。
    [#[0;32m OK #[0m]正在侦听 udev 内核套接字。
    [#[0;32m OK #[0m]正在收听/dev/initctl 兼容性命名管道。
    [#[0;32m OK #[0m]已开始将密码请求转发到 Wall Directory Watch。
    [#[0;32m OK #[0m]已到达目标路径。
    [#[0;32m OK #[0m]正在侦听网络服务 Netlink 套接字。
    [#[0;32m OK #[0m] created slice System Slice。
    正在启动 alignment.service ...
    正在启动设置虚拟控制台...
    [#[0;32m OK #[0m]已达到目标层面。
    正在启动加载内核模块...
    正在启动日记账服务...
    正在开始在/dev/中 创建静态设备节点...
    [3.519994] cryptodev:加载树外模块并使内核出现。
    [3.532569] cryptodev:已加载驱动程序1.8。
    正在安装临时目录...
    正在开始重新装载根文件系统和内核文件系统...
    [#[0;32m OK #[0m] created slice system-Getty.slice。
    正在安装 POSIX 消息队列文件系统...
    正在安装调试文件系统...
    [#[0;32m OK #[0m] created slice system-serial\x2dgetty.slice。
    [3.800484] EXT4-FS (mmcblk0p2):已重新安装。 OPTS:(空)
    [#[0;32m OK #[0m]已安装调试文件系统。
    [#[0;32m OK #[0m]已安装 POSIX 消息队列文件系统。
    [#[0;32m OK #[0m]已安装的临时目录。
    [#[0;32m OK #[0m]已启动日志服务。
    [#[0;32m OK #[0m]已启动 alignment.service。
    [#[0;32m OK #[0m]已启动设置虚拟控制台。
    [#[0;32m OK #[0m]已开始加载内核模块。
    [#[0;32m OK #[0m]已开始在/dev/中 创建静态设备节点。
    [#[0;32m OK #[0m]已开始重新装载根和内核文件系统。
    正在启动 udev 冷插拔所有设备...
    [#[0;32m OK #[0m]已达到目标本地文件系统(预)。
    安装/media/ram...
    安装/var/volatile...
    正在启动 udev 内核设备管理器...
    正在开始应用内核变量...
    正在安装配置文件系统...
    正在开始将日志刷新到持久存储...
    [#[0;32m OK #[0m]已安装配置文件系统。
    [#[0;32m OK #[0m]已安装/var/volatile.
    [#[0;32m OK #[0m]已安装/media/ram.
    [#[0;32m OK #[0m]已开始应用内核变量。
    [#[0;32m OK #[0m]已启动 udev 内核设备管理器。
    [4.902829] systemd-journale[88]:已收到从 PID 刷新运行时日志的请求1.
    正在启动加载/保存随机种子...
    [#[0;32m OK #[0m]已达到目标本地文件系统。
    [#[0;32m OK #[0m]已开始将日志刷新到持久存储。
    [#[0;32m OK #[0m]已启动加载/保存随机种子。
    正在开始创建易失性文件和目录...
    [#[0;32m OK #[0m]已开始创建易失性文件和目录。
    正在开始更新 utmp 关于系统引导/关机...
    正在启动网络时间同步...
    [#[0;32m OK #[0m]已开始更新 utmp 关于系统引导/关机。
    [#[0;32m OK #[0m]已开始网络时间同步。
    [#[0;32m OK #[0m]已同步达到目标系统时间。
    [#[0;32m OK #[0m] created slice system-systemd\x2dbacklight.slice.
    正在启动加载/保存屏幕背光...背光的亮度:背光...
    [7.019686] OMAP-WDT:OMAP 看门狗计时器版本0x01:初始超时60秒
    [#[0;32m OK #[0m]已启动加载/保存屏幕背光亮度:背光。
    [7.206102] OMAP_RTC 44e3e000.RTC:已在运行
    [#[0;32m OK #[0m]找到器件/dev/ttyS0.
    [7.244279] OMAP_RTC 44e3e000.RTC:RTC 内核:将44e320.RTC 注册为 rtc0
    [7.307453] spidev spi1.0:db车 DT:spidev 直接列在 DT
    [7.307464]中-->--- [在此处剪切]-----
    
    
    [ 7.307505]警告:CPU:0 PID:147 at /oe/bld/build-CORTEX_1/arago-tmp-external-linaro-toolchain/work-shared/am335x-evm/kernel-source/drivers/spi/spidev.c:757 spidev_probe +0x1ac/0x1cc [crypedev][7.307537]链接的模块:spidev (+) RTC_OMAP (+) musb_AM335x ti_AM335x_tscadc omap_wdtdtdtq_codr (uv 控制器):7.7553 uv uv 控制器 o 4.9.59-ga75d8e9305 #91
    [7.307556]硬件名称:通用 AM33XX (平展设备树)
    [7.307564]背板:
    [7.307603][ ](dump_backtrace)从[ ](show_stack+0x18/0x1c)
    [7.307614] r7:00000009 R6:00000000 R5:bf038484 R4:00000000
    [7.307642][ ](show_stack)从[ ](dump_stack+0x24/0x28)
    [7.307663][ ](dump_stack)从[ ](_WARN+0xe8/0x100)
    [ 7.307676][ ](__warn)从[ ](warn_slespath_null+0x28/0x30)
    [7.307689] R9:00000000 R8:00000009 r7:bf038544 R6:00000000 R5:eec8dc00 R4:eec8dc00
    [7.307709][ ](warn_slowpath_null)、来自[ ](spidev_probe +0x1ac/0x1cc [spidev])
    [7.307740][ ](spidev_probe [spidev])、来自[ ](SPI_drv_probe +0x84/b4)
    [7.307751] R8:00000009 r7:bf038544 R6:00000000 R5:bf038534 R4:eec8dc00
    [7.307766][ ](SPI_drv_probe)、来自[ ](DRIVER_PROBLE_DEVICE_+0x208/0x2d0)
    [7.307775] r7:bf038544 R6:00000000 R5:c0c82034 R4:eec8dc00
    [7.307786][ ](driver_probe_device)从[ ](__DRIVER_ATE_ATT+0xc0/0xc4)
    [7.307799] R9:f0c1b000 R8:ee8f26c0 r7:00000000 R6:eec8dc34 R5:bf038544 R4:eec8dc00
    [7.307820][ ](__driver_attach)从[ ](BUS_TO_EASE_DEV_0x70/0xa4)
    [7.307829] r7:00000000 R6:c051c040 R5:bf038544 R4:00000000
    [7.307845][ ](bus_for_each_dev)、来自[ ](DRIVER_ATT+0x24/0x28)
    [7.307853] R6:c0c328b8 R5:eefb0e80 R4:bf038544
    [ 7.307867][ ](driver_attach)从[ ](BUS_ADD_DRIVER+0x108/0x214)
    [7.307881][ ](BUS_ADD_DRIVER)从[ ](DRIVER_REGISTER+0x80/0xFC)
    [7.307891] r7:eef87dc0 R6:00000000 R5:bf03851c R4:bf038544
    [ 7.307903][ ](driver_register)、从[ ](__SPI_REGISTER_DRIVER+0x60/0x64)
    [ 7.307909] R5:bf03851c R4:bf038780
    [ 7.307927][ ](__SPI_REGISTER_DRIVER)、来自[ ](spidev_init+0x98/0xcc [spidev])
    [7.307946][ ](spidev_init [spidev])、来自[ ](do_one _initcall+0x4c/0x178)
    [7.307954] r6:bf0385c0 r5:ffe000 r4:bf03a000
    [7.3079799][ ](多个_initcall)、来自[ ](DO_INIT_MODULE+0x68/0x3b0)
    [7.307992] R10:ee8f26e4 R9:f0c1b000 R8:ee8f26c0 r7:eef87dc0 R6:bf0385c0 R5:00000001
    [7.307996] R4:bf0385c15
    、[-7.3080 ](DO_INIT_MODULE)从[ ](LOAD_MODULE+0x1df4/0x2180)
    [7.308024] r7:00000001 R6:bf0385c0 R5:00000001 R4:eeff5f44
    [7.308037][ ](LOAD_MODULE)从[ ](sys_finit 模块+b0/0xc0)
    [7.308050] r10:00000000 R9:eeff4000 r8:c0107e44 r7:0000017b r6:b6f2df60 r5:00000007
    [7.308054] r4:00000000
    [ 7.308067][ ](sys_finIT_module)从[ ](RET_FAST_SYSCALL+0x0/0x3c)
    [7.308075] r6:00000000 r5:00000000 r4:004c31a0
    [7.3080]--[结束跟踪3202f24899306e75 ]--
    [8.594698]远程
    处理0:wproc 086_m3
    远程处理固件:wproc 086_m3:wmc
    远程处理器 wkup_m3现已启动
    [9.084841] wkup_m3_IPC 44e11324.wkup_m3_IPC:cm3固件版本= 0x192
    [#[0;32m OK #[0m] started udev 冷插拔所有设备。
    [9.919473] OMAP-SHIM 53100000.sham:OMAP 版本4.3上的硬件加速器
    [9.929224] PM:引导加载程序不支持仅 RTC!
    [10.025578] FAT-FS (mmcblk0p1):卷未正确卸载。 某些数据可能已损坏。 请运行 fsck。
    [10.107727] OMAP-AES 53500000。AES:OMAP AES 硬件加速器版本:3.2
    [10.108765] OMAP-AES 53500000。AES:将在
    次要1[#[0
    ;32m OK #[0m]器件上运行具有实时优先级的请求泵[10.191758][DRM]初始化 PVR 1.14.3699939 20110701。/dev/ttyS3.
    [#[0;32m OK #[0m]已达到目标系统初始化。
    [#[0;32m OK #[0m]正在侦听 dropbear.socket。
    [#[0;32m OK #[0m]正在侦听 D 总线系统消息总线插座。
    [#[0;32m OK #[0m]正在侦听 Avahi mDNS/DNS-SD 堆栈激活套接字。
    [#[0;32m OK #[0m]正在侦听 RPCBIND 服务器激活套接字。
    [#[0;32m OK #[0m]已达到目标套接字。
    [#[0;32m OK #[0m]已开始每日清理临时目录。
    [#[0;32m OK #[0m]已达到目标计时器。
    [#[0;32m OK #[0m]已达到目标基本系统。
    [#[0;32m OK #[0m]已启动系统日志记录服务。
    正在启动电话服务...
    正在启动登录服务...
    [#[0;32m OK #[0m]已启动内核日志记录服务。
    正在启动 Avahi mDNS/DNS-SD 堆栈...
    正在启动 uim-sysfs.service ...
    正在开始打印有关 GPLv3封装的通知...
    [#[0;32m OK #[0m]已启动 D-Bus 系统消息总线
    [#[0;32m OK #[0m]已启动电话服务。
    [#[0;32m OK #[0m]已启动 Avahi mDNS/DNS-SD 堆栈。
    正在启动网络服务...
    [13.759364]蓝牙:内核版本2.22
    [13.802974] NET:注册协议系列31
    [13.851509]蓝牙:HCI 设备和连接管理器已初始
    化[13.914237]蓝牙:HCI 套接字层已初始化
    [13.962718]蓝牙:L2CAP 套接字层已初始化
    [13.967887]蓝牙:SCO 层已初始化
    [#[#[0;32m]已找到/dev/mmcblk0p1.设备
    [#[0;32m OK #[0m]已启动网络服务。
    [14.552001] net eth0:正在初始化 cpsw 版本1.12 (0)
    [14.5557376] cpsw 4a100000。以太网:已初始化 cpsw ale 版本1.4
    [14.665407] cpsw 4a100000。以太网:ale 表大小1024
    [#[0;32m OK #[0m]正在侦听 Load/Save RF 2018交换机状态[14.665407]以太网 MDIO [14.8031:100000] 附加的 PHY 驱动程序[Atheros 8031以太网](MII_bus:phy_addr=4a101000.MDIO:00、IRQ=1)
    /dev/rfkill 手表。
    [#[0;32m OK #[0m]已到达目标网络。
    正在启动简单网络管理协议(SNMP)守护程序....
    [14.990043] libphy:找不到 PHY 4a101000.MDIO:01
    正在启动允许用户会话...
    [15.044420]网络 eth0:从机1上找不到 PHY "4a101000.MDIO:01"、错误-19
    正在启动具有轻量级系统要求的 Lightning Fast Webserver ...
    [#[0;32m OK #[0m]已使用 ipsec.conf 启动 StrongSwan IPsec IKEv1/IKEv2守护程序。
    [15.206736] CPT PTP bc clkid 0
    正在开始启用和配置 wl18xx 蓝牙堆栈...
    [15.331800] IPv6:ADDRCONF (NETDEV_UP):eth0:链路未就绪
    正在开始网络名称解析...
    正在启动 USB 小工具...
    [#[0;32m OK #[0m]已启动允许用户会话。
    [#[0;32m OK #[0m]已启动 Lightning Fast Web 服务器、具有轻量级系统要求。
    [#[0;32m OK #[0m]已启动登录服务。
    [#[0;32m OK #[0m]已在 tty1上启动 Getty。
    [#[0;32m OK #[0m]已在 ttyS3上启动串行 Getty。
    [#[0;32m OK #[0m]已在 ttyS0上启动串行 Getty。
    [16.525372] UDC-CORE:找不到可用的 UDC -已将[g_multi]添加到待处理驱动程序列表
    [#[0;32m OK #[0m]已启动网络名称解析。
    [17.075740] NET:注册协议系列15[#[0;32m
    OK #[0m] started Enable and configure wl18xx Bluetooth stack。
    [#[0;1;31mFAILED#[0m]启动 USB 小工具失败。
    有关详细信息、请参阅'stemctl status gadget-init.service'。
    [18.688036]初始化 XFRM netlink 套接字
    [18.702803]输入:TI-TSC 作为/devices/platform/ocp/44e0d000.tscadc/TI-am335x-tsc/input/input0
    [#[0;32m OK #[0m]启动简单网络管理协议(SNMP)守护程序。
    [19.288812] 47401300.usb-phy supply VCC not found、using dummy regulator
    [19.388533] usbcore:registered new interface driver usbfs
    [19.388638] usbcore:registered new interface driver hub
    [19.501225] usbcore:registered new device driver usb
    [19.727714] musb-hddrc musb-hdrc musb-hc.0] musb-musb-musb-musb-musb.0]
    已注册新 USB 总线、分配总线编号1
    [19.932280]集线器1-0:1.0:找到 USB 集线器
    [19.993597]集线器1-0:1.0:使用
    随机自以太网地址[20.145097]
    使用随机主机以太网地址[20.171515]
    使用主机以太网地址[20.176016]使用主机以太网地址检测到1个端口[20.145097]: A8:1B:6A:54:B6:87[ 20.300039]使用随机自以太网地址
    [ 20.349837 ]使用随机主机以太网地址
    [ 20.419374]使用主机以太网地址:A8:1B:6A:54:B6:87[ 20.47555]随机:crng init Done
    [ 20.495943] usb0:host MAC:dac:dac:dac:
    dac:
    rb:dac:dac:dac:dac
    :dac:dac:dac:dac:dac:dac:dac:dac:dac:dh:dh:dac:dac:dac:dh:dh:dh:dac:dac:dh: (无介质)
    [20.809224] LUN:可移动只读文件:/dev/mmcblk0p1
    [20.874414] LUN 数量=1
    [20.906905] g_multigadget:多功能复合小工具
    [20.989379] g_multi-g_adget:g_ready
    [21.046885] 47401b00.usb-phy supply VCC not found、using dummy regulator
    [21.203339] g_musb-musb.hdrb-musb.musb.hdrb-musb.hc-musb.hdmusb-musb.hdrb.gc:
    已注册的新 USB 总线、分配的总线编号2
    [ 21.436201] HUB 2-0:1.0:找到的 USB 集线器
    [ 21.514597]集线器2-0:1.0:检测到1个端口
    [ 21.860655] ti-pruss 4a300000.pruss:创建 PRU 内核和其他子平台设备
    [ 21.959076] IRQ:找不到/ocp/pruss_soc_bus@4a300000/@IN4a300000/ IN4300000的 IRQ 域@!
    [22.111292] IRQ:找不到/ocp/pruss_soc_bus@4a326000/pruss@4a300000/INTC@4a320000的 IRQ 域!
    [22.124697] musb-hdrc musb-hdrc.1:a_wait_vrise 中的 VBUS_ERROR (88、<AValid), retry #3, port1 0008010c  _____
    
    
    _________ _ _
    |_|_|_______|_|_|_|
    || |_|.'|。 |. ||_|_|. |||-_|||
    ||||、||||||||||||||||||
    |__| |__|
    
    Arago Project http://arago-project.org AM335x-EVM ttyS0
    
    Arago 2017.10 AM335x-EVM ttyS0
    
    AM335x-EVM 登录名:[22.910312] teproc teproc 1:4a334000.pru0可用[
    22.981793] PRU-r4a334000.pru0:PRU r23.430.pruP proc 1 /ocp/pruss_soc_bus:@
    
    /ocp/pruss_soc_bus r3004a38000@24000/ pra3004upru100 pru400 pru400 pru43upruprupru400 premotuss r24000/ pra334000.pru43u43u400 r24000/@prapru100 pra33000pr pru4000.pru100 r pru43u4001:pra334001@
    :pra334001@@r24000pr pra3340000r24000/ pra364apruP r24000pr pra364aprapraprapru40000r24000/ pruP 链接未就绪
    
    (小部分
    注意:此文件系统包含以下 GPLv3软件包:
    autobbinutils
    
    cifs-utils
    cpp-symLinks
    cp
    dosfswig++-symLinks
    
    g++
    gawg-dev
    gcc-symlinks
    
    gcc
    gdb
    gdbserver
    gl2
    gstreamer1.0-libav
    hidapi libglibliso-perf-utils
    
    libgmp10
    libbidn11
    mpc3
    libmp4 libmpcliptle4 liptle
    
    
    
    
    
    
    
    
    
    v3如果您不希望在
    发行之前分发 m4线路组件、请删除上述 v4 bidm4线路。 这可以使用
    opkg remove 命令来完成。 即:
    拆下视千克 
    其中 是上面列表中打印的名称
    
    注:如果包是您的另一个包的依赖项
    将通知相关软件包。 您应该这样做
    在中使用--force-remove-of dependent-packages 选项
    此外,亦删除附属套件
    
    (小部分
    [27.565012] PVR_K:UM DDK-(3699939)和 KM DDK-(3699939)匹配。 [确定]
    [29.522216] cpsw 4a100000.以太网 eth0:链路向上- 10Mbps/全速-流控制 Rx/TX
    [29.540132] IPv6:ADDRCONF (NETDEV_CHANGE):eth0:链路准备就绪
    
    
    ______ _________ _ _
    |_|_|_______|_|_|_|
    || |_|.'|。 |. ||_|_|. |||-_|||
    ||||、||||||||||||||||||
    |__| |__|
    
    Arago Project http://arago-project.org AM335x-EVM ttyS0
    
    Arago 2017.10 AM335x-EVM ttyS0
    
    AM335x-EVM 登录名:root
    
    #7#[r#[999;999H#[6n#8root@AM335x-EVM:~ ROOT
    @AM335x-EVM:~ AM335x-EVM:
    @AM335x-EVM
    :root~ AM335x-EVM:root@moox-EVM 模
    块:root~ lx# AM335x-evm Ω ld# AM335x-evm Ω
    bc_example 使用的大小 7326 0
    PRU_rproc 10584 0
    pruss_intc 7163 1 PRU_rproc
    高斯 9582 1 PRU_rproc
    SHA512_generic 9967 0
    SHA512_ARM 12252 0
    SHA256_generic 10178 0
    SHA1_generic 2864 0
    SHA1_ARM_NEON 6261 0
    SHA1_ARM 3862 1 SHA1_ARM_NEON
    MD5 2219 0
    USB_f_ACM 5276 1
    u_serial 11171 3 USB_f_ACM
    DES_generic 17608 0
    CBC 2388 0
    USB_f_ECM 6492 1
    musb_dsp 9734 0
    musb_hdrc 87874 1 musb_dsp
    usbcore 201869 1 musb_hdrc
    phy_AM335x 2372 2
    phy_AM335x_control 2937 1 phy_AM335x
    phy_generic 5372 1 phy_AM335x
    xfrm_user 22370 2
    ti_AM335x_ADC 7029 0
    ti_AM335x_TSC 6029 0
    xfrm4_tunnel 2040 0
    ipcomp 2257 0
    xfrm_ipcomp 4311 1 ipcomp
    支持4. 6402 0
    AH4 5627 0
    af_key 27032 0
    xfrm_algo 6989 5 xfrm_user、esp4、AH4、af_key、xfrm_ipcomp
    g_multi 6145 0
    USB_f_mass 存储 37218 2 g_multiUSB_f_RNDIS
    15482 2 g_multi_u_ether
    13001 3 USB_f_ECM、g_multi, USB_f_libNDIS
    复合 44446 5 USB_f_ECM、USB_f_ACM、USB_f_mass 存储、g_MULTI、USB_f_RNDIS
    UDC_CORE 19450 8 USB_f_ECM、USB_f_ACM、USB_f_mass 存储、u_serial、musb_hdrc、u_ether、USB_f_RNDIS、libcomposite
    USB_common 4737 6 phy_AM335x、UDC_CORE、musb_hdrc、libcomposite、musb_dsp、usbcore
    蓝牙 337541 2
    pm33xx 6433 0
    wkup_m3_IPC 8240 1 pm33xx
    wkup_m3_rproc 3670 1
    个远程处理器 28645 3 PRU_rproc、wkup_m3_rproc、wkup_m3_IPC
    pvrsrvkm 403500 3 bc_example
    omap_ae_driver 19334 0
    crypto_engine 7098 1 OMAP_AES_DRIVER
    OMAP_SHIM 21950 0
    ti_EMIF_SRAM 5663 1 pm33xx
    pruss_SoC_bus 4105 0
    spidev 7197 0
    RTC_OMAP 9662 1
    musb_AM335x 1426 0
    ti_am335x_tscadc 6290 2 ti_am335x_adc、ti_am335x_tsc
    omap_wdt 4634 0
    sch_FQ_codel 9115 3
    uio_module_drv 7251 0
    uio 9121 1 uio_module_drv
    cryptodev 38083 1
    root@AM335x-EVM:~# cd /lib/modules/4.9.59-ga75d8e9305
    root@AM335x-EVM:/lib/modules/4.9.59-ga75d8e9305 ls
    extra modules.builtin.bin modules.softdep
    内核 modules.dep modules.symbols
    modules.alias modules.dep.bin modules.symbols.bin
    modules.alias.bin modules.devname SND-SOC-max9860.ko
    modules.builtin modules.order
    root@AM335x-EVM:/lib/modules/4.9.59-ga75d8e9305 insmod snd-sc-max9860.ko
    root@AM335x-evm:/lib/modules/4.9.59-ga75d8e9305 aplay /etc/XMPP-qt/male.wav
    alsa lib ./../alsa-lib-1.1.2/src/confmisc.c
    
    
    /../alsa-lib-1.1.2/src/conf.c:767:(parse_card) cannot find card '0' alsa lib ./../alsa-lib-1.1.2/src/conf.c:4371:(_snd_config_evalate) function /../alsa-lib-1.1.2/src/confmisc.c:snfunc:snfunc: 无此类文件或目录
    ALSA lib ../../alsa-lib-1.1.2/src/confmisc.c
    
    
    /../../alsa-lib-1.1.2/src/pcm/pcm.c:1246:(snd_func_refer)评估名称 ALSA lib 时出错./../alsa-lib-1.1.2/src/conf.c:4371:(_snd_config_evaluate)函数 snd_func_refer returned error:no such file or directory alsa lib ./../alsa-lib-1.1.2/src/conf.c:4850:(snd_config_expand) evalm error:
    
    @/lib/modules/4.9.59-ga75d8e9305:no snoum_un.evm.asp 或 open.evm.evm.un.un.evm:un.evm:un_am35x_un.evm.un.un.evm.un.un.ature_un.asp 文件:un.evm:un.evm.asp 或 un.un. 
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Pavel、

    以下是供您参考的完整补丁。


    此致
    MAD_HU。

    --/media/madhu/Mad_hu/madoldfiles/codecs/Kconfig2017-12-23 19:21:47.000000000 +0530
    ++/home/madhu/ti-processor-sdk-linux-am335x-evm-04.02.00.09/board-support/linux-4.9.59 +gitAUTOINC+a75d8e9305-ga75d8e9305/sound/soc/codecs/Kconfig2019-03-05 14:29:19.692000000 +0530
    @@-87、7 + 87、9 @@
    如果是 I2C、请选择 SND_SOC_MAX98925
    如果是 I2C、请选择 SND_SOC_MAX98926
    如果是 I2C、请选择 SND_SOC_MAX9850
    -如果是 I2C、请选择 SND_SOC_MAX9860
    +选择 SND_SOC_MAX9860
    +如果是 I2C、则选择 SND_SOC_MAX9860_I2C
    +如果是 SPI_MASTER、则选择 SND_SOC_PCM179X_SPI
    如果是 I2C、请选择 SND_SOC_MAX9768
    如果是 I2C、请选择 SND_SOC_MAX9877
    如果 MFD_MC13XXX、请选择 SND_SOC_MC13783


    --/media/madhu/Mad_hu/madoldfiles/davinci-evm.c2017-12-23 19:21:48.000000000 +0530
    ++/home/madhu/ti-processor-sdk-linux-am335x-evm-04.02.00.09/board-support/linux-4.9.59 +gitAUTOINC+a75d8e9305-ga75d8e9305/sound/soc/codec/Davinci/Davinci-evm.c2019-03-05 17:03:32.8080000 +0530
    @@-20、14 + 20、243 @@
    #include
    #include
    #include
    -
    +#include
    #include
    #include
    +#include
    +#include
    +#include
    +#include
    +#include
    +#include
    +#include
    +#include
    +#include
    +#include
    +#include
    +#include

    struct snd_soc_card_drvdata_Davinci{
    struct clk *MCLK;
    无符号 SYSCLK;
    };
    +struct max9860_priv{
    +struct regmap * regmap;
    +struct regulator * dvdio;
    +struct notifier_block dvdio_NB;
    +u8 psclk;
    +unsigned long pclk_rate;
    +int fmt;
    +};
    +static int max9860_hw_params (struct snd_pcm_substream *子流、
    +struct snd_pcm_hw_params *参数、
    +struct snd_soc_dai *dai)
    +{
    +struct snd_soc_codec *编解码器= dai ->编解码器;
    +struct max9860_privt * max9860 = snd_soc_codec_get_drvdata (codec);
    +u8主设备;
    +u8 ifc1a = 0;
    +u8 ifc1b = 0;
    +u8 SYSCLK = 0;
    +无符号长整型 n;
    +内转塔;
    +
    +dev_dbg (codec->dev、"hw_params %u Hz、%u 通道\n"、
    +params_rate (params)、
    +params_channels (params));
    +
    +IF (params_channels (params)== 2)
    +ifc1b |= MAX9860_ST;
    +
    +switch (max9860->fmt & snd_SOC_DAIFMT_MASTER_MASK){
    +案例 SND_SOC_DAIFMT_CBS_CFS:
    +主器件= 0;
    +休息;
    +案例 SND_SOC_DAIFMT_CBM_CFM:
    +主设备= MAX9860_MASTER;
    +休息;
    +默认值:
    +return -EINVAL;
    +}
    +ifc1a ||主设备;
    +
    +if (master){
    +IF (params_width (params)* params_channels (params)> 48)
    +ifc1b |= MAX9860_BSEL_64X;
    +否则
    +ifc1b |= MAX9860_BSEL_48X;
    +}
    +
    +switch (max9860->fmt & snd_SOC_DAIFMT_format_mask){
    +案例 SND_SOC_DAIFMT_I2S:
    +ifc1a |= MAX9860_DDLY;
    +ifc1b |= MAX9860_ADLY;
    +休息;
    +案例 SND_SOC_DAIFMT_LEFT_J:
    +ifc1a |= MAX9860_WCI;
    +休息;
    +案例 SND_SOC_DAIFMT_DSP_A:
    +if (params_width (params)!= 16){
    +DEV_ERR (CODEC -> DEV、
    +"DSP_A仅适用于每个样本16位。\n");
    +return -EINVAL;
    +}
    +ifc1a |= MAX9860_DDLY | MAX9860_WCI | MAX9860_HIZ | MAX9860_TDM;
    +ifc1b |= MAX9860_ADLY;
    +休息;
    +案例 SND_SOC_DAIFMT_DSP_B:
    +if (params_width (params)!= 16){
    +DEV_ERR (CODEC -> DEV、
    +"DSP_B仅适用于每个样本16位。\n");
    +return -EINVAL;
    +}
    +ifc1a |= MAX9860_WCI | MAX9860_HIZ | MAX9860_TDM;
    +休息;
    +默认值:
    +return -EINVAL;
    +}
    +
    +switch (max9860->fmt & snd_SOC_DAIFMT_INV_mask){
    +案例 SND_SOC_DAIFMT_NB_NF:
    +休息;
    +案例 SND_SOC_DAIFMT_NB_IF:
    +switch (max9860->fmt & snd_SOC_DAIFMT_format_mask){
    +案例 SND_SOC_DAIFMT_DSP_A:
    +案例 SND_SOC_DAIFMT_DSP_B:
    +return -EINVAL;
    +}
    +ifc1a ^= MAX9860_WCI;
    +休息;
    +case snd_SOC_DAIFMT_IB_IF:
    +switch (max9860->fmt & snd_SOC_DAIFMT_format_mask){
    +案例 SND_SOC_DAIFMT_DSP_A:
    +案例 SND_SOC_DAIFMT_DSP_B:
    +return -EINVAL;
    +}
    +ifc1a ^= MAX9860_WCI;
    +/*通过*/
    +案例 SND_SOC_DAIFMT_IB_NF:
    +ifc1a ^= MAX9860_DBCI;
    +ifc1b ^= MAX9860_ABCI;
    +休息;
    +默认值:
    +return -EINVAL;
    +}
    +
    +dev_dbg (codec->dev、"IFC1A %02x\n"、ifc1a);
    +ret = regmap_write (max9860->regmap、MAX9860_IFC1A、ifc1a);
    +if (ret){
    +dev_err (codec->dev、"无法设置 IFC1A:%d\n"、ret);
    +回程;
    +}
    +dev_dbg (codec->dev、"IFC1B %02x\n"、ifc1b);
    +ret = regmap_write (max9860->regmap、MAX9860_IFC1B、ifc1b);
    +if (ret){
    +dev_err (codec->dev、"无法设置 IFC1B:%d\n"、ret);
    +回程;
    +}
    +
    +/*
    +*检查整数时钟模式是否可行、但在从模式下应避免
    +*因为我们不知道 lrclk 是否来自 pclk 和
    +*数据表提到频率必须完全匹配
    +*此操作的顺序。
    +*/
    +if (params_rate (params)=8000 || params_rate (params)=16000){
    +if (master){
    +switch (max9860->pclk_rate){
    +案例12000000:
    +SYSCLK = MAX9860_FREQ_12MHz;
    +休息;
    +案例13000000:
    +SYSCLK = MAX9860_FREQ_13MHZ;
    +休息;
    +案例19200000:
    +SYSCLK = MAX9860_FREQ_19_2MHz;
    +休息;
    +默认值:
    +/*
    +*不能使用整数时钟模式。 休假
    +* SYSCLK 为零并下降至
    PLL 模式下的+*代码。
    +*/
    +休息;
    +}
    +
    +IF (SYSCLK && params_rate (params)=16000)
    +SYSCLK |= MAX9860_16kHz;
    +}
    +}
    +
    +/*
    +*最大可能 n:
    +* 65536 * 96 * 48kHz/10MHz -> 30199
    +*最小可能 n:
    +* 65536 * 96 * 8kHz/20MHz -> 2517
    +*两者都非常适合可用的15位、无需应用任何掩码。
    +*/
    +n = DIV_ROUND _最近的_ULL (65536ULL * 96 * params_rate (params)、
    +max9860->pclk_rate);
    +
    +if (!SYSCLK){
    +/*PLL 模式*/
    +IF (params_rate (params)> 24000)
    +SYSCLK |= MAX9860_16kHz;
    +
    +IF (!master)
    +n |= 1;//触发快速 PLL 锁定模式*/
    +}
    +
    +SYSCLK |= max9860->psclk;
    +dev_dbg (codec->dev、"SYSCLK %02x\n"、SYSCLK);
    +ret = regmap_write (max9860->regmap、
    +MAX9860_SYSCLK、SYSCLK);
    +if (ret){
    +dev_err (codec->dev、"无法设置 SYSCLK:%d\n"、ret);
    +回程;
    +}
    +dev_dbg (codec->dev、"N %lu\n"、n);
    +ret = regmap_write (max9860->regmap、
    +MAX9860_AUDIOCLKHIGH、n >> 8);
    +if (ret){
    +dev_err (codec->dev、"设置 NHI 失败:%d\n"、ret);
    +回程;
    +}
    +ret = regmap_write (max9860->regmap、
    +MAX9860_AUDIOCLKLOW、n & 0xff);
    +if (ret){
    +dev_err (codec->dev、"设置 NLO 失败:%d\n"、ret);
    +回程;
    +}
    +
    +if (!master){
    +dev_dbg (codec->dev、"启用 PLL\n");
    +ret = regmap_update_bits (max9860->regmap、MAX9860_AUDIOCLKHIGH、
    +MAX9860_PLL、MAX9860_PLL);
    +if (ret){
    +dev_err (codec->dev、"无法启用 PLL:%d\n"、ret);
    +回程;
    +}
    +}
    +
    +返回0;
    +}
    +
    +static int max9860_set_fmt (struct snd_soc_dai *dai、unsigned int fmt)
    +{
    +struct snd_soc_codec *编解码器= dai ->编解码器;
    +struct max9860_privt * max9860 = snd_soc_codec_get_drvdata (codec);
    +
    +switch (fmt & snd_SOC_DAIFMT_MASTER_MASK){
    +案例 SND_SOC_DAIFMT_CBM_CFM:
    +案例 SND_SOC_DAIFMT_CBS_CFS:
    +max9860->fmt = fmt;
    +返回0;
    +
    +默认值:
    +return -EINVAL;
    +}
    +}

    静态 int evm_startup (struct snd_pcm_substream *子流)

    @@-82、6 +311、12 @@
    关断= EVM_SHUTDOWN、
    hw_params = EVM_hw_params、
    };
    +static struct snd_soc_ops max9860_da_ops ={
    +//.hw_params = max9860_hw_params、
    +//.set_fmt = max9860_set_fmt、
    +.startup = EVM_startup、
    +.shutdown = EVM_shutdown、
    +};

    /* DaVinci-EVM 机器 Dapm 小工具*/
    静态常量结构 snd_soc_dapm_widget aic3x_dapm_widget[]={
    @@-242、6 +477、22 @@
    SND_SOC_DAIFMT_IB_NF、
    };

    +static struct snd_soc_da_link max9860_evm_dai ={
    +.name ="MAX9860"、
    +.stream_name ="AIC3X"、
    +.cpu_da_name="Davinci-McAP.0"、
    +.codec_di_name ="max9860-hifi"、
    +.codec_name ="max9860-codec.1"、
    +.platform_name ="Davinci-McAP.0"、
    +.init = EVM_aic3x_init、
    +.ops =&max9860_Dae_ops、
    +.dai_fmt = snd_SOC_DAIFMT_DSP_B | snd_SOC_DAIFMT_CBM_CFM |
    +SND_SOC_DAIFMT_IB_NF、SND_SOC_DAIFMT_CBS_CFS |
    +snd_SOC_DAIFMT_I2S,
    +
    +};
    +
    +
    /*达芬奇 DM6446 EVM 音频机器驱动程序*/
    /*
    * DM6446 EVM 中的 ASP0由 U55计时、如所示
    @@-345,6 +59613 @@
    .compatible ="ti、DA830-EVM-audio"、
    .data =(void *)&EVM_DAI_tlv320aic3x、
    }、
    +{
    +.compatible ="maxim、max9860"、
    +.data =(void *)&max9860_EVM_Dai、
    +}、
    +
    +
    +
    {/* Sentinel */}
    };
    MODULE_DEVICE_TABLE (、DaVinci_EVM_dt_ID);







    --/media/madhu/Mad_hu/madoldfiles/Kconfig2017-12-23 19:21:48.000000000 +0530
    ++/home/madhu/ti-processor-sdk-linux-am335x-evm-04.02.00.09/board-support/linux-4.9.59 +gitAUTOINC+a75d8e9305-ga75d8e9305/sound/soc/codec/Davinci/Kconfig2019-03-05 16:36:15.124000000 +0530
    @@-37、8 + 37、12 @@

    配置 snd_Davinci_SOC_general_evm
    三态
    -选择 SND_SOC_TLV320AIC3X
    -选择 Snd_Davinci_SOC_MCASP
    +#select snd_SOC_TLV320AIC3X
    +选择 SND_SOC_MAX9860
    +#select snd_Davinci_SOC_MCASP
    +#select snd_SOC_MAX9860
    +
    +

    配置 SND_AM33XX_SOC_EVM
    三态"AM33XX 基于芯片的电路板的 SoC 音频"
    @@-50、6 + 54、20 @@
    AM335x-EVMSK 和具有 AudioCape 板的 BeagelBone 具有这种功能
    设置。

    +
    +config snd_AM33XX_SOC_MAX9860
    三态"AM33XX 芯片基板上 MAX9860的 SoC 音频支持"
    +取决于 SND_DaVinci_SOC 和 SOC AM33XX
    +选择 SND_SOC_MAX9860
    +选择 Snd_Davinci_SOC_MCASP
    +
    +
    +
    +
    +
    +
    +
    +
    配置 snd_Davinci_SOC_EVM
    三态"达芬奇 DM6446、DM355或 DM365 EVM 的 SoC 音频支持"
    取决于 SND_EDMA_SOC 和 I2C





    --/media/madhu/Mad_hu/madoldfiles/Makefile2017-12-23 19:21:48.000000000 +0530
    ++/home/madhu/ti-processor-sdk-linux-am335x-evm-04.02.00.09/board-support/linux-4.9.59 +gitAUTOINC+a75d8e9305-ga75d8e9305/sound/soc/coda/达芬奇/Makefile2019-03-05 12:13:05.2880000 +0530
    @@-13、3 + 13、4 @@
    SND-SOC-EVM-objs:= Davinci-EVM.o

    obj-$(CONFIG_SND_Davinci_SOC_generic_EVM)+= snd-so-evm.o
    +obj-$(snd_AM33XX_SOC_MAX9860)+=snd-so-max9860.o





    --/media/madhu/Mad_hu/madoldfiles/davinci-mcasp.c2017-12-23 19:21:48.000000000 +0530
    ++/home/madhu/ti-processor-sdk-linux-am335x-evm-04.02.00.09/board-support/linux-4.9.59 +gitAUTOINC+a75d8e9305-ga75d8e9305/sound/soc/codec/Davinci/Davinci-McAP.c2019-03-05 11:35:40.308000000 +0530
    @@-38、6 + 38、7 @@
    #include
    #include
    #include
    +#include

    #include "edma-pcm.h"
    #include "Davinci-McAP.h"
    @@-59、6 + 60、14 @@
    DaVinci_MCBSP_RXTDM_REG、
    DaVinci_MCBSP_TXTDM_REG、
    };
    +struct max9860_priv{
    +struct regmap * regmap;
    +struct regulator * dvdio;
    +struct notifier_block dvdio_NB;
    +u8 psclk;
    +unsigned long pclk_rate;
    +int fmt;
    +};

    struct Davinci_McASP_context{
    u32config_regs[array_size (context_regs)];
    @@-438、6 +447、16 @@
    /* FS 之后无延迟*/
    DATA_DELAY = 0;
    中断;
    +//case snd_SOC_DAIFMT_CBS_CFS:
    +/*//编解码器是时钟和帧从器件*/
    +//McASP_SET_BITS (McASP、DaVinci_MCASP_ACLKXCTL_REG、ACLKXE);
    +//McASP_SET_BITS (McASP、DaVinci_MCASP_TXFMCTL_REG、AFSXE);
    +//McASP_SET_BITS (McASP、DaVinci_MCASP_ACLKRCTL_REG、ACLKRE);
    +//McASP_SET_BITS (McASP、DaVinci_MCASP_RXFMCTL_REG、AFESR);
    +//McASP_SET_BITS (McASP、DaVinci_MCASP_Pdir_REG、ACLKX | ACLKR);
    +//McASP_SET_BITS (McASP、DaVinci_MCASP_Pdir_REG、AFSX | AFESR);
    +//中断;
    +
    默认值:
    RET =-EINVAL;
    转至输出;
    @@-1386,6+1405,222 @@
    set_tdm_slot= Davinci_McASP_set_tdm_slot、
    };

    +
    +static int max9860_hw_params (struct snd_pcm_substream *子流、
    +struct snd_pcm_hw_params *参数、
    +struct snd_soc_dai *dai)
    +{
    +struct snd_soc_codec *编解码器= dai ->编解码器;
    +struct max9860_privt * max9860 = snd_soc_codec_get_drvdata (codec);
    +u8主设备;
    +u8 ifc1a = 0;
    +u8 ifc1b = 0;
    +u8 SYSCLK = 0;
    +无符号长整型 n;
    +内转塔;
    +
    +dev_dbg (codec->dev、"hw_params %u Hz、%u 通道\n"、
    +params_rate (params)、
    +params_channels (params));
    +
    +IF (params_channels (params)== 2)
    +ifc1b |= MAX9860_ST;
    +
    +switch (max9860->fmt & snd_SOC_DAIFMT_MASTER_MASK){
    +案例 SND_SOC_DAIFMT_CBS_CFS:
    +主器件= 0;
    +休息;
    +案例 SND_SOC_DAIFMT_CBM_CFM:
    +主设备= MAX9860_MASTER;
    +休息;
    +默认值:
    +return -EINVAL;
    +}
    +ifc1a ||主设备;
    +
    +if (master){
    +IF (params_width (params)* params_channels (params)> 48)
    +ifc1b |= MAX9860_BSEL_64X;
    +否则
    +ifc1b |= MAX9860_BSEL_48X;
    +}
    +
    +switch (max9860->fmt & snd_SOC_DAIFMT_format_mask){
    +案例 SND_SOC_DAIFMT_I2S:
    +ifc1a |= MAX9860_DDLY;
    +ifc1b |= MAX9860_ADLY;
    +休息;
    +案例 SND_SOC_DAIFMT_LEFT_J:
    +ifc1a |= MAX9860_WCI;
    +休息;
    +案例 SND_SOC_DAIFMT_DSP_A:
    +if (params_width (params)!= 16){
    +DEV_ERR (CODEC -> DEV、
    +"DSP_A仅适用于每个样本16位。\n");
    +return -EINVAL;
    +}
    +ifc1a |= MAX9860_DDLY | MAX9860_WCI | MAX9860_HIZ | MAX9860_TDM;
    +ifc1b |= MAX9860_ADLY;
    +休息;
    +案例 SND_SOC_DAIFMT_DSP_B:
    +if (params_width (params)!= 16){
    +DEV_ERR (CODEC -> DEV、
    +"DSP_B仅适用于每个样本16位。\n");
    +return -EINVAL;
    +}
    +ifc1a |= MAX9860_WCI | MAX9860_HIZ | MAX9860_TDM;
    +休息;
    +默认值:
    +return -EINVAL;
    +}
    +
    +switch (max9860->fmt & snd_SOC_DAIFMT_INV_mask){
    +案例 SND_SOC_DAIFMT_NB_NF:
    +休息;
    +案例 SND_SOC_DAIFMT_NB_IF:
    +switch (max9860->fmt & snd_SOC_DAIFMT_format_mask){
    +案例 SND_SOC_DAIFMT_DSP_A:
    +案例 SND_SOC_DAIFMT_DSP_B:
    +return -EINVAL;
    +}
    +ifc1a ^= MAX9860_WCI;
    +休息;
    +case snd_SOC_DAIFMT_IB_IF:
    +switch (max9860->fmt & snd_SOC_DAIFMT_format_mask){
    +案例 SND_SOC_DAIFMT_DSP_A:
    +案例 SND_SOC_DAIFMT_DSP_B:
    +return -EINVAL;
    +}
    +ifc1a ^= MAX9860_WCI;
    +/*通过*/
    +案例 SND_SOC_DAIFMT_IB_NF:
    +ifc1a ^= MAX9860_DBCI;
    +ifc1b ^= MAX9860_ABCI;
    +休息;
    +默认值:
    +return -EINVAL;
    +}
    +
    +dev_dbg (codec->dev、"IFC1A %02x\n"、ifc1a);
    +ret = regmap_write (max9860->regmap、MAX9860_IFC1A、ifc1a);
    +if (ret){
    +dev_err (codec->dev、"无法设置 IFC1A:%d\n"、ret);
    +回程;
    +}
    +dev_dbg (codec->dev、"IFC1B %02x\n"、ifc1b);
    +ret = regmap_write (max9860->regmap、MAX9860_IFC1B、ifc1b);
    +if (ret){
    +dev_err (codec->dev、"无法设置 IFC1B:%d\n"、ret);
    +回程;
    +}
    +
    +/*
    +*检查整数时钟模式是否可行、但在从模式下应避免
    +*因为我们不知道 lrclk 是否来自 pclk 和
    +*数据表提到频率必须完全匹配
    +*此操作的顺序。
    +*/
    +if (params_rate (params)=8000 || params_rate (params)=16000){
    +if (master){
    +switch (max9860->pclk_rate){
    +案例12000000:
    +SYSCLK = MAX9860_FREQ_12MHz;
    +休息;
    +案例13000000:
    +SYSCLK = MAX9860_FREQ_13MHZ;
    +休息;
    +案例19200000:
    +SYSCLK = MAX9860_FREQ_19_2MHz;
    +休息;
    +默认值:
    +/*
    +*不能使用整数时钟模式。 休假
    +* SYSCLK 为零并下降至
    PLL 模式下的+*代码。
    +*/
    +休息;
    +}
    +
    +IF (SYSCLK && params_rate (params)=16000)
    +SYSCLK |= MAX9860_16kHz;
    +}
    +}
    +
    +/*
    +*最大可能 n:
    +* 65536 * 96 * 48kHz/10MHz -> 30199
    +*最小可能 n:
    +* 65536 * 96 * 8kHz/20MHz -> 2517
    +*两者都非常适合可用的15位、无需应用任何掩码。
    +*/
    +n = DIV_ROUND _最近的_ULL (65536ULL * 96 * params_rate (params)、
    +max9860->pclk_rate);
    +
    +if (!SYSCLK){
    +/*PLL 模式*/
    +IF (params_rate (params)> 24000)
    +SYSCLK |= MAX9860_16kHz;
    +
    +IF (!master)
    +n |= 1;//触发快速 PLL 锁定模式*/
    +}
    +
    +SYSCLK |= max9860->psclk;
    +dev_dbg (codec->dev、"SYSCLK %02x\n"、SYSCLK);
    +ret = regmap_write (max9860->regmap、
    +MAX9860_SYSCLK、SYSCLK);
    +if (ret){
    +dev_err (codec->dev、"无法设置 SYSCLK:%d\n"、ret);
    +回程;
    +}
    +dev_dbg (codec->dev、"N %lu\n"、n);
    +ret = regmap_write (max9860->regmap、
    +MAX9860_AUDIOCLKHIGH、n >> 8);
    +if (ret){
    +dev_err (codec->dev、"设置 NHI 失败:%d\n"、ret);
    +回程;
    +}
    +ret = regmap_write (max9860->regmap、
    +MAX9860_AUDIOCLKLOW、n & 0xff);
    +if (ret){
    +dev_err (codec->dev、"设置 NLO 失败:%d\n"、ret);
    +回程;
    +}
    +
    +if (!master){
    +dev_dbg (codec->dev、"启用 PLL\n");
    +ret = regmap_update_bits (max9860->regmap、MAX9860_AUDIOCLKHIGH、
    +MAX9860_PLL、MAX9860_PLL);
    +if (ret){
    +dev_err (codec->dev、"无法启用 PLL:%d\n"、ret);
    +回程;
    +}
    +}
    +
    +返回0;
    +}
    +
    +static int max9860_set_fmt (struct snd_soc_dai *dai、unsigned int fmt)
    +{
    +struct snd_soc_codec *编解码器= dai ->编解码器;
    +struct max9860_privt * max9860 = snd_soc_codec_get_drvdata (codec);
    +
    +switch (fmt & snd_SOC_DAIFMT_MASTER_MASK){
    +案例 SND_SOC_DAIFMT_CBM_CFM:
    +案例 SND_SOC_DAIFMT_CBS_CFS:
    +max9860->fmt = fmt;
    +返回0;
    +
    +默认值:
    +return -EINVAL;
    +}
    +}
    +
    +static const 结构 snd_soc_da_ops max9860_da_ops ={
    +.hw_params = max9860_hw_params、
    +.set_fmt = max9860_set_fmt、
    +};
    +
    静态 int Davinci_McASP_Dai (struct snd_SoC_Dai *)

    struct Davinci_McASP *McASP = snd_soc_da_get_drvdata (dai);
    @@-1545、6 +1780、10 @@
    };

    static const struct of _device_id mcasp_dt_ids[]={
    +//{
    +/-.compatible ="maxim、max9860"、
    +//.data =&am33xx_McASP_pdata、
    +//}、

    .compatible ="ti、DM646x-McASP-audio"、
    .data =&DM646x_McASP_pdata、




    --/media/madhu/Mad_hu/madoldfiles/tisdk_am335x-evm_defconfig2017-12-23 19:36:18.000000000 +0530
    ++/home/madhu/ti-processor-sdk-linux-am335x-evm-04.02.00.09/board-support/linux-4.9.59 +gitAUTOINC+a75d8e9305-ga75d8e9305/arch/arm/configs/tisdk_AM335x-evm_defconfig2019-03-05 15:19:41.488000000 +0530
    @@-3595、10 +3595、11 @@
    未设置# CONFIG_SND_SOC_AMD_ACP
    CONFIG_SND_Atmel_SOC=m
    CONFIG_SND_EDMA_SOC=y
    -# CONFIG_SND_Davinci_SOC_I2S 未设置
    -config_snd_Davinci_SOC_MCASP=y
    CONFIG_SND_Davinci_SOC_I2S=m
    +CONFIG_SND_Davinci_SOC_MCASP=m
    CONFIG_SND_Davinci_SOC_general_EVM=m
    CONFIG_SND_AM33XX_SOC_EVM=m
    +CONFIG_SND_AM33XX_SOC_MAX9860=m
    # CONFIG_SND_DESIGWARE_I2S 未设置

    编号
    @@-3652、7 +3653、7 @@
    未设置# CONFIG_SND_SOC_GTM601
    未设置# CONFIG_SND_SOC_Inno_RK3036
    未设置# CONFIG_SND_SOC_MAX98504
    -# CONFIG_SND_SOC_MAX9860未设置
    + CONFIG_SND_SOC_MAX9860=m
    未设置# CONFIG_SND_SOC_PCM1681
    未设置# CONFIG_SND_SOC_PCM179X_I2C
    未设置# CONFIG_SND_SOC_PCM179X_SPI
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="Madhu GANDEPALLI"][1.617255] ALSA 设备列表:[1.620304]找不到声卡。

    您应该在这里有一些东西、即使在使用虚拟编解码器驱动程序时也是如此。

    在 DAC 示例(链接如下)中、我们为 PCM5102a DAC 提供了 ALSA 虚拟驱动程序、在内核中检测到该驱动程序:

    [5.852989] ALSA 器件列表:
    [5.856126]#0:TI PCM5102A 

    这是在 dts 主文件中设置的:

    Sound{
    compatible ="ti、pcm5102a-evmaudio";
    ti、model ="TI PCM5102A";
    ti、audio-codec =<&pcm5102a>;
    ti、McASP-controller =<&McASP0>;
    ti、codec-clock-rate =<24000000>;
    };} 

    processors.wiki.ti.com/.../Sitara_Linux_Audio_DAC_Example

     

    BeagleBoneBlack 板中的另一个示例、该示例使用虚拟 HDMI 编解码器驱动程序。 有关详细信息、请参阅以下指针:

    AM335x-bonebblack.dts

    此致、
    帕维尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    关于 MAX9860编解码器、请检查以下 e2e 线程:

    e2e.ti.com/.../368417

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

    你好 Pavel  

    这也是我的关切。

    我想在内核 menuconfig 中,人们正在启用此功能,但对于我来说,在我的 SDK 中,04.02.00.09 menuconfig 选项在 Makefile 中不存在。

    我已经看到 ~/linux/board-support/linux-xxxxxx/include/configs 的 tristate.conf 和 auto.conf 正在使用某个位置的配置集进行更新。 我在这里看到、在构建内核时、我们的新 snd_SOC_XXX 未被填充。

    请朝这个方向看、并帮助我获取声卡。

    此致

    MAD_HU

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

    我还注意到 ti_sdk_am335xxxxxx_defconfig 是决定内核构建的选项。

    该文件的修补程序在以前的文章中提供。

    请仔细研究并帮助我。


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

    若要构建定制内核、请执行以下步骤:

    导出 AM335x PSDK 工具链编译器
    2.清理内核源
    3.使用 tisdk_AM335x-evm_defconfig (而不是 ti_sdk_am335xxxxxx_defconfig)配置内核
    4.自定义配置(menuconfig 或 else)
    5.编译内核
    6.编译 dtb 文件(如果需要)
    7.编译模块(如果需要)
    8.安装内核、DTB 和模块

    有关详细信息、请参阅以下 wiki 页面:

    processors.wiki.ti.com/.../Linux_Kernel_Users_Guide
    processors.wiki.ti.com/.../Linux_Core_Audio_User's_Guide

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

    我也是这样做的。
    tisdk_AM335x-evm_defconfig 的名称输入错误。

    我在 Davinci_evm.c 和 Davinci_McAP.c 中保留了一些 printk 语句。 我什么时候能看到这些陈述?
    启动时、甚至在我对该 ko 执行烟雾操作时、我都无法看到这些语句


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

    [引用 user="Madhu GANDEPALLI">我在 Davinci_EVM.c 和 Davinci_McAP.c 中保留了一些 printk 语句。 我什么时候能看到这些陈述?
    启动时、甚至在我对该 ko[/quot]进行烟雾处理时、我都无法看到这些语句

    您可以在执行 arecord/aplay 命令或启动 ALSA 应用程序后看到 printk 语句。 有关更多详细信息、请参阅以下 e2e 线程:

    如果您有其他问题、请告诉我。

    此致、
    帕维尔

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

    您好、Pavel、

    音频 DAC 示例似乎不适用于我的 SDK。 正如我说过的、我的 SDK 为4.02.xx、我一直在失败。

    因此、我开始在 DaVinci_EVM 探针和 DaVinci_McASP 探针函数中保留内核调试语句。 我发现 DaVinci_EVM 出现故障、说找不到任何 CPU Dai DaVinci_McAP.0。

    我开始调试 DaVinci_McAP.C. 在这里、我发现他们尝试从中读取 tdm_slots、 num_serializer 等值  davinci_mcasp_pdata am33xx_mcasp_pdata where these values are not there and hence throwing error message saying no platform data.

    有人评论说,这些值将从 DTS 加载,但不会发生。

    请尽早帮助我。

    此致

    MAD_HU

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

    马德胡

    [引用 USER="Madhu GANDEPALLI"音频 DAC 示例似乎不适用于我的 SDK。 正如我说过的、我的 SDK 为4.02.xx、我一直在失败。

    您能否澄清一下您测试音频 DAC 示例的确切工作原理或不工作原理? 您是否在定制板上安装了 PCM5102a DAC 芯片? 如果您没有 PCM5102a DAC 芯片、您是否有与 AM335x McASP 相连的内容(DAC、ADC、编解码器等)?

    请提供您的最新引导日志以及测试音频 DAC 示例的确切程度的日志。

    此致、
    帕维尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好 Pavel
    我将 Max9860附加到我之前的帖子中已经提到的 McASP 上。

    虽然我很难实现生成的声卡,但设置 DAI fmt 失败。 在进行大量调试之后,我们知道必须调用 I2C 驱动程序才能执行此操作,并对 DTS 文件进行必要的更改。

    现在问题是声卡后面出现了 I2C。 我在/sound/soc/codecs 的 kconfig 中为 snd_SOC_MAX9860使用了"取决于 I2C"

    但 i2c 仍然会迟到。 如果 I2C 更早出现、我的问题就会得到解决。

    请尽早帮助我解决这个问题。

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

    [引用 user="Madhu GANDEPALLI"]我在之前的帖子中已经提到了我的 McASP 的 Max9860。

    您的初始帖子涉及 AM335x McASP 到另一个 DSP McBSP 的连接以及使用虚拟编解码器驱动程序。 如果您对此配置(McASP 到 McBSP、虚拟编解码器驱动程序)仍有疑问、请在这个 e2e 线程中告知我。

    现在您有了另一种配置、AM335x McASP 转 MAX9860编解码器。 对于 MAX9860编解码器、有特定的编解码器驱动程序(max9860.c)并且不需要虚拟编解码器驱动程序。 有关与新配置(McASP 到 MAX9860编解码器)相关的问题、请在 Sitara 论坛中打开新的 e2e 线程。

    此致、
    帕维尔