基于RK3288 平台 Simple card声卡添加及调试

news/2024/12/22 2:25:03/

    基于RK3288 平台 Simple card声卡添加及调试
Simple card即简单通用的machine driver, 如果simple-card框架足够满足需求,建议优先使用simple card框架,简单,方便,且易用.

一、 添加声卡
1. 添加codec driver,比如添加:sound/soc/codec/es8323.c
2. 修改sound/soc/codec/Kconfig以及Makefile加入驱动编译。
sound/soc/codec/Kconfig: 添加
select SND_SOC_ES8323 if I2C
config SND_SOC_ES8323
        tristate "Everest Semi ES8323 CODEC"
        depends on I2C
sound/soc/codec/Makefile: 添加
snd-soc-es8323-objs := es8323.o
obj-$(CONFIG_SND_SOC_ES8323)    += snd-soc-es8323.o

3. menuconfig中enable simple card以及codec
make menuconfig Device Drivers ---> Sound card support --->  Advanced Linux Sound Architecture --->  ALSA for SoC audio support --->  ASoC support for Rockchip 
CODEC drivers  ---> 
<*> Everest Semi ES8323 CODEC   
4. 产品的DTS中添加Simple Card Node

二、修改DTS文件
1 添加sound card 和 spdif(可选添加,用不到不用添加)
2 添加:&i2c2(es8323 mclk)和&i2s(es8323 I2S通信)  
3 添加&sound 
  注意,需要增加内容如下:
{\
sound: sound {
                status = "okay";
                compatible = "simple-audio-card";
                simple-audio-card,format = "i2s";
                simple-audio-card,name = "rockchip,firefly-codec";
                simple-audio-card,mclk-fs = <512>;
                simple-audio-card,widgets =
                        "Microphone", "Microphone Jack",
                        "Headphone", "Headphone Jack";
                simple-audio-card,routing =
                        "MIC1", "Microphone Jack",
                        "MIC2", "Microphone Jack",
                        "Microphone Jack", "micbias1",
                        "Headphone Jack", "HPOL",
                        "Headphone Jack", "HPOR";

                simple-audio-card,dai-link@0 {
                        format = "i2s";
                        cpu {
                                sound-dai = <&i2s>;
                        };

                        codec {
                                sound-dai = <&es8323>;
                        };
                };

                simple-audio-card,dai-link@1 {
                        format = "i2s";
                        cpu {
                                sound-dai = <&i2s>;
                        };

                        codec {
                                sound-dai = <&hdmi>;
                        };
                };
        };
         spdif_out: spdif-out {
                status = "okay";
                compatible = "linux,spdif-dit";
                #sound-dai-cells = <0>;
        };

        spdif-sound {
                status = "okay";
                compatible = "simple-audio-card";
                simple-audio-card,name = "ROCKCHIP,SPDIF";
                simple-audio-card,cpu {
                        sound-dai = <&spdif>;
                };
                simple-audio-card,codec {
                        sound-dai = <&spdif_out>;
                };


}

&i2c2 {
        status = "okay";

        es8323: es8323@10 {
                status = "okay";
                compatible = "everest,es8323";
                reg = <0x10>;
                spk-con-gpio = <&gpio5 12 GPIO_ACTIVE_LOW>;
//              hp-det-gpio = <&gpio7 15 GPIO_ACTIVE_LOW>;
                clock-names = "mclk";
                clocks = <&cru SCLK_I2S0_OUT>;
                pinctrl-names = "default";
                pinctrl-0 = <&i2s0_mclk>;
                #sound-dai-cells = <0>;
        };
};
需要注意的是,如上es8323的clocks即mclk, upstream代码遵循谁使用clk谁申请的原则,所以后续自己添加的codec driver,如果有使用

外部clk作为mclk,需要做同样的适配。

&i2s {
        #sound-dai-cells = <0>;
        status = "okay";
};
&sound {
        status = "okay";
};

注意要去掉以下内容,否则声卡驱动无法挂载
&es8323 {
//      aux-det-gpio = <&gpio2 15 GPIO_ACTIVE_HIGH>;
        spk-ctl-gpio = <&gpio7 2 GPIO_ACTIVE_HIGH>;
};
三、总结
1 屏幕不亮的问题
  调试中发现屏幕 背光是亮的,但是屏幕不亮,把vcc_sys_5v: vcc-sys-5v,gpio GPIO0_B5 修改为GPIO7_A3屏幕就亮了。
如下所示:
        vcc_sys_5v: vcc-sys-5v{
                compatible = "regulator-fixed";
                enable-active-high;
                gpio = <&gpio7 3 GPIO_ACTIVE_HIGH>;
                pinctrl-names = "default";
                pinctrl-0 = <&pwr5v_en>;
                regulator-name = "vcc_sys_5v";
                regulator-min-microvolt = <5000000>;
                regulator-max-microvolt = <5000000>;
                regulator-always-on;
                regulator-boot-on;
        };


        vcc-sys {
                pwr5v_en: pwr5v-en {
                        rockchip,pins = <7 3 RK_FUNC_GPIO &pcfg_output_high>;
                };
        };
2 调试中声卡总是挂载不上去:在dts中去掉以下内容后就可以了。因为在I2C2中已经设置过
&es8323 {
//      aux-det-gpio = <&gpio2 15 GPIO_ACTIVE_HIGH>;
        spk-ctl-gpio = <&gpio7 2 GPIO_ACTIVE_HIGH>;
};


http://www.ppmy.cn/news/297911.html

相关文章

M1卡操作

原文传送门&#xff1a;https://www.cnblogs.com/ivantang/p/3904025.html M1卡介绍 本文整理自网络。 M1卡是指菲利浦下属子公司恩智浦出品的芯片缩写&#xff0c;全称为NXP Mifare1系列&#xff0c;常用的有S50及S70两种型号&#xff0c;目前都有国产芯片与其兼容&#xff0…

SIM卡在手机中的主要作用

SIM卡在手机中的主要作用 SIM卡作为智能卡的一种&#xff0c;其作用依旧被限定在数据存储和加解密处理方面。 在移动通讯初期没有SIM卡的概念&#xff0c;当时采用的是机号一体的方式&#xff08;后来对于CDMA技术而言出现了机卡分离和机卡一体的说法&#xff0c;早期还没有SIM…

Python3网络爬虫(十三):王者荣耀那些事!(Fiddler之手机APP爬取)

转载请注明作者和出处&#xff1a;http://blog.csdn.net/c406495762 运行平台&#xff1a; Windows Python版本&#xff1a; Python3.x IDE&#xff1a; Sublime text3 前言实战背景准备工作 什么是Fiddler手机APP抓包设置 Fiddler设置安全证书下载安全证书安装局域网设置Fi…

hmcl手机版_hmcl启动器手机版下载-hmcl启动器安卓版下载mod附教程_易玩网

hmcl启动器是一款专门为我的世界打造的可以加入运行操作的辅助工具。有了hmcl启动器&#xff0c;用户在运行我的世界这款游戏的时候可以体验更加的稳定&#xff0c;有需要的小伙伴们可以下载hmcl启动器前来体验一番哦&#xff0c;非常优秀的启动器。 hmcl启动器使用教程 游戏的…

A3C代码详解

莫烦大神的A3C连续控制代码详解""" Asynchronous Advantage Actor Critic (A3C) with continuous action space, Reinforcement Learning. The Pendulum example. View more on my tutorial page: https://morvanzhou.github.io/tutorials/ Using: tensorflow 1…

服务器主板检测卡显示06,主板检测卡代码大全对照表

摘要:今天系统之家小编为大家提供主板检测卡代码大全对照表,电脑主板出现故障或者问题,大家一般对照主板检测卡代码判断出现的问题,但是不少人对主板检测卡代码大全表示不知道..... 今天系统之家小编为大家提供主板检测卡代码大全对照表,电脑主板出现故障或者问题,大家一般对…

图像修复(拖影、失焦、雨雾、模糊)deblurGAN 论文解读

图像修复&#xff08;拖影、失焦、雨雾、模糊&#xff09;deblurGAN 论文解读 look for papers for deblurGAN contributer : leoluopy 欢迎提issue.欢迎watch &#xff0c;star.微信号&#xff1a;leoluopy关注AI前沿技术及商业落地&#xff0c;欢迎交流 更多图像AI笔记分享…

深度增强学习(DRL)漫谈 - 从AC(Actor-Critic)到A3C(Asynchronous Advantage Actor-Critic)

前言 之前在文章《深度增强学习&#xff08;DRL&#xff09;漫谈 - 从DQN到AlphaGo》扯了一些关于DRL的内容&#xff0c;但因为是以DQN为主线&#xff0c;其中大部分谈的是value-based方法。我们知道传统增强学习&#xff08;Reinforcement learning, RL&#xff09;中除了val…