From: Mark Brown <broonie@kernel.org>
To: "Paweł Anikiel" <pan@semihalf.com>
Cc: alsa-devel@alsa-project.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org, lgirdwood@gmail.com,
perex@perex.cz, tiwai@suse.com, robh+dt@kernel.org,
krzysztof.kozlowski+dt@linaro.org, dinguyen@kernel.org,
lars@metafoo.de, nuno.sa@analog.com, upstream@semihalf.com
Subject: Re: [PATCH 5/9] ASoC: ssm2602: Add workaround for playback with external MCLK
Date: Fri, 14 Apr 2023 18:35:18 +0100 [thread overview]
Message-ID: <cb35f3f2-4dc9-4d56-96bd-bcffb33b7aaf@sirena.org.uk> (raw)
In-Reply-To: <20230414140203.707729-6-pan@semihalf.com>
[-- Attachment #1: Type: text/plain, Size: 2241 bytes --]
On Fri, Apr 14, 2023 at 04:01:59PM +0200, Paweł Anikiel wrote:
> Apply a workaround for what seems to be a hardware quirk: when using
> an external MCLK signal, powering on Output and DAC for the first time
> produces output distortions unless they're powered together with whole
> chip power.
This doesn't seem coherent, these are multiple register writes so
clearly can't be done at the same moment as initial power on. Clearly
there's some other constraint here.
> The workaround powers them on in probe for the first time, as doing it
> later may be impossible (e.g. when starting playback while recording,
> whole chip power will already be on).
It doesn't do that, it powers them on at component probe.
> Here are some sequences run at the very start before a sw reset (and
> later using one of the NOT OK sequences from above):
>
> ssmset 0x09 0x01 # core
> ssmset 0x06 0x07 # chip, out, dac
> OK
I can't tell what any of this is trying to say, especially given all the
magic numbers, and obviously no actual use of the driver should be
writing directly to the register map.
> + /* Workaround for what seems to be a hardware quirk: when using an
> + * external MCLK signal, powering on Output and DAC for the first
> + * time produces output distortions unless they're powered together
> + * with whole chip power. We power them here for the first time,
> + * as doing it later may be impossible (e.g. when starting playback
> + * while recording, whole chip power will already be on)
> + */
> + regmap_write(ssm2602->regmap, SSM2602_ACTIVE, 0x01);
> + regmap_write(ssm2602->regmap, SSM2602_PWR, 0x07);
> + regmap_write(ssm2602->regmap, SSM2602_RESET, 0x00);
> +
The rest of the driver uses symbolic names for register values, this
code should too.
This also seems buggy in that it writes non-default values to the
hardware then does a reset, meaning that the cache and hardware values
will be out of sync, and since it only happens on probe there will be an
issue after suspend if power is removed. It looks like this would be
most comfortably implemented as a register patch applied as soon as the
regmap is instantiated. See regmap_register_patch().
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
next prev parent reply other threads:[~2023-04-14 17:35 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-04-14 14:01 [PATCH 0/9] Add Chameleon v3 ASoC audio Paweł Anikiel
2023-04-14 14:01 ` [PATCH 1/9] ASoC: Add Chameleon v3 audio Paweł Anikiel
2023-04-14 16:57 ` Krzysztof Kozlowski
2023-04-14 17:19 ` Mark Brown
2023-04-25 15:59 ` Paweł Anikiel
2023-04-25 16:27 ` Mark Brown
2023-04-14 14:01 ` [PATCH 2/9] dt-bindings: ASoC: Add chv3-i2s Paweł Anikiel
2023-04-14 17:00 ` Krzysztof Kozlowski
2023-04-25 16:01 ` Paweł Anikiel
2023-04-26 13:15 ` Krzysztof Kozlowski
2023-04-14 14:01 ` [PATCH 3/9] dt-bindings: ASoC: Add chv3-audio Paweł Anikiel
2023-04-14 18:37 ` Rob Herring
2023-04-17 20:41 ` Rob Herring
2023-04-25 16:01 ` Paweł Anikiel
2023-04-14 14:01 ` [PATCH 4/9] dt-bindings: ASoC: Add it68051 Paweł Anikiel
2023-04-14 17:01 ` Krzysztof Kozlowski
2023-04-14 18:37 ` Rob Herring
2023-04-14 14:01 ` [PATCH 5/9] ASoC: ssm2602: Add workaround for playback with external MCLK Paweł Anikiel
2023-04-14 17:35 ` Mark Brown [this message]
2023-04-25 16:02 ` Paweł Anikiel
2023-04-25 16:42 ` Mark Brown
2023-04-14 14:02 ` [PATCH 6/9] ASoC: ssm2602: Add support for CLKDIV2 Paweł Anikiel
2023-04-14 14:02 ` [PATCH 7/9] ASoC: ssm2602: Add mute gpio Paweł Anikiel
2023-04-14 17:47 ` Mark Brown
2023-04-14 14:02 ` [PATCH 8/9] dt-bindings: ASoC: Add mute-gpio to ssm2602 Paweł Anikiel
2023-04-14 14:02 ` [PATCH 9/9] ARM: dts: chameleonv3: Add ssm2603 mute gpio Paweł Anikiel
2023-04-14 16:47 ` [PATCH 0/9] Add Chameleon v3 ASoC audio Mark Brown
2023-04-25 15:58 ` Paweł Anikiel
2023-04-25 17:06 ` Mark Brown
2023-04-17 19:28 ` (subset) " Mark Brown
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=cb35f3f2-4dc9-4d56-96bd-bcffb33b7aaf@sirena.org.uk \
--to=broonie@kernel.org \
--cc=alsa-devel@alsa-project.org \
--cc=devicetree@vger.kernel.org \
--cc=dinguyen@kernel.org \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=lars@metafoo.de \
--cc=lgirdwood@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=nuno.sa@analog.com \
--cc=pan@semihalf.com \
--cc=perex@perex.cz \
--cc=robh+dt@kernel.org \
--cc=tiwai@suse.com \
--cc=upstream@semihalf.com \
/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®