基于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>;
};

基于RK3288 平台 Simple card声卡添加及调试相关推荐

  1. 基于rk3288平台的gt9xx 触摸驱动移植

                                              基于rk3288平台的gt9xx 触摸驱动移植 一.硬件介绍:     1 core-rk3288j 核心板     ...

  2. 基于RK3288的双屏异显实现

    一.技术的背景 随着电梯广告传媒行业的飞速发展,双屏广告机应运而生,客户可以根据自己的需求,制作两个屏幕的内容,分别播放适合屏幕显示方式播放的内容,如上面播放视频,下面播放图片,使得宣传的效果多样化. ...

  3. master节点重置后添加node报错_企业实战(23)基于Docker平台的Jenkins添加node节点与报错详解(2)...

    相关文章  企业实战(23)基于Docker平台部署Jenkins中国定制版(1) 添加node节点前配置 在这里插入图片描述 在这里插入图片描述 开始添加node节点 在这里插入图片描述 在这里插入 ...

  4. 基于Mozilla平台的扩展开发(续)----XPCOM组件篇

    源代码下载:HelloWorld示例.rar 在<浅谈基于Mozilla ThunderBird的扩展开发>这篇入门文章中简单介绍了基于Mozllia平台进行扩展开发的基础知识,但仍然欠缺 ...

  5. (附源码)ssm+mysql+基于微信平台的牙科就诊信息管理系统的设计与实现 毕业设计211157

    小程序SSM牙科就诊信息管理系统. 摘 要 随着现在网络的快速发展,网络的应用在各行各业当中它很快融入到了许多分类管理之中,他们利用网络来做这个牙科就诊信息管理系统.,随之就产生了"牙科就诊 ...

  6. ssm+mysql+基于微信平台的牙科就诊信息管理系统的设计与实现 毕业设计-附源码211157

    小程序SSM牙科就诊信息管理系统. 摘 要 随着现在网络的快速发展,网络的应用在各行各业当中它很快融入到了许多分类管理之中,他们利用网络来做这个牙科就诊信息管理系统.,随之就产生了"牙科就诊 ...

  7. 基于Android平台智能手机报系统的设计与开发

    前言: 本文写于2012年11月,转眼间7年的时间过去了,最近翻箱倒柜找出来了,看看7年之前写的代码和文章,简直不敢直视,哈哈哈,也没有修改直接分享出来,以示纪念.本文出自门心叼龙的博客,转载请注明出 ...

  8. 【tools】Latex菜鸟快速入门教程(基于overleaf平台:Learn LaTeX in 30 minutes)

    [tools]Latex菜鸟快速入门教程(基于overleaf平台) 注册登录overleaf LaTeX入门教程 1.First start 2.序言Preamble 3.添加标题.作者和日期 4. ...

  9. [AUDIO]RK平台声卡驱动和调试

    1.概述 一个声卡包含 cpu_dai, codec_dai, 以及 dai_link 组成,分别对应 cpu dai 的 dirver,比如 I²S driver, spdif driver: co ...

最新文章

  1. 编程语言python入门要电脑什么配置能带动-Python是万能的编程语言吗?这五大用途很重要!...
  2. Spring MVC漏洞学习总结
  3. jQuery.ajax实现根据不同的Content-Type做出不同的响应
  4. 【JS 逆向百例】转变思路,少走弯路,X米加密分析
  5. 一起来讨论web2.0吧
  6. linux 内核 md5 算法_Linux内核中的数据结构和算法
  7. SQL Server FOR XML PATH 语句的应用---列转行
  8. 20155213 2016-2017-2《Java程序设计》课程总结
  9. 电商页面设计吸睛大法|C4D背景素材模板,视觉之旅开启!
  10. mysql b tree索引原理_MySQL中B+Tree索引原理
  11. Android 网络学习之获取服务器文本文件
  12. C语言实现简单的计算器(C语言入门1)
  13. (综述,讲得很好)基于3DMM的三维人脸重建技术总结
  14. pywifi 模块的安装
  15. 全球最大的电子图书馆创世纪下载网址
  16. ORACLE SQL 优化的若干方法(详细)
  17. K-mer特征提取one-hot编码
  18. calloc、realloc、malloc
  19. Room数据库使用与踩坑(最新)
  20. 2022 极术通讯-安谋科技参与起草的PSA相关物联网终端安全标准介绍(电信终端产业协会发布)

热门文章

  1. 永善县有缘布艺店的窗帘很便宜,推荐购买
  2. 搭建ss5+proxychains
  3. 基于javaweb的钓友俱乐部渔具销售网站系统
  4. C++primer plus部分解答
  5. 桥接模式下的bridged进行网络连接
  6. bootstrap清除浮动的方法
  7. java等级考试怎么分,2020年9月全国计算机等级考试考前必看
  8. R型隔离变压器为什么安全?
  9. LINQ快速开发设计最佳实践(二) 构建Model模型
  10. 多模态多目标优化文献分享