在设备树中注册 snd-soc-dummy

2023-12-21

我正在尝试在我的设备树源文件中注册 soc-utils 中提供的 ALSA 虚拟编解码器,以将其与 i2s 设备驱动程序 (sun8i-i2s) 一起使用。
我尝试在 i2s 配置中设置 sound-dai 字段,如下所述:https://patchwork.kernel.org/patch/7679391/ https://patchwork.kernel.org/patch/7679391/,但是设备驱动程序在读取设备树时找不到dai名称。
我找到了两种解决方法,其中包括编写我自己的虚拟编解码器并将其提供给设备树:

/ {
    stupid-codec {
        #sound-dai-cells = <0x00000000>;
        compatible = "linux,snd-soc-stupid";
        status = "okay";
        linux,phandle = <0x0000dead>;
        phandle = <0x0000dead>;
    };
...
};

...    

&i2s0 {
    #sound-dai-cells = <0x00000000>;
    compatible = "allwinner,sun8i-h3-i2s"; 
    sound-dai = <0x0000dead>; 
    status = "okay";
};

或者在设备驱动程序中强制链接编解码器,并且设备中没有 sound-dai 字段:

device tree :
&i2s0 {
    // No sound-dai
    status = "okay";
};

i2s driver :
static int sun8i_card_create(struct device *dev, struct priv *priv)
{
    struct snd_soc_card *card;

...

    // Skip the part where it's reading the device tree
    #if 0
        codec->of_node = sun8i_get_codec(dev);
        if (!codec->of_node) {
            dev_err(dev, "no port node\n");
            return -ENXIO;
        }
        DBGOUT("%s: codec_name=\"%s\"\n", __func__, codec->of_node->name);

        if(snd_soc_of_get_dai_name(dev->of_node, &codec->dai_name) < 0)
        {
            dev_err(dev, "%s: failed to find dai name, use codec's name as dai name.\n", __func__);
            codec->dai_name = codec->of_node->name;
        }
        DBGOUT("%s: dai_name=\"%s\"\n", __func__, codec->dai_name);
    #endif

    // Force codec and dai name
    codec->name = "snd-soc-dummy";
    codec->dai_name = "snd-soc-dummy-dai";

两种方法都可以,但它仍然是一种肮脏的黑客行为,因此如果有人拥有设备树中虚拟对象的正确语法,那就太好了。

编辑2019/10/10

我们最终使用了不同的编解码器(pcm5102a),它在 dts 中单独实现:

 (in sun8i-h3-nanopi-neo-air.dts) 
 &i2s0 {
    /* sound-dai = <&pcm5102a>; */
    status = "okay";
 };

 (in sun8i-h3-nanopi.dtsi)  
 pcm5102a: pcm5102a-codec {
    #sound-dai-cells = <0>;                                                                                                                              
    compatible = "ti,pcm5102a";
    status = "disabled";
 };

至于snd-soc-dummy的使用,我无法使其正常工作,但我注意到通用的linux驱动程序似乎使用硬编码字符串来注册它:https://github.com/torvalds/linux/blob/master/sound/soc/generic/simple-card.c https://github.com/torvalds/linux/blob/master/sound/soc/generic/simple-card.c


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在设备树中注册 snd-soc-dummy 的相关文章

  • 将非规范化数字刷新为零

    我在网上搜索过 但没有结果 Xcode 和 Visual C 有没有办法将非规范化数字视为 0 我本以为 IDE 首选项中有一个选项可以打开此选项 但似乎找不到它 我正在做一些跨平台音频工作 需要停止某些处理器占用资源 Cheers 您正在
  • 使用 Javascript 播放音频元素 (html5)

    我正在尝试弄清楚如何触发从 javascript 播放音频 我得到了一些 html 看起来像 div class audio foo div
  • 如何获取 mp3 文件的封面?

    我有一个 mp3 文件 当我用 Windows Media Player 阅读它时 它有专辑的封面 所以我想知道是否有办法在 javascript 或 jQuery 中获取该封面 请访问以下网址了解更多内容 http www richard
  • Objective C - 音频延迟估计的互相关

    我想知道是否有人知道如何执行互相关两个音频信号之间iOS 我想将接收器 我正在从麦克风接收信号 处获得的 FFT 窗口与发射器处 正在播放音轨 处的 FFT 窗口对齐 即确保每个窗口的第一个样本 除了发射机的 同步 周期之外 也将是接收机的
  • 如何低延迟地使用 Android 音频

    Problem 您可能听说过 Android 不提供低延迟音频 API 我所说的低延迟音频是指您应该能够从麦克风获取音频信号并播放声音 中间没有太多时间间隔 例如 5 7 毫秒 我尝试过旧的java 带有AudioRecord和AudioT
  • Android 中的音频交叉淡入淡出

    我正在开发一个媒体播放器用于我的学习目的 我希望在媒体播放器应用程序中具有交叉淡入淡出功能 但我不知道从哪里开始 我尝试在互联网上搜索但没有运气 我使用的是安卓MediaPlayer所有媒体播放器相关操作的类 任何人都知道任何解决方法可以实
  • 我们可以从 MFCC 系数中恢复音频吗?

    可以从 MFCC 系数中获取音频信号吗 另外 MFCC 系数是否有一个值范围 如果有的话 是什么 如果没有 如何将其归一化在 0 到 1 之间 我尝试使用以下 MATLAB 代码 http labrosa ee columbia edu m
  • 如何使用 javascript 从 Audio Element 录制音频

    我正在使用 HTML5 和 Javascript 制作录音机 并且不想包含任何第三方 API 我的第一步是使用以下命令创建音频检索器和播放器
  • ffmpeg 用于屏幕捕获?

    所以我有一个小程序来捕获屏幕和计算机麦克风的声音 然后屏幕截图被编码为 ScreenVideo2 声音被编码为 AAC 如何使用 ffmpeg 逐帧混合 然后将混合输出发送到 wowza 媒体服务器 如果用ffmpeg无法完成 您能提供一些
  • 使用python同时播放两个正弦音

    我正在使用 python 来播放正弦音 音调基于计算机的内部时间 以分钟为单位 但我想根据秒同时播放一个音调 以获得和谐或双重的声音 这就是我到目前为止所拥有的 有人能指出我正确的方向吗 from struct import pack fr
  • 当通过音频采样的数据数量超过 AudioRecord 构造函数中设置的“bufferSizeInBytes”时会发生什么?

    public AudioRecord int audioSource int sampleRateInHz int channelConfig int audioFormat int bufferSizeInBytes 这是公共构造函数Au
  • 如何从 URL 流式传输音频而不在设备上下载 mp3 文件

    如何在 Swift 中从 URL 流式传输音频而不在设备上下载 mp3 文件 我需要导入什么 我需要某些库吗 添加任何内容到 info plist 中吗 请评论你的代码 您可以使用 iOS AVPLayer 从 url 传输音频 var p
  • 使用 Google Speech 时从 Google Cloud Storage 访问音频文件

    我使用下面的这段代码使用 Google Speech 成功解析了包含语音的 wav 文件 并将其转换为文本 但我想访问另一个 wav 文件 该文件已放置在 Google Cloud Storage 公开 上 而不是本地硬盘上 为什么不简单地
  • 如何开始在 Ubuntu 20.04 上使用 Mozilla TTS 训练自定义语音模型?

    我想使用我录制的音频样本在 Mozilla TTS 中创建自定义语音 但不知道如何开始 Mozilla TTS 项目有文档和教程 但我在将各个部分组合在一起时遇到了困难 似乎缺少一些基本信息 而初学者需要知道这些信息才能继续 我有一些问题
  • 元素存在之前的html5音频绑定时间更新

    我试图从音频标签绑定 timeupdate 事件 该标签尚不存在 我习惯这样做 body on click selector function e 我用音频标签尝试了这个 body on timeupdate audioPlayerJS a
  • 使用 C 创建立体声正弦波

    我正在尝试用 C 创建立体声正弦 WAV 并且可能有不同的 可能是空白的 左声道和右声道 使用此函数为每个通道生成一个音调 int16 t create tone float frequency float amplitude float
  • ffmpeg:音频样本的字节顺序

    我使用 ffmpeg 的 avcodec 从我的 C 应用程序中的音乐文件中检索原始音频样本 对于我测试的文件 这些文件样本的字节序似乎是小字节序 但我想知道对于我尝试解码的所有文件是否总是如此 即来自 ffmpeg 的实现或至少它的体系结
  • Android 从 C++ 端播放原始音频

    我需要能够在 Android 系统的 C 端以自定义文件格式传输音频 我正在致力于移植自定义媒体播放器 并且需要能够打开自定义文件并从中传输音频 这很重要 因为我认为从性能角度来看将整个播放器移植到 JAVA 是不可行的 并且通过 JNI
  • 在 IOS 上使用 AVComposition 混合两个音频文件

    我正在尝试混合两个音频文件 将一个音频文件放在另一个音频文件之上 不是缝合在一起 但我在 IOS 上学习 AVFoundation 时遇到了困难 我在这里遵循了这个答案 如何使用 AVMutableCompositionTrack 合并音频
  • HTML5

    我想在随机位置开始和停止 HTML5 播放 并具有淡入和淡出周期 以平滑聆听体验 为此存在什么样的机制 使用 setTimeout 手动增加音量 jQuery 的方式 audio animate volume newVolume 1000

随机推荐

  • 使滚动条轨道透明

    这里很少有提出相同问题的问题 但他们的解决方案对我不起作用 这是其中一个问题的图片以及我想要实现的目标 我有一个列表 当有更多项目时 会显示滚动条 我还将溢出 y 设置为覆盖 因为我不希望滚动条添加到列表的宽度 如何使轨道透明以便可以看到下
  • 如何查看Android系统版本?

    有谁知道如何检查系统版本 例如1 0 2 2等 以编程方式 如何使用它的示例 if android os Build VERSION SDK INT gt android os Build VERSION CODES GINGERBREAD
  • 如何在iPhone中使用“HTTP直播”播放视频?

    我是 iPhone 开发新手 我正在解析 XML URL 并将其内容显示在表格中 当我单击一行时 使用电影播放器 播放其相应的解析管 URL 我正在使用媒体播放器框架 这是我的代码 NSURL movieURL NSURL URLWithS
  • KarateAPI 中有类似 POJO 的功能吗?

    我使用 Karate 和 RestAssured 一段时间了 当然 这两种工具都有优点和缺点 现在我有一个 RestAssured 项目 其中有请求和响应对象以及 POJO 我的请求包装我的端点并将我的 POJO 发送到这些端点 我在抽象层
  • 如果我在实例方法中放置静态锁会发生什么?

    我是线程新手 目前正在阅读线程同步章节 我对线程锁定的一种情况有疑问 这是我所知道的 1 当我在实例方法中放置实例锁时 即 private Object lock1 new Object private Object lock2 new O
  • 如何为ggplot中的每个点使用不同的形状

    我正在绘制 4 维数据集 除了 x 轴和 y 轴之外 我想用不同宽度和高度的矩形表示第三个和第四个维度 我可以这样做吗ggplot 谢谢 这是一种方法 dd lt data frame x x lt 1 10 y x rnorm 10 wi
  • ts-loader / css-loader 无法导入/解析文件

    尝试使用 style loader 和 css loader 添加 css 模块 很难弄清楚这一点 我也不确定是 ts loader 的问题还是 css loader 的问题 webpack config js const path req
  • 向已分区的表添加分区

    将另一个分区添加到已分区表的最佳方法是什么 原本的CREATE TABLE声明如下 CREATE TABLE command log id bigint 20 NOT NULL insert time datetime NOT NULL s
  • 在 Python 中创建和维护多个 ssh 会话

    一旦我的程序启动 它就会打开任意数量的 ssh 会话 用户定义 并无限期地在服务器上运行特定命令 当真正循环时 或直到用户退出 出于效率原因 我只想创建每个会话一次 然后能够运行命令直到用户退出 我怎样才能在Python中做到这一点 我在另
  • Javascript::audio.pause是否将audio.currentTime值重置为0?

    我的代码运行完美except事实上 它不是暂停曲目 而是返回到曲目的开头 这是我的代码 var audio new Audio var hezi document querySelector player gt button hand va
  • 如何让两个 JAR 在“docker run 容器”上自动启动

    我希望通过 run 命令调用 docker 容器后自动执行两个单独的 JAR 文件 因此当我输入docker run mycontainer他们都被称为 到目前为止 我有一个如下所示的 dockerfile base image is ja
  • 在文本框中搜索单词并将光标移动到文本框中的下一个匹配项?

    我目前有一个小部件 可以搜索我的主文本框并突出显示与我的搜索匹配的单词 我遇到的问题是找到一种方法将光标移动到找到的第一个匹配项 然后在下次按 Enter 时将光标移动到找到的下一个匹配项 我有两种方法可以在文本框中搜索单词 一种方法是查找
  • 如何使用 Greasemonkey 单击此按钮?

    我是 JS 的新手 我正在尝试单击此按钮 a class simplebutton href find a 该按钮的 XPath 是 html body div 5 div span 2 a 并且可以在以下位置查看目标页面的快照这个小提琴
  • CompositeTransform 只在 silverlight 中使用吗?

    CompositeTransform仅用于silverlight 我们是否可以在 WPF 中使用它或任何等效的替代品 没有CompositeTransform然而在WPF中有一个TransformGroup 因此 等效替换是Transfor
  • 使用 Text::CSV_XS 模块将列插入 Perl 中的 CSV 文件

    如何使用 Text CSV XS 模块将列添加到 CSV 文件 模块中的打印例程仅将数组写入一行 如果我有一个数组 如何将其作为列写入文件 我已经写了下面的代码 open my outFH gt outFile or die outFile
  • 如何将椭圆动画路径旋转一定角度?

    我使用以下方法来获取实体随时间沿椭圆路径行进时的 x 和 y 位置 x Math cos time width 2 y Math sin time height 2 有没有一种简单的方法可以将整个物体旋转一定的度数 例如 45 度或 132
  • KendoUI 集成到 Durandal JS

    我正在构建一个phonegap 应用程序 并计划使用 Telerik 的 Kendo UI 框架来生成 UI Telerik Kendo UI 已经有一个 MVVM 实现 我想使用它而不包括 Knockout JS 这是支持的东西 还是 D
  • 在 Webview 中清除用户的 Facebook 会话

    我有一个 WebView 它允许用户将图像分享到 Facebook 这个过程涉及他们登录 FB 完成后 我销毁 WebView 应用程序重置 并向不同的用户提供相同的功能 目的是让 WebView 不从一个会话到下一个会话保持登录状态 但是
  • 如何使用 Android SDK Manager 安装 NDK

    据说可以用Android SDK manager来安装NDK 如下图 不幸的是 我没有SDK Plantforms SDK Tools and SDK Update Sites我的 SDK 管理器中的选项卡 我的图片如下 那么我的情况如何安
  • 在设备树中注册 snd-soc-dummy

    我正在尝试在我的设备树源文件中注册 soc utils 中提供的 ALSA 虚拟编解码器 以将其与 i2s 设备驱动程序 sun8i i2s 一起使用 我尝试在 i2s 配置中设置 sound dai 字段 如下所述 https patch