tas5721 驱动

Submitter Mark Brown
Date March 31, 2016, 5:33 p.m.
Message ID <[email protected]>
Download mbox | patch
Permalink /patch/8715141/
State New
Headers show

Comments

Mark Brown - March 31, 2016, 5:33 p.m.

The patch

   ASoC: tas571x: added support for TAS5721

has been applied to the asoc tree at

   git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git 

All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.  

You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying
to this mail.

Thanks,
Mark

From 23a282c4f088efb337957ffa21c677d30eda0784 Mon Sep 17 00:00:00 2001
From: Petr Kulhavy <[email protected]>
Date: Thu, 31 Mar 2016 18:41:26 +0200
Subject: [PATCH] ASoC: tas571x: added support for TAS5721

This adds support for TAS5721.

Signed-off-by: Petr Kulhavy <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
---
 sound/soc/codecs/Kconfig   |  2 +-
 sound/soc/codecs/tas571x.c | 76 ++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 77 insertions(+), 1 deletion(-)
diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig
index 649e92a252ae..c011f076d58b 100644
--- a/sound/soc/codecs/Kconfig
+++ b/sound/soc/codecs/Kconfig
@@ -737,7 +737,7 @@  config SND_SOC_TAS5086
     depends on I2C

 config SND_SOC_TAS571X
-    tristate "Texas Instruments TAS5711/TAS5717/TAS5719 power amplifiers"
+    tristate "Texas Instruments TAS5711/TAS5717/TAS5719/TAS5721 power amplifiers"
     depends on I2C

 config SND_SOC_TFA9879
diff --git a/sound/soc/codecs/tas571x.c b/sound/soc/codecs/tas571x.c
index ef6c8d9b251a..b8d19b77bde9 100644
--- a/sound/soc/codecs/tas571x.c
+++ b/sound/soc/codecs/tas571x.c
@@ -4,6 +4,9 @@
  * Copyright (C) 2015 Google, Inc.
  * Copyright (c) 2013 Daniel Mack <[email protected]>
  *
+ * TAS5721 support:
+ * Copyright (C) 2016 Petr Kulhavy, Barix AG <[email protected]>
+ *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
@@ -372,6 +375,77 @@  static const struct tas571x_chip tas5717_chip = {
     .vol_reg_size            = 2,
 };

+static const char *const tas5721_supply_names[] = {
+    "AVDD",
+    "DVDD",
+    "DRVDD",
+    "PVDD",
+};
+
+static const struct snd_kcontrol_new tas5721_controls[] = {
+    SOC_SINGLE_TLV("Master Volume",
+               TAS571X_MVOL_REG,
+               0, 0xff, 1, tas5711_volume_tlv),
+    SOC_DOUBLE_R_TLV("Speaker Volume",
+             TAS571X_CH1_VOL_REG,
+             TAS571X_CH2_VOL_REG,
+             0, 0xff, 1, tas5711_volume_tlv),
+    SOC_DOUBLE("Speaker Switch",
+           TAS571X_SOFT_MUTE_REG,
+           TAS571X_SOFT_MUTE_CH1_SHIFT, TAS571X_SOFT_MUTE_CH2_SHIFT,
+           1, 1),
+};
+
+static const struct reg_default tas5721_reg_defaults[] = {
+    {TAS571X_CLK_CTRL_REG,        0x6c},
+    {TAS571X_DEV_ID_REG,        0x00},
+    {TAS571X_ERR_STATUS_REG,    0x00},
+    {TAS571X_SYS_CTRL_1_REG,    0xa0},
+    {TAS571X_SDI_REG,        0x05},
+    {TAS571X_SYS_CTRL_2_REG,    0x40},
+    {TAS571X_SOFT_MUTE_REG,        0x00},
+    {TAS571X_MVOL_REG,        0xff},
+    {TAS571X_CH1_VOL_REG,        0x30},
+    {TAS571X_CH2_VOL_REG,        0x30},
+    {TAS571X_CH3_VOL_REG,        0x30},
+    {TAS571X_VOL_CFG_REG,        0x91},
+    {TAS571X_MODULATION_LIMIT_REG,    0x02},
+    {TAS571X_IC_DELAY_CH1_REG,    0xac},
+    {TAS571X_IC_DELAY_CH2_REG,    0x54},
+    {TAS571X_IC_DELAY_CH3_REG,    0xac},
+    {TAS571X_IC_DELAY_CH4_REG,    0x54},
+    {TAS571X_PWM_CH_SDN_GROUP_REG,    0x30},
+    {TAS571X_START_STOP_PERIOD_REG,    0x0f},
+    {TAS571X_OSC_TRIM_REG,        0x82},
+    {TAS571X_BKND_ERR_REG,        0x02},
+    {TAS571X_INPUT_MUX_REG,        0x17772},
+    {TAS571X_CH4_SRC_SELECT_REG,    0x4303},
+    {TAS571X_PWM_MUX_REG,        0x1021345},
+};
+
+static const struct regmap_config tas5721_regmap_config = {
+    .reg_bits            = 8,
+    .val_bits            = 32,
+    .max_register            = 0xff,
+    .reg_read            = tas571x_reg_read,
+    .reg_write            = tas571x_reg_write,
+    .reg_defaults            = tas5721_reg_defaults,
+    .num_reg_defaults        = ARRAY_SIZE(tas5721_reg_defaults),
+    .cache_type            = REGCACHE_RBTREE,
+    .wr_table            = &tas571x_write_regs,
+    .volatile_table            = &tas571x_volatile_regs,
+};
+
+
+static const struct tas571x_chip tas5721_chip = {
+    .supply_names            = tas5721_supply_names,
+    .num_supply_names        = ARRAY_SIZE(tas5721_supply_names),
+    .controls            = tas5711_controls,
+    .num_controls            = ARRAY_SIZE(tas5711_controls),
+    .regmap_config            = &tas5721_regmap_config,
+    .vol_reg_size            = 1,
+};
+
 static const struct snd_soc_dapm_widget tas571x_dapm_widgets[] = {
     SND_SOC_DAPM_DAC("DACL", NULL, SND_SOC_NOPM, 0, 0),
     SND_SOC_DAPM_DAC("DACR", NULL, SND_SOC_NOPM, 0, 0),
@@ -527,6 +601,7 @@  static const struct of_device_id tas571x_of_match[] = {
     { .compatible = "ti,tas5711", .data = &tas5711_chip, },
     { .compatible = "ti,tas5717", .data = &tas5717_chip, },
     { .compatible = "ti,tas5719", .data = &tas5717_chip, },
+    { .compatible = "ti,tas5721", .data = &tas5721_chip, },
     { }
 };
 MODULE_DEVICE_TABLE(of, tas571x_of_match);
@@ -535,6 +610,7 @@  static const struct i2c_device_id tas571x_i2c_id[] = {
     { "tas5711", (kernel_ulong_t) &tas5711_chip },
     { "tas5717", (kernel_ulong_t) &tas5717_chip },
     { "tas5719", (kernel_ulong_t) &tas5717_chip },
+    { "tas5721", (kernel_ulong_t) &tas5721_chip },
     { }
 };
 MODULE_DEVICE_TABLE(i2c, tas571x_i2c_id);
时间: 2024-11-09 00:54:05

tas5721 驱动的相关文章

艰辛五天:Ubuntu14.04+显卡驱动+cuda+Theano环境安装过程

题记:从一开始不知道显卡就是GPU(虽然是学计算机的,但是我真的不知道-脑残如我也是醉了),到搞好所有这些环境前后弄了5天时间,前面的买显卡.装显卡和装双系统见另一篇博客装显卡.双系统,这篇主要记录我怎么配置后面的环境,虽然中间重装Ubuntu三次,后面安装过程也没差别. 基础平台:64-bit,Ubuntu14.04 1.安装NVIDIA驱动(参考技术文章,基本是复制啊,蟹蟹作者~) (1) 在官网下载NVIDIA驱动,根据自己买的型号选择下载,放到 /home/lvxia/ 目录下面,我下载

jdbc驱动jar导入eclipse

在使用JDBC编程时需要连接数据库,导入JAR包是必须的,导入其它的jar包方法同样如此,导入的方法是 打开eclipse 1.右击要导入jar包的项目,点properties 2.左边选择java build path,右边选择libraries 3.选择add External jars 4.选择jar包的按照路径下的确定后就行了. Java连接MySQL的最新驱动包下载地址 http://www.mysql.com/downloads/connector/j 有两种方法导入jar包,第一种

13.Linux键盘按键驱动 (详解)

版权声明:本文为博主原创文章,未经博主允许不得转载. 在上一节分析输入子系统内的intput_handler软件处理部分后,接下来我们开始写input_dev驱动 本节目标: 实现键盘驱动,让开发板的4个按键代表键盘中的L.S.空格键.回车键 1.先来介绍以下几个结构体使用和函数,下面代码中会用到 1)input_dev驱动设备结构体中常用成员如下: struct input_dev { void *private; const char *name; //设备名字 const char *ph

Linux-hexdump命令调试event驱动—详解(13)

hexdump: 查看文件的内容,比如二进制文件中包含的某些字符串,通常用来调试驱动用 1.调试 键盘驱动 讲解 当我们insmod挂载了键盘驱动后,找到键盘驱动被放在event1设备里, 此时没有按键按下,所以event1里面的数据是没有的,那么数据又是从来哪里来? 通过键盘驱动的read函数,若有按键按下,就会上传按键数据给用户层,此时的用户层就是hexdump 因为键盘驱动的input_handler 是:evdev_handler 所以键盘驱动的read函数是: evdev_handle

微软要做用云量挖掘机,以技术驱动数字化转型快公司

今年7月,首次更名为"Inspire"的微软WPC全球合作伙伴大会上,微软宣布将所有与合作伙伴相关的角色都重新整合为一个新的部门:统一商业合作伙伴部门(One Commercial Partner),并进行了一整套的组织和流程改组,以适应云计算时代的用户需求与"用云量"规律. 2017年9月12日,微软大中华区副总裁.全球渠道事业部总经理.商业客户事业部总经理包嘉峰与媒体分享了这两个月微软商业合作伙伴部转型以来,微软自身所发生的变化以及为客户所带来的价值.根据包嘉峰

STM32F4XX高效驱动篇2 I2C

说到I2C很多用过STMF10X硬件I2C方式的工程师,都感觉有点头痛.大部分还是使用软件模拟的方式,I2C由于一般的工作频率是400,100KHz.所以在平凡读取,或所读数据量大时,使用这模拟的方式,还是比较浪费CPU有效工作时间的. 在之前的使用I2C的经历中,主要是I2C死锁问题让我也困扰了一段时间.不过后来经过多方资料,最后还是把这个问题解决了.以下驱动程序已集成了此功能. 什么是死锁,在I2C主设备进行读写操作的过程中.主设备在开始信号后控制SCL产生8个时钟脉冲,然后拉低SCL信号为

STM32F4XX高效驱动篇1-UART

之前一直在做驱动方面的整理工作,对驱动的高效性有一些自己的理解这里和大家分享一下.并奉驱动程序,本程序覆盖uart1-8. 串口驱动,这是在每个单片机中可以说是必备接口.可以说大部分产品中都会使用,更有甚者一个产品中用到8个串口.这样一个高效的驱动是决定您产品优劣的关键因素.本文主要针对STM32F4XX系列芯片做的一个驱动接口层.以减少您在开发项目时驱动方面所花费时间,以及为程序达到高效的处理为目的. 从51,pic到现在的STM32,个人感觉STM32这方面做的非常突出,丰富的使用模式,强大

Qt编译好的OCI驱动下载

在上文,我累赘了一大堆,给大家写了一篇Qt如何编译OCI驱动,在这里自然就不再累赘了,直接附上编译好的文件供大家下载: <Qt5.3.1+OCI驱动下载地址> 有经济来源的请传送:http://download.csdn.net/detail/u012433546/9922424 无经济来源的请传送:链接:http://pan.baidu.com/s/1boKG9lH 密码:7yj5 <Qt5.3.2+OCI驱动下载地址> 有经济来源的请传送:http://download.csd

QT5.6.0+VS2015编译MQSQL(ACCESS)X64数据库驱动

QT5.6.0+VS2015编译MQSQL(ACCESS)数据库驱动 1 说明 l 不建议QT5.6.0使用ACCESS数据库.如果想使用轻量级的数据库,可以使用Sqlite数据库. QT想要访问Access.SQL Server等数据库可以通过ODBC的方式来访问,但是QT较高版本已不提供ODBC驱动库,需要自己编译.QT5.6.0编译出来的数据库驱动是64位,但是不建议安装Access数据库,微软本身也不建议安装64位office. PS:为什么QT5.6.0不编译32位数据库驱动:编译数据