From: Samuel Holland <samuel@sholland.org>
To: "Clément Péron" <peron.clem@gmail.com>,
"Maxime Ripard" <mripard@kernel.org>,
"Chen-Yu Tsai" <wens@csie.org>,
"Rob Herring" <robh+dt@kernel.org>,
"Mark Brown" <broonie@kernel.org>,
"Liam Girdwood" <lgirdwood@gmail.com>
Cc: Jaroslav Kysela <perex@perex.cz>, Takashi Iwai <tiwai@suse.com>,
Marcus Cooper <codekipper@gmail.com>,
Jernej Skrabec <jernej.skrabec@siol.net>,
alsa-devel@alsa-project.org, devicetree@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, linux-sunxi@googlegroups.com
Subject: Re: [PATCH v3 01/19] ASoC: sun4i-i2s: Add support for H6 I2S
Date: Sun, 20 Sep 2020 13:39:15 -0500 [thread overview]
Message-ID: <e0eb7e94-e736-4ec0-b838-884a4857bb97@sholland.org> (raw)
In-Reply-To: <20200920180758.592217-2-peron.clem@gmail.com>
On 9/20/20 1:07 PM, Clément Péron wrote:
> From: Jernej Skrabec <jernej.skrabec@siol.net>
>
> H6 I2S is very similar to that in H3, except it supports up to 16
> channels.
>
> Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
> Signed-off-by: Marcus Cooper <codekipper@gmail.com>
> Signed-off-by: Clément Péron <peron.clem@gmail.com>
> ---
> sound/soc/sunxi/sun4i-i2s.c | 218 ++++++++++++++++++++++++++++++++++++
> 1 file changed, 218 insertions(+)
>
> diff --git a/sound/soc/sunxi/sun4i-i2s.c b/sound/soc/sunxi/sun4i-i2s.c
> index f23ff29e7c1d..348057464bed 100644
> --- a/sound/soc/sunxi/sun4i-i2s.c
> +++ b/sound/soc/sunxi/sun4i-i2s.c
...
> @@ -699,6 +770,102 @@ static int sun8i_i2s_set_soc_fmt(const struct sun4i_i2s *i2s,
> return 0;
> }
>
> +static int sun50i_h6_i2s_set_soc_fmt(const struct sun4i_i2s *i2s,
> + unsigned int fmt)
> +{
> + u32 mode, val;
> + u8 offset;
> +
> + /* DAI clock polarity */
> + switch (fmt & SND_SOC_DAIFMT_INV_MASK) {
> + case SND_SOC_DAIFMT_IB_IF:
> + /* Invert both clocks */
> + val = SUN8I_I2S_FMT0_BCLK_POLARITY_INVERTED |
> + SUN8I_I2S_FMT0_LRCLK_POLARITY_INVERTED;
> + break;
> + case SND_SOC_DAIFMT_IB_NF:
> + /* Invert bit clock */
> + val = SUN8I_I2S_FMT0_BCLK_POLARITY_INVERTED;
> + break;
> + case SND_SOC_DAIFMT_NB_IF:
> + /* Invert frame clock */
> + val = SUN8I_I2S_FMT0_LRCLK_POLARITY_INVERTED;
> + break;
> + case SND_SOC_DAIFMT_NB_NF:
> + val = 0;
> + break;
> + default:
> + return -EINVAL;
> + }
Maxime's testing that showed LRCK inversion was necessary was done on the H6. So
in addition to dropping the patch that removed the LRCK inversion for other
sun8i variants, you need to re-add it to this patch for the H6 variant.
Cheers,
Samuel
> +
> + regmap_update_bits(i2s->regmap, SUN4I_I2S_FMT0_REG,
> + SUN8I_I2S_FMT0_LRCLK_POLARITY_MASK |
> + SUN8I_I2S_FMT0_BCLK_POLARITY_MASK,
> + val);
> +
> + /* DAI Mode */
> + switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
> + case SND_SOC_DAIFMT_DSP_A:
> + mode = SUN8I_I2S_CTRL_MODE_PCM;
> + offset = 1;
> + break;
> +
> + case SND_SOC_DAIFMT_DSP_B:
> + mode = SUN8I_I2S_CTRL_MODE_PCM;
> + offset = 0;
> + break;
> +
> + case SND_SOC_DAIFMT_I2S:
> + mode = SUN8I_I2S_CTRL_MODE_LEFT;
> + offset = 1;
> + break;
> +
> + case SND_SOC_DAIFMT_LEFT_J:
> + mode = SUN8I_I2S_CTRL_MODE_LEFT;
> + offset = 0;
> + break;
> +
> + case SND_SOC_DAIFMT_RIGHT_J:
> + mode = SUN8I_I2S_CTRL_MODE_RIGHT;
> + offset = 0;
> + break;
> +
> + default:
> + return -EINVAL;
> + }
> +
> + regmap_update_bits(i2s->regmap, SUN4I_I2S_CTRL_REG,
> + SUN8I_I2S_CTRL_MODE_MASK, mode);
> + regmap_update_bits(i2s->regmap, SUN8I_I2S_TX_CHAN_SEL_REG,
> + SUN50I_H6_I2S_TX_CHAN_SEL_OFFSET_MASK,
> + SUN50I_H6_I2S_TX_CHAN_SEL_OFFSET(offset));
> + regmap_update_bits(i2s->regmap, SUN50I_H6_I2S_RX_CHAN_SEL_REG,
> + SUN50I_H6_I2S_TX_CHAN_SEL_OFFSET_MASK,
> + SUN50I_H6_I2S_TX_CHAN_SEL_OFFSET(offset));
> +
> + /* DAI clock master masks */
> + switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
> + case SND_SOC_DAIFMT_CBS_CFS:
> + /* BCLK and LRCLK master */
> + val = SUN8I_I2S_CTRL_BCLK_OUT | SUN8I_I2S_CTRL_LRCK_OUT;
> + break;
> +
> + case SND_SOC_DAIFMT_CBM_CFM:
> + /* BCLK and LRCLK slave */
> + val = 0;
> + break;
> +
> + default:
> + return -EINVAL;
> + }
> +
> + regmap_update_bits(i2s->regmap, SUN4I_I2S_CTRL_REG,
> + SUN8I_I2S_CTRL_BCLK_OUT | SUN8I_I2S_CTRL_LRCK_OUT,
> + val);
> +
> + return 0;
> +}
> +
> static int sun4i_i2s_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
> {
> struct sun4i_i2s *i2s = snd_soc_dai_get_drvdata(dai);
...
next prev parent reply other threads:[~2020-09-20 18:45 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-09-20 18:07 [PATCH v3 00/19] Add Allwinner H3/H5/H6/A64 HDMI audio Clément Péron
2020-09-20 18:07 ` [PATCH v3 01/19] ASoC: sun4i-i2s: Add support for H6 I2S Clément Péron
2020-09-20 18:39 ` Samuel Holland [this message]
2020-09-20 19:38 ` Clément Péron
2020-09-20 18:07 ` [PATCH v3 02/19] ASoC: sun4i-i2s: Change set_chan_cfg params Clément Péron
2020-09-20 18:07 ` [PATCH v3 03/19] dt-bindings: ASoC: sun4i-i2s: Add H6 compatible Clément Péron
2020-09-20 18:07 ` [PATCH v3 04/19] ASoC: sun4i-i2s: Set sign extend sample Clément Péron
2020-09-20 18:07 ` [PATCH v3 05/19] ASoc: sun4i-i2s: Add 20 and 24 bit support Clément Péron
2020-09-20 18:45 ` Samuel Holland
2020-09-20 21:32 ` Clément Péron
2020-09-20 18:07 ` [PATCH v3 06/19] ASoC: sun4i-i2s: Fix sun8i volatile regs Clément Péron
2020-09-20 18:52 ` Samuel Holland
2020-09-20 20:05 ` Clément Péron
2020-09-20 18:07 ` [PATCH v3 07/19] arm64: dts: allwinner: h6: Add HDMI audio node Clément Péron
2020-09-20 18:07 ` [PATCH v3 08/19] arm64: dts: allwinner: h6: Enable HDMI sound for Beelink GS1 Clément Péron
2020-09-20 18:07 ` [PATCH v3 09/19] arm: dts: sunxi: h3/h5: Add DAI node for HDMI Clément Péron
2020-09-20 18:07 ` [PATCH v3 10/19] arm: dts: sunxi: h3/h5: Add HDMI audio Clément Péron
2020-09-20 18:07 ` [PATCH v3 11/19] arm64: dts: allwinner: a64: Add DAI node for HDMI Clément Péron
2020-09-20 18:07 ` [PATCH v3 12/19] arm64: dts: allwinner: a64: Add HDMI audio Clément Péron
2020-09-20 18:07 ` [PATCH v3 13/19] arm: sun8i: h3: Add HDMI audio to Orange Pi 2 Clément Péron
2020-09-20 18:07 ` [PATCH v3 14/19] arm: sun8i: h3: Add HDMI audio to Beelink X2 Clément Péron
2020-09-20 18:07 ` [PATCH v3 15/19] arm64: dts: allwinner: a64: Add HDMI audio to Pine64 Clément Péron
2020-09-20 18:07 ` [PATCH v3 16/19] arm64: dts: allwinner: Enable HDMI audio on Orange Pi PC 2 Clément Péron
2020-09-20 18:07 ` [PATCH v3 17/19] ARM: dts: sun8i-h3: Enable HDMI audio on Orange Pi PC/One Clément Péron
2020-09-20 18:07 ` [PATCH v3 18/19] arm64: dts: sun50i-h6-orangepi-3: Enable HDMI audio Clément Péron
2020-09-20 18:07 ` [PATCH v3 19/19] arm64: defconfig: Enable Allwinner i2s driver Clément Péron
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=e0eb7e94-e736-4ec0-b838-884a4857bb97@sholland.org \
--to=samuel@sholland.org \
--cc=alsa-devel@alsa-project.org \
--cc=broonie@kernel.org \
--cc=codekipper@gmail.com \
--cc=devicetree@vger.kernel.org \
--cc=jernej.skrabec@siol.net \
--cc=lgirdwood@gmail.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-sunxi@googlegroups.com \
--cc=mripard@kernel.org \
--cc=perex@perex.cz \
--cc=peron.clem@gmail.com \
--cc=robh+dt@kernel.org \
--cc=tiwai@suse.com \
--cc=wens@csie.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®