From: Vitaly Rodionov <vitalyr@opensource.cirrus.com> To: Jaroslav Kysela <perex@perex.cz>, Takashi Iwai <tiwai@suse.com> Cc: <alsa-devel@alsa-project.org>, <patches@opensource.cirrus.com>, <linux-kernel@vger.kernel.org>, Lucas Tanure <tanureal@opensource.cirrus.com> Subject: [PATCH v4 11/27] ALSA: hda/cs8409: Prevent I2C access during suspend time Date: Wed, 11 Aug 2021 19:56:38 +0100 [thread overview] Message-ID: <20210811185654.6837-12-vitalyr@opensource.cirrus.com> (raw) In-Reply-To: <20210811185654.6837-1-vitalyr@opensource.cirrus.com> From: Lucas Tanure <tanureal@opensource.cirrus.com> Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com> Signed-off-by: Vitaly Rodionov <vitalyr@opensource.cirrus.com> --- Changes in v2: - No changes Changes in v3: - No changes Changes in v4: - No changes sound/pci/hda/patch_cs8409.c | 14 ++++++++++++++ sound/pci/hda/patch_cs8409.h | 1 + 2 files changed, 15 insertions(+) diff --git a/sound/pci/hda/patch_cs8409.c b/sound/pci/hda/patch_cs8409.c index 4ad832f5c4ba..0b13bcecd778 100644 --- a/sound/pci/hda/patch_cs8409.c +++ b/sound/pci/hda/patch_cs8409.c @@ -127,9 +127,13 @@ static int cs8409_i2c_wait_complete(struct hda_codec *codec) static int cs8409_i2c_read(struct hda_codec *codec, unsigned int i2c_address, unsigned int i2c_reg, unsigned int paged) { + struct cs8409_spec *spec = codec->spec; unsigned int i2c_reg_data; unsigned int read_data; + if (spec->cs42l42_suspended) + return -EPERM; + cs8409_enable_i2c_clock(codec, 1); cs8409_vendor_coef_set(codec, CS8409_I2C_ADDR, i2c_address); @@ -172,8 +176,12 @@ static int cs8409_i2c_read(struct hda_codec *codec, unsigned int i2c_address, un static int cs8409_i2c_write(struct hda_codec *codec, unsigned int i2c_address, unsigned int i2c_reg, unsigned int i2c_data, unsigned int paged) { + struct cs8409_spec *spec = codec->spec; unsigned int i2c_reg_data; + if (spec->cs42l42_suspended) + return -EPERM; + cs8409_enable_i2c_clock(codec, 1); cs8409_vendor_coef_set(codec, CS8409_I2C_ADDR, i2c_address); @@ -371,6 +379,8 @@ static void cs8409_cs42l42_reset(struct hda_codec *codec) /* wait ~10ms */ usleep_range(10000, 15000); + spec->cs42l42_suspended = 0; + mutex_lock(&spec->cs8409_i2c_mux); /* Clear interrupts, by reading interrupt status registers */ @@ -594,6 +604,9 @@ static int cs8409_suspend(struct hda_codec *codec) /* Power down CS42L42 ASP/EQ/MIX/HP */ cs8409_i2c_write(codec, CS42L42_I2C_ADDR, 0x1101, 0xfe, 1); mutex_unlock(&spec->cs8409_i2c_mux); + + spec->cs42l42_suspended = 1; + /* Assert CS42L42 RTS# line */ snd_hda_codec_write(codec, CS8409_PIN_AFG, 0, AC_VERB_SET_GPIO_DATA, 0); @@ -759,6 +772,7 @@ void cs8409_cs42l42_fixups(struct hda_codec *codec, const struct hda_fixup *fix, spec->cs42l42_hp_jack_in = 0; spec->cs42l42_mic_jack_in = 0; + spec->cs42l42_suspended = 1; /* Basic initial sequence for specific hw configuration */ snd_hda_sequence_write(codec, cs8409_cs42l42_init_verbs); diff --git a/sound/pci/hda/patch_cs8409.h b/sound/pci/hda/patch_cs8409.h index 1d3ce28415fa..0f2084b6ec8e 100644 --- a/sound/pci/hda/patch_cs8409.h +++ b/sound/pci/hda/patch_cs8409.h @@ -269,6 +269,7 @@ struct cs8409_spec { unsigned int cs42l42_hp_jack_in:1; unsigned int cs42l42_mic_jack_in:1; unsigned int cs42l42_volume_init:1; + unsigned int cs42l42_suspended:1; char cs42l42_hp_volume[CS42L42_HP_CH]; char cs42l42_hs_mic_volume[CS42L42_HS_MIC_CH]; -- 2.25.1
WARNING: multiple messages have this Message-ID (diff)
From: Vitaly Rodionov <vitalyr@opensource.cirrus.com> To: Jaroslav Kysela <perex@perex.cz>, Takashi Iwai <tiwai@suse.com> Cc: patches@opensource.cirrus.com, alsa-devel@alsa-project.org, linux-kernel@vger.kernel.org, Lucas Tanure <tanureal@opensource.cirrus.com> Subject: [PATCH v4 11/27] ALSA: hda/cs8409: Prevent I2C access during suspend time Date: Wed, 11 Aug 2021 19:56:38 +0100 [thread overview] Message-ID: <20210811185654.6837-12-vitalyr@opensource.cirrus.com> (raw) In-Reply-To: <20210811185654.6837-1-vitalyr@opensource.cirrus.com> From: Lucas Tanure <tanureal@opensource.cirrus.com> Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com> Signed-off-by: Vitaly Rodionov <vitalyr@opensource.cirrus.com> --- Changes in v2: - No changes Changes in v3: - No changes Changes in v4: - No changes sound/pci/hda/patch_cs8409.c | 14 ++++++++++++++ sound/pci/hda/patch_cs8409.h | 1 + 2 files changed, 15 insertions(+) diff --git a/sound/pci/hda/patch_cs8409.c b/sound/pci/hda/patch_cs8409.c index 4ad832f5c4ba..0b13bcecd778 100644 --- a/sound/pci/hda/patch_cs8409.c +++ b/sound/pci/hda/patch_cs8409.c @@ -127,9 +127,13 @@ static int cs8409_i2c_wait_complete(struct hda_codec *codec) static int cs8409_i2c_read(struct hda_codec *codec, unsigned int i2c_address, unsigned int i2c_reg, unsigned int paged) { + struct cs8409_spec *spec = codec->spec; unsigned int i2c_reg_data; unsigned int read_data; + if (spec->cs42l42_suspended) + return -EPERM; + cs8409_enable_i2c_clock(codec, 1); cs8409_vendor_coef_set(codec, CS8409_I2C_ADDR, i2c_address); @@ -172,8 +176,12 @@ static int cs8409_i2c_read(struct hda_codec *codec, unsigned int i2c_address, un static int cs8409_i2c_write(struct hda_codec *codec, unsigned int i2c_address, unsigned int i2c_reg, unsigned int i2c_data, unsigned int paged) { + struct cs8409_spec *spec = codec->spec; unsigned int i2c_reg_data; + if (spec->cs42l42_suspended) + return -EPERM; + cs8409_enable_i2c_clock(codec, 1); cs8409_vendor_coef_set(codec, CS8409_I2C_ADDR, i2c_address); @@ -371,6 +379,8 @@ static void cs8409_cs42l42_reset(struct hda_codec *codec) /* wait ~10ms */ usleep_range(10000, 15000); + spec->cs42l42_suspended = 0; + mutex_lock(&spec->cs8409_i2c_mux); /* Clear interrupts, by reading interrupt status registers */ @@ -594,6 +604,9 @@ static int cs8409_suspend(struct hda_codec *codec) /* Power down CS42L42 ASP/EQ/MIX/HP */ cs8409_i2c_write(codec, CS42L42_I2C_ADDR, 0x1101, 0xfe, 1); mutex_unlock(&spec->cs8409_i2c_mux); + + spec->cs42l42_suspended = 1; + /* Assert CS42L42 RTS# line */ snd_hda_codec_write(codec, CS8409_PIN_AFG, 0, AC_VERB_SET_GPIO_DATA, 0); @@ -759,6 +772,7 @@ void cs8409_cs42l42_fixups(struct hda_codec *codec, const struct hda_fixup *fix, spec->cs42l42_hp_jack_in = 0; spec->cs42l42_mic_jack_in = 0; + spec->cs42l42_suspended = 1; /* Basic initial sequence for specific hw configuration */ snd_hda_sequence_write(codec, cs8409_cs42l42_init_verbs); diff --git a/sound/pci/hda/patch_cs8409.h b/sound/pci/hda/patch_cs8409.h index 1d3ce28415fa..0f2084b6ec8e 100644 --- a/sound/pci/hda/patch_cs8409.h +++ b/sound/pci/hda/patch_cs8409.h @@ -269,6 +269,7 @@ struct cs8409_spec { unsigned int cs42l42_hp_jack_in:1; unsigned int cs42l42_mic_jack_in:1; unsigned int cs42l42_volume_init:1; + unsigned int cs42l42_suspended:1; char cs42l42_hp_volume[CS42L42_HP_CH]; char cs42l42_hs_mic_volume[CS42L42_HS_MIC_CH]; -- 2.25.1
next prev parent reply other threads:[~2021-08-11 18:57 UTC|newest] Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-08-11 18:56 [PATCH v4 00/27] ALSA: hda/cirrus: Split generic cirrus HDA codecs and CS8490 bridge into separate modules Vitaly Rodionov 2021-08-11 18:56 ` Vitaly Rodionov 2021-08-11 18:56 ` [PATCH v4 01/27] ALSA: hda/cirrus: Move CS8409 HDA bridge to separate module Vitaly Rodionov 2021-08-11 18:56 ` Vitaly Rodionov 2021-08-11 18:56 ` [PATCH v4 02/27] ALSA: hda/cs8409: Move arrays of configuration to a new file Vitaly Rodionov 2021-08-11 18:56 ` Vitaly Rodionov 2021-08-11 18:56 ` [PATCH v4 03/27] ALSA: hda/cs8409: Use enums for register names and coefficients Vitaly Rodionov 2021-08-11 18:56 ` Vitaly Rodionov 2021-08-11 18:56 ` [PATCH v4 04/27] ALSA: hda/cs8409: Mask all CS42L42 interrupts on initialization Vitaly Rodionov 2021-08-11 18:56 ` Vitaly Rodionov 2021-08-11 18:56 ` [PATCH v4 05/27] ALSA: hda/cs8409: Reduce HS pops/clicks for Cyborg Vitaly Rodionov 2021-08-11 18:56 ` Vitaly Rodionov 2021-08-11 18:56 ` [PATCH v4 06/27] ALSA: hda/cs8409: Disable unnecessary Ring Sense for Cyborg/Warlock/Bullseye Vitaly Rodionov 2021-08-11 18:56 ` Vitaly Rodionov 2021-08-11 18:56 ` [PATCH v4 07/27] ALSA: hda/cs8409: Disable unsolicited responses during suspend Vitaly Rodionov 2021-08-11 18:56 ` Vitaly Rodionov 2021-08-11 18:56 ` [PATCH v4 08/27] ALSA: hda/cs8409: Disable unsolicited response for the first boot Vitaly Rodionov 2021-08-11 18:56 ` Vitaly Rodionov 2021-08-11 18:56 ` [PATCH v4 09/27] ALSA: hda/cs8409: Mask CS42L42 wake events Vitaly Rodionov 2021-08-11 18:56 ` Vitaly Rodionov 2021-08-11 18:56 ` [PATCH v4 10/27] ALSA: hda/cs8409: Simplify CS42L42 jack detect Vitaly Rodionov 2021-08-11 18:56 ` Vitaly Rodionov 2021-08-11 18:56 ` Vitaly Rodionov [this message] 2021-08-11 18:56 ` [PATCH v4 11/27] ALSA: hda/cs8409: Prevent I2C access during suspend time Vitaly Rodionov 2021-08-11 18:56 ` [PATCH v4 12/27] ALSA: hda/cs8409: Generalize volume controls Vitaly Rodionov 2021-08-11 18:56 ` Vitaly Rodionov 2021-08-11 18:56 ` [PATCH v4 13/27] ALSA: hda/cs8409: Dont disable I2C clock between consecutive accesses Vitaly Rodionov 2021-08-11 18:56 ` Vitaly Rodionov 2021-08-11 18:56 ` [PATCH v4 14/27] ALSA: hda/cs8409: Avoid setting the same I2C address for every access Vitaly Rodionov 2021-08-11 18:56 ` Vitaly Rodionov 2021-08-11 18:56 ` [PATCH v4 15/27] ALSA: hda/cs8409: Avoid re-setting the same page as the last access Vitaly Rodionov 2021-08-11 18:56 ` Vitaly Rodionov 2021-08-11 18:56 ` [PATCH v4 16/27] ALSA: hda/cs8409: Support i2c bulk read/write functions Vitaly Rodionov 2021-08-11 18:56 ` Vitaly Rodionov 2021-08-11 18:56 ` [PATCH v4 17/27] ALSA: hda/cs8409: Separate CS8409, CS42L42 and project functions Vitaly Rodionov 2021-08-11 18:56 ` Vitaly Rodionov 2021-08-11 18:56 ` [PATCH v4 18/27] ALSA: hda/cs8409: Move codec properties to its own struct Vitaly Rodionov 2021-08-11 18:56 ` Vitaly Rodionov 2021-08-11 18:56 ` [PATCH v4 19/27] ALSA: hda/cs8409: Support multiple sub_codecs for Suspend/Resume/Unsol events Vitaly Rodionov 2021-08-11 18:56 ` Vitaly Rodionov 2021-08-11 18:56 ` [PATCH v4 20/27] ALSA: hda/cs8409: Add Support to disable jack type detection for CS42L42 Vitaly Rodionov 2021-08-11 18:56 ` Vitaly Rodionov 2021-08-11 18:56 ` [PATCH v4 21/27] ALSA: hda/cs8409: Add support for dolphin Vitaly Rodionov 2021-08-11 18:56 ` Vitaly Rodionov 2021-08-11 18:56 ` [PATCH v4 22/27] ALSA: hda/cs8409: Enable Full Scale Volume for Line Out Codec on Dolphin Vitaly Rodionov 2021-08-11 18:56 ` Vitaly Rodionov 2021-08-11 18:56 ` [PATCH v4 23/27] ALSA: hda/cs8409: Set fixed sample rate of 48kHz for CS42L42 Vitaly Rodionov 2021-08-11 18:56 ` Vitaly Rodionov 2021-08-11 18:56 ` [PATCH v4 24/27] ALSA: hda/cs8409: Use timeout rather than retries for I2C transaction waits Vitaly Rodionov 2021-08-11 18:56 ` Vitaly Rodionov 2021-08-11 18:56 ` [PATCH v4 25/27] ALSA: hda/cs8409: Remove unnecessary delays Vitaly Rodionov 2021-08-11 18:56 ` Vitaly Rodionov 2021-08-11 18:56 ` [PATCH v4 26/27] ALSA: hda/cs8409: Follow correct CS42L42 power down sequence for suspend Vitaly Rodionov 2021-08-11 18:56 ` Vitaly Rodionov 2021-08-11 18:56 ` [PATCH v4 27/27] ALSA: hda/cs8409: Unmute/Mute codec when stream starts/stops Vitaly Rodionov 2021-08-11 18:56 ` Vitaly Rodionov 2021-08-12 11:47 ` [PATCH v4 00/27] ALSA: hda/cirrus: Split generic cirrus HDA codecs and CS8490 bridge into separate modules Takashi Iwai 2021-08-12 11:47 ` Takashi Iwai
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=20210811185654.6837-12-vitalyr@opensource.cirrus.com \ --to=vitalyr@opensource.cirrus.com \ --cc=alsa-devel@alsa-project.org \ --cc=linux-kernel@vger.kernel.org \ --cc=patches@opensource.cirrus.com \ --cc=perex@perex.cz \ --cc=tanureal@opensource.cirrus.com \ --cc=tiwai@suse.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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.