From: phucduc.bui@gmail.com
To: Mark Brown <broonie@kernel.org>
Cc: Liam Girdwood <lgirdwood@gmail.com>,
Jaroslav Kysela <perex@perex.cz>, Takashi Iwai <tiwai@suse.com>,
Cheng-Yi Chiang <cychiang@chromium.org>,
Tzung-Bi Shih <tzungbi@kernel.org>,
Guenter Roeck <groeck@chromium.org>,
Benson Leung <bleung@chromium.org>,
David Rhodes <david.rhodes@cirrus.com>,
Richard Fitzgerald <rf@opensource.cirrus.com>,
povik+lin@cutebit.org,
Charles Keepax <ckeepax@opensource.cirrus.com>,
Support Opensource <support.opensource@diasemi.com>,
Nick Li <nick.li@foursemi.com>,
Herve Codina <herve.codina@bootlin.com>,
Srinivas Kandagatla <srini@kernel.org>,
Matthias Brugger <matthias.bgg@gmail.com>,
AngeloGioacchino Del Regno
<angelogioacchino.delregno@collabora.com>,
Shenghao Ding <shenghao-ding@ti.com>, Kevin Lu <kevin-lu@ti.com>,
Baojun Xu <baojun.xu@ti.com>, Sen Wang <sen@ti.com>,
Oder Chiou <oder_chiou@realtek.com>,
Lars-Peter Clausen <lars@metafoo.de>,
nuno.sa@analog.com,
Steven Eckhoff <steven.eckhoff.opensource@gmail.com>,
patches@opensource.cirrus.com, chrome-platform@lists.linux.dev,
asahi@lists.linux.dev, linux-arm-msm@vger.kernel.org,
linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-mediatek@lists.infradead.org,
bui duc phuc <phucduc.bui@gmail.com>
Subject: [PATCH 63/78] ASoC: codecs: wcd-mbhc: Use guard() for mutex locks
Date: Thu, 18 Jun 2026 18:08:12 +0700 [thread overview]
Message-ID: <20260618110827.232983-7-phucduc.bui@gmail.com> (raw)
In-Reply-To: <20260618110827.232983-1-phucduc.bui@gmail.com>
From: bui duc phuc <phucduc.bui@gmail.com>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
Signed-off-by: bui duc phuc <phucduc.bui@gmail.com>
---
sound/soc/codecs/wcd-mbhc-v2.c | 142 +++++++++++++++------------------
1 file changed, 66 insertions(+), 76 deletions(-)
diff --git a/sound/soc/codecs/wcd-mbhc-v2.c b/sound/soc/codecs/wcd-mbhc-v2.c
index bb0c8478a8eb..b8e87d0b79b1 100644
--- a/sound/soc/codecs/wcd-mbhc-v2.c
+++ b/sound/soc/codecs/wcd-mbhc-v2.c
@@ -419,9 +419,8 @@ static void wcd_cancel_hs_detect_plug(struct wcd_mbhc *mbhc,
struct work_struct *work)
{
mbhc->hs_detect_work_stop = true;
- mutex_unlock(&mbhc->lock);
+ guard(mutex)(&mbhc->lock);
cancel_work_sync(work);
- mutex_lock(&mbhc->lock);
}
static void wcd_mbhc_cancel_pending_work(struct wcd_mbhc *mbhc)
@@ -458,7 +457,7 @@ static void wcd_mbhc_find_plug_and_report(struct wcd_mbhc *mbhc,
if (mbhc->current_plug == plug_type)
return;
- mutex_lock(&mbhc->lock);
+ guard(mutex)(&mbhc->lock);
switch (plug_type) {
case MBHC_PLUG_TYPE_HEADPHONE:
@@ -481,7 +480,6 @@ static void wcd_mbhc_find_plug_and_report(struct wcd_mbhc *mbhc,
mbhc->current_plug, plug_type);
break;
}
- mutex_unlock(&mbhc->lock);
}
static void wcd_schedule_hs_detect_plug(struct wcd_mbhc *mbhc,
@@ -517,7 +515,7 @@ static void mbhc_plug_detect_fn(struct work_struct *work)
enum snd_jack_types jack_type;
bool detection_type;
- mutex_lock(&mbhc->lock);
+ guard(mutex)(&mbhc->lock);
mbhc->in_swch_irq_handler = true;
@@ -578,7 +576,6 @@ static void mbhc_plug_detect_fn(struct work_struct *work)
exit:
mbhc->in_swch_irq_handler = false;
- mutex_unlock(&mbhc->lock);
}
static irqreturn_t wcd_mbhc_mech_plug_detect_irq(int irq, void *data)
@@ -673,29 +670,28 @@ static irqreturn_t wcd_mbhc_btn_press_handler(int irq, void *data)
int mask;
unsigned long msec_val;
- mutex_lock(&mbhc->lock);
+ guard(mutex)(&mbhc->lock);
wcd_cancel_btn_work(mbhc);
mbhc->is_btn_press = true;
msec_val = jiffies_to_msecs(jiffies - mbhc->jiffies_atreport);
/* Too short, ignore button press */
if (msec_val < MBHC_BUTTON_PRESS_THRESHOLD_MIN)
- goto done;
+ return IRQ_HANDLED;
/* If switch interrupt already kicked in, ignore button press */
if (mbhc->in_swch_irq_handler)
- goto done;
+ return IRQ_HANDLED;
/* Plug isn't headset, ignore button press */
if (mbhc->current_plug != MBHC_PLUG_TYPE_HEADSET)
- goto done;
+ return IRQ_HANDLED;
mask = wcd_mbhc_get_button_mask(mbhc);
mbhc->buttons_pressed |= mask;
if (schedule_delayed_work(&mbhc->mbhc_btn_dwork, msecs_to_jiffies(400)) == 0)
WARN(1, "Button pressed twice without release event\n");
-done:
- mutex_unlock(&mbhc->lock);
+
return IRQ_HANDLED;
}
@@ -704,14 +700,14 @@ static irqreturn_t wcd_mbhc_btn_release_handler(int irq, void *data)
struct wcd_mbhc *mbhc = data;
int ret;
- mutex_lock(&mbhc->lock);
+ guard(mutex)(&mbhc->lock);
if (mbhc->is_btn_press)
mbhc->is_btn_press = false;
else /* fake btn press */
- goto exit;
+ return IRQ_HANDLED;
if (!(mbhc->buttons_pressed & WCD_MBHC_JACK_BUTTON_MASK))
- goto exit;
+ return IRQ_HANDLED;
ret = wcd_cancel_btn_work(mbhc);
if (ret == 0) { /* Reporting long button release event */
@@ -725,8 +721,6 @@ static irqreturn_t wcd_mbhc_btn_release_handler(int irq, void *data)
}
}
mbhc->buttons_pressed &= ~WCD_MBHC_JACK_BUTTON_MASK;
-exit:
- mutex_unlock(&mbhc->lock);
return IRQ_HANDLED;
}
@@ -768,62 +762,60 @@ static int wcd_mbhc_initialise(struct wcd_mbhc *mbhc)
return ret;
}
- mutex_lock(&mbhc->lock);
-
- if (mbhc->cfg->typec_analog_mux)
- mbhc->swap_thr = GND_MIC_USBC_SWAP_THRESHOLD;
- else
- mbhc->swap_thr = GND_MIC_SWAP_THRESHOLD;
-
- /* setup HS detection */
- if (mbhc->mbhc_cb->hph_pull_up_control_v2)
- mbhc->mbhc_cb->hph_pull_up_control_v2(component,
- mbhc->cfg->typec_analog_mux ?
- HS_PULLUP_I_OFF : HS_PULLUP_I_DEFAULT);
- else if (mbhc->mbhc_cb->hph_pull_up_control)
- mbhc->mbhc_cb->hph_pull_up_control(component,
- mbhc->cfg->typec_analog_mux ?
- I_OFF : I_DEFAULT);
- else
- wcd_mbhc_write_field(mbhc, WCD_MBHC_HS_L_DET_PULL_UP_CTRL,
- mbhc->cfg->typec_analog_mux ? 0 : 3);
-
- wcd_mbhc_write_field(mbhc, WCD_MBHC_HPHL_PLUG_TYPE, mbhc->cfg->hphl_swh);
- wcd_mbhc_write_field(mbhc, WCD_MBHC_GND_PLUG_TYPE, mbhc->cfg->gnd_swh);
- wcd_mbhc_write_field(mbhc, WCD_MBHC_SW_HPH_LP_100K_TO_GND, 1);
- if (mbhc->cfg->gnd_det_en && mbhc->mbhc_cb->mbhc_gnd_det_ctrl)
- mbhc->mbhc_cb->mbhc_gnd_det_ctrl(component, true);
- wcd_mbhc_write_field(mbhc, WCD_MBHC_HS_L_DET_PULL_UP_COMP_CTRL, 1);
-
- /* Plug detect is triggered manually if analog goes through USBCC */
- if (mbhc->cfg->typec_analog_mux)
- wcd_mbhc_write_field(mbhc, WCD_MBHC_L_DET_EN, 0);
- else
- wcd_mbhc_write_field(mbhc, WCD_MBHC_L_DET_EN, 1);
-
- if (mbhc->cfg->typec_analog_mux)
- /* Insertion debounce set to 48ms */
- wcd_mbhc_write_field(mbhc, WCD_MBHC_INSREM_DBNC, 4);
- else
- /* Insertion debounce set to 96ms */
- wcd_mbhc_write_field(mbhc, WCD_MBHC_INSREM_DBNC, 6);
+ scoped_guard(mutex, &mbhc->lock) {
+ if (mbhc->cfg->typec_analog_mux)
+ mbhc->swap_thr = GND_MIC_USBC_SWAP_THRESHOLD;
+ else
+ mbhc->swap_thr = GND_MIC_SWAP_THRESHOLD;
+
+ /* setup HS detection */
+ if (mbhc->mbhc_cb->hph_pull_up_control_v2)
+ mbhc->mbhc_cb->hph_pull_up_control_v2(component,
+ mbhc->cfg->typec_analog_mux ?
+ HS_PULLUP_I_OFF : HS_PULLUP_I_DEFAULT);
+ else if (mbhc->mbhc_cb->hph_pull_up_control)
+ mbhc->mbhc_cb->hph_pull_up_control(component,
+ mbhc->cfg->typec_analog_mux ?
+ I_OFF : I_DEFAULT);
+ else
+ wcd_mbhc_write_field(mbhc, WCD_MBHC_HS_L_DET_PULL_UP_CTRL,
+ mbhc->cfg->typec_analog_mux ? 0 : 3);
+
+ wcd_mbhc_write_field(mbhc, WCD_MBHC_HPHL_PLUG_TYPE, mbhc->cfg->hphl_swh);
+ wcd_mbhc_write_field(mbhc, WCD_MBHC_GND_PLUG_TYPE, mbhc->cfg->gnd_swh);
+ wcd_mbhc_write_field(mbhc, WCD_MBHC_SW_HPH_LP_100K_TO_GND, 1);
+ if (mbhc->cfg->gnd_det_en && mbhc->mbhc_cb->mbhc_gnd_det_ctrl)
+ mbhc->mbhc_cb->mbhc_gnd_det_ctrl(component, true);
+ wcd_mbhc_write_field(mbhc, WCD_MBHC_HS_L_DET_PULL_UP_COMP_CTRL, 1);
+
+ /* Plug detect is triggered manually if analog goes through USBCC */
+ if (mbhc->cfg->typec_analog_mux)
+ wcd_mbhc_write_field(mbhc, WCD_MBHC_L_DET_EN, 0);
+ else
+ wcd_mbhc_write_field(mbhc, WCD_MBHC_L_DET_EN, 1);
- /* Button Debounce set to 16ms */
- wcd_mbhc_write_field(mbhc, WCD_MBHC_BTN_DBNC, 2);
+ if (mbhc->cfg->typec_analog_mux)
+ /* Insertion debounce set to 48ms */
+ wcd_mbhc_write_field(mbhc, WCD_MBHC_INSREM_DBNC, 4);
+ else
+ /* Insertion debounce set to 96ms */
+ wcd_mbhc_write_field(mbhc, WCD_MBHC_INSREM_DBNC, 6);
- /* enable bias */
- mbhc->mbhc_cb->mbhc_bias(component, true);
- /* enable MBHC clock */
- if (mbhc->mbhc_cb->clk_setup)
- mbhc->mbhc_cb->clk_setup(component,
- mbhc->cfg->typec_analog_mux ? false : true);
+ /* Button Debounce set to 16ms */
+ wcd_mbhc_write_field(mbhc, WCD_MBHC_BTN_DBNC, 2);
- /* program HS_VREF value */
- wcd_program_hs_vref(mbhc);
+ /* enable bias */
+ mbhc->mbhc_cb->mbhc_bias(component, true);
+ /* enable MBHC clock */
+ if (mbhc->mbhc_cb->clk_setup)
+ mbhc->mbhc_cb->clk_setup(component,
+ mbhc->cfg->typec_analog_mux ? false : true);
- wcd_program_btn_threshold(mbhc, false);
+ /* program HS_VREF value */
+ wcd_program_hs_vref(mbhc);
- mutex_unlock(&mbhc->lock);
+ wcd_program_btn_threshold(mbhc, false);
+ }
pm_runtime_put_autosuspend(component->dev);
@@ -1327,7 +1319,7 @@ static irqreturn_t wcd_mbhc_adc_hs_rem_irq(int irq, void *data)
unsigned long timeout;
int adc_threshold, output_mv, retry = 0;
- mutex_lock(&mbhc->lock);
+ guard(mutex)(&mbhc->lock);
timeout = jiffies + msecs_to_jiffies(WCD_FAKE_REMOVAL_MIN_PERIOD_MS);
adc_threshold = wcd_mbhc_adc_get_hs_thres(mbhc);
@@ -1342,7 +1334,7 @@ static irqreturn_t wcd_mbhc_adc_hs_rem_irq(int irq, void *data)
/* Check for fake removal */
if ((output_mv <= adc_threshold) && retry > FAKE_REM_RETRY_ATTEMPTS)
- goto exit;
+ return IRQ_HANDLED;
} while (!time_after(jiffies, timeout));
/*
@@ -1359,8 +1351,6 @@ static irqreturn_t wcd_mbhc_adc_hs_rem_irq(int irq, void *data)
wcd_mbhc_elec_hs_report_unplug(mbhc);
wcd_mbhc_write_field(mbhc, WCD_MBHC_BTN_ISRC_CTL, 0);
-exit:
- mutex_unlock(&mbhc->lock);
return IRQ_HANDLED;
}
@@ -1622,10 +1612,10 @@ void wcd_mbhc_deinit(struct wcd_mbhc *mbhc)
free_irq(mbhc->intr_ids->mbhc_btn_press_intr, mbhc);
free_irq(mbhc->intr_ids->mbhc_sw_intr, mbhc);
- mutex_lock(&mbhc->lock);
- wcd_cancel_hs_detect_plug(mbhc, &mbhc->correct_plug_swch);
- cancel_work_sync(&mbhc->mbhc_plug_detect_work);
- mutex_unlock(&mbhc->lock);
+ scoped_guard(mutex, &mbhc->lock) {
+ wcd_cancel_hs_detect_plug(mbhc, &mbhc->correct_plug_swch);
+ cancel_work_sync(&mbhc->mbhc_plug_detect_work);
+ }
kfree(mbhc);
}
--
2.43.0
next prev parent reply other threads:[~2026-06-18 11:09 UTC|newest]
Thread overview: 83+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-17 10:31 [PATCH 00/78] ASoC: codecs: Use guard() for mutex & spin locks phucduc.bui
2026-06-17 10:31 ` [PATCH 01/78] ASoC: codecs: ab8500: Use guard() for mutex locks phucduc.bui
2026-06-17 10:31 ` [PATCH 02/78] ASoC: codecs: ak4613: " phucduc.bui
2026-06-17 10:31 ` [PATCH 03/78] ASoC: codecs: arizona-jack: " phucduc.bui
2026-06-17 10:31 ` [PATCH 04/78] ASoC: codecs: arizona: " phucduc.bui
2026-06-17 10:31 ` [PATCH 05/78] ASoC: codecs: aw87390: " phucduc.bui
2026-06-18 10:19 ` Clint
2026-06-17 10:31 ` [PATCH 06/78] ASoC: codecs: aw88081: " phucduc.bui
2026-06-17 10:31 ` [PATCH 07/78] ASoC: codecs: aw88166: " phucduc.bui
2026-06-17 10:31 ` [PATCH 08/78] ASoC: codecs: aw88261: " phucduc.bui
2026-06-17 10:31 ` [PATCH 09/78] ASoC: codecs: aw88395: " phucduc.bui
2026-06-17 10:31 ` [PATCH 10/78] ASoC: codecs: aw88399: " phucduc.bui
2026-06-17 10:31 ` [PATCH 11/78] ASoC: codecs: cros_ec_codec: " phucduc.bui
2026-06-18 4:05 ` Tzung-Bi Shih
2026-06-17 10:31 ` [PATCH 12/78] ASoC: codecs: cs-amp-lib: " phucduc.bui
2026-06-17 10:31 ` [PATCH 13/78] ASoC: codecs: cs35l56: " phucduc.bui
2026-06-17 10:31 ` [PATCH 14/78] ASoC: codecs: cs42l42: " phucduc.bui
2026-06-17 10:31 ` [PATCH 15/78] ASoC: codecs: cs42l43: " phucduc.bui
2026-06-17 10:57 ` Charles Keepax
2026-06-17 13:02 ` David Laight
2026-06-17 10:31 ` [PATCH 16/78] ASoC: codecs: cs42l84: " phucduc.bui
2026-06-17 10:31 ` [PATCH 17/78] ASoC: codecs: cs43130: " phucduc.bui
2026-06-17 10:31 ` [PATCH 18/78] ASoC: codecs: cs47l15: " phucduc.bui
2026-06-17 10:31 ` [PATCH 19/78] ASoC: codecs: cs47l35: " phucduc.bui
2026-06-17 10:31 ` [PATCH 20/78] ASoC: codecs: cs47l85: " phucduc.bui
2026-06-17 10:31 ` [PATCH 21/78] ASoC: codecs: cs47l90: " phucduc.bui
2026-06-17 10:31 ` [PATCH 22/78] ASoC: codecs: cs47l92: " phucduc.bui
2026-06-17 10:31 ` [PATCH 23/78] ASoC: codecs: cs48l32: " phucduc.bui
2026-06-17 10:31 ` [PATCH 24/78] ASoC: codecs: cs2072x: " phucduc.bui
2026-06-17 10:31 ` [PATCH 25/78] ASoC: codecs: da7213: " phucduc.bui
2026-06-17 10:31 ` [PATCH 26/78] ASoC: codecs: da7219: " phucduc.bui
2026-06-17 10:31 ` [PATCH 27/78] ASoC: codecs: es8316: " phucduc.bui
2026-06-17 10:31 ` [PATCH 28/78] ASoC: codecs: es8326: " phucduc.bui
2026-06-17 10:31 ` [PATCH 29/78] ASoC: codecs: es9356: " phucduc.bui
2026-06-17 10:31 ` [PATCH 30/78] ASoC: codecs: fs210x: " phucduc.bui
2026-06-17 10:31 ` [PATCH 31/78] ASoC: codecs: hdac_hdmi: " phucduc.bui
2026-06-17 10:31 ` [PATCH 32/78] ASoC: codecs: hdmi-codec: " phucduc.bui
2026-06-17 10:31 ` [PATCH 33/78] ASoC: codecs: idt821034: " phucduc.bui
2026-06-17 10:31 ` [PATCH 34/78] ASoC: codecs: lpass-macro: " phucduc.bui
2026-06-17 10:31 ` [PATCH 35/78] ASoC: codecs: madera: " phucduc.bui
2026-06-17 10:31 ` [PATCH 36/78] ASoC: codecs: max98095: " phucduc.bui
2026-06-17 10:31 ` [PATCH 37/78] ASoC: codecs: mt6359-accdet: " phucduc.bui
2026-06-17 10:31 ` [PATCH 38/78] ASoC: codecs: pcm512x: " phucduc.bui
2026-06-17 10:31 ` [PATCH 39/78] ASoC: codecs: pcm6240: " phucduc.bui
2026-06-17 10:31 ` [PATCH 40/78] ASoC: codecs: peb2466: " phucduc.bui
2026-06-17 10:31 ` [PATCH 41/78] ASoC: codecs: rt5514-spi: " phucduc.bui
2026-06-17 10:31 ` [PATCH 42/78] ASoC: codecs: rt5645: " phucduc.bui
2026-06-17 10:32 ` [PATCH 43/78] ASoC: codecs: rt5665: " phucduc.bui
2026-06-17 10:32 ` [PATCH 44/78] ASoC: codecs: rt5668: " phucduc.bui
2026-06-17 10:32 ` [PATCH 45/78] ASoC: codecs: rt5677: " phucduc.bui
2026-06-17 10:32 ` [PATCH 46/78] ASoC: codecs: rt5682: " phucduc.bui
2026-06-17 10:32 ` [PATCH 47/78] ASoC: codecs: rt700: " phucduc.bui
2026-06-17 10:32 ` [PATCH 48/78] ASoC: codecs: rt711: " phucduc.bui
2026-06-17 10:32 ` [PATCH 49/78] ASoC: codecs: rt712: " phucduc.bui
2026-06-17 10:32 ` [PATCH 50/78] ASoC: codecs: rt721: " phucduc.bui
2026-06-17 10:32 ` [PATCH 51/78] ASoC: codecs: rt722: " phucduc.bui
2026-06-17 10:32 ` [PATCH 52/78] ASoC: codecs: sigmadsp: " phucduc.bui
2026-06-17 10:32 ` [PATCH 53/78] ASoC: codecs: sta350: " phucduc.bui
2026-06-17 10:32 ` [PATCH 54/78] ASoC: codecs: sta32x: " phucduc.bui
2026-06-17 10:32 ` [PATCH 55/78] ASoC: codecs: tas2781: " phucduc.bui
2026-06-18 4:54 ` [PATCH 56/78] ASoC: codecs: tas2783: " phucduc.bui
2026-06-18 11:08 ` [PATCH 57/78] ASoC: codecs: tas5805m: " phucduc.bui
2026-06-18 11:08 ` [PATCH 58/78] ASoC: codecs: tas675x: " phucduc.bui
2026-06-18 11:08 ` [PATCH 59/78] ASoC: codecs: tlv320dac33: Use guard() for mutex & spin locks phucduc.bui
2026-06-18 11:08 ` [PATCH 60/78] ASoC: codecs: tscs42xx: Use guard() for mutex locks phucduc.bui
2026-06-18 11:08 ` [PATCH 61/78] ASoC: codecs: tscs454: " phucduc.bui
2026-06-18 11:08 ` [PATCH 62/78] ASoC: codecs: twl6040: " phucduc.bui
2026-06-18 11:08 ` phucduc.bui [this message]
2026-06-18 11:08 ` [PATCH 64/78] ASoC: codecs: wcd934x: " phucduc.bui
2026-06-18 11:08 ` [PATCH 65/78] ASoC: codecs: wcd937x: " phucduc.bui
2026-06-18 11:08 ` [PATCH 66/78] ASoC: codecs: wcd938x: " phucduc.bui
2026-06-18 11:08 ` [PATCH 67/78] ASoC: codecs: wcd939x: " phucduc.bui
2026-06-18 11:08 ` [PATCH 68/78] ASoC: codecs: wm0010: Use guard() for mutex & spin locks phucduc.bui
2026-06-18 11:08 ` [PATCH 69/78] ASoC: codecs: wm2000: Use guard() for mutex locks phucduc.bui
2026-06-18 11:08 ` [PATCH 70/78] ASoC: codecs: wm5102: " phucduc.bui
2026-06-18 11:08 ` [PATCH 71/78] ASoC: codecs: wm8731: " phucduc.bui
2026-06-18 11:08 ` [PATCH 72/78] ASoC: codecs: wm8903: " phucduc.bui
2026-06-18 11:08 ` [PATCH 73/78] ASoC: codecs: wm8958: " phucduc.bui
2026-06-18 11:08 ` [PATCH 74/78] ASoC: codecs: wm8962: " phucduc.bui
2026-06-18 11:08 ` [PATCH 75/78] ASoC: codecs: wm8994: " phucduc.bui
2026-06-18 11:08 ` [PATCH 76/78] ASoC: codecs: wm971x: " phucduc.bui
2026-06-18 11:08 ` [PATCH 77/78] ASoC: codecs: wm_adsp: " phucduc.bui
2026-06-18 11:08 ` [PATCH 78/78] ASoC: codecs: wsa88xx: " phucduc.bui
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=20260618110827.232983-7-phucduc.bui@gmail.com \
--to=phucduc.bui@gmail.com \
--cc=angelogioacchino.delregno@collabora.com \
--cc=asahi@lists.linux.dev \
--cc=baojun.xu@ti.com \
--cc=bleung@chromium.org \
--cc=broonie@kernel.org \
--cc=chrome-platform@lists.linux.dev \
--cc=ckeepax@opensource.cirrus.com \
--cc=cychiang@chromium.org \
--cc=david.rhodes@cirrus.com \
--cc=groeck@chromium.org \
--cc=herve.codina@bootlin.com \
--cc=kevin-lu@ti.com \
--cc=lars@metafoo.de \
--cc=lgirdwood@gmail.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=linux-sound@vger.kernel.org \
--cc=matthias.bgg@gmail.com \
--cc=nick.li@foursemi.com \
--cc=nuno.sa@analog.com \
--cc=oder_chiou@realtek.com \
--cc=patches@opensource.cirrus.com \
--cc=perex@perex.cz \
--cc=povik+lin@cutebit.org \
--cc=rf@opensource.cirrus.com \
--cc=sen@ti.com \
--cc=shenghao-ding@ti.com \
--cc=srini@kernel.org \
--cc=steven.eckhoff.opensource@gmail.com \
--cc=support.opensource@diasemi.com \
--cc=tiwai@suse.com \
--cc=tzungbi@kernel.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 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.