Received: by 10.213.65.68 with SMTP id h4csp1174139imn; Sun, 18 Mar 2018 18:06:21 -0700 (PDT) X-Google-Smtp-Source: AG47ELsjNKjdncrrCE9a35sn7ZHGdfo2fpMIjjeDZN9dGs+S6I6yOlGH3Qcu6DkrocvgLd5hsxCm X-Received: by 10.99.120.197 with SMTP id t188mr7732051pgc.358.1521421581169; Sun, 18 Mar 2018 18:06:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1521421581; cv=none; d=google.com; s=arc-20160816; b=r/H+/JqwIa2MmLEnwy09F0p4mHEhMx/LFZpxn9tP9oxw+u9LDT4HRT3rx4xleUQgJj AlhqtUcxJYY9J7g0rJbcOSbKyovweGUCJxShJXSLzj1R1Dp/I79ABUbCu8n0HXYT7OLh rrpCsZWpxLR2Q5y5Snhl+93dtlWPamqDzzz2cnJDw7LlTx3mkiKFmRzfEQUMus6HJoN+ XHZF/uAUxlB5RY57E6sUfoCf1UVfegiXHmOlk277UkX9VkEifr8SU6MayWru4TkipsF5 akR0EyMf4h0aVbydD0+d783fR9Iz9l4qcEF6iKZtolBK0VCPIBrZqlVL8VNxvgJMUWR0 p99g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:date:message-id:in-reply-to:subject:cc:to :from:dkim-signature:arc-authentication-results; bh=eEd0vjF844K3ekvGP4moogtiLujpfUx0XJmrqBE4k3g=; b=XKA/1TWFYm68nEKm5jQW0awWaeU48tj53s4IfNfrtvlrOH+E1NXDDdporUZDTbmeSR n0JRq1VCz9Eq+Aiu0ZpCXlx8QaJXa2+fLSjBsbz+3Wtqpo0J5iP048NKRI6XGjPBwl5r y6cP13PziMv9iCt2/WlcfGIApqsqamQ7ZxkOIRgAnPMyfSTVqHC/+GTn/fsBq8ULdxEe xRLEmJf4RJvX/PGGcH3e9Cq5WCC4SIpQwhBg2PJDmVpiD7k3UK/g66n+Qp3e/RQIIpUp HnCZiPglKBF9TJzM3brRqvLyzwlF1B7PqBqNOihmSR5A5LNcN7RZQHqYdMdt1rRxd1NT BJgA== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@sirena.org.uk header.s=20170815-heliosphere header.b=gBch4qIX; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id l6si8771951pgr.154.2018.03.18.18.06.07; Sun, 18 Mar 2018 18:06:21 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=fail header.i=@sirena.org.uk header.s=20170815-heliosphere header.b=gBch4qIX; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754997AbeCSBDn (ORCPT + 99 others); Sun, 18 Mar 2018 21:03:43 -0400 Received: from heliosphere.sirena.org.uk ([172.104.155.198]:49542 "EHLO heliosphere.sirena.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754935AbeCSBDh (ORCPT ); Sun, 18 Mar 2018 21:03:37 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sirena.org.uk; s=20170815-heliosphere; h=Date:Message-Id:In-Reply-To: Subject:Cc:To:From:Sender:Reply-To:MIME-Version:Content-Type: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:References: List-Id:List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner: List-Archive; bh=eEd0vjF844K3ekvGP4moogtiLujpfUx0XJmrqBE4k3g=; b=gBch4qIXMZEn Q5r61Rk0LxCrtNddAxhbM7QlJC6atGBnXPXhj1qQ/F2pNyIMvIe4eO/G/ICHj59CVmYR7u8MPQGDn 5f4sU05TalQcn4vd9oUiu3xRInkcVwixfFoZwpJeH6b//z0mtZ/PEiotTvOqqda4HNPvOZil18amq 0Q+z4=; Received: from [218.255.99.6] (helo=finisterre.ee.mobilebroadband) by heliosphere.sirena.org.uk with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1exjD1-000670-KC; Mon, 19 Mar 2018 01:03:31 +0000 Received: by finisterre.ee.mobilebroadband (Postfix, from userid 1000) id 17912440079; Mon, 19 Mar 2018 01:03:29 +0000 (GMT) From: Mark Brown To: Katsuhiro Suzuki Cc: Mark Brown , Mark Brown , alsa-devel@alsa-project.org, Rob Herring , Jassi Brar , linux-arm-kernel@lists.infradead.org, Masami Hiramatsu , linux-kernel@vger.kernel.org, alsa-devel@alsa-project.org Subject: Applied "ASoC: uniphier: add syscon property for UniPhier sound system" to the asoc tree In-Reply-To: <20180316070813.17969-3-suzuki.katsuhiro@socionext.com> Message-Id: <20180319010329.17912440079@finisterre.ee.mobilebroadband> Date: Mon, 19 Mar 2018 01:03:29 +0000 (GMT) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The patch ASoC: uniphier: add syscon property for UniPhier sound system has been applied to the asoc tree at https://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 7c3c20f2bec1e8bdaadd551a4b75f1834a7cb974 Mon Sep 17 00:00:00 2001 From: Katsuhiro Suzuki Date: Fri, 16 Mar 2018 16:08:13 +0900 Subject: [PATCH] ASoC: uniphier: add syscon property for UniPhier sound system This patch adds syscon property for specifying soc-glue core. Currently, soc-glue core is used for changing the state of S/PDIF signal output pin to signal output state or Hi-Z state. After resetting of SoC Hi-Z state is selected. This driver set to signal output state when syscon property is available. Signed-off-by: Katsuhiro Suzuki Signed-off-by: Mark Brown --- sound/soc/uniphier/aio-core.c | 21 +++++++++++++++++++++ sound/soc/uniphier/aio-cpu.c | 11 +++++++++++ sound/soc/uniphier/aio-reg.h | 3 +++ sound/soc/uniphier/aio.h | 2 ++ 4 files changed, 37 insertions(+) diff --git a/sound/soc/uniphier/aio-core.c b/sound/soc/uniphier/aio-core.c index 1711361fc0c2..6d50042a4571 100644 --- a/sound/soc/uniphier/aio-core.c +++ b/sound/soc/uniphier/aio-core.c @@ -83,6 +83,27 @@ u64 aio_rb_space_to_end(struct uniphier_aio_sub *sub) return rb_space_to_end(sub->wr_offs, sub->rd_offs, sub->compr_bytes); } +/** + * aio_iecout_set_enable - setup IEC output via SoC glue + * @chip: the AIO chip pointer + * @enable: false to stop the output, true to start + * + * Set enabled or disabled S/PDIF signal output to out of SoC via AOnIEC pins. + * This function need to call at driver startup. + * + * The regmap of SoC glue is specified by 'socionext,syscon' optional property + * of DT. This function has no effect if no property. + */ +void aio_iecout_set_enable(struct uniphier_aio_chip *chip, bool enable) +{ + struct regmap *r = chip->regmap_sg; + + if (!r) + return; + + regmap_write(r, SG_AOUTEN, (enable) ? ~0 : 0); +} + /** * aio_chip_set_pll - set frequency to audio PLL * @chip : the AIO chip pointer diff --git a/sound/soc/uniphier/aio-cpu.c b/sound/soc/uniphier/aio-cpu.c index 7cf2316c69a2..1e5eb8e6f8c7 100644 --- a/sound/soc/uniphier/aio-cpu.c +++ b/sound/soc/uniphier/aio-cpu.c @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include @@ -387,6 +388,7 @@ int uniphier_aio_dai_probe(struct snd_soc_dai *dai) sub->spec = spec; } + aio_iecout_set_enable(aio->chip, true); aio_chip_init(aio->chip); aio->chip->active = 1; @@ -431,6 +433,7 @@ int uniphier_aio_dai_resume(struct snd_soc_dai *dai) if (ret) goto err_out_clock; + aio_iecout_set_enable(aio->chip, true); aio_chip_init(aio->chip); for (i = 0; i < ARRAY_SIZE(aio->sub); i++) { @@ -477,6 +480,14 @@ int uniphier_aio_probe(struct platform_device *pdev) if (!chip->chip_spec) return -EINVAL; + chip->regmap_sg = syscon_regmap_lookup_by_phandle(dev->of_node, + "socionext,syscon"); + if (IS_ERR(chip->regmap_sg)) { + if (PTR_ERR(chip->regmap_sg) == -EPROBE_DEFER) + return -EPROBE_DEFER; + chip->regmap_sg = NULL; + } + chip->clk = devm_clk_get(dev, "aio"); if (IS_ERR(chip->clk)) return PTR_ERR(chip->clk); diff --git a/sound/soc/uniphier/aio-reg.h b/sound/soc/uniphier/aio-reg.h index eaf2c65acf14..136d3563cf44 100644 --- a/sound/soc/uniphier/aio-reg.h +++ b/sound/soc/uniphier/aio-reg.h @@ -23,6 +23,9 @@ #include +/* soc-glue */ +#define SG_AOUTEN 0x1c04 + /* SW view */ #define A2CHNMAPCTR0(n) (0x00000 + 0x40 * (n)) #define A2RBNMAPCTR0(n) (0x01000 + 0x40 * (n)) diff --git a/sound/soc/uniphier/aio.h b/sound/soc/uniphier/aio.h index 793334675cb3..8cab4a553a97 100644 --- a/sound/soc/uniphier/aio.h +++ b/sound/soc/uniphier/aio.h @@ -296,6 +296,7 @@ struct uniphier_aio_chip { struct clk *clk; struct reset_control *rst; struct regmap *regmap; + struct regmap *regmap_sg; int active; }; @@ -323,6 +324,7 @@ u64 aio_rbt_cnt_to_end(struct uniphier_aio_sub *sub); u64 aio_rb_space(struct uniphier_aio_sub *sub); u64 aio_rb_space_to_end(struct uniphier_aio_sub *sub); +void aio_iecout_set_enable(struct uniphier_aio_chip *chip, bool enable); int aio_chip_set_pll(struct uniphier_aio_chip *chip, int pll_id, unsigned int freq); void aio_chip_init(struct uniphier_aio_chip *chip); -- 2.16.2