From patchwork Thu Mar 10 11:22:40 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Petr Kulhavy X-Patchwork-Id: 8555931 Return-Path: X-Original-To: patchwork-alsa-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 82483C0553 for ; Thu, 10 Mar 2016 11:25:38 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 7F76C2034F for ; Thu, 10 Mar 2016 11:25:37 +0000 (UTC) Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) by mail.kernel.org (Postfix) with ESMTP id 2CB4220306 for ; Thu, 10 Mar 2016 11:25:36 +0000 (UTC) Received: by alsa0.perex.cz (Postfix, from userid 1000) id 115942664CF; Thu, 10 Mar 2016 12:25:34 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, NO_DNS_FOR_FROM,RCVD_IN_DNSWL_NONE,T_DKIM_INVALID,UNPARSEABLE_RELAY autolearn=no version=3.3.1 Received: from alsa0.perex.cz (localhost [127.0.0.1]) by alsa0.perex.cz (Postfix) with ESMTP id B36C8265E1C; Thu, 10 Mar 2016 12:24:11 +0100 (CET) X-Original-To: alsa-devel@alsa-project.org Delivered-To: alsa-devel@alsa-project.org Received: by alsa0.perex.cz (Postfix, from userid 1000) id 347742614AF; Thu, 10 Mar 2016 12:24:10 +0100 (CET) Received: from mail-wm0-f51.google.com (mail-wm0-f51.google.com [74.125.82.51]) by alsa0.perex.cz (Postfix) with ESMTP id 00210261492 for ; Thu, 10 Mar 2016 12:24:02 +0100 (CET) Received: by mail-wm0-f51.google.com with SMTP id l68so24153208wml.1 for ; Thu, 10 Mar 2016 03:24:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=barix-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=/acvziFwjmvWWeLtR0ep9bNxgLtiSuk0srk7xq+TC9M=; b=icI1zX5r/sMnzuOgqcJTsrsmHCvWtDrgAVT/++NiePk8cYIDyrgsepWnT7kBZ+Ondp 8E0rqil/2tbweqq3rdJHP1G1UK1MwRKE9menhOY1GUwgD1krrdgC7GouN2uOtv//9O09 5qorhRvnLyZfgeEXe/1UbL1++syLMynAQ9NIP0lFGp05/N5OOsygrIbbIwJ10OtpW1hj Dkb9W6C0uG7X6LXxWD3wIY6dLRFEnUBuJ1UY4v9bEalm9Bmygx7X821AVC/TdU8QEWUI 4/VWh7auJa2Ia6Z0Ws2Fc59qAuZHK62Ea+OK4zKpIN4jVy8rmt+269qYAbsCgSUZI92A oEsg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=/acvziFwjmvWWeLtR0ep9bNxgLtiSuk0srk7xq+TC9M=; b=IntPSeeviF8cNJHaSd0D/K+6n6YhQOqXh8IDwcs0KcvpCHDHvWlG+ZKXZKz9o77LO/ pHu+dtvkhMTMFRIHv72oxtc8ITf9tKlFqqi9KH//9kUEcLhc5imunthxAhlJc2TOIe7L A9QzHn5tBTPai7Ee1aH32yKaqwBffQ7KTG7GmN9ZI7Jrgi4KDCD9vEZd4tNfHAFk+vRZ i5Y51RiuiL23OFPx5Q5xQXaUYflzZ3UMUsGL1tkxWagy6y6eJhA9p2st4vcxHddedPIz 2lnq2POGil+d9ph3NWca89LbEtxmkKEACS44niSiFivu3hv2AQ3j7UHt6Johpod8PFPU h6eQ== X-Gm-Message-State: AD7BkJJU8XhKdiFR6bwZNQxE8tpEq0IwcpIVp9D0at5ep9WRy13uePmDMoup/w0dvnQwXyNT X-Received: by 10.194.60.200 with SMTP id j8mr3131053wjr.124.1457609042656; Thu, 10 Mar 2016 03:24:02 -0800 (PST) Received: from petr-laptop.barix.com (dynamic-31-25-120-010.ftth.glattnet.ch. [31.25.120.10]) by smtp.googlemail.com with ESMTPSA id u3sm3047665wmg.15.2016.03.10.03.24.01 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 10 Mar 2016 03:24:02 -0800 (PST) From: Petr Kulhavy To: cernekee@chromium.org, lgirdwood@gmail.com Date: Thu, 10 Mar 2016 12:22:40 +0100 Message-Id: <1457608960-16913-4-git-send-email-petr@barix.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1457608960-16913-1-git-send-email-petr@barix.com> References: <1457608960-16913-1-git-send-email-petr@barix.com> Cc: petr@barix.com, alsa-devel@alsa-project.org Subject: [alsa-devel] [PATCH 4/5] Sound: SOC: TAS571x: added support for TAS5721 X-BeenThere: alsa-devel@alsa-project.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Alsa-devel mailing list for ALSA developers - http://www.alsa-project.org" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: alsa-devel-bounces@alsa-project.org Sender: alsa-devel-bounces@alsa-project.org X-Virus-Scanned: ClamAV using ClamSMTP This adds support for TAS5721. Signed-off-by: Petr Kulhavy Tested-by: Petr Kulhavy --- sound/soc/codecs/Kconfig | 2 +- sound/soc/codecs/tas571x.c | 74 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+), 1 deletion(-) diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig index 50693c8..562b66f 100644 --- a/sound/soc/codecs/Kconfig +++ b/sound/soc/codecs/Kconfig @@ -705,7 +705,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 431dffa..187f85b 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 * + * TAS5721 support: + * Copyright (C) 2016 Petr Kulhavy, Barix AG + * * 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 @@ -348,6 +351,75 @@ 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, +}; + + +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), @@ -503,6 +575,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); @@ -511,6 +584,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);