ASoC: codecs: Use guard() for mutex & spin locks
Subsystems (19)
cover ASoC: codecs: Use guard() for mutex & spin locks
From: bui duc phuc <[email protected]>
Hi all,
This series converts mutex and spinlock handling in the ASoC codec drivers to use guard() and scoped_guard() helpers.
The changes are purely refactoring and should have no functional impact.
Compile tested only.
Best regards,
Phuc
bui duc phuc (78):
ASoC: codecs: ab8500: Use guard() for mutex locks
ASoC: codecs: ak4613: Use guard() for mutex locks
ASoC: codecs: arizona-jack: Use guard() for mutex locks
ASoC: codecs: arizona: Use guard() for mutex locks
ASoC: codecs: aw87390: Use guard() for mutex locks
ASoC: codecs: aw88081: Use guard() for mutex locks
ASoC: codecs: aw88166: Use guard() for mutex locks
ASoC: codecs: aw88261: Use guard() for mutex locks
ASoC: codecs: aw88395: Use guard() for mutex locks
ASoC: codecs: aw88399: Use guard() for mutex locks
ASoC: codecs: cros_ec_codec: Use guard() for mutex locks
ASoC: codecs: cs-amp-lib: Use guard() for mutex locks
ASoC: codecs: cs35l56: Use guard() for mutex locks
ASoC: codecs: cs42l42: Use guard() for mutex locks
ASoC: codecs: cs42l43: Use guard() for mutex locks
ASoC: codecs: cs42l84: Use guard() for mutex locks
ASoC: codecs: cs43130: Use guard() for mutex locks
ASoC: codecs: cs47l15: Use guard() for mutex locks
ASoC: codecs: cs47l35: Use guard() for mutex locks
ASoC: codecs: cs47l85: Use guard() for mutex locks
ASoC: codecs: cs47l90: Use guard() for mutex locks
ASoC: codecs: cs47l92: Use guard() for mutex locks
ASoC: codecs: cs48l32: Use guard() for mutex locks
ASoC: codecs: cs2072x: Use guard() for mutex locks
ASoC: codecs: da7213: Use guard() for mutex locks
ASoC: codecs: da7219: Use guard() for mutex locks
ASoC: codecs: es8316: Use guard() for mutex locks
ASoC: codecs: es8326: Use guard() for mutex locks
ASoC: codecs: es9356: Use guard() for mutex locks
ASoC: codecs: fs210x: Use guard() for mutex locks
ASoC: codecs: hdac_hdmi: Use guard() for mutex locks
ASoC: codecs: hdmi-codec: Use guard() for mutex locks
ASoC: codecs: idt821034: Use guard() for mutex locks
ASoC: codecs: lpass-macro: Use guard() for mutex locks
ASoC: codecs: madera: Use guard() for mutex locks
ASoC: codecs: max98095: Use guard() for mutex locks
ASoC: codecs: mt6359-accdet: Use guard() for mutex locks
ASoC: codecs: pcm512x: Use guard() for mutex locks
ASoC: codecs: pcm6240: Use guard() for mutex locks
ASoC: codecs: peb2466: Use guard() for mutex locks
ASoC: codecs: rt5514-spi: Use guard() for mutex locks
ASoC: codecs: rt5645: Use guard() for mutex locks
ASoC: codecs: rt5665: Use guard() for mutex locks
ASoC: codecs: rt5668: Use guard() for mutex locks
ASoC: codecs: rt5677: Use guard() for mutex locks
ASoC: codecs: rt5682: Use guard() for mutex locks
ASoC: codecs: rt700: Use guard() for mutex locks
ASoC: codecs: rt711: Use guard() for mutex locks
ASoC: codecs: rt712: Use guard() for mutex locks
ASoC: codecs: rt721: Use guard() for mutex locks
ASoC: codecs: rt722: Use guard() for mutex locks
ASoC: codecs: sigmadsp: Use guard() for mutex locks
ASoC: codecs: sta350: Use guard() for mutex locks
ASoC: codecs: sta32x: Use guard() for mutex locks
ASoC: codecs: tas2781: Use guard() for mutex locks
ASoC: codecs: tas2783: Use guard() for mutex locks
ASoC: codecs: tas5805m: Use guard() for mutex locks
ASoC: codecs: tas675x: Use guard() for mutex locks
ASoC: codecs: tlv320dac33: Use guard() for mutex & spin locks
ASoC: codecs: tscs42xx: Use guard() for mutex locks
ASoC: codecs: tscs454: Use guard() for mutex locks
ASoC: codecs: twl6040: Use guard() for mutex locks
ASoC: codecs: wcd-mbhc: Use guard() for mutex locks
ASoC: codecs: wcd934x: Use guard() for mutex locks
ASoC: codecs: wcd937x: Use guard() for mutex locks
ASoC: codecs: wcd938x: Use guard() for mutex locks
ASoC: codecs: wcd939x: Use guard() for mutex locks
ASoC: codecs: wm0010: Use guard() for mutex & spin locks
ASoC: codecs: wm2000: Use guard() for mutex locks
ASoC: codecs: wm5102: Use guard() for mutex locks
ASoC: codecs: wm8731: Use guard() for mutex locks
ASoC: codecs: wm8903: Use guard() for mutex locks
ASoC: codecs: wm8958: Use guard() for mutex locks
ASoC: codecs: wm8962: Use guard() for mutex locks
ASoC: codecs: wm8994: Use guard() for mutex locks
ASoC: codecs: wm971x: Use guard() for mutex locks
ASoC: codecs: wm_adsp: Use guard() for mutex locks
ASoC: codecs: wsa88xx: Use guard() for mutex locks
sound/soc/codecs/ab8500-codec.c | 11 +- sound/soc/codecs/ak4613.c | 72 ++++--- sound/soc/codecs/arizona-jack.c | 194 +++++++++---------- sound/soc/codecs/arizona.c | 25 +-- sound/soc/codecs/aw87390.c | 9 +- sound/soc/codecs/aw88081.c | 17 +- sound/soc/codecs/aw88166.c | 23 +-- sound/soc/codecs/aw88261.c | 20 +- sound/soc/codecs/aw88395/aw88395.c | 23 +-- sound/soc/codecs/aw88395/aw88395_device.c | 39 ++-- sound/soc/codecs/aw88399.c | 14 +- sound/soc/codecs/cros_ec_codec.c | 17 +- sound/soc/codecs/cs-amp-lib.c | 10 +- sound/soc/codecs/cs35l56-shared.c | 6 +- sound/soc/codecs/cs35l56.c | 56 +++--- sound/soc/codecs/cs42l42.c | 222 +++++++++++----------- sound/soc/codecs/cs42l43-jack.c | 57 +++--- sound/soc/codecs/cs42l43.c | 16 +- sound/soc/codecs/cs42l84.c | 9 +- sound/soc/codecs/cs43130.c | 96 +++++----- sound/soc/codecs/cs47l15.c | 10 +- sound/soc/codecs/cs47l35.c | 10 +- sound/soc/codecs/cs47l85.c | 10 +- sound/soc/codecs/cs47l90.c | 10 +- sound/soc/codecs/cs47l92.c | 10 +- sound/soc/codecs/cs48l32.c | 28 ++- sound/soc/codecs/cx2072x.c | 4 +- sound/soc/codecs/da7213.c | 36 ++-- sound/soc/codecs/da7219.c | 59 ++---- sound/soc/codecs/es8316.c | 30 ++- sound/soc/codecs/es8326.c | 29 ++- sound/soc/codecs/es9356.c | 29 ++- sound/soc/codecs/fs210x.c | 86 +++------ sound/soc/codecs/hdac_hdmi.c | 116 ++++++----- sound/soc/codecs/hdmi-codec.c | 16 +- sound/soc/codecs/idt821034.c | 120 +++++------- sound/soc/codecs/lpass-macro-common.c | 11 +- sound/soc/codecs/madera.c | 31 +-- sound/soc/codecs/max98095.c | 34 ++-- sound/soc/codecs/mt6359-accdet.c | 12 +- sound/soc/codecs/pcm512x.c | 17 +- sound/soc/codecs/pcm6240.c | 27 ++- sound/soc/codecs/peb2466.c | 15 +- sound/soc/codecs/rt5514-spi.c | 20 +- sound/soc/codecs/rt5645.c | 161 ++++++++-------- sound/soc/codecs/rt5665.c | 7 +- sound/soc/codecs/rt5668.c | 9 +- sound/soc/codecs/rt5677-spi.c | 35 ++-- sound/soc/codecs/rt5677.c | 77 ++++---- sound/soc/codecs/rt5682-sdw.c | 23 ++- sound/soc/codecs/rt5682.c | 4 +- sound/soc/codecs/rt5682s.c | 16 +- sound/soc/codecs/rt700-sdw.c | 13 +- sound/soc/codecs/rt711-sdca-sdw.c | 33 ++-- sound/soc/codecs/rt711-sdca.c | 7 +- sound/soc/codecs/rt711-sdw.c | 23 ++- sound/soc/codecs/rt711.c | 19 +- sound/soc/codecs/rt712-sdca-sdw.c | 34 ++-- sound/soc/codecs/rt712-sdca.c | 7 +- sound/soc/codecs/rt721-sdca-sdw.c | 33 ++-- sound/soc/codecs/rt721-sdca.c | 3 +- sound/soc/codecs/rt722-sdca-sdw.c | 33 ++-- sound/soc/codecs/rt722-sdca.c | 3 +- sound/soc/codecs/sigmadsp.c | 16 +- sound/soc/codecs/sta32x.c | 12 +- sound/soc/codecs/sta350.c | 12 +- sound/soc/codecs/tas2781-comlib-i2c.c | 4 +- sound/soc/codecs/tas2781-i2c.c | 20 +- sound/soc/codecs/tas2783-sdw.c | 89 +++++---- sound/soc/codecs/tas5805m.c | 15 +- sound/soc/codecs/tas675x.c | 6 +- sound/soc/codecs/tlv320dac33.c | 77 +++----- sound/soc/codecs/tscs42xx.c | 44 ++--- sound/soc/codecs/tscs454.c | 106 ++++------- sound/soc/codecs/twl6040.c | 4 +- sound/soc/codecs/wcd-mbhc-v2.c | 142 +++++++------- sound/soc/codecs/wcd934x.c | 46 ++--- sound/soc/codecs/wcd937x.c | 24 +-- sound/soc/codecs/wcd938x.c | 21 +- sound/soc/codecs/wcd939x.c | 19 +- sound/soc/codecs/wm0010.c | 63 +++--- sound/soc/codecs/wm2000.c | 27 +-- sound/soc/codecs/wm5102.c | 12 +- sound/soc/codecs/wm8731.c | 3 +- sound/soc/codecs/wm8903.c | 3 +- sound/soc/codecs/wm8958-dsp2.c | 9 +- sound/soc/codecs/wm8962.c | 7 +- sound/soc/codecs/wm8994.c | 51 ++--- sound/soc/codecs/wm9712.c | 4 +- sound/soc/codecs/wm9713.c | 4 +- sound/soc/codecs/wm_adsp.c | 87 +++------ sound/soc/codecs/wsa883x.c | 10 +- sound/soc/codecs/wsa884x.c | 10 +- 93 files changed, 1330 insertions(+), 1863 deletions(-)
Signature · 1 line
2.43.0
PATCH 1/78 ASoC: codecs: ab8500: Use guard() for mutex locks
From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/ab8500-codec.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-)
sound/soc/codecs/ab8500-codec.c +4 -7
@@ -989,9 +989,8 @@ static int sid_status_control_get(struct snd_kcontrol *kcontrol,struct snd_soc_component *component =snd_kcontrol_chip (kcontrol);struct ab8500_codec_drvdata *drvdata =dev_get_drvdata (component->dev); -mutex_lock (&drvdata->ctrl_lock); +guard (mutex)(&drvdata->ctrl_lock); ucontrol->value.enumerated.item[0 ] = drvdata->sid_status; -mutex_unlock (&drvdata->ctrl_lock);return 0 ; }
@@ -1014,7 +1013,7 @@ static int sid_status_control_put(struct snd_kcontrol *kcontrol,return -EIO ; } -mutex_lock (&drvdata->ctrl_lock); +guard (mutex)(&drvdata->ctrl_lock); sidconf =snd_soc_component_read (component,AB8500_SIDFIRCONF );if (((sidconf &BIT (AB8500_SIDFIRCONF_FIRSIDBUSY )) !=0 )) {
@@ -1025,7 +1024,8 @@ static int sid_status_control_put(struct snd_kcontrol *kcontrol, }else { status = -EBUSY ; } - goto out; +dev_dbg (component->dev,"%s: Exit\n" , __func__); +return status; }snd_soc_component_write (component,AB8500_SIDFIRADR ,0 );
@@ -1043,9 +1043,6 @@ static int sid_status_control_put(struct snd_kcontrol *kcontrol, drvdata->sid_status =SID_FIR_CONFIGURED ; -out: -mutex_unlock (&drvdata->ctrl_lock); -dev_dbg (component->dev,"%s: Exit\n" , __func__);return status;
Signature · 1 line
2.43.0
PATCH 2/78 ASoC: codecs: ak4613: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/ak4613.c | 72 +++++++++++++++++++-------------------- 1 file changed, 35 insertions(+), 37 deletions(-)
sound/soc/codecs/ak4613.c +35 -37
@@ -384,7 +384,7 @@ static void ak4613_dai_shutdown(struct snd_pcm_substream *substream,struct ak4613_priv *priv =snd_soc_component_get_drvdata (component);struct device *dev = component->dev; -mutex_lock (&priv->lock); +guard (mutex)(&priv->lock); priv->cnt--;if (priv->cnt <0 ) {dev_err (dev,"unexpected counter error\n" );
@@ -392,7 +392,6 @@ static void ak4613_dai_shutdown(struct snd_pcm_substream *substream, }if (!priv->cnt) priv->ctrl1 =0 ; -mutex_unlock (&priv->lock); } static void ak4613_hw_constraints(struct ak4613_priv *priv,
@@ -507,10 +506,9 @@ static int ak4613_dai_startup(struct snd_pcm_substream *substream,struct snd_soc_component *component = dai->component;struct ak4613_priv *priv =snd_soc_component_get_drvdata (component); -mutex_lock (&priv->lock); +guard (mutex)(&priv->lock);ak4613_hw_constraints (priv, substream); priv->cnt++; -mutex_unlock (&priv->lock);return 0 ; }
@@ -599,42 +597,42 @@ static int ak4613_dai_hw_params(struct snd_pcm_substream *substream,*/ ret = -EINVAL ; -mutex_lock (&priv->lock); -if (priv->cnt >1 ) { -/* -* If it was already working, use current priv->ctrl1 -*/ - ret =0 ; - }else { -/* -* It is not yet working, -*/ -unsigned int channel =params_channels (params); -u8 tdm; - -/* STEREO or TDM */ -if (channel ==2 ) - tdm =AK4613_CONFIG_MODE_STEREO ; -else - tdm =AK4613_CONFIG_GET (priv,MODE ); - -for (i =ARRAY_SIZE (ak4613_iface) -1 ; i >=0 ; i--) { -const struct ak4613_interface *iface = ak4613_iface + i; - -if ((iface->fmt == fmt) && (iface->width == width)) { -/* -* Ctrl1 -* | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | -* |TDM1|TDM0|DIF2|DIF1|DIF0|ATS1|ATS0|SMUTE| -* < tdm > < iface->dif > -*/ - priv->ctrl1 = (tdm <<6 ) | (iface->dif <<3 ); - ret =0 ; -break ; + scoped_guard(mutex, &priv->lock) { +if (priv->cnt >1 ) { +/* +* If it was already working, use current priv->ctrl1 +*/ + ret =0 ; + }else { +/* +* It is not yet working, +*/ +unsigned int channel =params_channels (params); +u8 tdm; + +/* STEREO or TDM */ +if (channel ==2 ) + tdm =AK4613_CONFIG_MODE_STEREO ; +else + tdm =AK4613_CONFIG_GET (priv,MODE ); + +for (i =ARRAY_SIZE (ak4613_iface) -1 ; i >=0 ; i--) { +const struct ak4613_interface *iface = ak4613_iface + i; + +if ((iface->fmt == fmt) && (iface->width == width)) { +/* +* Ctrl1 +* | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | +* |TDM1|TDM0|DIF2|DIF1|DIF0|ATS1|ATS0|SMUTE| +* < tdm > < iface->dif > +*/ + priv->ctrl1 = (tdm <<6 ) | (iface->dif <<3 ); + ret =0 ; +break ; + } } } } -mutex_unlock (&priv->lock);if (ret <0 ) goto hw_params_end;
Signature · 1 line
2.43.0
PATCH 3/78 ASoC: codecs: arizona-jack: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/arizona-jack.c | 194 +++++++++++++++----------------- 1 file changed, 92 insertions(+), 102 deletions(-)
sound/soc/codecs/arizona-jack.c +92 -102
@@ -528,12 +528,11 @@ static irqreturn_t arizona_hpdet_irq(int irq, void *data)int ret, reading, state, report;bool mic = false; -mutex_lock (&info->lock); +guard (mutex)(&info->lock);/* If we got a spurious IRQ for some reason then ignore it */ if (!info->hpdet_active) {dev_warn (arizona->dev,"Spurious HPDET IRQ\n" ); -mutex_unlock (&info->lock);return IRQ_NONE ; }
@@ -546,7 +545,7 @@ static irqreturn_t arizona_hpdet_irq(int irq, void *data) ret =arizona_hpdet_read (info);if (ret == -EAGAIN ) - goto out; +return IRQ_HANDLED ;else if (ret <0 ) goto done; reading = ret;
@@ -559,7 +558,7 @@ static irqreturn_t arizona_hpdet_irq(int irq, void *data) ret =arizona_hpdet_do_id (info, &reading, &mic);if (ret == -EAGAIN ) - goto out; +return IRQ_HANDLED ;else if (ret <0 ) goto done;
@@ -596,9 +595,6 @@ static irqreturn_t arizona_hpdet_irq(int irq, void *data)if (state) info->hpdet_done = true; -out: -mutex_unlock (&info->lock); -return IRQ_HANDLED ; }
@@ -707,15 +703,13 @@ static void arizona_micd_timeout_work(struct work_struct *work) struct arizona_priv, micd_timeout_work.work); -mutex_lock (&info->lock); +guard (mutex)(&info->lock);dev_dbg (info->arizona->dev,"MICD timed out, reporting HP\n" ); info->detecting = false;arizona_identify_headphone (info); - -mutex_unlock (&info->lock); }static int arizona_micd_adc_read (struct arizona_priv *info)
@@ -921,12 +915,11 @@ static void arizona_micd_detect(struct work_struct *work)cancel_delayed_work_sync (&info->micd_timeout_work); -mutex_lock (&info->lock); +guard (mutex)(&info->lock);/* If the cable was removed while measuring ignore the result */ if (!(info->jack->status &SND_JACK_MECHANICAL )) {dev_dbg (arizona->dev,"Ignoring MICDET for removed cable\n" ); -mutex_unlock (&info->lock);return ; }
@@ -936,7 +929,6 @@ static void arizona_micd_detect(struct work_struct *work)arizona_button_reading (info);pm_runtime_mark_last_busy (arizona->dev); -mutex_unlock (&info->lock); }static irqreturn_t arizona_micdet (int irq,void *data)
@@ -948,10 +940,10 @@ static irqreturn_t arizona_micdet(int irq, void *data)cancel_delayed_work_sync (&info->micd_detect_work);cancel_delayed_work_sync (&info->micd_timeout_work); -mutex_lock (&info->lock); -if (!info->detecting) - debounce =0 ; -mutex_unlock (&info->lock); + scoped_guard(mutex, &info->lock) { +if (!info->detecting) + debounce =0 ; + }if (debounce) queue_delayed_work(system_power_efficient_wq,
@@ -969,9 +961,8 @@ static void arizona_hpdet_work(struct work_struct *work) struct arizona_priv, hpdet_work.work); -mutex_lock (&info->lock); +guard (mutex)(&info->lock);arizona_start_hpdet_acc_id (info); -mutex_unlock (&info->lock); }static int arizona_hpdet_wait (struct arizona_priv *info)
@@ -1013,6 +1004,7 @@ static irqreturn_t arizona_jackdet(int irq, void *data)struct arizona *arizona = info->arizona;unsigned int val, present, mask;bool cancelled_hp, cancelled_mic; +irqreturn_t ret_irq =IRQ_HANDLED ;int ret, i; cancelled_hp =cancel_delayed_work_sync (&info->hpdet_work);
@@ -1020,110 +1012,108 @@ static irqreturn_t arizona_jackdet(int irq, void *data)pm_runtime_get_sync (arizona->dev); -mutex_lock (&info->lock); - -if (info->micd_clamp) { - mask =ARIZONA_MICD_CLAMP_STS ; - present =0 ; - }else { - mask =ARIZONA_JD1_STS ; -if (arizona->pdata.jd_invert) + scoped_guard(mutex, &info->lock) { +if (info->micd_clamp) { + mask =ARIZONA_MICD_CLAMP_STS ; present =0 ; -else - present =ARIZONA_JD1_STS ; - } + }else { + mask =ARIZONA_JD1_STS ; +if (arizona->pdata.jd_invert) + present =0 ; +else + present =ARIZONA_JD1_STS ; + } - ret =regmap_read (arizona->regmap,ARIZONA_AOD_IRQ_RAW_STATUS , &val); -if (ret) { -dev_err (arizona->dev,"Failed to read jackdet status: %d\n" , ret); -mutex_unlock (&info->lock); -pm_runtime_put_autosuspend (arizona->dev); -return IRQ_NONE ; - } + ret =regmap_read (arizona->regmap,ARIZONA_AOD_IRQ_RAW_STATUS , &val); +if (ret) { +dev_err (arizona->dev,"Failed to read jackdet status: %d\n" , ret); + ret_irq =IRQ_NONE ; +break ; + } - val &= mask; -if (val == info->last_jackdet) { -dev_dbg (arizona->dev,"Suppressing duplicate JACKDET\n" ); -if (cancelled_hp) -queue_delayed_work (system_power_efficient_wq, - &info->hpdet_work, -msecs_to_jiffies (HPDET_DEBOUNCE )); + val &= mask; +if (val == info->last_jackdet) { +dev_dbg (arizona->dev,"Suppressing duplicate JACKDET\n" ); +if (cancelled_hp) +queue_delayed_work (system_power_efficient_wq, + &info->hpdet_work, +msecs_to_jiffies (HPDET_DEBOUNCE )); -if (cancelled_mic) { -int micd_timeout = arizona->pdata.micd_timeout; +if (cancelled_mic) { +int micd_timeout = arizona->pdata.micd_timeout; -queue_delayed_work (system_power_efficient_wq, - &info->micd_timeout_work, -msecs_to_jiffies (micd_timeout)); +queue_delayed_work (system_power_efficient_wq, + &info->micd_timeout_work, +msecs_to_jiffies (micd_timeout)); + } + + goto out; } + info->last_jackdet = val; - goto out; - } - info->last_jackdet = val; +if (info->last_jackdet == present) { +dev_dbg (arizona->dev,"Detected jack\n" ); +snd_soc_jack_report (info->jack,SND_JACK_MECHANICAL ,SND_JACK_MECHANICAL ); -if (info->last_jackdet == present) { -dev_dbg (arizona->dev,"Detected jack\n" ); -snd_soc_jack_report (info->jack,SND_JACK_MECHANICAL ,SND_JACK_MECHANICAL ); + info->detecting = true; + info->mic = false; + info->jack_flips =0 ; - info->detecting = true; - info->mic = false; - info->jack_flips =0 ; +if (!arizona->pdata.hpdet_acc_id) { +arizona_start_mic (info); + }else { +queue_delayed_work (system_power_efficient_wq, + &info->hpdet_work, +msecs_to_jiffies (HPDET_DEBOUNCE )); + } -if (!arizona->pdata.hpdet_acc_id) { -arizona_start_mic (info); +if (info->micd_clamp || !arizona->pdata.jd_invert) +regmap_update_bits (arizona->regmap, +ARIZONA_JACK_DETECT_DEBOUNCE , +ARIZONA_MICD_CLAMP_DB | +ARIZONA_JD1_DB ,0 ); }else { -queue_delayed_work (system_power_efficient_wq, - &info->hpdet_work, -msecs_to_jiffies (HPDET_DEBOUNCE )); - } +dev_dbg (arizona->dev,"Detected jack removal\n" ); -if (info->micd_clamp || !arizona->pdata.jd_invert) -regmap_update_bits (arizona->regmap, -ARIZONA_JACK_DETECT_DEBOUNCE , -ARIZONA_MICD_CLAMP_DB | -ARIZONA_JD1_DB ,0 ); - }else { -dev_dbg (arizona->dev,"Detected jack removal\n" ); +arizona_stop_mic (info); -arizona_stop_mic (info); + info->num_hpdet_res =0 ; +for (i =0 ; i <ARRAY_SIZE (info->hpdet_res); i++) + info->hpdet_res[i] =0 ; + info->mic = false; + info->hpdet_done = false; + info->hpdet_retried = false; - info->num_hpdet_res =0 ; -for (i =0 ; i <ARRAY_SIZE (info->hpdet_res); i++) - info->hpdet_res[i] =0 ; - info->mic = false; - info->hpdet_done = false; - info->hpdet_retried = false; - -snd_soc_jack_report (info->jack,0 ,ARIZONA_JACK_MASK | info->micd_button_mask); +snd_soc_jack_report (info->jack,0 , +ARIZONA_JACK_MASK | info->micd_button_mask); -/* -* If the jack was removed during a headphone detection we -* need to wait for the headphone detection to finish, as -* it can not be aborted. We don't want to be able to start -* a new headphone detection from a fresh insert until this -* one is finished. -*/ -arizona_hpdet_wait (info); +/* +* If the jack was removed during a headphone detection we +* need to wait for the headphone detection to finish, as +* it can not be aborted. We don't want to be able to start +* a new headphone detection from a fresh insert until this +* one is finished. +*/ +arizona_hpdet_wait (info); -regmap_update_bits (arizona->regmap, -ARIZONA_JACK_DETECT_DEBOUNCE , -ARIZONA_MICD_CLAMP_DB |ARIZONA_JD1_DB , -ARIZONA_MICD_CLAMP_DB |ARIZONA_JD1_DB ); - } +regmap_update_bits (arizona->regmap, +ARIZONA_JACK_DETECT_DEBOUNCE , +ARIZONA_MICD_CLAMP_DB |ARIZONA_JD1_DB , +ARIZONA_MICD_CLAMP_DB |ARIZONA_JD1_DB ); + } out: -/* Clear trig_sts to make sure DCVDD is not forced up */ -regmap_write (arizona->regmap,ARIZONA_AOD_WKUP_AND_TRIG , -ARIZONA_MICD_CLAMP_FALL_TRIG_STS | -ARIZONA_MICD_CLAMP_RISE_TRIG_STS | -ARIZONA_JD1_FALL_TRIG_STS | -ARIZONA_JD1_RISE_TRIG_STS ); - -mutex_unlock (&info->lock); +/* Clear trig_sts to make sure DCVDD is not forced up */ +regmap_write (arizona->regmap,ARIZONA_AOD_WKUP_AND_TRIG , +ARIZONA_MICD_CLAMP_FALL_TRIG_STS | +ARIZONA_MICD_CLAMP_RISE_TRIG_STS | +ARIZONA_JD1_FALL_TRIG_STS | +ARIZONA_JD1_RISE_TRIG_STS ); + }pm_runtime_put_autosuspend (arizona->dev); -return IRQ_HANDLED ; +return ret_irq; }/* Map a level onto a slot in the register bank */
Signature · 1 line
2.43.0
PATCH 4/78 ASoC: codecs: arizona: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/arizona.c | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-)
sound/soc/codecs/arizona.c +10 -15
@@ -1158,17 +1158,16 @@ int arizona_dvfs_up(struct snd_soc_component *component, unsigned int flags)struct arizona_priv *priv =snd_soc_component_get_drvdata (component);int ret =0 ; -mutex_lock (&priv->dvfs_lock); +guard (mutex)(&priv->dvfs_lock);if (!priv->dvfs_cached && !priv->dvfs_reqs) { ret =arizona_dvfs_enable (component);if (ret) - goto err; +return ret; } priv->dvfs_reqs |= flags; -err: -mutex_unlock (&priv->dvfs_lock); +return ret; }EXPORT_SYMBOL_GPL (arizona_dvfs_up);
@@ -1179,7 +1178,7 @@ int arizona_dvfs_down(struct snd_soc_component *component, unsigned int flags)unsigned int old_reqs;int ret =0 ; -mutex_lock (&priv->dvfs_lock); +guard (mutex)(&priv->dvfs_lock); old_reqs = priv->dvfs_reqs; priv->dvfs_reqs &= ~flags;
@@ -1187,7 +1186,6 @@ int arizona_dvfs_down(struct snd_soc_component *component, unsigned int flags)if (!priv->dvfs_cached && old_reqs && !priv->dvfs_reqs) ret =arizona_dvfs_disable (component); -mutex_unlock (&priv->dvfs_lock);return ret; }EXPORT_SYMBOL_GPL (arizona_dvfs_down);
@@ -1199,7 +1197,7 @@ int arizona_dvfs_sysclk_ev(struct snd_soc_dapm_widget *w,struct arizona_priv *priv =snd_soc_component_get_drvdata (component);int ret =0 ; -mutex_lock (&priv->dvfs_lock); +guard (mutex)(&priv->dvfs_lock);switch (event) {case SND_SOC_DAPM_POST_PMU :
@@ -1222,7 +1220,6 @@ int arizona_dvfs_sysclk_ev(struct snd_soc_dapm_widget *w,break ; } -mutex_unlock (&priv->dvfs_lock);return ret; }EXPORT_SYMBOL_GPL (arizona_dvfs_sysclk_ev);
@@ -1657,13 +1654,11 @@ static void arizona_wm5102_set_dac_comp(struct snd_soc_component *component, { 0x80, 0x0 }, }; -mutex_lock (&arizona->dac_comp_lock); - - dac_comp[1 ].def = arizona->dac_comp_coeff; -if (rate >=176400 ) - dac_comp[2 ].def = arizona->dac_comp_enabled; - -mutex_unlock (&arizona->dac_comp_lock); + scoped_guard(mutex, &arizona->dac_comp_lock) { + dac_comp[1 ].def = arizona->dac_comp_coeff; +if (rate >=176400 ) + dac_comp[2 ].def = arizona->dac_comp_enabled; + } regmap_multi_reg_write(arizona->regmap, dac_comp,
Signature · 1 line
2.43.0
PATCH 5/78 ASoC: codecs: aw87390: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/aw87390.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-)
sound/soc/codecs/aw87390.c +2 -7
@@ -225,11 +225,10 @@ static int aw87390_profile_set(struct snd_kcontrol *kcontrol,struct aw87390 *aw87390 =snd_soc_component_get_drvdata (codec);int ret; -mutex_lock (&aw87390->lock); +guard (mutex)(&aw87390->lock); ret =aw87390_dev_set_profile_index (aw87390->aw_pa, ucontrol->value.integer.value[0 ]);if (ret) {dev_dbg (codec->dev,"profile index does not change\n" ); -mutex_unlock (&aw87390->lock);return 0 ; }
@@ -238,8 +237,6 @@ static int aw87390_profile_set(struct snd_kcontrol *kcontrol,aw87390_power_on (aw87390->aw_pa); } -mutex_unlock (&aw87390->lock); -return 1 ; }
@@ -280,14 +277,12 @@ static int aw87390_request_firmware_file(struct aw87390 *aw87390)return ret; } -mutex_lock (&aw87390->lock); +guard (mutex)(&aw87390->lock); ret =aw88395_dev_cfg_load (aw87390->aw_pa, aw87390->aw_cfg);if (ret)dev_err (aw87390->aw_pa->dev,"aw_dev acf parse failed\n" ); -mutex_unlock (&aw87390->lock); -return ret; }
Signature · 1 line
2.43.0
Re: [PATCH 05/78] ASoC: codecs: aw87390: Use guard() for mutex locks
unsubscribe linux-kernel
unsubscribe linux-sound
unsubscribe linux-arm-kernel
Clint
-------- Original Message --------
On Wednesday, 06/17/26 at 20:34 [email protected] wrote:
From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/aw87390.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-)
sound/soc/codecs/aw87390.c +2 -7
@@ -225,11 +225,10 @@ static int aw87390_profile_set(struct snd_kcontrol *kcontrol,struct aw87390 *aw87390 =snd_soc_component_get_drvdata (codec);int ret; -mutex_lock (&aw87390->lock); +guard (mutex)(&aw87390->lock); ret =aw87390_dev_set_profile_index (aw87390->aw_pa, ucontrol->value.integer.value[0 ]);if (ret) {dev_dbg (codec->dev,"profile index does not change\n" ); -mutex_unlock (&aw87390->lock);return 0 ; }
@@ -238,8 +237,6 @@ static int aw87390_profile_set(struct snd_kcontrol *kcontrol,aw87390_power_on (aw87390->aw_pa); } -mutex_unlock (&aw87390->lock); -return 1 ; }
@@ -280,14 +277,12 @@ static int aw87390_request_firmware_file(struct aw87390 *aw87390)return ret; } -mutex_lock (&aw87390->lock); +guard (mutex)(&aw87390->lock); ret =aw88395_dev_cfg_load (aw87390->aw_pa, aw87390->aw_cfg);if (ret)dev_err (aw87390->aw_pa->dev,"aw_dev acf parse failed\n" ); -mutex_unlock (&aw87390->lock); -return ret; }
--
2.43.0
PATCH 6/78 ASoC: codecs: aw88081: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/aw88081.c | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-)
sound/soc/codecs/aw88081.c +5 -12
@@ -763,9 +763,8 @@ static void aw88081_startup_work(struct work_struct *work)struct aw88081 *aw88081 = container_of(work, struct aw88081, start_work.work); -mutex_lock (&aw88081->lock); +guard (mutex)(&aw88081->lock);aw88081_start_pa (aw88081); -mutex_unlock (&aw88081->lock); }static void aw88081_start (struct aw88081 *aw88081,bool sync_start)
@@ -942,11 +941,10 @@ static int aw88081_profile_set(struct snd_kcontrol *kcontrol,int ret;/* pa stop or stopping just set profile */ -mutex_lock (&aw88081->lock); +guard (mutex)(&aw88081->lock); ret =aw88081_dev_set_profile_index (aw88081->aw_pa, ucontrol->value.integer.value[0 ]);if (ret) {dev_dbg (codec->dev,"profile index does not change" ); -mutex_unlock (&aw88081->lock);return 0 ; }
@@ -955,8 +953,6 @@ static int aw88081_profile_set(struct snd_kcontrol *kcontrol,aw88081_start (aw88081,AW88081_SYNC_START ); } -mutex_unlock (&aw88081->lock); -return 1 ; }
@@ -1165,11 +1161,9 @@ static int aw88081_request_firmware_file(struct aw88081 *aw88081)if (ret)return ret; -mutex_lock (&aw88081->lock); - ret =aw88081_dev_init (aw88081, aw88081->aw_cfg); -mutex_unlock (&aw88081->lock); +guard (mutex)(&aw88081->lock); -return ret; +return aw88081_dev_init (aw88081, aw88081->aw_cfg); } static int aw88081_playback_event(struct snd_soc_dapm_widget *w,
@@ -1178,7 +1172,7 @@ static int aw88081_playback_event(struct snd_soc_dapm_widget *w,struct snd_soc_component *component =snd_soc_dapm_to_component (w->dapm);struct aw88081 *aw88081 =snd_soc_component_get_drvdata (component); -mutex_lock (&aw88081->lock); +guard (mutex)(&aw88081->lock);switch (event) {case SND_SOC_DAPM_PRE_PMU :aw88081_start (aw88081,AW88081_ASYNC_START );
@@ -1189,7 +1183,6 @@ static int aw88081_playback_event(struct snd_soc_dapm_widget *w,default :break ; } -mutex_unlock (&aw88081->lock);return 0 ; }
Signature · 1 line
2.43.0
PATCH 7/78 ASoC: codecs: aw88166: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/aw88166.c | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-)
sound/soc/codecs/aw88166.c +9 -14
@@ -1173,9 +1173,8 @@ static void aw88166_startup_work(struct work_struct *work)struct aw88166 *aw88166 = container_of(work, struct aw88166, start_work.work); -mutex_lock (&aw88166->lock); +guard (mutex)(&aw88166->lock);aw88166_start_pa (aw88166); -mutex_unlock (&aw88166->lock); }static void aw88166_start (struct aw88166 *aw88166,bool sync_start)
@@ -1413,11 +1412,10 @@ static int aw88166_profile_set(struct snd_kcontrol *kcontrol,struct aw88166 *aw88166 =snd_soc_component_get_drvdata (codec);int ret; -mutex_lock (&aw88166->lock); +guard (mutex)(&aw88166->lock); ret =aw88166_dev_set_profile_index (aw88166->aw_pa, ucontrol->value.integer.value[0 ]);if (ret) {dev_dbg (codec->dev,"profile index does not change" ); -mutex_unlock (&aw88166->lock);return 0 ; }
@@ -1426,8 +1424,6 @@ static int aw88166_profile_set(struct snd_kcontrol *kcontrol,aw88166_start (aw88166,AW88166_SYNC_START ); } -mutex_unlock (&aw88166->lock); -return 1 ; }
@@ -1607,12 +1603,12 @@ static int aw88166_request_firmware_file(struct aw88166 *aw88166)return ret; } -mutex_lock (&aw88166->lock); -/* aw device init */ - ret =aw88166_dev_init (aw88166, aw88166->aw_cfg); -if (ret) -dev_err (aw88166->aw_pa->dev,"dev init failed\n" ); -mutex_unlock (&aw88166->lock); + scoped_guard(mutex, &aw88166->lock) { +/* aw device init */ + ret =aw88166_dev_init (aw88166, aw88166->aw_cfg); +if (ret) +dev_err (aw88166->aw_pa->dev,"dev init failed\n" ); + }return ret; }
@@ -1639,7 +1635,7 @@ static int aw88166_playback_event(struct snd_soc_dapm_widget *w,struct snd_soc_component *component =snd_soc_dapm_to_component (w->dapm);struct aw88166 *aw88166 =snd_soc_component_get_drvdata (component); -mutex_lock (&aw88166->lock); +guard (mutex)(&aw88166->lock);switch (event) {case SND_SOC_DAPM_PRE_PMU :aw88166_start (aw88166,AW88166_ASYNC_START );
@@ -1650,7 +1646,6 @@ static int aw88166_playback_event(struct snd_soc_dapm_widget *w,default :break ; } -mutex_unlock (&aw88166->lock);return 0 ; }
Signature · 1 line
2.43.0
PATCH 8/78 ASoC: codecs: aw88261: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/aw88261.c | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-)
sound/soc/codecs/aw88261.c +8 -12
@@ -960,11 +960,10 @@ static int aw88261_profile_set(struct snd_kcontrol *kcontrol,int ret;/* pa stop or stopping just set profile */ -mutex_lock (&aw88261->lock); +guard (mutex)(&aw88261->lock); ret =aw88261_dev_set_profile_index (aw88261->aw_pa, ucontrol->value.integer.value[0 ]);if (ret) {dev_dbg (codec->dev,"profile index does not change" ); -mutex_unlock (&aw88261->lock);return 0 ; }
@@ -973,8 +972,6 @@ static int aw88261_profile_set(struct snd_kcontrol *kcontrol,aw88261_start (aw88261); } -mutex_unlock (&aw88261->lock); -return 1 ; }
@@ -1038,7 +1035,7 @@ static int aw88261_playback_event(struct snd_soc_dapm_widget *w,struct snd_soc_component *component =snd_soc_dapm_to_component (w->dapm);struct aw88261 *aw88261 =snd_soc_component_get_drvdata (component); -mutex_lock (&aw88261->lock); +guard (mutex)(&aw88261->lock);switch (event) {case SND_SOC_DAPM_PRE_PMU :aw88261_start (aw88261);
@@ -1049,7 +1046,6 @@ static int aw88261_playback_event(struct snd_soc_dapm_widget *w,default :break ; } -mutex_unlock (&aw88261->lock);return 0 ; }
@@ -1188,12 +1184,12 @@ static int aw88261_request_firmware_file(struct aw88261 *aw88261)return ret; } -mutex_lock (&aw88261->lock); -/* aw device init */ - ret =aw88261_dev_init (aw88261, aw88261->aw_cfg); -if (ret) -dev_err (aw88261->aw_pa->dev,"dev init failed" ); -mutex_unlock (&aw88261->lock); + scoped_guard(mutex, &aw88261->lock) { +/* aw device init */ + ret =aw88261_dev_init (aw88261, aw88261->aw_cfg); +if (ret) +dev_err (aw88261->aw_pa->dev,"dev init failed" ); + }return ret; }
Signature · 1 line
2.43.0
PATCH 9/78 ASoC: codecs: aw88395: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/aw88395/aw88395.c | 23 ++++++------- sound/soc/codecs/aw88395/aw88395_device.c | 39 ++++++++--------------- 2 files changed, 22 insertions(+), 40 deletions(-)
sound/soc/codecs/aw88395/aw88395.c +9 -14
@@ -51,9 +51,8 @@ static void aw88395_startup_work(struct work_struct *work)struct aw88395 *aw88395 = container_of(work, struct aw88395, start_work.work); -mutex_lock (&aw88395->lock); +guard (mutex)(&aw88395->lock);aw88395_start_pa (aw88395); -mutex_unlock (&aw88395->lock); }static void aw88395_start (struct aw88395 *aw88395,bool sync_start)
@@ -224,11 +223,10 @@ static int aw88395_profile_set(struct snd_kcontrol *kcontrol,int ret;/* pa stop or stopping just set profile */ -mutex_lock (&aw88395->lock); +guard (mutex)(&aw88395->lock); ret =aw88395_dev_set_profile_index (aw88395->aw_pa, ucontrol->value.integer.value[0 ]);if (ret <0 ) {dev_dbg (codec->dev,"profile index does not change" ); -mutex_unlock (&aw88395->lock);return 0 ; }
@@ -237,8 +235,6 @@ static int aw88395_profile_set(struct snd_kcontrol *kcontrol,aw88395_start (aw88395,AW88395_SYNC_START ); } -mutex_unlock (&aw88395->lock); -return 1 ; }
@@ -366,7 +362,7 @@ static int aw88395_playback_event(struct snd_soc_dapm_widget *w,struct snd_soc_component *component =snd_soc_dapm_to_component (w->dapm);struct aw88395 *aw88395 =snd_soc_component_get_drvdata (component); -mutex_lock (&aw88395->lock); +guard (mutex)(&aw88395->lock);switch (event) {case SND_SOC_DAPM_PRE_PMU :aw88395_start (aw88395,AW88395_ASYNC_START );
@@ -377,7 +373,6 @@ static int aw88395_playback_event(struct snd_soc_dapm_widget *w,default :break ; } -mutex_unlock (&aw88395->lock);return 0 ; }
@@ -495,12 +490,12 @@ static int aw88395_request_firmware_file(struct aw88395 *aw88395)dev_dbg (aw88395->aw_pa->dev,"%s : bin load success\n" , __func__); -mutex_lock (&aw88395->lock); -/* aw device init */ - ret =aw88395_dev_init (aw88395->aw_pa, aw88395->aw_cfg); -if (ret <0 ) -dev_err (aw88395->aw_pa->dev,"dev init failed" ); -mutex_unlock (&aw88395->lock); + scoped_guard(mutex, &aw88395->lock) { +/* aw device init */ + ret =aw88395_dev_init (aw88395->aw_pa, aw88395->aw_cfg); +if (ret <0 ) +dev_err (aw88395->aw_pa->dev,"dev init failed" ); + }return ret; }
sound/soc/codecs/aw88395/aw88395_device.c +13 -26
@@ -70,7 +70,7 @@ int aw_dev_dsp_write(struct aw_device *aw_dev,u32 reg_value;int ret; -mutex_lock (&aw_dev->dsp_lock); +guard (mutex)(&aw_dev->dsp_lock);switch (data_type) {case AW_DSP_16_DATA : ret =aw_dev_dsp_write_16bit (aw_dev, dsp_addr, dsp_data);
@@ -93,7 +93,6 @@ int aw_dev_dsp_write(struct aw_device *aw_dev,/* clear dsp chip select state*/ if (regmap_read (aw_dev->regmap,AW88395_ID_REG , ®_value))dev_err (aw_dev->dev,"%s fail to clear chip state. Err=%d\n" , __func__, ret); -mutex_unlock (&aw_dev->dsp_lock);return ret; }
@@ -156,7 +155,7 @@ int aw_dev_dsp_read(struct aw_device *aw_dev,u32 reg_value;int ret; -mutex_lock (&aw_dev->dsp_lock); +guard (mutex)(&aw_dev->dsp_lock);switch (data_type) {case AW_DSP_16_DATA : ret =aw_dev_dsp_read_16bit (aw_dev, dsp_addr, dsp_data);
@@ -179,7 +178,6 @@ int aw_dev_dsp_read(struct aw_device *aw_dev,/* clear dsp chip select state*/ if (regmap_read (aw_dev->regmap,AW88395_ID_REG , ®_value))dev_err (aw_dev->dev,"%s fail to clear chip state. Err=%d\n" , __func__, ret); -mutex_unlock (&aw_dev->dsp_lock);return ret; }
@@ -1110,42 +1108,36 @@ static int aw_dev_dsp_update_container(struct aw_device *aw_dev,#ifdef AW88395_DSP_I2C_WRITES u32 tmp_len; -mutex_lock (&aw_dev->dsp_lock); +guard (mutex)(&aw_dev->dsp_lock); ret =regmap_write (aw_dev->regmap,AW88395_DSPMADD_REG , base);if (ret) - goto error_operation; +return ret;for (i =0 ; i < len; i +=AW88395_MAX_RAM_WRITE_BYTE_SIZE ) { tmp_len =min (len - i,AW88395_MAX_RAM_WRITE_BYTE_SIZE ); ret =regmap_raw_write (aw_dev->regmap,AW88395_DSPMDAT_REG , &data[i], tmp_len);if (ret) - goto error_operation; +return ret; } -mutex_unlock (&aw_dev->dsp_lock);#else __be16 reg_val; -mutex_lock (&aw_dev->dsp_lock); +guard (mutex)(&aw_dev->dsp_lock);/* i2c write */ ret =regmap_write (aw_dev->regmap,AW88395_DSPMADD_REG , base);if (ret) - goto error_operation; +return ret;for (i =0 ; i < len; i +=2 ) { reg_val =cpu_to_be16p ((u16 *)(data + i)); ret =regmap_write (aw_dev->regmap,AW88395_DSPMDAT_REG , (u16 )reg_val);if (ret) - goto error_operation; +return ret; } -mutex_unlock (&aw_dev->dsp_lock);#endif return 0 ; - -error_operation: -mutex_unlock (&aw_dev->dsp_lock); -return ret; } static int aw_dev_dsp_update_fw(struct aw_device *aw_dev,
@@ -1231,14 +1223,14 @@ static int aw_dev_check_sram(struct aw_device *aw_dev) {unsigned int reg_val; -mutex_lock (&aw_dev->dsp_lock); +guard (mutex)(&aw_dev->dsp_lock);/* check the odd bits of reg 0x40 */ regmap_write (aw_dev->regmap,AW88395_DSPMADD_REG ,AW88395_DSP_ODD_NUM_BIT_TEST );regmap_read (aw_dev->regmap,AW88395_DSPMADD_REG , ®_val);if (reg_val !=AW88395_DSP_ODD_NUM_BIT_TEST ) {dev_err (aw_dev->dev,"check reg 0x40 odd bit failed, read[0x%x] != write[0x%x]" , reg_val,AW88395_DSP_ODD_NUM_BIT_TEST ); - goto error; +return -EPERM ; }/* check the even bits of reg 0x40 */
@@ -1247,7 +1239,7 @@ static int aw_dev_check_sram(struct aw_device *aw_dev)if (reg_val !=AW88395_DSP_EVEN_NUM_BIT_TEST ) {dev_err (aw_dev->dev,"check reg 0x40 even bit failed, read[0x%x] != write[0x%x]" , reg_val,AW88395_DSP_EVEN_NUM_BIT_TEST ); - goto error; +return -EPERM ; }/* check dsp_fw_base_addr */
@@ -1256,7 +1248,7 @@ static int aw_dev_check_sram(struct aw_device *aw_dev)if (reg_val !=AW88395_DSP_EVEN_NUM_BIT_TEST ) {dev_err (aw_dev->dev,"check dsp fw addr failed, read[0x%x] != write[0x%x]" , reg_val,AW88395_DSP_EVEN_NUM_BIT_TEST ); - goto error; +return -EPERM ; }/* check dsp_cfg_base_addr */
@@ -1265,15 +1257,10 @@ static int aw_dev_check_sram(struct aw_device *aw_dev)if (reg_val !=AW88395_DSP_ODD_NUM_BIT_TEST ) {dev_err (aw_dev->dev,"check dsp cfg failed, read[0x%x] != write[0x%x]" , reg_val,AW88395_DSP_ODD_NUM_BIT_TEST ); - goto error; +return -EPERM ; } -mutex_unlock (&aw_dev->dsp_lock);return 0 ; - -error: -mutex_unlock (&aw_dev->dsp_lock); -return -EPERM ; }int aw88395_dev_fw_update (struct aw_device *aw_dev,bool up_dsp_fw_en,bool force_up_en)
Signature · 1 line
2.43.0
PATCH 10/78 ASoC: codecs: aw88399: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/aw88399.c | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-)
sound/soc/codecs/aw88399.c +4 -10
@@ -1140,9 +1140,8 @@ static void aw88399_startup_work(struct work_struct *work)struct aw88399 *aw88399 = container_of(work, struct aw88399, start_work.work); -mutex_lock (&aw88399->lock); +guard (mutex)(&aw88399->lock);aw88399_start_pa (aw88399); -mutex_unlock (&aw88399->lock); }static void aw88399_start (struct aw88399 *aw88399,bool sync_start)
@@ -1702,11 +1701,10 @@ static int aw88399_profile_set(struct snd_kcontrol *kcontrol,struct aw88399 *aw88399 =snd_soc_component_get_drvdata (codec);int ret; -mutex_lock (&aw88399->lock); +guard (mutex)(&aw88399->lock); ret =aw88399_dev_set_profile_index (aw88399->aw_pa, ucontrol->value.integer.value[0 ]);if (ret) {dev_dbg (codec->dev,"profile index does not change" ); -mutex_unlock (&aw88399->lock);return 0 ; }
@@ -1715,8 +1713,6 @@ static int aw88399_profile_set(struct snd_kcontrol *kcontrol,aw88399_start (aw88399,AW88399_SYNC_START ); } -mutex_unlock (&aw88399->lock); -return 1 ; }
@@ -1939,12 +1935,11 @@ static int aw88399_request_firmware_file(struct aw88399 *aw88399)return ret; } -mutex_lock (&aw88399->lock); +guard (mutex)(&aw88399->lock);/* aw device init */ ret =aw88399_dev_init (aw88399, aw88399->aw_cfg);if (ret)dev_err (aw88399->aw_pa->dev,"dev init failed" ); -mutex_unlock (&aw88399->lock);return ret; }
@@ -1975,7 +1970,7 @@ static int aw88399_playback_event(struct snd_soc_dapm_widget *w,struct snd_soc_component *component =snd_soc_dapm_to_component (w->dapm);struct aw88399 *aw88399 =snd_soc_component_get_drvdata (component); -mutex_lock (&aw88399->lock); +guard (mutex)(&aw88399->lock);switch (event) {case SND_SOC_DAPM_PRE_PMU :aw88399_start (aw88399,AW88399_ASYNC_START );
@@ -1986,7 +1981,6 @@ static int aw88399_playback_event(struct snd_soc_dapm_widget *w,default :break ; } -mutex_unlock (&aw88399->lock);return 0 ; }
Signature · 1 line
2.43.0
PATCH 11/78 ASoC: codecs: cros_ec_codec: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/cros_ec_codec.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-)
sound/soc/codecs/cros_ec_codec.c +7 -10
@@ -608,10 +608,10 @@ static void wov_copy_work(struct work_struct *w) container_of(w, struct cros_ec_codec_priv, wov_copy_work.work);int ret; -mutex_lock (&priv->wov_dma_lock); +guard (mutex)(&priv->wov_dma_lock);if (!priv->wov_substream) {dev_warn (priv->dev,"no pcm substream\n" ); - goto leave; +return ; }if (ec_codec_capable (priv,EC_CODEC_CAP_WOV_AUDIO_SHM ))
@@ -624,8 +624,6 @@ static void wov_copy_work(struct work_struct *w) msecs_to_jiffies(10)); else if (ret) dev_err(priv->dev, "failed to read audio data\n"); -leave: -mutex_unlock (&priv->wov_dma_lock); } static int wov_enable_get(struct snd_kcontrol *kcontrol,
@@ -895,12 +893,11 @@ static int wov_pcm_hw_params(struct snd_soc_component *component,struct cros_ec_codec_priv *priv =snd_soc_component_get_drvdata (component); -mutex_lock (&priv->wov_dma_lock); +guard (mutex)(&priv->wov_dma_lock); priv->wov_substream = substream; priv->wov_rp = priv->wov_wp =0 ; priv->wov_dma_offset =0 ; priv->wov_burst_read = true; -mutex_unlock (&priv->wov_dma_lock);return 0 ; }
@@ -911,10 +908,10 @@ static int wov_pcm_hw_free(struct snd_soc_component *component,struct cros_ec_codec_priv *priv =snd_soc_component_get_drvdata (component); -mutex_lock (&priv->wov_dma_lock); -wov_queue_dequeue (priv,wov_queue_size (priv)); - priv->wov_substream =NULL ; -mutex_unlock (&priv->wov_dma_lock); + scoped_guard(mutex, &priv->wov_dma_lock) { +wov_queue_dequeue (priv,wov_queue_size (priv)); + priv->wov_substream =NULL ; + }cancel_delayed_work_sync (&priv->wov_copy_work);
Signature · 1 line
2.43.0
Re: [PATCH 11/78] ASoC: codecs: cros_ec_codec: Use guard() for mutex locks
Quoted 6 lines · On Wed, Jun 17, 2026 at 05:31:28PM +0700, [email protected] wrote:
From: bui duc phuc <[email protected]>
Clean up the code using
guard()for mutex locks.
Merely code refactoring, and no behavior change.Signed-off-by bui duc phuc <[email protected]>
Re: [PATCH 11/78] ASoC: codecs: cros_ec_codec: Use guard() for mutex locks
Hi Tzung-Bi,
Quoted 1 line
Reviewed-by Tzung-Bi Shih <[email protected]>
Thanks for reviewing the patch.
Best regards,
Phuc
PATCH 12/78 ASoC: codecs: cs-amp-lib: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/cs-amp-lib.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-)
sound/soc/codecs/cs-amp-lib.c +6 -4
@@ -83,10 +83,12 @@ static int cs_amp_write_cal_coeff(struct cs_dsp *dsp,KUNIT_STATIC_STUB_REDIRECT (cs_amp_write_cal_coeff, dsp, controls, ctl_name, val);if (IS_REACHABLE (CONFIG_FW_CS_DSP )) { -mutex_lock (&dsp->pwr_lock); - cs_ctl =cs_dsp_get_ctl (dsp, ctl_name, controls->mem_region, controls->alg_id); - ret =cs_dsp_coeff_write_ctrl (cs_ctl,0 , &beval,sizeof (beval)); -mutex_unlock (&dsp->pwr_lock); + scoped_guard(mutex, &dsp->pwr_lock) { + cs_ctl =cs_dsp_get_ctl (dsp, ctl_name, + controls->mem_region, + controls->alg_id); + ret =cs_dsp_coeff_write_ctrl (cs_ctl,0 , &beval,sizeof (beval)); + }if (ret <0 ) {dev_err (dsp->dev,"Failed to write to '%s': %d\n" , ctl_name, ret);
Signature · 1 line
2.43.0
PATCH 13/78 ASoC: codecs: cs35l56: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/cs35l56-shared.c | 6 ++-- sound/soc/codecs/cs35l56.c | 56 +++++++++++++++---------------- 2 files changed, 29 insertions(+), 33 deletions(-)
sound/soc/codecs/cs35l56-shared.c +2 -4
@@ -645,12 +645,12 @@ irqreturn_t cs35l56_irq(int irq, void *data)if (!cs35l56_base->init_done)return IRQ_NONE ; -mutex_lock (&cs35l56_base->irq_lock); +guard (mutex)(&cs35l56_base->irq_lock); rv =pm_runtime_resume_and_get (cs35l56_base->dev);if (rv <0 ) {dev_err (cs35l56_base->dev,"irq: failed to get pm_runtime: %d\n" , rv); - goto err_unlock; +return ret; }regmap_read (cs35l56_base->regmap,CS35L56_IRQ1_STATUS , &val);
@@ -692,8 +692,6 @@ irqreturn_t cs35l56_irq(int irq, void *data) err:pm_runtime_put (cs35l56_base->dev); -err_unlock: -mutex_unlock (&cs35l56_base->irq_lock);return ret; }
sound/soc/codecs/cs35l56.c +27 -29
69 lines not on this page · raw message
Signature · 1 line
2.43.0
PATCH 14/78 ASoC: codecs: cs42l42: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/cs42l42.c | 222 ++++++++++++++++++------------------- 1 file changed, 111 insertions(+), 111 deletions(-)
sound/soc/codecs/cs42l42.c +111 -111
@@ -565,7 +565,7 @@ static int cs42l42_set_jack(struct snd_soc_component *component, struct snd_soc_struct cs42l42_private *cs42l42 =snd_soc_component_get_drvdata (component);/* Prevent race with interrupt handler */ -mutex_lock (&cs42l42->irq_lock); +guard (mutex)(&cs42l42->irq_lock); cs42l42->jack = jk;if (jk) {
@@ -581,7 +581,6 @@ static int cs42l42_set_jack(struct snd_soc_component *component, struct snd_soc_break ; } } -mutex_unlock (&cs42l42->irq_lock);return 0 ; }
@@ -1667,117 +1666,118 @@ irqreturn_t cs42l42_irq_thread(int irq, void *data)unsigned int current_plug_status;unsigned int current_button_status;unsigned int i; +irqreturn_t ret =IRQ_HANDLED ;pm_runtime_get_sync (cs42l42->dev); -mutex_lock (&cs42l42->irq_lock); -if (cs42l42->suspended || !cs42l42->init_done) { -mutex_unlock (&cs42l42->irq_lock); -pm_runtime_put_autosuspend (cs42l42->dev); -return IRQ_NONE ; - } + scoped_guard(mutex, &cs42l42->irq_lock) { +if (cs42l42->suspended || !cs42l42->init_done) { + ret =IRQ_NONE ; +break ; + } -/* Read sticky registers to clear interurpt */ -for (i =0 ; i <ARRAY_SIZE (stickies); i++) { -regmap_read (cs42l42->regmap, irq_params_table[i].status_addr, - &(stickies[i])); -regmap_read (cs42l42->regmap, irq_params_table[i].mask_addr, - &(masks[i])); - stickies[i] = stickies[i] & (~masks[i]) & - irq_params_table[i].mask; - } +/* Read sticky registers to clear interrupt */ +for (i =0 ; i <ARRAY_SIZE (stickies); i++) { +regmap_read (cs42l42->regmap, irq_params_table[i].status_addr, + &(stickies[i])); +regmap_read (cs42l42->regmap, irq_params_table[i].mask_addr, + &(masks[i])); + stickies[i] = stickies[i] & (~masks[i]) & + irq_params_table[i].mask; + } -/* Read tip sense status before handling type detect */ - current_plug_status = (stickies[11 ] & - (CS42L42_TS_PLUG_MASK |CS42L42_TS_UNPLUG_MASK )) >> -CS42L42_TS_PLUG_SHIFT ; +/* Read tip sense status before handling type detect */ + current_plug_status = (stickies[11 ] & + (CS42L42_TS_PLUG_MASK |CS42L42_TS_UNPLUG_MASK )) >> +CS42L42_TS_PLUG_SHIFT ; -/* Read button sense status */ - current_button_status = stickies[7 ] & - (CS42L42_M_DETECT_TF_MASK | -CS42L42_M_DETECT_FT_MASK | -CS42L42_M_HSBIAS_HIZ_MASK ); +/* Read button sense status */ + current_button_status = stickies[7 ] & + (CS42L42_M_DETECT_TF_MASK | +CS42L42_M_DETECT_FT_MASK | +CS42L42_M_HSBIAS_HIZ_MASK ); -/* -* Check auto-detect status. Don't assume a previous unplug event has -* cleared the flags. If the jack is unplugged and plugged during -* system suspend there won't have been an unplug event. -*/ -if ((~masks[5 ]) & irq_params_table[5 ].mask) { -if (stickies[5 ] &CS42L42_HSDET_AUTO_DONE_MASK ) { -cs42l42_process_hs_type_detect (cs42l42); -switch (cs42l42->hs_type) { -case CS42L42_PLUG_CTIA : -case CS42L42_PLUG_OMTP : -snd_soc_jack_report (cs42l42->jack,SND_JACK_HEADSET , -SND_JACK_HEADSET | -SND_JACK_BTN_0 |SND_JACK_BTN_1 | -SND_JACK_BTN_2 |SND_JACK_BTN_3 ); -break ; -case CS42L42_PLUG_HEADPHONE : -snd_soc_jack_report (cs42l42->jack,SND_JACK_HEADPHONE , -SND_JACK_HEADSET | -SND_JACK_BTN_0 |SND_JACK_BTN_1 | -SND_JACK_BTN_2 |SND_JACK_BTN_3 ); -break ; -default : -break ; +/* +* Check auto-detect status. Don't assume a previous unplug event has +* cleared the flags. If the jack is unplugged and plugged during +* system suspend there won't have been an unplug event. +*/ +if ((~masks[5 ]) & irq_params_table[5 ].mask) { +if (stickies[5 ] &CS42L42_HSDET_AUTO_DONE_MASK ) { +cs42l42_process_hs_type_detect (cs42l42); +switch (cs42l42->hs_type) { +case CS42L42_PLUG_CTIA : +case CS42L42_PLUG_OMTP : +snd_soc_jack_report (cs42l42->jack,SND_JACK_HEADSET , +SND_JACK_HEADSET | +SND_JACK_BTN_0 |SND_JACK_BTN_1 | +SND_JACK_BTN_2 |SND_JACK_BTN_3 ); +break ; +case CS42L42_PLUG_HEADPHONE : +snd_soc_jack_report (cs42l42->jack,SND_JACK_HEADPHONE , +SND_JACK_HEADSET | +SND_JACK_BTN_0 |SND_JACK_BTN_1 | +SND_JACK_BTN_2 |SND_JACK_BTN_3 ); +break ; +default : +break ; + } +dev_dbg (cs42l42->dev,"Auto detect done (%d)\n" , cs42l42->hs_type); } -dev_dbg (cs42l42->dev,"Auto detect done (%d)\n" , cs42l42->hs_type); } - } -/* Check tip sense status */ -if ((~masks[11 ]) & irq_params_table[11 ].mask) { -switch (current_plug_status) { -case CS42L42_TS_PLUG : -if (cs42l42->plug_state !=CS42L42_TS_PLUG ) { - cs42l42->plug_state =CS42L42_TS_PLUG ; -cs42l42_init_hs_type_detect (cs42l42); - } -break ; +/* Check tip sense status */ +if ((~masks[11 ]) & irq_params_table[11 ].mask) { +switch (current_plug_status) { +case CS42L42_TS_PLUG : +if (cs42l42->plug_state !=CS42L42_TS_PLUG ) { + cs42l42->plug_state =CS42L42_TS_PLUG ; +cs42l42_init_hs_type_detect (cs42l42); + } +break ; -case CS42L42_TS_UNPLUG : -if (cs42l42->plug_state !=CS42L42_TS_UNPLUG ) { - cs42l42->plug_state =CS42L42_TS_UNPLUG ; -cs42l42_cancel_hs_type_detect (cs42l42); +case CS42L42_TS_UNPLUG : +if (cs42l42->plug_state !=CS42L42_TS_UNPLUG ) { + cs42l42->plug_state =CS42L42_TS_UNPLUG ; +cs42l42_cancel_hs_type_detect (cs42l42); -snd_soc_jack_report (cs42l42->jack,0 , -SND_JACK_HEADSET | -SND_JACK_BTN_0 |SND_JACK_BTN_1 | -SND_JACK_BTN_2 |SND_JACK_BTN_3 ); +snd_soc_jack_report (cs42l42->jack,0 , +SND_JACK_HEADSET | +SND_JACK_BTN_0 |SND_JACK_BTN_1 | +SND_JACK_BTN_2 |SND_JACK_BTN_3 ); -dev_dbg (cs42l42->dev,"Unplug event\n" ); - } -break ; +dev_dbg (cs42l42->dev,"Unplug event\n" ); + } +break ; -default : - cs42l42->plug_state =CS42L42_TS_TRANS ; +default : + cs42l42->plug_state =CS42L42_TS_TRANS ; + } } - } -/* Check button detect status */ -if (cs42l42->plug_state ==CS42L42_TS_PLUG && ((~masks[7 ]) & irq_params_table[7 ].mask)) { -if (!(current_button_status & -CS42L42_M_HSBIAS_HIZ_MASK )) { - -if (current_button_status &CS42L42_M_DETECT_TF_MASK ) { -dev_dbg (cs42l42->dev,"Button released\n" ); -snd_soc_jack_report (cs42l42->jack,0 , -SND_JACK_BTN_0 |SND_JACK_BTN_1 | -SND_JACK_BTN_2 |SND_JACK_BTN_3 ); - }else if (current_button_status &CS42L42_M_DETECT_FT_MASK ) { -snd_soc_jack_report (cs42l42->jack, -cs42l42_handle_button_press (cs42l42), -SND_JACK_BTN_0 |SND_JACK_BTN_1 | -SND_JACK_BTN_2 |SND_JACK_BTN_3 ); +/* Check button detect status */ +if (cs42l42->plug_state ==CS42L42_TS_PLUG && + ((~masks[7 ]) & irq_params_table[7 ].mask)) { +if (!(current_button_status & +CS42L42_M_HSBIAS_HIZ_MASK )) { + +if (current_button_status &CS42L42_M_DETECT_TF_MASK ) { +dev_dbg (cs42l42->dev,"Button released\n" ); +snd_soc_jack_report (cs42l42->jack,0 , +SND_JACK_BTN_0 |SND_JACK_BTN_1 | +SND_JACK_BTN_2 |SND_JACK_BTN_3 ); + }else if (current_button_status &CS42L42_M_DETECT_FT_MASK ) { +snd_soc_jack_report (cs42l42->jack, +cs42l42_handle_button_press (cs42l42), +SND_JACK_BTN_0 |SND_JACK_BTN_1 | +SND_JACK_BTN_2 |SND_JACK_BTN_3 ); + } } } } -mutex_unlock (&cs42l42->irq_lock);pm_runtime_put_autosuspend (cs42l42->dev); -return IRQ_HANDLED ; +return ret; }EXPORT_SYMBOL_NS_GPL (cs42l42_irq_thread,"SND_SOC_CS42L42_CORE" );
@@ -2163,22 +2163,22 @@ int cs42l42_suspend(struct device *dev)* future interrupts. This ensures a safe disable if the interrupt * is shared. */ -mutex_lock (&cs42l42->irq_lock); - cs42l42->suspended = true; + scoped_guard(mutex, &cs42l42->irq_lock) { + cs42l42->suspended = true; -/* Save register values that will be overwritten by shutdown sequence */ -for (i =0 ; i <ARRAY_SIZE (cs42l42_shutdown_seq); ++i) { -regmap_read (cs42l42->regmap, cs42l42_shutdown_seq[i].reg, ®); - save_regs[i] = (u8 )reg; - } +/* Save register values that will be overwritten by shutdown sequence */ +for (i =0 ; i <ARRAY_SIZE (cs42l42_shutdown_seq); ++i) { +regmap_read (cs42l42->regmap, cs42l42_shutdown_seq[i].reg, ®); + save_regs[i] = (u8 )reg; + } -/* Shutdown codec */ -regmap_multi_reg_write (cs42l42->regmap, - cs42l42_shutdown_seq, -ARRAY_SIZE (cs42l42_shutdown_seq)); +/* Shutdown codec */ +regmap_multi_reg_write (cs42l42->regmap, + cs42l42_shutdown_seq, +ARRAY_SIZE (cs42l42_shutdown_seq)); -/* All interrupt sources are now disabled */ -mutex_unlock (&cs42l42->irq_lock); +/* All interrupt sources are now disabled */ + }/* Wait for power-down complete */ msleep (CS42L42_PDN_DONE_TIME_MS );
@@ -2250,13 +2250,13 @@ void cs42l42_resume_restore(struct device *dev)regcache_cache_only (cs42l42->regmap, false);regcache_mark_dirty (cs42l42->regmap); -mutex_lock (&cs42l42->irq_lock); -/* Sync LATCH_TO_VP first so the VP domain registers sync correctly */ -regcache_sync_region (cs42l42->regmap,CS42L42_MIC_DET_CTL1 ,CS42L42_MIC_DET_CTL1 ); -regcache_sync (cs42l42->regmap); + scoped_guard(mutex, &cs42l42->irq_lock) { +/* Sync LATCH_TO_VP first so the VP domain registers sync correctly */ +regcache_sync_region (cs42l42->regmap,CS42L42_MIC_DET_CTL1 ,CS42L42_MIC_DET_CTL1 ); +regcache_sync (cs42l42->regmap); - cs42l42->suspended = false; -mutex_unlock (&cs42l42->irq_lock); + cs42l42->suspended = false; + }dev_dbg (dev,"System resumed\n" ); }
Signature · 1 line
2.43.0
PATCH 15/78 ASoC: codecs: cs42l43: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/cs42l43-jack.c | 57 +++++++++++++-------------------- sound/soc/codecs/cs42l43.c | 16 +++------ 2 files changed, 27 insertions(+), 46 deletions(-)
sound/soc/codecs/cs42l43-jack.c +23 -34
@@ -445,20 +445,18 @@ irqreturn_t cs42l43_button_release(int irq, void *data)return iret; } -mutex_lock (&priv->jack_lock); - -if (priv->button_detect_running) { -dev_dbg (priv->dev,"Button release IRQ\n" ); + scoped_guard(mutex, &priv->jack_lock) { +if (priv->button_detect_running) { +dev_dbg (priv->dev,"Button release IRQ\n" ); -snd_soc_jack_report (priv->jack_hp,0 ,CS42L43_JACK_BUTTONS ); +snd_soc_jack_report (priv->jack_hp,0 ,CS42L43_JACK_BUTTONS ); - iret =IRQ_HANDLED ; - }else { -dev_dbg (priv->dev,"Spurious button release IRQ\n" ); + iret =IRQ_HANDLED ; + }else { +dev_dbg (priv->dev,"Spurious button release IRQ\n" ); + } } -mutex_unlock (&priv->jack_lock); -pm_runtime_put_autosuspend (priv->dev);return iret;
@@ -477,22 +475,20 @@ void cs42l43_bias_sense_timeout(struct work_struct *work)return ; } -mutex_lock (&priv->jack_lock); - -if (cs42l43_jack_present (priv) && priv->button_detect_running) { -dev_dbg (priv->dev,"Bias sense timeout out, restore bias\n" ); + scoped_guard(mutex, &priv->jack_lock) { +if (cs42l43_jack_present (priv) && priv->button_detect_running) { +dev_dbg (priv->dev,"Bias sense timeout out, restore bias\n" ); -regmap_update_bits (cs42l43->regmap, -CS42L43_HS_BIAS_SENSE_AND_CLAMP_AUTOCONTROL , -CS42L43_AUTO_HSBIAS_CLAMP_EN_MASK ,0 ); -regmap_update_bits (cs42l43->regmap, -CS42L43_HS_BIAS_SENSE_AND_CLAMP_AUTOCONTROL , -CS42L43_AUTO_HSBIAS_CLAMP_EN_MASK , -CS42L43_AUTO_HSBIAS_CLAMP_EN_MASK ); +regmap_update_bits (cs42l43->regmap, +CS42L43_HS_BIAS_SENSE_AND_CLAMP_AUTOCONTROL , +CS42L43_AUTO_HSBIAS_CLAMP_EN_MASK ,0 ); +regmap_update_bits (cs42l43->regmap, +CS42L43_HS_BIAS_SENSE_AND_CLAMP_AUTOCONTROL , +CS42L43_AUTO_HSBIAS_CLAMP_EN_MASK , +CS42L43_AUTO_HSBIAS_CLAMP_EN_MASK ); + } } -mutex_unlock (&priv->jack_lock); -pm_runtime_put_autosuspend (priv->dev); }
@@ -895,9 +891,8 @@ int cs42l43_jack_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ustruct snd_soc_component *component =snd_kcontrol_chip (kcontrol);struct cs42l43_codec *priv =snd_soc_component_get_drvdata (component); -mutex_lock (&priv->jack_lock); +guard (mutex)(&priv->jack_lock); ucontrol->value.integer.value[0 ] = priv->jack_override; -mutex_unlock (&priv->jack_lock);return 0 ; }
@@ -913,17 +908,13 @@ int cs42l43_jack_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *uif (override >= e->items)return -EINVAL ; -mutex_lock (&priv->jack_lock); +guard (mutex)(&priv->jack_lock); -if (!cs42l43_jack_present (priv)) { -mutex_unlock (&priv->jack_lock); +if (!cs42l43_jack_present (priv))return -EBUSY ; - } -if (override == priv->jack_override) { -mutex_unlock (&priv->jack_lock); +if (override == priv->jack_override)return 0 ; - } priv->jack_override = override;
@@ -983,7 +974,5 @@ int cs42l43_jack_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *u cs42l43_jack_override_modes[override].report); } -mutex_unlock (&priv->jack_lock); -return 1 ; }
sound/soc/codecs/cs42l43.c +4 -12
@@ -1208,14 +1208,12 @@ static void cs42l43_spk_vu_sync(struct cs42l43_codec *priv) {struct cs42l43 *cs42l43 = priv->core; -mutex_lock (&priv->spk_vu_lock); +guard (mutex)(&priv->spk_vu_lock);regmap_update_bits (cs42l43->regmap,CS42L43_INTP_VOLUME_CTRL1 ,CS42L43_AMP1_2_VU_MASK ,CS42L43_AMP1_2_VU_MASK );regmap_update_bits (cs42l43->regmap,CS42L43_INTP_VOLUME_CTRL1 ,CS42L43_AMP1_2_VU_MASK ,0 ); - -mutex_unlock (&priv->spk_vu_lock); }static int cs42l43_shutter_get (struct cs42l43_codec *priv,unsigned int shift)
@@ -1602,7 +1600,7 @@ static int cs42l43_pll_ev(struct snd_soc_dapm_widget *w,struct cs42l43 *cs42l43 = priv->core;int ret; -mutex_lock (&cs42l43->pll_lock); +guard (mutex)(&cs42l43->pll_lock);switch (event) {case SND_SOC_DAPM_PRE_PMU :
@@ -1627,8 +1625,6 @@ static int cs42l43_pll_ev(struct snd_soc_dapm_widget *w,break ; } -mutex_unlock (&cs42l43->pll_lock); -return ret; }
@@ -2566,13 +2562,9 @@ static int cs42l43_set_sysclk(struct snd_soc_component *component, int clk_id, {struct cs42l43_codec *priv =snd_soc_component_get_drvdata (component);struct cs42l43 *cs42l43 = priv->core; -int ret; -mutex_lock (&cs42l43->pll_lock); - ret =cs42l43_set_pll (priv, src, freq); -mutex_unlock (&cs42l43->pll_lock); - -return ret; +guard (mutex)(&cs42l43->pll_lock); +return cs42l43_set_pll (priv, src, freq); }static int cs42l43_component_probe (struct snd_soc_component *component)
Signature · 1 line
2.43.0
Charles Keepax
maintainerRe: [PATCH 15/78] ASoC: codecs: cs42l43: Use guard() for mutex locks
sound/soc/codecs/cs42l43-jack.c int cs42l43_jack_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *u · line 911
Quoted 13 lines · On Wed, Jun 17, 2026 at 05:31:32PM +0700, [email protected] wrote:
From: bui duc phuc <[email protected]>
Clean up the code using
guard()for mutex locks.
Merely code refactoring, and no behavior change.Signed-off-by bui duc phuc <[email protected]>---
sound/soc/codecs/cs42l43-jack.c +1
-1@@ -913,17 +908,13 @@ int cs42l43_jack_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *uif (override >= e->items)return -EINVAL ; -mutex_lock (&priv->jack_lock); +guard (mutex)(&priv->jack_lock);
I believe you have to use scoped_guard here, as there is a return from the function above, if memory serves it attempts to release the mutex on that path despite it being above the guard.
Be worth having a quick scan through the rest of the series for this as well.
Thanks,
Charles
Re: [PATCH 15/78] ASoC: codecs: cs42l43: Use guard() for mutex locks
Quoted 12 lines · On Wed, 17 Jun 2026 11:57:49 +0100 Charles Keepax…
Quoted 11 lines · On Wed, Jun 17, 2026 at 05:31:32PM +0700, [email protected] wrote:
From: bui duc phuc <[email protected]>
Clean up the code using
guard()for mutex locks.
Merely code refactoring, and no behavior change.Signed-off-by bui duc phuc <[email protected]>---
sound/soc/codecs/cs42l43-jack.c +0
-0@@ -913,17 +908,13 @@ int cs42l43_jack_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *uif (override >= e->items)return -EINVAL ;
Quoted 6 lines
Review int cs42l43_jack_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *u · line 911
Quoted 2 lines
(quoted diff) +1
-1- mutex_lock(&priv->jack_lock); + guard(mutex)(&priv->jack_lock);I believe you have to use
scoped_guardhere, as there is a return from the function above, if memory serves it attempts to release the mutex on that path despite it being above the guard.
Indeed.
I believe clang will complain.
That makes these mechanical conversions of existing code dangerous churn.
While using guard() (etc) can make it easier to ensure the lock is released when functions have multiple error exits, I'm not convinced it makes the code any easier to read (other people may disagree).
David
Quoted 7 lines
Be worth having a quick scan through the rest of the series for this as well.
Thanks,
Charles
Re: [PATCH 15/78] ASoC: codecs: cs42l43: Use guard() for mutex locks
Hi Charles, David,
Thanks for the review.
Quoted 5 lines
Quoted 4 lines
I believe you have to use
scoped_guardhere, as there is a return from the function above, if memory serves it attempts to release the mutex on that path despite it being above the guard.
Quoted 8 lines
Indeed.
I believe clang will complain.
That makes these mechanical conversions of existing code dangerous churn.While using
guard()(etc) can make it easier to ensure the lock is released when functions have multiple error exits, I'm not convinced it makes the code any easier to read (other people may disagree).
I built the code with both GCC and Clang and didn't see any warnings.
My understanding was that the early return exits the function before the guard is instantiated, so it should not affect the guard's cleanup handling.
Could you explain what issue you are referring to? I may be missing something.
Best regards,
Phuc
Re: [PATCH 15/78] ASoC: codecs: cs42l43: Use guard() for mutex locks
Quoted 18 lines · On Fri, 19 Jun 2026 15:20:37 +0700 Bui Duc Phuc <[email protected]> wrote:
Hi Charles, David,
Thanks for the review.
Quoted 5 lines
Quoted 4 lines
I believe you have to use
scoped_guardhere, as there is a return from the function above, if memory serves it attempts to release the mutex on that path despite it being above the guard.Quoted 8 lines
Indeed.
I believe clang will complain.
That makes these mechanical conversions of existing code dangerous churn.While using
guard()(etc) can make it easier to ensure the lock is released when functions have multiple error exits, I'm not convinced it makes the code any easier to read (other people may disagree).
Quoted 8 lines
I built the code with both GCC and Clang and didn't see any warnings.
My understanding was that the early return exits the function before the guard is instantiated, so it should not affect the guard's cleanup handling.
Could you explain what issue you are referring to? I may be missing something.
When a variable is defined (and initialised) part way down a block the compiler moves the definition to the top of the block but doesn't initialise it at all, the first assignment happens where the code contains the definition.
However the destructor is always called at the end of the block. So if you return from a function before the definition the destructor is called with an uninitialised argument.
This has always been a problem with C++.
It usually happens when you define a variable inside a switch statement.
David
Quoted 3 lines
Best regards,
Phuc
Charles Keepax
maintainerRe: [PATCH 15/78] ASoC: codecs: cs42l43: Use guard() for mutex locks
Quoted 20 lines · David Laight
Quoted 12 lines · On Fri, 19 Jun 2026 15:20:37 +0700 Bui Duc Phuc <[email protected]> wrote:
Quoted 11 lines
Quoted 3 lines
I believe you have to use
scoped_guardhere, as there is a return from the function above, if memory serves it attempts to release the mutex on that path despite it being above the guard.Indeed.
I believe clang will complain.
That makes these mechanical conversions of existing code dangerous churn.While using
guard()(etc) can make it easier to ensure the lock is released when functions have multiple error exits, I'm not convinced it makes the code any easier to read (other people may disagree).Quoted 5 lines
I built the code with both GCC and Clang and didn't see any warnings.
My understanding was that the early return exits the function before the guard is instantiated, so it should not affect the guard's cleanup handling.
Quoted 8 lines
When a variable is defined (and initialised) part way down a block the compiler moves the definition to the top of the block but doesn't initialise it at all, the first assignment happens where the code contains the definition.
However the destructor is always called at the end of the block. So if you return from a function before the definition the destructor is called with an uninitialised argument.
My understanding was exactly as your David, but it seems that isn't the whole story and indeed I had to fix a bug in our SDCA code that hit this. However testing this out, results in some things I find very hard to explain.
It seems as far as I have managed to test, the code below works fine as Phuc suggests. It does not appear to run the mutex_unlock on the error path.
int function()
{
if (error)
return;
guard(mutex)(&mutex);
stuff();
return;
}The situation I hit this in before that doesn't work was actually this:
int function()
{
if (error)
goto error_label;
guard(mutex)(&mutex);
stuff();error_label; return; }
Which in this case it does run the mutex_unlock and NULL pointer. Will try to find sometime to look at the generated assembly, but this basically totally blows my mind. Very unclear as to if this is supposed to work this way or just does by pure luck.
Thanks,
Charles
Re: [PATCH 15/78] ASoC: codecs: cs42l43: Use guard() for mutex locks
Hi Charles, David,
Quoted 37 lines
Quoted 18 lines
Quoted 12 lines
Quoted 11 lines
Quoted 3 lines
I believe you have to use
scoped_guardhere, as there is a return from the function above, if memory serves it attempts to release the mutex on that path despite it being above the guard.Indeed.
I believe clang will complain.
That makes these mechanical conversions of existing code dangerous churn.While using
guard()(etc) can make it easier to ensure the lock is released when functions have multiple error exits, I'm not convinced it makes the code any easier to read (other people may disagree).Quoted 5 lines
I built the code with both GCC and Clang and didn't see any warnings.
My understanding was that the early return exits the function before the guard is instantiated, so it should not affect the guard's cleanup handling.
Quoted 8 lines
When a variable is defined (and initialised) part way down a block the compiler moves the definition to the top of the block but doesn't initialise it at all, the first assignment happens where the code contains the definition.
However the destructor is always called at the end of the block. So if you return from a function before the definition the destructor is called with an uninitialised argument.
My understanding was exactly as your David, but it seems that isn't the whole story and indeed I had to fix a bug in our SDCA code that hit this. However testing this out, results in some things I find very hard to explain.
It seems as far as I have managed to test, the code below works fine as Phuc suggests. It does not appear to run the
mutex_unlockon the error path.int
function()
Quoted 11 lines
{
if (error)
return;
guard(mutex)(&mutex);
stuff();
return;
}Thanks both for the clarification.
Quoted 12 lines
The situation I hit this in before that doesn't work was actually this:
int
function(){ if (error) goto error_label; guard(mutex)(&mutex); stuff();
Quoted 9 lines
error_label; return; }Which in this case it does run the
mutex_unlockand NULL pointer. Will try to find sometime to look at the generated assembly, but this basically totally blows my mind. Very unclear as to if this is supposed to work this way or just does by pure luck.
As stated in cleanup.h, mixing goto-based cleanup and scope-based cleanup helpers in the same function is not expected, so I think we should keep a consistent approach here.
Best regards,
Phuc
Re: [PATCH 15/78] ASoC: codecs: cs42l43: Use guard() for mutex locks
Quoted 78 lines · Bui Duc Phuc
Hi Charles, David,
Quoted 37 lines
Quoted 18 lines
Quoted 12 lines
Quoted 11 lines
Quoted 3 lines
I believe you have to use
scoped_guardhere, as there is a return from the function above, if memory serves it attempts to release the mutex on that path despite it being above the guard.Indeed.
I believe clang will complain.
That makes these mechanical conversions of existing code dangerous churn.While using
guard()(etc) can make it easier to ensure the lock is released when functions have multiple error exits, I'm not convinced it makes the code any easier to read (other people may disagree).Quoted 5 lines
I built the code with both GCC and Clang and didn't see any warnings.
My understanding was that the early return exits the function before the guard is instantiated, so it should not affect the guard's cleanup handling.
Quoted 8 lines
When a variable is defined (and initialised) part way down a block the compiler moves the definition to the top of the block but doesn't initialise it at all, the first assignment happens where the code contains the definition.
However the destructor is always called at the end of the block. So if you return from a function before the definition the destructor is called with an uninitialised argument.
My understanding was exactly as your David, but it seems that isn't the whole story and indeed I had to fix a bug in our SDCA code that hit this. However testing this out, results in some things I find very hard to explain.
It seems as far as I have managed to test, the code below works fine as Phuc suggests. It does not appear to run the
mutex_unlockon the error path.int
function()Quoted 11 lines
{ if (error) return; guard(mutex)(&mutex); stuff(); return; }Thanks both for the clarification.
Quoted 12 lines
The situation I hit this in before that doesn't work was actually this:
int
function(){ if (error) goto error_label; guard(mutex)(&mutex); stuff();Quoted 9 lines
error_label; return; }Which in this case it does run the
mutex_unlockand NULL pointer. Will try to find sometime to look at the generated assembly, but this basically totally blows my mind. Very unclear as to if this is supposed to work this way or just does by pure luck.
Quoted 3 lines
As stated in
cleanup.h, mixing goto-based cleanup and scope-based cleanup helpers in the same function is not expected, so I think we should keep a consistent approach here.
Right, and IIRC, clang would complain the mixed goto case at least with W=1.
Takashi
Re: [PATCH 15/78] ASoC: codecs: cs42l43: Use guard() for mutex locks
Quoted 85 lines · Takashi Iwai
Quoted 78 lines · Bui Duc Phuc
Hi Charles, David,
Quoted 37 lines
Quoted 18 lines
Quoted 12 lines
Quoted 11 lines
Quoted 3 lines
I believe you have to use
scoped_guardhere, as there is a return from the function above, if memory serves it attempts to release the mutex on that path despite it being above the guard.Indeed.
I believe clang will complain.
That makes these mechanical conversions of existing code dangerous churn.While using
guard()(etc) can make it easier to ensure the lock is released when functions have multiple error exits, I'm not convinced it makes the code any easier to read (other people may disagree).Quoted 5 lines
I built the code with both GCC and Clang and didn't see any warnings.
My understanding was that the early return exits the function before the guard is instantiated, so it should not affect the guard's cleanup handling.
Quoted 8 lines
When a variable is defined (and initialised) part way down a block the compiler moves the definition to the top of the block but doesn't initialise it at all, the first assignment happens where the code contains the definition.
However the destructor is always called at the end of the block. So if you return from a function before the definition the destructor is called with an uninitialised argument.
My understanding was exactly as your David, but it seems that isn't the whole story and indeed I had to fix a bug in our SDCA code that hit this. However testing this out, results in some things I find very hard to explain.
It seems as far as I have managed to test, the code below works fine as Phuc suggests. It does not appear to run the
mutex_unlockon the error path.int
function()Quoted 11 lines
{ if (error) return; guard(mutex)(&mutex); stuff(); return; }Thanks both for the clarification.
Quoted 12 lines
The situation I hit this in before that doesn't work was actually this:
int
function(){ if (error) goto error_label; guard(mutex)(&mutex); stuff();Quoted 9 lines
error_label; return; }Which in this case it does run the
mutex_unlockand NULL pointer. Will try to find sometime to look at the generated assembly, but this basically totally blows my mind. Very unclear as to if this is supposed to work this way or just does by pure luck.Quoted 3 lines
As stated in
cleanup.h, mixing goto-based cleanup and scope-based cleanup helpers in the same function is not expected, so I think we should keep a consistent approach here.
Quoted 5 lines
Right, and IIRC, clang would complain the mixed goto case at least with W=1.
Takashi
Thank you all.
In fact, I have only been using GCC for building and testing. It was only after David mentioned Clang that I decided to give it a try, and this is actually the first time I have used it.
Also, thanks to Takashi-san for adding the W=1 build option. It helped me catch and address warnings more easily.
I will send a v2 to address a few remaining goto cases that slipped through. In addition, I will switch to using guards for PM runtime to reduce indentation and improve code readability.
Best regards,
Phuc
PATCH 16/78 ASoC: codecs: cs42l84: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/cs42l84.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-)
sound/soc/codecs/cs42l84.c +2 -7
@@ -281,10 +281,9 @@ static int cs42l84_set_jack(struct snd_soc_component *component, struct snd_soc_struct cs42l84_private *cs42l84 =snd_soc_component_get_drvdata (component);/* Prevent race with interrupt handler */ -mutex_lock (&cs42l84->irq_lock); +guard (mutex)(&cs42l84->irq_lock); cs42l84->jack = jk;snd_soc_jack_report (jk, cs42l84->hs_type,SND_JACK_HEADSET ); -mutex_unlock (&cs42l84->irq_lock);return 0 ; }
@@ -831,7 +830,7 @@ static irqreturn_t cs42l84_irq_thread(int irq, void *data)u8 current_ring_state;int i; -mutex_lock (&cs42l84->irq_lock); +guard (mutex)(&cs42l84->irq_lock);/* Read sticky registers to clear interrupt */ for (i =0 ; i <ARRAY_SIZE (stickies); i++) { regmap_read(cs42l84->regmap, irq_params_table[i].status_addr,
@@ -902,8 +901,6 @@ static irqreturn_t cs42l84_irq_thread(int irq, void *data)break ; } -mutex_unlock (&cs42l84->irq_lock); -return IRQ_HANDLED ; }
@@ -919,8 +916,6 @@ static irqreturn_t cs42l84_irq_thread(int irq, void *data) } } -mutex_unlock (&cs42l84->irq_lock); -return IRQ_HANDLED ; }
Signature · 1 line
2.43.0
PATCH 17/78 ASoC: codecs: cs43130: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/cs43130.c | 96 +++++++++++++++++++------------------- 1 file changed, 47 insertions(+), 49 deletions(-)
sound/soc/codecs/cs43130.c +47 -49
@@ -818,26 +818,26 @@ static int cs43130_dsd_hw_params(struct snd_pcm_substream *substream,unsigned int required_clk;u8 dsd_speed; -mutex_lock (&cs43130->clk_mutex); -if (!cs43130->clk_req) { -/* no DAI is currently using clk */ -if (!(CS43130_MCLK_22M %params_rate (params))) - required_clk =CS43130_MCLK_22M ; -else - required_clk =CS43130_MCLK_24M ; + scoped_guard(mutex, &cs43130->clk_mutex) { +if (!cs43130->clk_req) { +/* no DAI is currently using clk */ +if (!(CS43130_MCLK_22M %params_rate (params))) + required_clk =CS43130_MCLK_22M ; +else + required_clk =CS43130_MCLK_24M ; + +cs43130_set_pll (component,0 ,0 , cs43130->mclk, required_clk); +if (cs43130->pll_bypass) +cs43130_change_clksrc (component,CS43130_MCLK_SRC_EXT ); +else +cs43130_change_clksrc (component,CS43130_MCLK_SRC_PLL ); + } -cs43130_set_pll (component,0 ,0 , cs43130->mclk, required_clk); -if (cs43130->pll_bypass) -cs43130_change_clksrc (component,CS43130_MCLK_SRC_EXT ); -else -cs43130_change_clksrc (component,CS43130_MCLK_SRC_PLL ); + cs43130->clk_req++; +if (cs43130->clk_req ==2 ) +cs43130_pcm_dsd_mix (true, cs43130->regmap); } - cs43130->clk_req++; -if (cs43130->clk_req ==2 ) -cs43130_pcm_dsd_mix (true, cs43130->regmap); -mutex_unlock (&cs43130->clk_mutex); -switch (params_rate (params)) {case 176400 : dsd_speed =0 ;
@@ -881,26 +881,26 @@ static int cs43130_hw_params(struct snd_pcm_substream *substream,unsigned int required_clk;u8 dsd_speed; -mutex_lock (&cs43130->clk_mutex); -if (!cs43130->clk_req) { -/* no DAI is currently using clk */ -if (!(CS43130_MCLK_22M %params_rate (params))) - required_clk =CS43130_MCLK_22M ; -else - required_clk =CS43130_MCLK_24M ; + scoped_guard(mutex, &cs43130->clk_mutex) { +if (!cs43130->clk_req) { +/* no DAI is currently using clk */ +if (!(CS43130_MCLK_22M %params_rate (params))) + required_clk =CS43130_MCLK_22M ; +else + required_clk =CS43130_MCLK_24M ; + +cs43130_set_pll (component,0 ,0 , cs43130->mclk, required_clk); +if (cs43130->pll_bypass) +cs43130_change_clksrc (component,CS43130_MCLK_SRC_EXT ); +else +cs43130_change_clksrc (component,CS43130_MCLK_SRC_PLL ); + } -cs43130_set_pll (component,0 ,0 , cs43130->mclk, required_clk); -if (cs43130->pll_bypass) -cs43130_change_clksrc (component,CS43130_MCLK_SRC_EXT ); -else -cs43130_change_clksrc (component,CS43130_MCLK_SRC_PLL ); + cs43130->clk_req++; +if (cs43130->clk_req ==2 ) +cs43130_pcm_dsd_mix (true, cs43130->regmap); } - cs43130->clk_req++; -if (cs43130->clk_req ==2 ) -cs43130_pcm_dsd_mix (true, cs43130->regmap); -mutex_unlock (&cs43130->clk_mutex); -switch (dai->id) {case CS43130_ASP_DOP_DAI :case CS43130_XSP_DOP_DAI :
@@ -988,14 +988,13 @@ static int cs43130_hw_free(struct snd_pcm_substream *substream,struct snd_soc_component *component = dai->component;struct cs43130_private *cs43130 =snd_soc_component_get_drvdata (component); -mutex_lock (&cs43130->clk_mutex); +guard (mutex)(&cs43130->clk_mutex); cs43130->clk_req--;if (!cs43130->clk_req) {/* no DAI is currently using clk */ cs43130_change_clksrc (component,CS43130_MCLK_SRC_RCO );cs43130_pcm_dsd_mix (false, cs43130->regmap); } -mutex_unlock (&cs43130->clk_mutex);return 0 ; }
@@ -2132,18 +2131,18 @@ static void cs43130_imp_meas(struct work_struct *wk) cs43130->hpload_done = false; -mutex_lock (&cs43130->clk_mutex); -if (!cs43130->clk_req) { -/* clk not in use */ -cs43130_set_pll (component,0 ,0 , cs43130->mclk,CS43130_MCLK_22M ); -if (cs43130->pll_bypass) -cs43130_change_clksrc (component,CS43130_MCLK_SRC_EXT ); -else -cs43130_change_clksrc (component,CS43130_MCLK_SRC_PLL ); - } + scoped_guard(mutex, &cs43130->clk_mutex) { +if (!cs43130->clk_req) { +/* clk not in use */ +cs43130_set_pll (component,0 ,0 , cs43130->mclk,CS43130_MCLK_22M ); +if (cs43130->pll_bypass) +cs43130_change_clksrc (component,CS43130_MCLK_SRC_EXT ); +else +cs43130_change_clksrc (component,CS43130_MCLK_SRC_PLL ); + } - cs43130->clk_req++; -mutex_unlock (&cs43130->clk_mutex); + cs43130->clk_req++; + }regmap_read (cs43130->regmap,CS43130_INT_STATUS_4 , ®);
@@ -2215,12 +2214,11 @@ static void cs43130_imp_meas(struct work_struct *wk)regmap_multi_reg_write (cs43130->regmap, hp_cln_seq,ARRAY_SIZE (hp_cln_seq)); -mutex_lock (&cs43130->clk_mutex); +guard (mutex)(&cs43130->clk_mutex); cs43130->clk_req--;/* clk not in use */ if (!cs43130->clk_req)cs43130_change_clksrc (component,CS43130_MCLK_SRC_RCO ); -mutex_unlock (&cs43130->clk_mutex); }static irqreturn_t cs43130_irq_thread (int irq,void *data)
Signature · 1 line
2.43.0
PATCH 18/78 ASoC: codecs: cs47l15: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/cs47l15.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-)
sound/soc/codecs/cs47l15.c +4 -6
@@ -1285,9 +1285,8 @@ static int cs47l15_component_probe(struct snd_soc_component *component)snd_soc_component_init_regmap (component, madera->regmap); -mutex_lock (&madera->dapm_ptr_lock); - madera->dapm =snd_soc_component_to_dapm (component); -mutex_unlock (&madera->dapm_ptr_lock); +scoped_guard (mutex, &madera->dapm_ptr_lock) + madera->dapm = snd_soc_component_to_dapm(component); ret =madera_init_inputs (component);if (ret)
@@ -1317,9 +1316,8 @@ static void cs47l15_component_remove(struct snd_soc_component *component)struct cs47l15 *cs47l15 =snd_soc_component_get_drvdata (component);struct madera *madera = cs47l15->core.madera; -mutex_lock (&madera->dapm_ptr_lock); - madera->dapm =NULL ; -mutex_unlock (&madera->dapm_ptr_lock); +scoped_guard (mutex, &madera->dapm_ptr_lock) + madera->dapm = NULL;wm_adsp2_component_remove (&cs47l15->core.adsp[0 ], component); }
Signature · 1 line
2.43.0
PATCH 19/78 ASoC: codecs: cs47l35: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/cs47l35.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-)
sound/soc/codecs/cs47l35.c +4 -6
@@ -1566,9 +1566,8 @@ static int cs47l35_component_probe(struct snd_soc_component *component)snd_soc_component_init_regmap (component, madera->regmap); -mutex_lock (&madera->dapm_ptr_lock); - madera->dapm =snd_soc_component_to_dapm (component); -mutex_unlock (&madera->dapm_ptr_lock); +scoped_guard (mutex, &madera->dapm_ptr_lock) + madera->dapm = snd_soc_component_to_dapm(component); ret =madera_init_inputs (component);if (ret)
@@ -1600,9 +1599,8 @@ static void cs47l35_component_remove(struct snd_soc_component *component)struct madera *madera = cs47l35->core.madera;int i; -mutex_lock (&madera->dapm_ptr_lock); - madera->dapm =NULL ; -mutex_unlock (&madera->dapm_ptr_lock); +scoped_guard (mutex, &madera->dapm_ptr_lock) + madera->dapm = NULL;for (i =0 ; i <CS47L35_NUM_ADSP ; i++)wm_adsp2_component_remove (&cs47l35->core.adsp[i], component);
Signature · 1 line
2.43.0
PATCH 20/78 ASoC: codecs: cs47l85: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/cs47l85.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-)
sound/soc/codecs/cs47l85.c +4 -6
@@ -2504,9 +2504,8 @@ static int cs47l85_component_probe(struct snd_soc_component *component)snd_soc_component_init_regmap (component, madera->regmap); -mutex_lock (&madera->dapm_ptr_lock); - madera->dapm =snd_soc_component_to_dapm (component); -mutex_unlock (&madera->dapm_ptr_lock); +scoped_guard (mutex, &madera->dapm_ptr_lock) + madera->dapm = snd_soc_component_to_dapm(component); ret =madera_init_inputs (component);if (ret)
@@ -2537,9 +2536,8 @@ static void cs47l85_component_remove(struct snd_soc_component *component)struct madera *madera = cs47l85->core.madera;int i; -mutex_lock (&madera->dapm_ptr_lock); - madera->dapm =NULL ; -mutex_unlock (&madera->dapm_ptr_lock); +scoped_guard (mutex, &madera->dapm_ptr_lock) + madera->dapm = NULL;for (i =0 ; i <CS47L85_NUM_ADSP ; i++)wm_adsp2_component_remove (&cs47l85->core.adsp[i], component);
Signature · 1 line
2.43.0
PATCH 21/78 ASoC: codecs: cs47l90: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/cs47l90.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-)
sound/soc/codecs/cs47l90.c +4 -6
@@ -2423,9 +2423,8 @@ static int cs47l90_component_probe(struct snd_soc_component *component)snd_soc_component_init_regmap (component, madera->regmap); -mutex_lock (&madera->dapm_ptr_lock); - madera->dapm =snd_soc_component_to_dapm (component); -mutex_unlock (&madera->dapm_ptr_lock); +scoped_guard (mutex, &madera->dapm_ptr_lock) + madera->dapm = snd_soc_component_to_dapm(component); ret =madera_init_inputs (component);if (ret)
@@ -2456,9 +2455,8 @@ static void cs47l90_component_remove(struct snd_soc_component *component)struct madera *madera = cs47l90->core.madera;int i; -mutex_lock (&madera->dapm_ptr_lock); - madera->dapm =NULL ; -mutex_unlock (&madera->dapm_ptr_lock); +scoped_guard (mutex, &madera->dapm_ptr_lock) + madera->dapm = NULL;for (i =0 ; i <CS47L90_NUM_ADSP ; i++)wm_adsp2_component_remove (&cs47l90->core.adsp[i], component);
Signature · 1 line
2.43.0
PATCH 22/78 ASoC: codecs: cs47l92: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/cs47l92.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-)
sound/soc/codecs/cs47l92.c +4 -6
@@ -1892,9 +1892,8 @@ static int cs47l92_component_probe(struct snd_soc_component *component)snd_soc_component_init_regmap (component, madera->regmap); -mutex_lock (&madera->dapm_ptr_lock); - madera->dapm =snd_soc_component_to_dapm (component); -mutex_unlock (&madera->dapm_ptr_lock); +scoped_guard (mutex, &madera->dapm_ptr_lock) + madera->dapm = snd_soc_component_to_dapm(component); ret =madera_init_inputs (component);if (ret)
@@ -1922,9 +1921,8 @@ static void cs47l92_component_remove(struct snd_soc_component *component)struct cs47l92 *cs47l92 =snd_soc_component_get_drvdata (component);struct madera *madera = cs47l92->core.madera; -mutex_lock (&madera->dapm_ptr_lock); - madera->dapm =NULL ; -mutex_unlock (&madera->dapm_ptr_lock); +scoped_guard (mutex, &madera->dapm_ptr_lock) + madera->dapm = NULL;wm_adsp2_component_remove (&cs47l92->core.adsp[0 ], component); }
Signature · 1 line
2.43.0
PATCH 23/78 ASoC: codecs: cs48l32: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/cs48l32.c | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-)
sound/soc/codecs/cs48l32.c +12 -16
@@ -236,15 +236,13 @@ static int cs48l32_rate_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_vint ret;/* Prevent any mixer mux changes while we do this */ -mutex_lock (&cs48l32_codec->rate_lock); +guard (mutex)(&cs48l32_codec->rate_lock);/* The write must be guarded by a number of SYSCLK cycles */ cs48l32_spin_sysclk (cs48l32_codec); ret =snd_soc_put_enum_double (kcontrol, ucontrol);cs48l32_spin_sysclk (cs48l32_codec); -mutex_unlock (&cs48l32_codec->rate_lock); -return ret; }
@@ -2242,7 +2240,6 @@ static int cs48l32_dai_set_sysclk(struct snd_soc_dai *dai,struct cs48l32_dai_priv *dai_priv = &cs48l32_codec->dai[dai->id -1 ];unsigned int base = dai->driver->base;unsigned int current_asp_rate, target_asp_rate; -bool change_rate_domain = false;int ret;if (clk_id == dai_priv->clk)
@@ -2284,19 +2281,18 @@ static int cs48l32_dai_set_sysclk(struct snd_soc_dai *dai,if ((current_asp_rate &CS48L32_ASP_RATE_MASK ) != (target_asp_rate &CS48L32_ASP_RATE_MASK )) { - change_rate_domain = true; - -mutex_lock (&cs48l32_codec->rate_lock);/* Guard the rate change with SYSCLK cycles */ -cs48l32_spin_sysclk (cs48l32_codec); - } - -snd_soc_component_update_bits (component, base +CS48L32_ASP_CONTROL1 , -CS48L32_ASP_RATE_MASK , target_asp_rate); - -if (change_rate_domain) { -cs48l32_spin_sysclk (cs48l32_codec); -mutex_unlock (&cs48l32_codec->rate_lock); + scoped_guard(mutex, &cs48l32_codec->rate_lock) { +cs48l32_spin_sysclk (cs48l32_codec); +snd_soc_component_update_bits (component, + base +CS48L32_ASP_CONTROL1 , +CS48L32_ASP_RATE_MASK , + target_asp_rate); +cs48l32_spin_sysclk (cs48l32_codec); + } + }else { +snd_soc_component_update_bits (component, base +CS48L32_ASP_CONTROL1 , +CS48L32_ASP_RATE_MASK , target_asp_rate); } }
Signature · 1 line
2.43.0
PATCH 24/78 ASoC: codecs: cs2072x: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/cx2072x.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-)
sound/soc/codecs/cx2072x.c +1 -3
@@ -1408,7 +1408,7 @@ static int cx2072x_jack_status_check(void *data)unsigned int type =0 ;int state =0 ; -mutex_lock (&cx2072x->lock); +guard (mutex)(&cx2072x->lock);regmap_read (cx2072x->regmap,CX2072X_PORTA_PIN_SENSE , &jack); jack = jack >>24 ;
@@ -1434,8 +1434,6 @@ static int cx2072x_jack_status_check(void *data)/* clear interrupt */ regmap_write (cx2072x->regmap,CX2072X_UM_INTERRUPT_CRTL_E ,0x12 <<24 ); -mutex_unlock (&cx2072x->lock); -dev_dbg (codec->dev,"CX2072X_HSDETECT type=0x%X,Jack state = %x\n" , type, state);return state;
Signature · 1 line
2.43.0
PATCH 25/78 ASoC: codecs: da7213: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/da7213.c | 36 +++++++++++------------------------- 1 file changed, 11 insertions(+), 25 deletions(-)
sound/soc/codecs/da7213.c +11 -25
@@ -216,13 +216,10 @@ static int da7213_volsw_locked_get(struct snd_kcontrol *kcontrol, {struct snd_soc_component *component =snd_kcontrol_chip (kcontrol);struct da7213_priv *da7213 =snd_soc_component_get_drvdata (component); -int ret; -mutex_lock (&da7213->ctrl_lock); - ret =snd_soc_get_volsw (kcontrol, ucontrol); -mutex_unlock (&da7213->ctrl_lock); +guard (mutex)(&da7213->ctrl_lock); -return ret; +return snd_soc_get_volsw (kcontrol, ucontrol); } static int da7213_volsw_locked_put(struct snd_kcontrol *kcontrol,
@@ -230,13 +227,10 @@ static int da7213_volsw_locked_put(struct snd_kcontrol *kcontrol, {struct snd_soc_component *component =snd_kcontrol_chip (kcontrol);struct da7213_priv *da7213 =snd_soc_component_get_drvdata (component); -int ret; -mutex_lock (&da7213->ctrl_lock); - ret =snd_soc_put_volsw (kcontrol, ucontrol); -mutex_unlock (&da7213->ctrl_lock); +guard (mutex)(&da7213->ctrl_lock); -return ret; +return snd_soc_put_volsw (kcontrol, ucontrol); } static int da7213_enum_locked_get(struct snd_kcontrol *kcontrol,
@@ -244,13 +238,10 @@ static int da7213_enum_locked_get(struct snd_kcontrol *kcontrol, {struct snd_soc_component *component =snd_kcontrol_chip (kcontrol);struct da7213_priv *da7213 =snd_soc_component_get_drvdata (component); -int ret; -mutex_lock (&da7213->ctrl_lock); - ret =snd_soc_get_enum_double (kcontrol, ucontrol); -mutex_unlock (&da7213->ctrl_lock); +guard (mutex)(&da7213->ctrl_lock); -return ret; +return snd_soc_get_enum_double (kcontrol, ucontrol); } static int da7213_enum_locked_put(struct snd_kcontrol *kcontrol,
@@ -258,13 +249,10 @@ static int da7213_enum_locked_put(struct snd_kcontrol *kcontrol, {struct snd_soc_component *component =snd_kcontrol_chip (kcontrol);struct da7213_priv *da7213 =snd_soc_component_get_drvdata (component); -int ret; -mutex_lock (&da7213->ctrl_lock); - ret =snd_soc_put_enum_double (kcontrol, ucontrol); -mutex_unlock (&da7213->ctrl_lock); +guard (mutex)(&da7213->ctrl_lock); -return ret; +return snd_soc_put_enum_double (kcontrol, ucontrol); }/* ALC */
@@ -465,9 +453,8 @@ static int da7213_tonegen_freq_get(struct snd_kcontrol *kcontrol,__le16 val;int ret; -mutex_lock (&da7213->ctrl_lock); - ret =regmap_raw_read (da7213->regmap, reg, &val,sizeof (val)); -mutex_unlock (&da7213->ctrl_lock); +scoped_guard (mutex, &da7213->ctrl_lock) + ret = regmap_raw_read(da7213->regmap, reg, &val, sizeof(val));if (ret)return ret;
@@ -499,12 +486,11 @@ static int da7213_tonegen_freq_put(struct snd_kcontrol *kcontrol,*/ val_new =cpu_to_le16 (ucontrol->value.integer.value[0 ]); -mutex_lock (&da7213->ctrl_lock); +guard (mutex)(&da7213->ctrl_lock); ret =regmap_raw_read (da7213->regmap, reg, &val_old,sizeof (val_old));if (ret ==0 && (val_old != val_new)) ret =regmap_raw_write (da7213->regmap, reg, &val_new,sizeof (val_new)); -mutex_unlock (&da7213->ctrl_lock);if (ret <0 )return ret;
Signature · 1 line
2.43.0
PATCH 26/78 ASoC: codecs: da7219: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/da7219.c | 59 +++++++++++++-------------------------- 1 file changed, 19 insertions(+), 40 deletions(-)
sound/soc/codecs/da7219.c +19 -40
@@ -256,13 +256,10 @@ static int da7219_volsw_locked_get(struct snd_kcontrol *kcontrol, {struct snd_soc_component *component =snd_kcontrol_chip (kcontrol);struct da7219_priv *da7219 =snd_soc_component_get_drvdata (component); -int ret; -mutex_lock (&da7219->ctrl_lock); - ret =snd_soc_get_volsw (kcontrol, ucontrol); -mutex_unlock (&da7219->ctrl_lock); +guard (mutex)(&da7219->ctrl_lock); -return ret; +return snd_soc_get_volsw (kcontrol, ucontrol); } static int da7219_volsw_locked_put(struct snd_kcontrol *kcontrol,
@@ -270,13 +267,10 @@ static int da7219_volsw_locked_put(struct snd_kcontrol *kcontrol, {struct snd_soc_component *component =snd_kcontrol_chip (kcontrol);struct da7219_priv *da7219 =snd_soc_component_get_drvdata (component); -int ret; -mutex_lock (&da7219->ctrl_lock); - ret =snd_soc_put_volsw (kcontrol, ucontrol); -mutex_unlock (&da7219->ctrl_lock); +guard (mutex)(&da7219->ctrl_lock); -return ret; +return snd_soc_put_volsw (kcontrol, ucontrol); } static int da7219_enum_locked_get(struct snd_kcontrol *kcontrol,
@@ -284,13 +278,10 @@ static int da7219_enum_locked_get(struct snd_kcontrol *kcontrol, {struct snd_soc_component *component =snd_kcontrol_chip (kcontrol);struct da7219_priv *da7219 =snd_soc_component_get_drvdata (component); -int ret; -mutex_lock (&da7219->ctrl_lock); - ret =snd_soc_get_enum_double (kcontrol, ucontrol); -mutex_unlock (&da7219->ctrl_lock); +guard (mutex)(&da7219->ctrl_lock); -return ret; +return snd_soc_get_enum_double (kcontrol, ucontrol); } static int da7219_enum_locked_put(struct snd_kcontrol *kcontrol,
@@ -298,13 +289,10 @@ static int da7219_enum_locked_put(struct snd_kcontrol *kcontrol, {struct snd_soc_component *component =snd_kcontrol_chip (kcontrol);struct da7219_priv *da7219 =snd_soc_component_get_drvdata (component); -int ret; -mutex_lock (&da7219->ctrl_lock); - ret =snd_soc_put_enum_double (kcontrol, ucontrol); -mutex_unlock (&da7219->ctrl_lock); +guard (mutex)(&da7219->ctrl_lock); -return ret; +return snd_soc_put_enum_double (kcontrol, ucontrol); }/* ALC */
@@ -422,9 +410,8 @@ static int da7219_tonegen_freq_get(struct snd_kcontrol *kcontrol,__le16 val;int ret; -mutex_lock (&da7219->ctrl_lock); - ret =regmap_raw_read (da7219->regmap, reg, &val,sizeof (val)); -mutex_unlock (&da7219->ctrl_lock); +scoped_guard (mutex, &da7219->ctrl_lock) + ret = regmap_raw_read(da7219->regmap, reg, &val, sizeof(val));if (ret)return ret;
@@ -456,12 +443,12 @@ static int da7219_tonegen_freq_put(struct snd_kcontrol *kcontrol,*/ val_new =cpu_to_le16 (ucontrol->value.integer.value[0 ]); -mutex_lock (&da7219->ctrl_lock); - ret =regmap_raw_read (da7219->regmap, reg, &val_old,sizeof (val_old)); -if (ret ==0 && (val_old != val_new)) - ret =regmap_raw_write (da7219->regmap, reg, - &val_new,sizeof (val_new)); -mutex_unlock (&da7219->ctrl_lock); + scoped_guard(mutex, &da7219->ctrl_lock) { + ret =regmap_raw_read (da7219->regmap, reg, &val_old,sizeof (val_old)); +if (ret ==0 && (val_old != val_new)) + ret =regmap_raw_write (da7219->regmap, reg, + &val_new,sizeof (val_new)); + }if (ret <0 )return ret;
@@ -1167,15 +1154,12 @@ static int da7219_set_dai_sysclk(struct snd_soc_dai *codec_dai,struct da7219_priv *da7219 =snd_soc_component_get_drvdata (component);int ret =0 ; -mutex_lock (&da7219->pll_lock); +guard (mutex)(&da7219->pll_lock); -if ((da7219->clk_src == clk_id) && (da7219->mclk_rate == freq)) { -mutex_unlock (&da7219->pll_lock); +if ((da7219->clk_src == clk_id) && (da7219->mclk_rate == freq))return 0 ; - }if ((freq <2000000 ) || (freq >54000000 )) { -mutex_unlock (&da7219->pll_lock);dev_err (codec_dai->dev,"Unsupported MCLK value %d\n" , freq);return -EINVAL ;
@@ -1193,7 +1177,6 @@ static int da7219_set_dai_sysclk(struct snd_soc_dai *codec_dai,break ;default :dev_err (codec_dai->dev,"Unknown clock source %d\n" , clk_id); -mutex_unlock (&da7219->pll_lock);return -EINVAL ; }
@@ -1205,15 +1188,12 @@ static int da7219_set_dai_sysclk(struct snd_soc_dai *codec_dai,if (ret) {dev_err (codec_dai->dev,"Failed to set clock rate %d\n" , freq); -mutex_unlock (&da7219->pll_lock);return ret; } } da7219->mclk_rate = freq; -mutex_unlock (&da7219->pll_lock); -return 0 ; }
@@ -1298,9 +1278,8 @@ static int da7219_set_dai_pll(struct snd_soc_dai *codec_dai, int pll_id,struct da7219_priv *da7219 =snd_soc_component_get_drvdata (component);int ret; -mutex_lock (&da7219->pll_lock); +guard (mutex)(&da7219->pll_lock); ret =da7219_set_pll (component, source, fout); -mutex_unlock (&da7219->pll_lock);return ret; }
Signature · 1 line
2.43.0
PATCH 27/78 ASoC: codecs: es8316: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/es8316.c | 30 ++++++++++++------------------ 1 file changed, 12 insertions(+), 18 deletions(-)
sound/soc/codecs/es8316.c +12 -18
@@ -621,15 +621,15 @@ static irqreturn_t es8316_irq(int irq, void *data)struct snd_soc_component *comp = es8316->component;unsigned int flags; -mutex_lock (&es8316->lock); +guard (mutex)(&es8316->lock);regmap_read (es8316->regmap,ES8316_GPIO_FLAG , &flags);if (flags ==0x00 ) - goto out;/* Powered-down / reset */ +return IRQ_HANDLED ;/* Powered-down / reset */ /* Catch spurious IRQ before set_jack is called */ if (!es8316->jack) - goto out; +return IRQ_HANDLED ;if (es8316->jd_inverted) flags ^=ES8316_GPIO_FLAG_HP_NOT_INSERTED ;
@@ -682,8 +682,6 @@ static irqreturn_t es8316_irq(int irq, void *data) } } -out: -mutex_unlock (&es8316->lock);return IRQ_HANDLED ; }
@@ -700,18 +698,16 @@ static void es8316_enable_jack_detect(struct snd_soc_component *component, es8316->jd_inverted =device_property_read_bool (component->dev,"everest,jack-detect-inverted" ); -mutex_lock (&es8316->lock); + scoped_guard(mutex, &es8316->lock) { + es8316->jack = jack; - es8316->jack = jack; - -if (es8316->jack->status &SND_JACK_MICROPHONE ) -es8316_enable_micbias_for_mic_gnd_short_detect (component); - -snd_soc_component_update_bits (component,ES8316_GPIO_DEBOUNCE , -ES8316_GPIO_ENABLE_INTERRUPT , -ES8316_GPIO_ENABLE_INTERRUPT ); +if (es8316->jack->status &SND_JACK_MICROPHONE ) +es8316_enable_micbias_for_mic_gnd_short_detect (component); -mutex_unlock (&es8316->lock); +snd_soc_component_update_bits (component,ES8316_GPIO_DEBOUNCE , +ES8316_GPIO_ENABLE_INTERRUPT , +ES8316_GPIO_ENABLE_INTERRUPT ); + }/* Enable irq and sync initial jack state */ enable_irq (es8316->irq);
@@ -727,7 +723,7 @@ static void es8316_disable_jack_detect(struct snd_soc_component *component)disable_irq (es8316->irq); -mutex_lock (&es8316->lock); +guard (mutex)(&es8316->lock);snd_soc_component_update_bits (component,ES8316_GPIO_DEBOUNCE ,ES8316_GPIO_ENABLE_INTERRUPT ,0 );
@@ -738,8 +734,6 @@ static void es8316_disable_jack_detect(struct snd_soc_component *component) } es8316->jack =NULL ; - -mutex_unlock (&es8316->lock); } static int es8316_set_jack(struct snd_soc_component *component,
Signature · 1 line
2.43.0
PATCH 28/78 ASoC: codecs: es8326: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/es8326.c | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-)
sound/soc/codecs/es8326.c +12 -17
@@ -790,7 +790,7 @@ static void es8326_jack_button_handler(struct work_struct *work)if (!(es8326->jack->status &SND_JACK_HEADSET ))/* Jack unplugged */ return ; -mutex_lock (&es8326->lock); +guard (mutex)(&es8326->lock); iface =snd_soc_component_read (comp,ES8326_HPDET_STA );switch (iface) {case 0x93 :
@@ -845,7 +845,6 @@ static void es8326_jack_button_handler(struct work_struct *work) }es8326_disable_micbias (es8326->component); } -mutex_unlock (&es8326->lock); }static void es8326_jack_detect_handler (struct work_struct *work)
@@ -855,7 +854,7 @@ static void es8326_jack_detect_handler(struct work_struct *work)struct snd_soc_component *comp = es8326->component;unsigned int iface; -mutex_lock (&es8326->lock); +guard (mutex)(&es8326->lock); iface =snd_soc_component_read (comp,ES8326_HPDET_STA );dev_dbg (comp->dev,"gpio flag %#04x" , iface);
@@ -873,7 +872,7 @@ static void es8326_jack_detect_handler(struct work_struct *work)regmap_update_bits (es8326->regmap,ES8326_HPDET_TYPE ,ES8326_HP_DET_JACK_POL , (es8326->jd_inverted ? ~es8326->jack_pol : es8326->jack_pol)); - goto exit; +return ; }if ((iface &ES8326_HPINSERT_FLAG ) ==0 ) {
@@ -930,7 +929,7 @@ static void es8326_jack_detect_handler(struct work_struct *work)queue_delayed_work (system_dfl_wq, &es8326->jack_detect_work,msecs_to_jiffies (400 )); es8326->hp =1 ; - goto exit; +return ; }if (es8326->jack->status &SND_JACK_HEADSET ) {/* detect button */
@@ -939,7 +938,7 @@ static void es8326_jack_detect_handler(struct work_struct *work) (ES8326_INT_SRC_PIN9 | ES8326_INT_SRC_BUTTON));es8326_enable_micbias (es8326->component);queue_delayed_work (system_dfl_wq, &es8326->button_press_work,10 ); - goto exit; +return ; }if ((iface &ES8326_HPBUTTON_FLAG ) ==0x01 ) {dev_dbg (comp->dev,"Headphone detected\n" );
@@ -958,8 +957,6 @@ static void es8326_jack_detect_handler(struct work_struct *work)usleep_range (10000 ,15000 ); } } -exit: -mutex_unlock (&es8326->lock); }static irqreturn_t es8326_irq (int irq,void *dev_id)
@@ -1200,13 +1197,12 @@ static void es8326_enable_jack_detect(struct snd_soc_component *component, {struct es8326_priv *es8326 =snd_soc_component_get_drvdata (component); -mutex_lock (&es8326->lock); -if (es8326->jd_inverted) -snd_soc_component_update_bits (component,ES8326_HPDET_TYPE , -ES8326_HP_DET_JACK_POL , ~es8326->jack_pol); - es8326->jack = jack; - -mutex_unlock (&es8326->lock); + scoped_guard(mutex, &es8326->lock) { +if (es8326->jd_inverted) +snd_soc_component_update_bits (component,ES8326_HPDET_TYPE , +ES8326_HP_DET_JACK_POL , ~es8326->jack_pol); + es8326->jack = jack; + }es8326_irq (es8326->irq, es8326); }
@@ -1219,13 +1215,12 @@ static void es8326_disable_jack_detect(struct snd_soc_component *component)return ;/* Already disabled (or never enabled) */ cancel_delayed_work_sync (&es8326->jack_detect_work); -mutex_lock (&es8326->lock); +guard (mutex)(&es8326->lock);if (es8326->jack->status &SND_JACK_MICROPHONE ) {es8326_disable_micbias (component);snd_soc_jack_report (es8326->jack,0 ,SND_JACK_HEADSET ); } es8326->jack =NULL ; -mutex_unlock (&es8326->lock); } static int es8326_set_jack(struct snd_soc_component *component,
Signature · 1 line
2.43.0
PATCH 29/78 ASoC: codecs: es9356: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/es9356.c | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-)
sound/soc/codecs/es9356.c +13 -16
@@ -501,16 +501,16 @@ static int es9356_power_state(struct snd_soc_dai *dai, unsigned char ps, unsigne }/* power state changes are not independent across functions */ -mutex_lock (&es9356->pde_lock); - ret =es9356_pde_transition_delay (es9356, func, pde_entity, ps?ps0:ps3); -if (ret) { -regmap_write (es9356->regmap, -SDW_SDCA_CTL (func, pde_entity,ES9356_SDCA_CTL_REQ_POWER_STATE ,0 ), ps?ps3:ps0); -es9356_pde_transition_delay (es9356, func, pde_entity, ps?ps3:ps0); - }else -dev_dbg (component->dev,"%s PDE is already %d\n" , __func__, ps?ps0:ps3); - -mutex_unlock (&es9356->pde_lock); + scoped_guard(mutex, &es9356->pde_lock) { + ret =es9356_pde_transition_delay (es9356, func, pde_entity, ps?ps0:ps3); +if (ret) { +regmap_write (es9356->regmap, +SDW_SDCA_CTL (func, pde_entity,ES9356_SDCA_CTL_REQ_POWER_STATE ,0 ), + ps?ps3:ps0); +es9356_pde_transition_delay (es9356, func, pde_entity, ps?ps3:ps0); + }else +dev_dbg (component->dev,"%s PDE is already %d\n" , __func__, ps?ps0:ps3); + }if (rate) regmap_write(es9356->regmap,
@@ -929,7 +929,7 @@ static int es9356_sdw_interrupt_callback(struct sdw_slave *slave,int count =0 , retry =3 ;int ret, stat, reg; -mutex_lock (&es9356->disable_irq_lock); +guard (mutex)(&es9356->disable_irq_lock); ret =sdw_read_no_pm (es9356->slave,SDW_SCP_SDCA_INT1 );if (ret <0 )
@@ -982,11 +982,9 @@ static int es9356_sdw_interrupt_callback(struct sdw_slave *slave,mod_delayed_work (system_power_efficient_wq, &es9356->interrupt_handle_work,msecs_to_jiffies (280 )); -mutex_unlock (&es9356->disable_irq_lock);return 0 ; io_error: -mutex_unlock (&es9356->disable_irq_lock);pr_err_ratelimited ("IO error in %s, ret %d\n" , __func__, ret);return ret; }
@@ -1092,9 +1090,8 @@ static int es9356_sdca_dev_system_suspend(struct device *dev) {struct es9356_sdw_priv *es9356 =dev_get_drvdata (dev); -mutex_lock (&es9356->disable_irq_lock); - es9356->disable_irq = true; -mutex_unlock (&es9356->disable_irq_lock); +scoped_guard (mutex, &es9356->disable_irq_lock) + es9356->disable_irq = true;return es9356_sdca_dev_suspend (dev); }
Signature · 1 line
2.43.0
PATCH 30/78 ASoC: codecs: fs210x: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/fs210x.c | 86 +++++++++++++-------------------------- 1 file changed, 29 insertions(+), 57 deletions(-)
sound/soc/codecs/fs210x.c +29 -57
@@ -770,9 +770,8 @@ static int fs210x_dai_hw_params(struct snd_pcm_substream *substream,if (fs210x->devid ==FS2105S_DEVICE_ID && fs210x->srate ==16000 )return -EOPNOTSUPP ; -mutex_lock (&fs210x->lock); - ret =fs210x_set_hw_params (fs210x); -mutex_unlock (&fs210x->lock); +scoped_guard (mutex, &fs210x->lock) + ret = fs210x_set_hw_params(fs210x);if (ret)dev_err (fs210x->dev,"Failed to set hw params: %d\n" , ret);
@@ -789,15 +788,11 @@ static int fs210x_dai_mute(struct snd_soc_dai *dai, int mute, int stream) fs210x =snd_soc_component_get_drvdata (dai->component); -mutex_lock (&fs210x->lock); - -if (!fs210x->is_inited || fs210x->is_suspended) { -mutex_unlock (&fs210x->lock); -return 0 ; + scoped_guard(mutex, &fs210x->lock) { +if (!fs210x->is_inited || fs210x->is_suspended) +return 0 ; } -mutex_unlock (&fs210x->lock); -if (mute) {cancel_delayed_work_sync (&fs210x->fault_check_work);cancel_delayed_work_sync (&fs210x->start_work);
@@ -816,15 +811,11 @@ static int fs210x_dai_trigger(struct snd_pcm_substream *substream, fs210x =snd_soc_component_get_drvdata (dai->component); -mutex_lock (&fs210x->lock); - -if (!fs210x->is_inited || fs210x->is_suspended || fs210x->is_playing) { -mutex_unlock (&fs210x->lock); -return 0 ; + scoped_guard(mutex, &fs210x->lock) { +if (!fs210x->is_inited || fs210x->is_suspended || fs210x->is_playing) +return 0 ; } -mutex_unlock (&fs210x->lock); -switch (cmd) {case SNDRV_PCM_TRIGGER_START :case SNDRV_PCM_TRIGGER_RESUME :
@@ -852,13 +843,11 @@ static void fs210x_start_work(struct work_struct *work) fs210x = container_of(work, struct fs210x_priv, start_work.work); -mutex_lock (&fs210x->lock); +guard (mutex)(&fs210x->lock); ret =fs210x_dev_play (fs210x);if (ret)dev_err (fs210x->dev,"Failed to start playing: %d\n" , ret); - -mutex_unlock (&fs210x->lock); }static void fs210x_fault_check_work (struct work_struct *work)
@@ -869,15 +858,12 @@ static void fs210x_fault_check_work(struct work_struct *work) fs210x = container_of(work, struct fs210x_priv, fault_check_work.work); -mutex_lock (&fs210x->lock); + scoped_guard(mutex, &fs210x->lock) { +if (!fs210x->is_inited || fs210x->is_suspended || !fs210x->is_playing) +return ; -if (!fs210x->is_inited || fs210x->is_suspended || !fs210x->is_playing) { -mutex_unlock (&fs210x->lock); -return ; + ret =fs210x_reg_read (fs210x,FS210X_05H_ANASTAT , &status); } - - ret =fs210x_reg_read (fs210x,FS210X_05H_ANASTAT , &status); -mutex_unlock (&fs210x->lock);if (ret)return ;
@@ -990,7 +976,7 @@ static int fs210x_effect_scene_get(struct snd_kcontrol *kcontrol,if (fs210x->scene_id <1 )return -EINVAL ; -mutex_lock (&fs210x->lock); +guard (mutex)(&fs210x->lock);/* * FS210x has scene(s) as below: * init scene: id = 0
@@ -999,7 +985,6 @@ static int fs210x_effect_scene_get(struct snd_kcontrol *kcontrol,*/ index = fs210x->scene_id -1 ; ucontrol->value.integer.value[0 ] = index; -mutex_unlock (&fs210x->lock);return 0 ; }
@@ -1018,7 +1003,7 @@ static int fs210x_effect_scene_put(struct snd_kcontrol *kcontrol,return -EINVAL ; } -mutex_lock (&fs210x->lock); +guard (mutex)(&fs210x->lock);/* * FS210x has scene(s) as below:
@@ -1028,17 +1013,14 @@ static int fs210x_effect_scene_put(struct snd_kcontrol *kcontrol,*/ scene_id = ucontrol->value.integer.value[0 ] +1 ; scene_count = fs210x->amp_lib.scene_count -1 ;/* Skip init scene */ -if (scene_id <1 || scene_id > scene_count) { -mutex_unlock (&fs210x->lock); +if (scene_id <1 || scene_id > scene_count)return -ERANGE ; - }if (scene_id != fs210x->scene_id) is_changed = true;if (fs210x->is_suspended) { fs210x->scene_id = scene_id; -mutex_unlock (&fs210x->lock);return is_changed; }
@@ -1046,8 +1028,6 @@ static int fs210x_effect_scene_put(struct snd_kcontrol *kcontrol,if (ret)dev_err (fs210x->dev,"Failed to set scene: %d\n" , ret); -mutex_unlock (&fs210x->lock); -if (!ret && is_changed)return 1 ;
@@ -1061,12 +1041,10 @@ static int fs210x_playback_event(struct snd_soc_dapm_widget *w,struct fs210x_priv *fs210x =snd_soc_component_get_drvdata (cmpnt);int ret =0 ; -mutex_lock (&fs210x->lock); +guard (mutex)(&fs210x->lock); -if (fs210x->is_suspended) { -mutex_unlock (&fs210x->lock); +if (fs210x->is_suspended)return 0 ; - }switch (event) {case SND_SOC_DAPM_PRE_PMU :
@@ -1087,8 +1065,6 @@ static int fs210x_playback_event(struct snd_soc_dapm_widget *w,break ; } -mutex_unlock (&fs210x->lock); -return ret; }
@@ -1219,11 +1195,9 @@ static int fs210x_probe(struct snd_soc_component *cmpnt)if (ret)return ret; -mutex_lock (&fs210x->lock); - ret =fs210x_init_chip (fs210x); -mutex_unlock (&fs210x->lock); +guard (mutex)(&fs210x->lock); -return ret; +return fs210x_init_chip (fs210x); }static void fs210x_remove (struct snd_soc_component *cmpnt)
@@ -1250,15 +1224,15 @@ static int fs210x_suspend(struct snd_soc_component *cmpnt)regcache_cache_only (fs210x->regmap, true); -mutex_lock (&fs210x->lock); - fs210x->cur_scene =NULL ; - fs210x->is_inited = false; - fs210x->is_playing = false; - fs210x->is_suspended = true; + scoped_guard(mutex, &fs210x->lock) { + fs210x->cur_scene =NULL ; + fs210x->is_inited = false; + fs210x->is_playing = false; + fs210x->is_suspended = true; -gpiod_set_value_cansleep (fs210x->gpio_sdz,1 );/* Active */ -fsleep (30000 );/* >= 30ms */ -mutex_unlock (&fs210x->lock); +gpiod_set_value_cansleep (fs210x->gpio_sdz,1 );/* Active */ +fsleep (30000 );/* >= 30ms */ + }cancel_delayed_work_sync (&fs210x->start_work);cancel_delayed_work_sync (&fs210x->fault_check_work);
@@ -1287,13 +1261,11 @@ static int fs210x_resume(struct snd_soc_component *cmpnt) return ret; } -mutex_lock (&fs210x->lock); +guard (mutex)(&fs210x->lock); fs210x->is_suspended = false; ret =fs210x_init_chip (fs210x); -mutex_unlock (&fs210x->lock); -return ret; }#else
Signature · 1 line
2.43.0
PATCH 31/78 ASoC: codecs: hdac_hdmi: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/hdac_hdmi.c | 116 +++++++++++++++++------------------ 1 file changed, 56 insertions(+), 60 deletions(-)
sound/soc/codecs/hdac_hdmi.c +56 -60
@@ -537,10 +537,10 @@ static struct hdac_hdmi_port *hdac_hdmi_get_port_from_cvt(continue ;list_for_each_entry (port, &pcm->port_list, head) { -mutex_lock (&pcm->lock); - ret =hdac_hdmi_query_port_connlist (hdev, - port->pin, port); -mutex_unlock (&pcm->lock); + scoped_guard(mutex, &pcm->lock) { + ret =hdac_hdmi_query_port_connlist (hdev, + port->pin, port); + }if (ret <0 )continue ;
@@ -640,11 +640,11 @@ static void hdac_hdmi_pcm_close(struct snd_pcm_substream *substream, pcm =hdac_hdmi_get_pcm_from_cvt (hdmi, dai_map->cvt);if (pcm) { -mutex_lock (&pcm->lock); - pcm->chmap_set = false; -memset (pcm->chmap,0 ,sizeof (pcm->chmap)); - pcm->channels =0 ; -mutex_unlock (&pcm->lock); + scoped_guard(mutex, &pcm->lock) { + pcm->chmap_set = false; +memset (pcm->chmap,0 ,sizeof (pcm->chmap)); + pcm->channels =0 ; + } }if (dai_map->port)
@@ -922,7 +922,7 @@ static int hdac_hdmi_set_pin_port_mux(struct snd_kcontrol *kcontrol,if (port ==NULL )return -EINVAL ; -mutex_lock (&hdmi->pin_mutex); +guard (mutex)(&hdmi->pin_mutex);list_for_each_entry (pcm, &hdmi->pcm_list, head) {if (list_empty (&pcm->port_list))continue ;
@@ -945,12 +945,10 @@ static int hdac_hdmi_set_pin_port_mux(struct snd_kcontrol *kcontrol,list_add_tail (&port->head, &pcm->port_list);if (port->eld.monitor_present && port->eld.eld_valid) {hdac_hdmi_jack_report_sync (pcm, port, true); -mutex_unlock (&hdmi->pin_mutex);return ret; } } } -mutex_unlock (&hdmi->pin_mutex);return ret; }
@@ -1274,67 +1272,66 @@ static void hdac_hdmi_present_sense(struct hdac_hdmi_pin *pin,* In case of non MST pin, get_eld info API expectes port * to be -1. */ -mutex_lock (&hdmi->pin_mutex); - port->eld.monitor_present = false; + scoped_guard(mutex, &hdmi->pin_mutex) { + port->eld.monitor_present = false; -if (pin->mst_capable) - port_id = port->id; +if (pin->mst_capable) + port_id = port->id; - size =snd_hdac_acomp_get_eld (hdev, pin->nid, port_id, - &port->eld.monitor_present, - port->eld.eld_buffer, -ELD_MAX_SIZE ); + size =snd_hdac_acomp_get_eld (hdev, pin->nid, port_id, + &port->eld.monitor_present, + port->eld.eld_buffer, +ELD_MAX_SIZE ); -if (size >0 ) { - size =min (size,ELD_MAX_SIZE ); -if (hdac_hdmi_parse_eld (hdev, port) <0 ) - size = -EINVAL ; - } +if (size >0 ) { + size =min (size,ELD_MAX_SIZE ); +if (hdac_hdmi_parse_eld (hdev, port) <0 ) + size = -EINVAL ; + } - eld_valid = port->eld.eld_valid; + eld_valid = port->eld.eld_valid; -if (size >0 ) { - port->eld.eld_valid = true; - port->eld.eld_size = size; - }else { - port->eld.eld_valid = false; - port->eld.eld_size =0 ; - } +if (size >0 ) { + port->eld.eld_valid = true; + port->eld.eld_size = size; + }else { + port->eld.eld_valid = false; + port->eld.eld_size =0 ; + } - eld_changed = (eld_valid != port->eld.eld_valid); + eld_changed = (eld_valid != port->eld.eld_valid); - pcm =hdac_hdmi_get_pcm (hdev, port); + pcm =hdac_hdmi_get_pcm (hdev, port); -if (!port->eld.monitor_present || !port->eld.eld_valid) { +if (!port->eld.monitor_present || !port->eld.eld_valid) { -dev_dbg (&hdev->dev,"%s: disconnect for pin:port %d:%d\n" , - __func__, pin->nid, port->id); +dev_dbg (&hdev->dev,"%s: disconnect for pin:port %d:%d\n" , + __func__, pin->nid, port->id); -/* -* PCMs are not registered during device probe, so don't -* report jack here. It will be done in usermode mux -* control select. -*/ -if (pcm) { -hdac_hdmi_jack_report (pcm, port, false); -schedule_work (&port->dapm_work); - } - -mutex_unlock (&hdmi->pin_mutex); -return ; - } +/* +* PCMs are not registered during device probe, so don't +* report jack here. It will be done in usermode mux +* control select. +*/ +if (pcm) { +hdac_hdmi_jack_report (pcm, port, false); +schedule_work (&port->dapm_work); + } -if (port->eld.monitor_present && port->eld.eld_valid) { -if (pcm) { -hdac_hdmi_jack_report (pcm, port, true); -schedule_work (&port->dapm_work); +return ; } -print_hex_dump_debug ("ELD: " ,DUMP_PREFIX_OFFSET ,16 ,1 , - port->eld.eld_buffer, port->eld.eld_size, false); +if (port->eld.monitor_present && port->eld.eld_valid) { +if (pcm) { +hdac_hdmi_jack_report (pcm, port, true); +schedule_work (&port->dapm_work); + } +print_hex_dump_debug ("ELD: " ,DUMP_PREFIX_OFFSET ,16 ,1 , + port->eld.eld_buffer, port->eld.eld_size, false); + + } } -mutex_unlock (&hdmi->pin_mutex);if (eld_changed && pcm) snd_ctl_notify(hdmi->card,
@@ -1795,13 +1792,12 @@ static void hdac_hdmi_set_chmap(struct hdac_device *hdev, int pcm_idx,if (list_empty (&pcm->port_list))return ; -mutex_lock (&pcm->lock); +guard (mutex)(&pcm->lock); pcm->chmap_set = true;memcpy (pcm->chmap, chmap,ARRAY_SIZE (pcm->chmap));list_for_each_entry (port, &pcm->port_list, head)if (prepared)hdac_hdmi_setup_audio_infoframe (hdev, pcm, port); -mutex_unlock (&pcm->lock); }static bool is_hdac_hdmi_pcm_attached (struct hdac_device *hdev,int pcm_idx)
Signature · 1 line
2.43.0
PATCH 32/78 ASoC: codecs: hdmi-codec: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/hdmi-codec.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-)
sound/soc/codecs/hdmi-codec.c +6 -10
@@ -452,31 +452,30 @@ static int hdmi_codec_startup(struct snd_pcm_substream *substream,if (!((has_playback && tx) || (has_capture && !tx)))return 0 ; -mutex_lock (&hcp->lock); +guard (mutex)(&hcp->lock);if (hcp->busy) {dev_err (dai->dev,"Only one simultaneous stream supported!\n" ); -mutex_unlock (&hcp->lock);return -EINVAL ; }if (hcp->hcd.ops->audio_startup) { ret = hcp->hcd.ops->audio_startup (dai->dev->parent, hcp->hcd.data);if (ret) - goto err; +return ret; }if (tx && hcp->hcd.ops->get_eld) { ret = hcp->hcd.ops->get_eld (dai->dev->parent, hcp->hcd.data, hcp->eld,sizeof (hcp->eld));if (ret) - goto err; +return ret;snd_parse_eld (dai->dev, &hcp->eld_parsed, hcp->eld,sizeof (hcp->eld)); ret =snd_pcm_hw_constraint_eld (substream->runtime, hcp->eld);if (ret) - goto err; +return ret;/* Select chmap supported */ hdmi_codec_eld_chmap (hcp);
@@ -484,8 +483,6 @@ static int hdmi_codec_startup(struct snd_pcm_substream *substream, hcp->busy = true; -err: -mutex_unlock (&hcp->lock);return ret; }
@@ -503,9 +500,8 @@ static void hdmi_codec_shutdown(struct snd_pcm_substream *substream, hcp->chmap_idx =HDMI_CODEC_CHMAP_IDX_UNKNOWN ; hcp->hcd.ops->audio_shutdown (dai->dev->parent, hcp->hcd.data); -mutex_lock (&hcp->lock); - hcp->busy = false; -mutex_unlock (&hcp->lock); +scoped_guard (mutex, &hcp->lock) + hcp->busy = false; } static int hdmi_codec_fill_codec_params(struct snd_soc_dai *dai,
Signature · 1 line
2.43.0
PATCH 33/78 ASoC: codecs: idt821034: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/idt821034.c | 120 +++++++++++++++-------------------- 1 file changed, 50 insertions(+), 70 deletions(-)
sound/soc/codecs/idt821034.c +50 -70
@@ -413,12 +413,12 @@ static int idt821034_kctrl_gain_get(struct snd_kcontrol *kcontrol, ch =IDT821034_ID_GET_CHAN (mc->reg); -mutex_lock (&idt821034->mutex); -if (IDT821034_ID_IS_OUT (mc->reg)) - val = idt821034->amps.ch[ch].amp_out.gain; -else - val = idt821034->amps.ch[ch].amp_in.gain; -mutex_unlock (&idt821034->mutex); + scoped_guard(mutex, &idt821034->mutex) { +if (IDT821034_ID_IS_OUT (mc->reg)) + val = idt821034->amps.ch[ch].amp_out.gain; +else + val = idt821034->amps.ch[ch].amp_in.gain; + } ucontrol->value.integer.value[0 ] = val & mask;if (invert)
@@ -456,7 +456,7 @@ static int idt821034_kctrl_gain_put(struct snd_kcontrol *kcontrol, ch =IDT821034_ID_GET_CHAN (mc->reg); -mutex_lock (&idt821034->mutex); +guard (mutex)(&idt821034->mutex);if (IDT821034_ID_IS_OUT (mc->reg)) { amp = &idt821034->amps.ch[ch].amp_out;
@@ -466,21 +466,18 @@ static int idt821034_kctrl_gain_put(struct snd_kcontrol *kcontrol, gain_type =IDT821034_GAIN_TX ; } -if (amp->gain == val) { - ret =0 ; - goto end; - } +if (amp->gain == val) +return 0 ;if (!amp->is_muted) { ret =idt821034_set_gain_channel (idt821034, ch, gain_type, val);if (ret) - goto end; +return ret; } amp->gain = val; ret =1 ;/* The value changed */ -end: -mutex_unlock (&idt821034->mutex); +return ret; }
@@ -495,11 +492,11 @@ static int idt821034_kctrl_mute_get(struct snd_kcontrol *kcontrol, ch =IDT821034_ID_GET_CHAN (id); -mutex_lock (&idt821034->mutex); - is_muted =IDT821034_ID_IS_OUT (id) ? - idt821034->amps.ch[ch].amp_out.is_muted : - idt821034->amps.ch[ch].amp_in.is_muted; -mutex_unlock (&idt821034->mutex); + scoped_guard(mutex, &idt821034->mutex) { + is_muted =IDT821034_ID_IS_OUT (id) ? + idt821034->amps.ch[ch].amp_out.is_muted : + idt821034->amps.ch[ch].amp_in.is_muted; + } ucontrol->value.integer.value[0 ] = !is_muted;
@@ -521,7 +518,7 @@ static int idt821034_kctrl_mute_put(struct snd_kcontrol *kcontrol, ch =IDT821034_ID_GET_CHAN (id); is_mute = !ucontrol->value.integer.value[0 ]; -mutex_lock (&idt821034->mutex); +guard (mutex)(&idt821034->mutex);if (IDT821034_ID_IS_OUT (id)) { amp = &idt821034->amps.ch[ch].amp_out;
@@ -531,20 +528,17 @@ static int idt821034_kctrl_mute_put(struct snd_kcontrol *kcontrol, gain_type =IDT821034_GAIN_TX ; } -if (amp->is_muted == is_mute) { - ret =0 ; - goto end; - } +if (amp->is_muted == is_mute) +return 0 ; ret =idt821034_set_gain_channel (idt821034, ch, gain_type, is_mute ?0 : amp->gain);if (ret) - goto end; +return ret; amp->is_muted = is_mute; ret =1 ;/* The value changed */ -end: -mutex_unlock (&idt821034->mutex); +return ret; }
@@ -629,7 +623,7 @@ static int idt821034_power_event(struct snd_soc_dapm_widget *w, ch =IDT821034_ID_GET_CHAN (id); mask =IDT821034_ID_IS_OUT (id) ?IDT821034_CONF_PWRUP_RX :IDT821034_CONF_PWRUP_TX ; -mutex_lock (&idt821034->mutex); +guard (mutex)(&idt821034->mutex); power =idt821034_get_channel_power (idt821034, ch);if (SND_SOC_DAPM_EVENT_ON (event))
@@ -638,8 +632,6 @@ static int idt821034_power_event(struct snd_soc_dapm_widget *w, power &= ~mask; ret =idt821034_set_channel_power (idt821034, ch, power); -mutex_unlock (&idt821034->mutex); -return ret; }
@@ -717,9 +709,9 @@ static int idt821034_dai_set_tdm_slot(struct snd_soc_dai *dai, ch =0 ;while (mask && ch <IDT821034_NB_CHANNEL ) {if (mask &0x1 ) { -mutex_lock (&idt821034->mutex); - ret =idt821034_set_channel_ts (idt821034, ch,IDT821034_CH_RX , slot); -mutex_unlock (&idt821034->mutex); +scoped_guard (mutex, &idt821034->mutex) + ret = idt821034_set_channel_ts(idt821034, ch, +IDT821034_CH_RX , slot);if (ret) {dev_err (dai->dev,"ch%u set tx tdm slot failed (%d)\n" , ch, ret);
@@ -742,9 +734,9 @@ static int idt821034_dai_set_tdm_slot(struct snd_soc_dai *dai, ch =0 ;while (mask && ch <IDT821034_NB_CHANNEL ) {if (mask &0x1 ) { -mutex_lock (&idt821034->mutex); - ret =idt821034_set_channel_ts (idt821034, ch,IDT821034_CH_TX , slot); -mutex_unlock (&idt821034->mutex); +scoped_guard (mutex, &idt821034->mutex) + ret = idt821034_set_channel_ts(idt821034, ch, +IDT821034_CH_TX , slot);if (ret) {dev_err (dai->dev,"ch%u set rx tdm slot failed (%d)\n" , ch, ret);
@@ -771,7 +763,7 @@ static int idt821034_dai_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)u8 conf;int ret; -mutex_lock (&idt821034->mutex); +guard (mutex)(&idt821034->mutex); conf =idt821034_get_codec_conf (idt821034);
@@ -785,12 +777,10 @@ static int idt821034_dai_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)default :dev_err (dai->dev,"Unsupported DAI format 0x%x\n" , fmt &SND_SOC_DAIFMT_FORMAT_MASK ); - ret = -EINVAL ; - goto end; +return -EINVAL ; } ret =idt821034_set_codec_conf (idt821034, conf); -end: -mutex_unlock (&idt821034->mutex); +return ret; }
@@ -802,7 +792,7 @@ static int idt821034_dai_hw_params(struct snd_pcm_substream *substream,u8 conf;int ret; -mutex_lock (&idt821034->mutex); +guard (mutex)(&idt821034->mutex); conf =idt821034_get_codec_conf (idt821034);
@@ -816,12 +806,10 @@ static int idt821034_dai_hw_params(struct snd_pcm_substream *substream,default :dev_err (dai->dev,"Unsupported PCM format 0x%x\n" ,params_format (params)); - ret = -EINVAL ; - goto end; +return -EINVAL ; } ret =idt821034_set_codec_conf (idt821034, conf); -end: -mutex_unlock (&idt821034->mutex); +return ret; }
@@ -897,11 +885,11 @@ static int idt821034_reset_audio(struct idt821034 *idt821034)int ret;u8 i; -mutex_lock (&idt821034->mutex); +guard (mutex)(&idt821034->mutex); ret =idt821034_set_codec_conf (idt821034,0 );if (ret) - goto end; +return ret;for (i =0 ; i <IDT821034_NB_CHANNEL ; i++) { idt821034->amps.ch[i].amp_out.gain =IDT821034_GAIN_OUT_INIT_RAW ;
@@ -909,23 +897,22 @@ static int idt821034_reset_audio(struct idt821034 *idt821034) ret =idt821034_set_gain_channel (idt821034, i,IDT821034_GAIN_RX , idt821034->amps.ch[i].amp_out.gain);if (ret) - goto end; +return ret; idt821034->amps.ch[i].amp_in.gain =IDT821034_GAIN_IN_INIT_RAW ; idt821034->amps.ch[i].amp_in.is_muted = false; ret =idt821034_set_gain_channel (idt821034, i,IDT821034_GAIN_TX , idt821034->amps.ch[i].amp_in.gain);if (ret) - goto end; +return ret; ret =idt821034_set_channel_power (idt821034, i,0 );if (ret) - goto end; +return ret; } ret =0 ; -end: -mutex_unlock (&idt821034->mutex); +return ret; }
@@ -965,7 +952,7 @@ static int idt821034_chip_gpio_set(struct gpio_chip *c, unsigned int offset,u8 slic_raw;int ret; -mutex_lock (&idt821034->mutex); +guard (mutex)(&idt821034->mutex); slic_raw =idt821034_get_written_slic_raw (idt821034, ch);if (val)
@@ -974,8 +961,6 @@ static int idt821034_chip_gpio_set(struct gpio_chip *c, unsigned int offset, slic_raw &= ~mask; ret =idt821034_write_slic_raw (idt821034, ch, slic_raw); -mutex_unlock (&idt821034->mutex); -if (ret)dev_err (&idt821034->spi->dev,"set gpio %d (%u, 0x%x) failed (%d)\n" , offset, ch, mask, ret);
@@ -991,9 +976,8 @@ static int idt821034_chip_gpio_get(struct gpio_chip *c, unsigned int offset)u8 slic_raw;int ret; -mutex_lock (&idt821034->mutex); - ret =idt821034_read_slic_raw (idt821034, ch, &slic_raw); -mutex_unlock (&idt821034->mutex); +scoped_guard (mutex, &idt821034->mutex) + ret = idt821034_read_slic_raw(idt821034, ch, &slic_raw);if (ret) {dev_err (&idt821034->spi->dev,"get gpio %d (%u, 0x%x) failed (%d)\n" , offset, ch, mask, ret);
@@ -1015,9 +999,8 @@ static int idt821034_chip_get_direction(struct gpio_chip *c, unsigned int offsetstruct idt821034 *idt821034 =gpiochip_get_data (c);u8 slic_dir; -mutex_lock (&idt821034->mutex); +guard (mutex)(&idt821034->mutex); slic_dir =idt821034_get_slic_conf (idt821034, ch); -mutex_unlock (&idt821034->mutex);return slic_dir & mask ?GPIO_LINE_DIRECTION_IN :GPIO_LINE_DIRECTION_OUT ; }
@@ -1034,7 +1017,7 @@ static int idt821034_chip_direction_input(struct gpio_chip *c, unsigned int offsif (mask & ~(IDT821034_SLIC_IO1_IN |IDT821034_SLIC_IO0_IN ))return -EPERM ; -mutex_lock (&idt821034->mutex); +guard (mutex)(&idt821034->mutex); slic_conf =idt821034_get_slic_conf (idt821034, ch) | mask;
@@ -1044,7 +1027,6 @@ static int idt821034_chip_direction_input(struct gpio_chip *c, unsigned int offs offset, ch, mask, ret); } -mutex_unlock (&idt821034->mutex);return ret; }
@@ -1060,7 +1042,7 @@ static int idt821034_chip_direction_output(struct gpio_chip *c, unsigned int offif (ret)return ret; -mutex_lock (&idt821034->mutex); +guard (mutex)(&idt821034->mutex); slic_conf =idt821034_get_slic_conf (idt821034, ch) & ~mask;
@@ -1070,7 +1052,6 @@ static int idt821034_chip_direction_output(struct gpio_chip *c, unsigned int off offset, ch, mask, ret); } -mutex_unlock (&idt821034->mutex);return ret; }
@@ -1079,23 +1060,22 @@ static int idt821034_reset_gpio(struct idt821034 *idt821034)int ret;u8 i; -mutex_lock (&idt821034->mutex); +guard (mutex)(&idt821034->mutex);/* IO0 and IO1 as input for all channels and output IO set to 0 */ for (i =0 ; i <IDT821034_NB_CHANNEL ; i++) { ret =idt821034_set_slic_conf (idt821034, i,IDT821034_SLIC_IO1_IN |IDT821034_SLIC_IO0_IN );if (ret) - goto end; +return ret; ret =idt821034_write_slic_raw (idt821034, i,0 );if (ret) - goto end; +return ret; } ret =0 ; -end: -mutex_unlock (&idt821034->mutex); +return ret; }
Signature · 1 line
2.43.0
PATCH 34/78 ASoC: codecs: lpass-macro: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/lpass-macro-common.c | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-)
sound/soc/codecs/lpass-macro-common.c +3 -8
@@ -71,21 +71,16 @@ EXPORT_SYMBOL_GPL(lpass_macro_pds_exit);void lpass_macro_set_codec_version (enum lpass_codec_version version) { -mutex_lock (&lpass_codec_mutex); +guard (mutex)(&lpass_codec_mutex); lpass_codec_version = version; -mutex_unlock (&lpass_codec_mutex); }EXPORT_SYMBOL_GPL (lpass_macro_set_codec_version);enum lpass_codec_version lpass_macro_get_codec_version (void ) { -enum lpass_codec_version ver; +guard (mutex)(&lpass_codec_mutex); -mutex_lock (&lpass_codec_mutex); - ver = lpass_codec_version; -mutex_unlock (&lpass_codec_mutex); - -return ver; +return lpass_codec_version; }EXPORT_SYMBOL_GPL (lpass_macro_get_codec_version);
Signature · 1 line
2.43.0
PATCH 35/78 ASoC: codecs: madera: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/madera.c | 31 +++++++++---------------------- 1 file changed, 9 insertions(+), 22 deletions(-)
sound/soc/codecs/madera.c +9 -22
@@ -513,7 +513,7 @@ int madera_domain_clk_ev(struct snd_soc_dapm_widget *w,* We can't rely on the DAPM mutex for locking because we need a lock * that can safely be called in hw_params */ -mutex_lock (&priv->rate_lock); +guard (mutex)(&priv->rate_lock);switch (event) {case SND_SOC_DAPM_PRE_PMU :
@@ -532,8 +532,6 @@ int madera_domain_clk_ev(struct snd_soc_dapm_widget *w,madera_debug_dump_domain_groups (priv); -mutex_unlock (&priv->rate_lock); -return 0 ; }EXPORT_SYMBOL_GPL (madera_domain_clk_ev);
@@ -875,9 +873,8 @@ static int madera_adsp_rate_get(struct snd_kcontrol *kcontrol,const int adsp_num = e->shift_l;int item; -mutex_lock (&priv->rate_lock); - cached_rate = priv->adsp_rate_cache[adsp_num]; -mutex_unlock (&priv->rate_lock); + scoped_guard(mutex, &priv->rate_lock) + cached_rate = priv->adsp_rate_cache[adsp_num]; item =snd_soc_enum_val_to_item (e, cached_rate); ucontrol->value.enumerated.item[0 ] = item;
@@ -903,7 +900,7 @@ static int madera_adsp_rate_put(struct snd_kcontrol *kcontrol,* maintain consistent behaviour that rate domains cannot be changed * while in use since this is a hardware requirement */ -mutex_lock (&priv->rate_lock); +guard (mutex)(&priv->rate_lock);if (!madera_can_change_grp_rate (priv, priv->adsp[adsp_num].cs_dsp.base)) { dev_warn(priv->madera->dev,
@@ -916,8 +913,6 @@ static int madera_adsp_rate_put(struct snd_kcontrol *kcontrol, ret =1 ; } -mutex_unlock (&priv->rate_lock); -return ret; }
@@ -1061,15 +1056,13 @@ int madera_rate_put(struct snd_kcontrol *kcontrol,* Prevent the domain powering up while we're checking whether it's * safe to change rate domain */ -mutex_lock (&priv->rate_lock); +guard (mutex)(&priv->rate_lock); val =snd_soc_component_read (component, e->reg); val >>= e->shift_l; val &= e->mask; -if (snd_soc_enum_item_to_val (e, item) == val) { - ret =0 ; - goto out; - } +if (snd_soc_enum_item_to_val (e, item) == val) +return 0 ;if (!madera_can_change_grp_rate (priv, e->reg)) { dev_warn(priv->madera->dev,
@@ -1082,8 +1075,6 @@ int madera_rate_put(struct snd_kcontrol *kcontrol, ret =snd_soc_put_enum_double (kcontrol, ucontrol);madera_spin_sysclk (priv); } -out: -mutex_unlock (&priv->rate_lock);return ret; }
@@ -3041,12 +3032,11 @@ static int madera_hw_params_rate(struct snd_pcm_substream *substream,if ((cur &MADERA_AIF1_RATE_MASK ) == (tar &MADERA_AIF1_RATE_MASK ))return 0 ; -mutex_lock (&priv->rate_lock); +guard (mutex)(&priv->rate_lock);if (!madera_can_change_grp_rate (priv, base +MADERA_AIF_RATE_CTRL )) {madera_aif_warn (dai,"Cannot change rate while active\n" ); - ret = -EBUSY ; - goto out; +return -EBUSY ; }/* Guard the rate change with SYSCLK cycles */
@@ -3055,9 +3045,6 @@ static int madera_hw_params_rate(struct snd_pcm_substream *substream, MADERA_AIF1_RATE_MASK, tar);madera_spin_sysclk (priv); -out: -mutex_unlock (&priv->rate_lock); -return ret; }
Signature · 1 line
2.43.0
PATCH 36/78 ASoC: codecs: max98095: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/max98095.c | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-)
sound/soc/codecs/max98095.c +19 -15
@@ -1532,15 +1532,17 @@ static int max98095_put_eq_enum(struct snd_kcontrol *kcontrol, regsave =snd_soc_component_read (component,M98095_088_CFG_LEVEL );snd_soc_component_update_bits (component,M98095_088_CFG_LEVEL , regmask,0 ); -mutex_lock (&max98095->lock); -snd_soc_component_update_bits (component,M98095_00F_HOST_CFG ,M98095_SEG ,M98095_SEG ); -m98095_eq_band (component, channel,0 , coef_set->band1); -m98095_eq_band (component, channel,1 , coef_set->band2); -m98095_eq_band (component, channel,2 , coef_set->band3); -m98095_eq_band (component, channel,3 , coef_set->band4); -m98095_eq_band (component, channel,4 , coef_set->band5); -snd_soc_component_update_bits (component,M98095_00F_HOST_CFG ,M98095_SEG ,0 ); -mutex_unlock (&max98095->lock); + scoped_guard(mutex, &max98095->lock) { +snd_soc_component_update_bits (component,M98095_00F_HOST_CFG , +M98095_SEG ,M98095_SEG ); +m98095_eq_band (component, channel,0 , coef_set->band1); +m98095_eq_band (component, channel,1 , coef_set->band2); +m98095_eq_band (component, channel,2 , coef_set->band3); +m98095_eq_band (component, channel,3 , coef_set->band4); +m98095_eq_band (component, channel,4 , coef_set->band5); +snd_soc_component_update_bits (component,M98095_00F_HOST_CFG , +M98095_SEG ,0 ); + }/* Restore the original on/off state */ snd_soc_component_update_bits (component,M98095_088_CFG_LEVEL , regmask, regsave);
@@ -1683,12 +1685,14 @@ static int max98095_put_bq_enum(struct snd_kcontrol *kcontrol, regsave =snd_soc_component_read (component,M98095_088_CFG_LEVEL );snd_soc_component_update_bits (component,M98095_088_CFG_LEVEL , regmask,0 ); -mutex_lock (&max98095->lock); -snd_soc_component_update_bits (component,M98095_00F_HOST_CFG ,M98095_SEG ,M98095_SEG ); -m98095_biquad_band (component, channel,0 , coef_set->band1); -m98095_biquad_band (component, channel,1 , coef_set->band2); -snd_soc_component_update_bits (component,M98095_00F_HOST_CFG ,M98095_SEG ,0 ); -mutex_unlock (&max98095->lock); + scoped_guard(mutex, &max98095->lock) { +snd_soc_component_update_bits (component,M98095_00F_HOST_CFG , +M98095_SEG ,M98095_SEG ); +m98095_biquad_band (component, channel,0 , coef_set->band1); +m98095_biquad_band (component, channel,1 , coef_set->band2); +snd_soc_component_update_bits (component,M98095_00F_HOST_CFG , +M98095_SEG ,0 ); + }/* Restore the original on/off state */ snd_soc_component_update_bits (component,M98095_088_CFG_LEVEL , regmask, regsave);
Signature · 1 line
2.43.0
PATCH 37/78 ASoC: codecs: mt6359-accdet: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/mt6359-accdet.c | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-)
sound/soc/codecs/mt6359-accdet.c +3 -9
@@ -398,14 +398,13 @@ static void mt6359_accdet_work(struct work_struct *work)struct mt6359_accdet *priv = container_of(work, struct mt6359_accdet, accdet_work); -mutex_lock (&priv->res_lock); +guard (mutex)(&priv->res_lock); priv->pre_accdet_status = priv->accdet_status;check_jack_btn_type (priv);if (priv->jack_plugged && priv->pre_accdet_status != priv->accdet_status)mt6359_accdet_jack_report (priv); -mutex_unlock (&priv->res_lock); }static void mt6359_accdet_jd_work (struct work_struct *work)
@@ -416,7 +415,7 @@ static void mt6359_accdet_jd_work(struct work_struct *work)struct mt6359_accdet *priv = container_of(work, struct mt6359_accdet, jd_work); -mutex_lock (&priv->res_lock); +guard (mutex)(&priv->res_lock);if (priv->jd_sts ==M_PLUG_IN ) { priv->jack_plugged = true;
@@ -450,7 +449,6 @@ static void mt6359_accdet_jd_work(struct work_struct *work)if (priv->caps &ACCDET_PMIC_EINT_IRQ )recover_eint_setting (priv); -mutex_unlock (&priv->res_lock); }static irqreturn_t mt6359_accdet_irq (int irq,void *data)
@@ -459,7 +457,7 @@ static irqreturn_t mt6359_accdet_irq(int irq, void *data)unsigned int irq_val =0 , val =0 , value =0 ;int ret; -mutex_lock (&priv->res_lock); +guard (mutex)(&priv->res_lock);regmap_read (priv->regmap,ACCDET_IRQ_ADDR , &irq_val);if (irq_val &ACCDET_IRQ_MASK_SFT ) {
@@ -474,7 +472,6 @@ static irqreturn_t mt6359_accdet_irq(int irq, void *data) 1000);if (ret) {dev_err (priv->dev,"%s(), ret %d\n" , __func__, ret); -mutex_unlock (&priv->res_lock);return IRQ_NONE ; } regmap_update_bits(priv->regmap, ACCDET_IRQ_ADDR,
@@ -498,7 +495,6 @@ static irqreturn_t mt6359_accdet_irq(int irq, void *data)if (ret) {dev_err (priv->dev,"%s(), ret %d\n" , __func__, ret); -mutex_unlock (&priv->res_lock);return IRQ_NONE ; } regmap_update_bits(priv->regmap, ACCDET_IRQ_ADDR,
@@ -521,7 +517,6 @@ static irqreturn_t mt6359_accdet_irq(int irq, void *data)if (ret) {dev_err (priv->dev,"%s(), ret %d\n" , __func__, ret); -mutex_unlock (&priv->res_lock);return IRQ_NONE ; } regmap_update_bits(priv->regmap, ACCDET_IRQ_ADDR,
@@ -540,7 +535,6 @@ static irqreturn_t mt6359_accdet_irq(int irq, void *data)queue_work (priv->jd_workqueue, &priv->jd_work); } -mutex_unlock (&priv->res_lock);return IRQ_HANDLED ; }
Signature · 1 line
2.43.0
PATCH 38/78 ASoC: codecs: pcm512x: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/pcm512x.c | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-)
sound/soc/codecs/pcm512x.c +5 -12
@@ -399,10 +399,9 @@ static int pcm512x_digital_playback_switch_get(struct snd_kcontrol *kcontrol,struct snd_soc_component *component =snd_kcontrol_chip (kcontrol);struct pcm512x_priv *pcm512x =snd_soc_component_get_drvdata (component); -mutex_lock (&pcm512x->mutex); +guard (mutex)(&pcm512x->mutex); ucontrol->value.integer.value[0 ] = !(pcm512x->mute &0x4 ); ucontrol->value.integer.value[1 ] = !(pcm512x->mute &0x2 ); -mutex_unlock (&pcm512x->mutex);return 0 ; }
@@ -414,7 +413,7 @@ static int pcm512x_digital_playback_switch_put(struct snd_kcontrol *kcontrol,struct pcm512x_priv *pcm512x =snd_soc_component_get_drvdata (component);int ret, changed =0 ; -mutex_lock (&pcm512x->mutex); +guard (mutex)(&pcm512x->mutex);if ((pcm512x->mute &0x4 ) == (ucontrol->value.integer.value[0 ] <<2 )) { pcm512x->mute ^=0x4 ;
@@ -430,13 +429,10 @@ static int pcm512x_digital_playback_switch_put(struct snd_kcontrol *kcontrol,if (ret !=0 ) {dev_err (component->dev,"Failed to update digital mute: %d\n" , ret); -mutex_unlock (&pcm512x->mutex);return ret; } } -mutex_unlock (&pcm512x->mutex); -return changed; }
@@ -1465,7 +1461,7 @@ static int pcm512x_mute(struct snd_soc_dai *dai, int mute, int direction)int ret;unsigned int mute_det; -mutex_lock (&pcm512x->mutex); +guard (mutex)(&pcm512x->mutex);if (mute) { pcm512x->mute |=0x1 ;
@@ -1475,7 +1471,7 @@ static int pcm512x_mute(struct snd_soc_dai *dai, int mute, int direction)if (ret !=0 ) {dev_err (component->dev,"Failed to set digital mute: %d\n" , ret); - goto unlock; +return ret; } regmap_read_poll_timeout(pcm512x->regmap,
@@ -1488,7 +1484,7 @@ static int pcm512x_mute(struct snd_soc_dai *dai, int mute, int direction)if (ret !=0 ) {dev_err (component->dev,"Failed to update digital mute: %d\n" , ret); - goto unlock; +return ret; } regmap_read_poll_timeout(pcm512x->regmap,
@@ -1499,9 +1495,6 @@ static int pcm512x_mute(struct snd_soc_dai *dai, int mute, int direction) 200, 10000); } -unlock: -mutex_unlock (&pcm512x->mutex); -return ret; }
Signature · 1 line
2.43.0
PATCH 39/78 ASoC: codecs: pcm6240: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/pcm6240.c | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-)
sound/soc/codecs/pcm6240.c +12 -15
@@ -605,7 +605,7 @@ static int pcmdev_get_volsw(struct snd_kcontrol *kcontrol,unsigned int reg = mc->reg;unsigned int val; -mutex_lock (&pcm_dev->codec_lock); +guard (mutex)(&pcm_dev->codec_lock);if (pcm_dev->chip_id ==PCM1690 ) { ret = pcmdev_dev_read(pcm_dev, dev_no, PCM1690_REG_MODE_CTRL,
@@ -613,18 +613,18 @@ static int pcmdev_get_volsw(struct snd_kcontrol *kcontrol,if (ret) {dev_err (pcm_dev->dev,"%s: read mode err=%d\n" , __func__, ret); - goto out; +return ret; } val &=PCM1690_REG_MODE_CTRL_DAMS_MSK ;/* Set to wide-range mode, before using vol ctrl. */ if (!val && vol_ctrl_type ==PCMDEV_PCM1690_VOL_CTRL ) { ucontrol->value.integer.value[0 ] =-25500 ; - goto out; +return ret; }/* Set to fine mode, before using fine vol ctrl. */ if (val && vol_ctrl_type ==PCMDEV_PCM1690_FINE_VOL_CTRL ) { ucontrol->value.integer.value[0 ] =-12750 ; - goto out; +return ret; } }
@@ -632,15 +632,14 @@ static int pcmdev_get_volsw(struct snd_kcontrol *kcontrol,if (ret) {dev_err (pcm_dev->dev,"%s: read err=%d\n" , __func__, ret); - goto out; +return ret; } val = (val >> shift) & mask; val = (val > max) ? max : val; val = mc->invert ? max - val : val; ucontrol->value.integer.value[0 ] = val; -out: -mutex_unlock (&pcm_dev->codec_lock); +return ret; }
@@ -678,7 +677,7 @@ static int pcmdev_put_volsw(struct snd_kcontrol *kcontrol,unsigned int val, val_mask;unsigned int reg = mc->reg; -mutex_lock (&pcm_dev->codec_lock); +guard (mutex)(&pcm_dev->codec_lock); val = ucontrol->value.integer.value[0 ] & mask; val = (val > max) ? max : val; val = mc->invert ? max - val : val;
@@ -702,7 +701,7 @@ static int pcmdev_put_volsw(struct snd_kcontrol *kcontrol, __func__, rc); else rc =1 ; -mutex_unlock (&pcm_dev->codec_lock); +return rc; }
@@ -1580,7 +1579,7 @@ static int pcmdevice_comp_probe(struct snd_soc_component *comp)const struct firmware *fw_entry =NULL ;int ret, i, j; -mutex_lock (&pcm_dev->codec_lock); +guard (mutex)(&pcm_dev->codec_lock); pcm_dev->component = comp;
@@ -1634,7 +1633,6 @@ static int pcmdevice_comp_probe(struct snd_soc_component *comp) out:release_firmware (fw_entry); -mutex_unlock (&pcm_dev->codec_lock);return ret; }
@@ -1645,9 +1643,8 @@ static void pcmdevice_comp_remove(struct snd_soc_component *codec)if (!pcm_dev)return ; -mutex_lock (&pcm_dev->codec_lock); +guard (mutex)(&pcm_dev->codec_lock);pcmdevice_config_info_remove (pcm_dev); -mutex_unlock (&pcm_dev->codec_lock); }static const struct snd_soc_dapm_widget pcmdevice_dapm_widgets[] = {
@@ -1890,9 +1887,9 @@ static int pcmdevice_mute(struct snd_soc_dai *dai, int mute, int stream)else block_type =PCMDEVICE_BIN_BLK_PRE_POWER_UP ; -mutex_lock (&pcm_dev->codec_lock); +guard (mutex)(&pcm_dev->codec_lock);pcmdevice_select_cfg_blk (pcm_dev, pcm_dev->cur_conf, block_type); -mutex_unlock (&pcm_dev->codec_lock); +return 0 ; }
Signature · 1 line
2.43.0
PATCH 40/78 ASoC: codecs: peb2466: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/peb2466.c | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-)
sound/soc/codecs/peb2466.c +5 -10
@@ -1704,13 +1704,11 @@ static int peb2466_chip_gpio_update_bits(struct peb2466 *peb2466, unsigned int x* So, a specific cache value is used. */ -mutex_lock (&peb2466->gpio.lock); +guard (mutex)(&peb2466->gpio.lock); cache =peb2466_chip_gpio_get_cache (peb2466, xr_reg); -if (!cache) { - ret = -EINVAL ; - goto end; - } +if (!cache) +return -EINVAL ; tmp = *cache; tmp &= ~mask;
@@ -1718,14 +1716,11 @@ static int peb2466_chip_gpio_update_bits(struct peb2466 *peb2466, unsigned int x ret =regmap_write (peb2466->regmap, xr_reg, tmp);if (ret) - goto end; +return ret; *cache = tmp; - ret =0 ; -end: -mutex_unlock (&peb2466->gpio.lock); -return ret; +return 0 ; } static int peb2466_chip_gpio_set(struct gpio_chip *c, unsigned int offset,
Signature · 1 line
2.43.0
PATCH 41/78 ASoC: codecs: rt5514-spi: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/rt5514-spi.c | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-)
sound/soc/codecs/rt5514-spi.c +7 -13
@@ -79,17 +79,17 @@ static void rt5514_spi_copy_work(struct work_struct *work)unsigned int cur_wp, remain_data;u8 buf[8 ]; -mutex_lock (&rt5514_dsp->dma_lock); +guard (mutex)(&rt5514_dsp->dma_lock);if (!rt5514_dsp->substream) {dev_err (rt5514_dsp->dev,"No pcm substream\n" ); - goto done; +return ; } runtime = rt5514_dsp->substream->runtime; period_bytes =snd_pcm_lib_period_bytes (rt5514_dsp->substream);if (!period_bytes) {schedule_delayed_work (&rt5514_dsp->copy_work,5 ); - goto done; +return ; }if (rt5514_dsp->buf_size % period_bytes)
@@ -111,7 +111,7 @@ static void rt5514_spi_copy_work(struct work_struct *work)if (remain_data < period_bytes) {schedule_delayed_work (&rt5514_dsp->copy_work,5 ); - goto done; +return ; } }
@@ -146,9 +146,6 @@ static void rt5514_spi_copy_work(struct work_struct *work)snd_pcm_period_elapsed (rt5514_dsp->substream);schedule_delayed_work (&rt5514_dsp->copy_work,5 ); - -done: -mutex_unlock (&rt5514_dsp->dma_lock); }static void rt5514_schedule_copy (struct rt5514_dsp *rt5514_dsp)
@@ -216,7 +213,7 @@ static int rt5514_spi_hw_params(struct snd_soc_component *component,snd_soc_component_get_drvdata (component);u8 buf[8 ]; -mutex_lock (&rt5514_dsp->dma_lock); +guard (mutex)(&rt5514_dsp->dma_lock); rt5514_dsp->substream = substream; rt5514_dsp->dma_offset =0 ;
@@ -225,8 +222,6 @@ static int rt5514_spi_hw_params(struct snd_soc_component *component,if (buf[0 ] &RT5514_IRQ_STATUS_BIT )rt5514_schedule_copy (rt5514_dsp); -mutex_unlock (&rt5514_dsp->dma_lock); -return 0 ; }
@@ -236,9 +231,8 @@ static int rt5514_spi_hw_free(struct snd_soc_component *component,struct rt5514_dsp *rt5514_dsp =snd_soc_component_get_drvdata (component); -mutex_lock (&rt5514_dsp->dma_lock); - rt5514_dsp->substream =NULL ; -mutex_unlock (&rt5514_dsp->dma_lock); +scoped_guard (mutex, &rt5514_dsp->dma_lock) + rt5514_dsp->substream = NULL;cancel_delayed_work_sync (&rt5514_dsp->copy_work);
Signature · 1 line
2.43.0
PATCH 42/78 ASoC: codecs: rt5645: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/rt5645.c | 161 +++++++++++++++++++------------------- 1 file changed, 80 insertions(+), 81 deletions(-)
sound/soc/codecs/rt5645.c +80 -81
@@ -3325,93 +3325,92 @@ static void rt5645_jack_detect_work(struct work_struct *work)if (!rt5645->component)return ; -mutex_lock (&rt5645->jd_mutex); - -switch (rt5645->pdata.jd_mode) { -case 0 :/* Not using rt5645 JD */ -if (rt5645->gpiod_hp_det) { - gpio_state =gpiod_get_value (rt5645->gpiod_hp_det); -if (rt5645->pdata.inv_hp_pol) - gpio_state ^=1 ; -dev_dbg (rt5645->component->dev,"gpio_state = %d\n" , - gpio_state); - report =rt5645_jack_detect (rt5645->component, gpio_state); - } -snd_soc_jack_report (rt5645->hp_jack, - report,SND_JACK_HEADPHONE ); -snd_soc_jack_report (rt5645->mic_jack, - report,SND_JACK_MICROPHONE ); -mutex_unlock (&rt5645->jd_mutex); -return ; -case 4 : - val =snd_soc_component_read (rt5645->component,RT5645_A_JD_CTRL1 ) &0x0020 ; -break ; -default :/* read rt5645 jd1_1 status */ - val =snd_soc_component_read (rt5645->component,RT5645_INT_IRQ_ST ) &0x1000 ; -break ; + scoped_guard(mutex, &rt5645->jd_mutex) { +switch (rt5645->pdata.jd_mode) { +case 0 :/* Not using rt5645 JD */ +if (rt5645->gpiod_hp_det) { + gpio_state =gpiod_get_value (rt5645->gpiod_hp_det); +if (rt5645->pdata.inv_hp_pol) + gpio_state ^=1 ; +dev_dbg (rt5645->component->dev,"gpio_state = %d\n" , + gpio_state); + report =rt5645_jack_detect (rt5645->component, gpio_state); + } +snd_soc_jack_report (rt5645->hp_jack, + report,SND_JACK_HEADPHONE ); +snd_soc_jack_report (rt5645->mic_jack, + report,SND_JACK_MICROPHONE ); +return ; +case 4 : + val =snd_soc_component_read (rt5645->component,RT5645_A_JD_CTRL1 ) &0x0020 ; +break ; +default :/* read rt5645 jd1_1 status */ + val =snd_soc_component_read (rt5645->component,RT5645_INT_IRQ_ST ) &0x1000 ; +break ; - } + } -if (!val && (rt5645->jack_type ==0 )) {/* jack in */ - report =rt5645_jack_detect (rt5645->component,1 ); - }else if (!val && rt5645->jack_type ==SND_JACK_HEADSET ) { -/* for push button and jack out */ - btn_type =0 ; -if (snd_soc_component_read (rt5645->component,RT5645_INT_IRQ_ST ) &0x4 ) { -/* button pressed */ - report =SND_JACK_HEADSET ; - btn_type =rt5645_button_detect (rt5645->component); -/* rt5650 can report three kinds of button behavior, -one click, double click and hold. However, -currently we will report button pressed/released -event. So all the three button behaviors are -treated as button pressed. */ -switch (btn_type) { -case 0x8000 : -case 0x4000 : -case 0x2000 : - report |=SND_JACK_BTN_0 ; -break ; -case 0x1000 : -case 0x0800 : -case 0x0400 : - report |=SND_JACK_BTN_1 ; -break ; -case 0x0200 : -case 0x0100 : -case 0x0080 : - report |=SND_JACK_BTN_2 ; -break ; -case 0x0040 : -case 0x0020 : -case 0x0010 : - report |=SND_JACK_BTN_3 ; -break ; -case 0x0000 :/* unpressed */ -break ; -default : -dev_err (rt5645->component->dev, -"Unexpected button code 0x%04x\n" , - btn_type); -break ; +if (!val && (rt5645->jack_type ==0 )) {/* jack in */ + report =rt5645_jack_detect (rt5645->component,1 ); + }else if (!val && rt5645->jack_type ==SND_JACK_HEADSET ) { +/* for push button and jack out */ + btn_type =0 ; +if (snd_soc_component_read (rt5645->component,RT5645_INT_IRQ_ST ) &0x4 ) { +/* button pressed */ + report =SND_JACK_HEADSET ; + btn_type =rt5645_button_detect (rt5645->component); +/* +* rt5650 can report three kinds of button behavior, +* one click, double click and hold. However, +* currently we will report button pressed/released +* event. So all the three button behaviors are +* treated as button pressed. +*/ +switch (btn_type) { +case 0x8000 : +case 0x4000 : +case 0x2000 : + report |=SND_JACK_BTN_0 ; +break ; +case 0x1000 : +case 0x0800 : +case 0x0400 : + report |=SND_JACK_BTN_1 ; +break ; +case 0x0200 : +case 0x0100 : +case 0x0080 : + report |=SND_JACK_BTN_2 ; +break ; +case 0x0040 : +case 0x0020 : +case 0x0010 : + report |=SND_JACK_BTN_3 ; +break ; +case 0x0000 :/* unpressed */ +break ; +default : +dev_err (rt5645->component->dev, +"Unexpected button code 0x%04x\n" , + btn_type); +break ; + } } +if (btn_type ==0 )/* button release */ + report = rt5645->jack_type; +else { +mod_timer (&rt5645->btn_check_timer, +msecs_to_jiffies (100 )); + } + }else { +/* jack out */ + report =0 ; +snd_soc_component_update_bits (rt5645->component, +RT5645_INT_IRQ_ST ,0x1 ,0x0 ); +rt5645_jack_detect (rt5645->component,0 ); } -if (btn_type ==0 )/* button release */ - report = rt5645->jack_type; -else { -mod_timer (&rt5645->btn_check_timer, -msecs_to_jiffies (100 )); - } - }else { -/* jack out */ - report =0 ; -snd_soc_component_update_bits (rt5645->component, -RT5645_INT_IRQ_ST ,0x1 ,0x0 ); -rt5645_jack_detect (rt5645->component,0 ); } -mutex_unlock (&rt5645->jd_mutex); -snd_soc_jack_report (rt5645->hp_jack, report,SND_JACK_HEADPHONE );snd_soc_jack_report (rt5645->mic_jack, report,SND_JACK_MICROPHONE );if (rt5645->en_button_func)
Signature · 1 line
2.43.0
PATCH 43/78 ASoC: codecs: rt5665: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/rt5665.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-)
sound/soc/codecs/rt5665.c +2 -5
@@ -1208,7 +1208,7 @@ static void rt5665_jack_detect_handler(struct work_struct *work)usleep_range (10000 ,15000 ); } -mutex_lock (&rt5665->calibrate_mutex); +guard (mutex)(&rt5665->calibrate_mutex); val =snd_soc_component_read (rt5665->component,RT5665_AJD1_CTRL ) &0x0010 ;if (!val) {
@@ -1274,8 +1274,6 @@ static void rt5665_jack_detect_handler(struct work_struct *work)schedule_delayed_work (&rt5665->jd_check_work,0 ); else cancel_delayed_work_sync(&rt5665->jd_check_work); - -mutex_unlock (&rt5665->calibrate_mutex); }static const char *const rt5665_clk_sync[] = {
@@ -4564,7 +4562,7 @@ static void rt5665_calibrate(struct rt5665_priv *rt5665) {int value, count; -mutex_lock (&rt5665->calibrate_mutex); +guard (mutex)(&rt5665->calibrate_mutex);regcache_cache_bypass (rt5665->regmap, true);
@@ -4637,7 +4635,6 @@ static void rt5665_calibrate(struct rt5665_priv *rt5665) out_unlock: rt5665->calibration_done = true; -mutex_unlock (&rt5665->calibrate_mutex); }static void rt5665_calibrate_handler (struct work_struct *work)
Signature · 1 line
2.43.0
PATCH 44/78 ASoC: codecs: rt5668: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/rt5668.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-)
sound/soc/codecs/rt5668.c +2 -7
@@ -986,7 +986,7 @@ static void rt5668_jack_detect_handler(struct work_struct *work)return ; } -mutex_lock (&rt5668->calibrate_mutex); +guard (mutex)(&rt5668->calibrate_mutex); val =snd_soc_component_read (rt5668->component,RT5668_AJD1_CTRL ) &RT5668_JDH_RS_MASK ;
@@ -1053,8 +1053,6 @@ static void rt5668_jack_detect_handler(struct work_struct *work)schedule_delayed_work (&rt5668->jd_check_work,0 ); else cancel_delayed_work_sync(&rt5668->jd_check_work); - -mutex_unlock (&rt5668->calibrate_mutex); }static const struct snd_kcontrol_new rt5668_snd_controls[] = {
@@ -2356,7 +2354,7 @@ static void rt5668_calibrate(struct rt5668_priv *rt5668) {int value, count; -mutex_lock (&rt5668->calibrate_mutex); +guard (mutex)(&rt5668->calibrate_mutex);rt5668_reset (rt5668->regmap);regmap_write (rt5668->regmap,RT5668_PWR_ANLG_1 ,0xa2bf );
@@ -2400,9 +2398,6 @@ static void rt5668_calibrate(struct rt5668_priv *rt5668)/* restore settings */ regmap_write (rt5668->regmap,RT5668_STO1_ADC_MIXER ,0xc0c4 );regmap_write (rt5668->regmap,RT5668_PWR_DIG_1 ,0x0000 ); - -mutex_unlock (&rt5668->calibrate_mutex); - }static int rt5668_i2c_probe (struct i2c_client *i2c)
Signature · 1 line
2.43.0
PATCH 45/78 ASoC: codecs: rt5677: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/rt5677-spi.c | 35 +++++++--------- sound/soc/codecs/rt5677.c | 77 ++++++++++++++++------------------- 2 files changed, 48 insertions(+), 64 deletions(-)
sound/soc/codecs/rt5677-spi.c +14 -21
@@ -133,9 +133,8 @@ static int rt5677_spi_hw_params(struct rt5677_dsp *rt5677_dsp =snd_soc_component_get_drvdata (component); -mutex_lock (&rt5677_dsp->dma_lock); +guard (mutex)(&rt5677_dsp->dma_lock); rt5677_dsp->substream = substream; -mutex_unlock (&rt5677_dsp->dma_lock);return 0 ; }
@@ -147,9 +146,8 @@ static int rt5677_spi_hw_free(struct rt5677_dsp *rt5677_dsp =snd_soc_component_get_drvdata (component); -mutex_lock (&rt5677_dsp->dma_lock); +guard (mutex)(&rt5677_dsp->dma_lock); rt5677_dsp->substream =NULL ; -mutex_unlock (&rt5677_dsp->dma_lock);return 0 ; }
@@ -311,17 +309,17 @@ static void rt5677_spi_copy_work(struct work_struct *work)int ret =0 ;/* Ensure runtime->dma_area buffer does not go away while copying. */ -mutex_lock (&rt5677_dsp->dma_lock); +guard (mutex)(&rt5677_dsp->dma_lock);if (!rt5677_dsp->substream) {dev_err (rt5677_dsp->dev,"No pcm substream\n" ); - goto done; +return ; } runtime = rt5677_dsp->substream->runtime;if (rt5677_spi_mic_write_offset (&mic_write_offset)) {dev_err (rt5677_dsp->dev,"No mic_write_offset\n" ); - goto done; +return ; }/* If this is the first time that we've asked for streaming data after
@@ -355,7 +353,7 @@ static void rt5677_spi_copy_work(struct work_struct *work) ret =rt5677_spi_copy (rt5677_dsp, copy_bytes);if (ret) {dev_err (rt5677_dsp->dev,"Copy failed %d\n" , ret); - goto done; +return ; } rt5677_dsp->avail_bytes += copy_bytes;if (rt5677_dsp->avail_bytes >= period_bytes) {
@@ -367,8 +365,6 @@ static void rt5677_spi_copy_work(struct work_struct *work) delay =bytes_to_frames (runtime, period_bytes) / runtime->rate;schedule_delayed_work (&rt5677_dsp->copy_work,secs_to_jiffies (delay)); -done: -mutex_unlock (&rt5677_dsp->dma_lock); } static int rt5677_spi_pcm_new(struct snd_soc_component *component,
@@ -507,10 +503,8 @@ int rt5677_spi_read(u32 addr, void *rxbuf, size_t len) header[3 ] = ((addr + offset) &0x0000ff00 ) >>8 ; header[4 ] = ((addr + offset) &0x000000ff ) >>0 ; -mutex_lock (&spi_mutex); - status |=spi_sync (g_spi, &m); -mutex_unlock (&spi_mutex); - +scoped_guard (mutex, &spi_mutex) + status |= spi_sync(g_spi, &m);/* Copy data back to caller buffer */ rt5677_spi_reverse (cb + offset, len - offset, body, t[1 ].len);
@@ -564,9 +558,8 @@ int rt5677_spi_write(u32 addr, const void *txbuf, size_t len) offset += t.len; t.len +=RT5677_SPI_HEADER +1 ; -mutex_lock (&spi_mutex); - status |=spi_sync (g_spi, &m); -mutex_unlock (&spi_mutex); +scoped_guard (mutex, &spi_mutex) + status |= spi_sync(g_spi, &m); }return status; }
@@ -591,10 +584,10 @@ void rt5677_spi_hotword_detected(void)return ; } -mutex_lock (&rt5677_dsp->dma_lock); -dev_info (rt5677_dsp->dev,"Hotword detected\n" ); - rt5677_dsp->new_hotword = true; -mutex_unlock (&rt5677_dsp->dma_lock); + scoped_guard(mutex, &rt5677_dsp->dma_lock) { +dev_info (rt5677_dsp->dev,"Hotword detected\n" ); + rt5677_dsp->new_hotword = true; + }schedule_delayed_work (&rt5677_dsp->copy_work,0 ); }
sound/soc/codecs/rt5677.c +34 -43
188 lines not on this page · raw message
Signature · 1 line
2.43.0
PATCH 46/78 ASoC: codecs: rt5682: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/rt5682-sdw.c | 23 +++++++++++------------ sound/soc/codecs/rt5682.c | 4 +--- sound/soc/codecs/rt5682s.c | 16 ++++------------ 3 files changed, 16 insertions(+), 27 deletions(-)
sound/soc/codecs/rt5682-sdw.c +11 -12
@@ -660,12 +660,11 @@ static int rt5682_interrupt_callback(struct sdw_slave *slave,dev_dbg (&slave->dev,"%s control_port_stat=%x" , __func__, status->control_port); -mutex_lock (&rt5682->disable_irq_lock); +guard (mutex)(&rt5682->disable_irq_lock);if (status->control_port &0x4 && !rt5682->disable_irq) {mod_delayed_work (system_power_efficient_wq, &rt5682->jack_detect_work,msecs_to_jiffies (rt5682->irq_work_delay_time)); } -mutex_unlock (&rt5682->disable_irq_lock);return 0 ; }
@@ -736,11 +735,11 @@ static int rt5682_dev_system_suspend(struct device *dev)* deferred work completes and before the parent disables * interrupts on the link */ -mutex_lock (&rt5682->disable_irq_lock); - rt5682->disable_irq = true; - ret =sdw_update_no_pm (slave,SDW_SCP_INTMASK1 , -SDW_SCP_INT1_IMPL_DEF ,0 ); -mutex_unlock (&rt5682->disable_irq_lock); + scoped_guard(mutex, &rt5682->disable_irq_lock) { + rt5682->disable_irq = true; + ret =sdw_update_no_pm (slave,SDW_SCP_INTMASK1 , +SDW_SCP_INT1_IMPL_DEF ,0 ); + }if (ret <0 ) {/* log but don't prevent suspend from happening */
@@ -760,12 +759,12 @@ static int rt5682_dev_resume(struct device *dev)return 0 ;if (!slave->unattach_request) { -mutex_lock (&rt5682->disable_irq_lock); -if (rt5682->disable_irq == true) { -sdw_write_no_pm (slave,SDW_SCP_INTMASK1 ,SDW_SCP_INT1_IMPL_DEF ); - rt5682->disable_irq = false; + scoped_guard(mutex, &rt5682->disable_irq_lock) { +if (rt5682->disable_irq == true) { +sdw_write_no_pm (slave,SDW_SCP_INTMASK1 ,SDW_SCP_INT1_IMPL_DEF ); + rt5682->disable_irq = false; + } } -mutex_unlock (&rt5682->disable_irq_lock); } ret =sdw_slave_wait_for_init (slave,RT5682_PROBE_TIMEOUT );
sound/soc/codecs/rt5682.c +1 -3
@@ -3125,7 +3125,7 @@ void rt5682_calibrate(struct rt5682_priv *rt5682) {int value, count; -mutex_lock (&rt5682->calibrate_mutex); +guard (mutex)(&rt5682->calibrate_mutex);rt5682_reset (rt5682);regmap_write (rt5682->regmap,RT5682_I2C_CTRL ,0x000f );
@@ -3175,8 +3175,6 @@ void rt5682_calibrate(struct rt5682_priv *rt5682)regmap_write (rt5682->regmap,RT5682_CALIB_ADC_CTRL ,0x2005 );regmap_write (rt5682->regmap,RT5682_STO1_ADC_MIXER ,0xc0c4 );regmap_write (rt5682->regmap,RT5682_CAL_REC ,0x0c0c ); - -mutex_unlock (&rt5682->calibrate_mutex); }EXPORT_SYMBOL_GPL (rt5682_calibrate);
sound/soc/codecs/rt5682s.c +4 -12
@@ -648,7 +648,7 @@ static void rt5682s_sar_power_mode(struct snd_soc_component *component, int mode {struct rt5682s_priv *rt5682s =snd_soc_component_get_drvdata (component); -mutex_lock (&rt5682s->sar_mutex); +guard (mutex)(&rt5682s->sar_mutex);switch (mode) {case SAR_PWR_SAVING :
@@ -695,8 +695,6 @@ static void rt5682s_sar_power_mode(struct snd_soc_component *component, int modedev_err (component->dev,"Invalid SAR Power mode: %d\n" , mode);break ; } - -mutex_unlock (&rt5682s->sar_mutex); }static void rt5682s_enable_push_button_irq (struct snd_soc_component *component)
@@ -2534,7 +2532,7 @@ static int rt5682s_wclk_prepare(struct clk_hw *hw)if (!rt5682s_clk_check (rt5682s))return -EINVAL ; -mutex_lock (&rt5682s->wclk_mutex); +guard (mutex)(&rt5682s->wclk_mutex); snd_soc_component_update_bits(component, RT5682S_PWR_ANLG_1, RT5682S_PWR_VREF2 | RT5682S_PWR_FV2 | RT5682S_PWR_MB,
@@ -2556,8 +2554,6 @@ static int rt5682s_wclk_prepare(struct clk_hw *hw) rt5682s->wclk_enabled =1 ; -mutex_unlock (&rt5682s->wclk_mutex); -return 0 ; }
@@ -2570,7 +2566,7 @@ static void rt5682s_wclk_unprepare(struct clk_hw *hw)if (!rt5682s_clk_check (rt5682s))return ; -mutex_lock (&rt5682s->wclk_mutex); +guard (mutex)(&rt5682s->wclk_mutex);if (!rt5682s->jack_type) snd_soc_component_update_bits(component, RT5682S_PWR_ANLG_1,
@@ -2585,8 +2581,6 @@ static void rt5682s_wclk_unprepare(struct clk_hw *hw)rt5682s_set_pllb_power (rt5682s,0 ); rt5682s->wclk_enabled =0 ; - -mutex_unlock (&rt5682s->wclk_mutex); } static unsigned long rt5682s_wclk_recalc_rate(struct clk_hw *hw,
@@ -2997,7 +2991,7 @@ static void rt5682s_calibrate(struct rt5682s_priv *rt5682s) {unsigned int count, value; -mutex_lock (&rt5682s->calibrate_mutex); +guard (mutex)(&rt5682s->calibrate_mutex);regmap_write (rt5682s->regmap,RT5682S_PWR_ANLG_1 ,0xaa80 );usleep_range (15000 ,20000 );
@@ -3034,8 +3028,6 @@ static void rt5682s_calibrate(struct rt5682s_priv *rt5682s)regmap_write (rt5682s->regmap,RT5682S_PWR_DIG_1 ,0x00c0 );regmap_write (rt5682s->regmap,RT5682S_PWR_ANLG_1 ,0x0800 );regmap_write (rt5682s->regmap,RT5682S_GLB_CLK ,0x0000 ); - -mutex_unlock (&rt5682s->calibrate_mutex); }static const struct regmap_config rt5682s_regmap = {
Signature · 1 line
2.43.0
PATCH 47/78 ASoC: codecs: rt700: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/rt700-sdw.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-)
sound/soc/codecs/rt700-sdw.c +6 -7
@@ -416,12 +416,11 @@ static int rt700_interrupt_callback(struct sdw_slave *slave,dev_dbg (&slave->dev,"%s control_port_stat=%x" , __func__, status->control_port); -mutex_lock (&rt700->disable_irq_lock); +guard (mutex)(&rt700->disable_irq_lock);if (status->control_port &0x4 && !rt700->disable_irq) {mod_delayed_work (system_power_efficient_wq, &rt700->jack_detect_work,msecs_to_jiffies (250 )); } -mutex_unlock (&rt700->disable_irq_lock);return 0 ; }
@@ -502,11 +501,11 @@ static int rt700_dev_system_suspend(struct device *dev)* deferred work completes and before the parent disables * interrupts on the link */ -mutex_lock (&rt700->disable_irq_lock); - rt700->disable_irq = true; - ret =sdw_update_no_pm (slave,SDW_SCP_INTMASK1 , -SDW_SCP_INT1_IMPL_DEF ,0 ); -mutex_unlock (&rt700->disable_irq_lock); + scoped_guard(mutex, &rt700->disable_irq_lock) { + rt700->disable_irq = true; + ret =sdw_update_no_pm (slave,SDW_SCP_INTMASK1 , +SDW_SCP_INT1_IMPL_DEF ,0 ); + }if (ret <0 ) {/* log but don't prevent suspend from happening */
Signature · 1 line
2.43.0
PATCH 48/78 ASoC: codecs: rt711: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/rt711-sdca-sdw.c | 33 +++++++++++++++---------------- sound/soc/codecs/rt711-sdca.c | 7 ++----- sound/soc/codecs/rt711-sdw.c | 23 +++++++++++---------- sound/soc/codecs/rt711.c | 19 ++++++++---------- 4 files changed, 37 insertions(+), 45 deletions(-)
sound/soc/codecs/rt711-sdca-sdw.c +16 -17
@@ -268,7 +268,7 @@ static int rt711_sdca_interrupt_callback(struct sdw_slave *slave,* scheme. We do want however to prevent new workqueues from being scheduled if * the disable_irq flag was set during system suspend. */ -mutex_lock (&rt711->disable_irq_lock); +guard (mutex)(&rt711->disable_irq_lock); ret =sdw_read_no_pm (rt711->slave,SDW_SCP_SDCA_INT1 );if (ret <0 )
@@ -332,12 +332,9 @@ static int rt711_sdca_interrupt_callback(struct sdw_slave *slave,mod_delayed_work (system_power_efficient_wq, &rt711->jack_detect_work,msecs_to_jiffies (30 )); -mutex_unlock (&rt711->disable_irq_lock); -return 0 ; io_error: -mutex_unlock (&rt711->disable_irq_lock);pr_err_ratelimited ("IO error in %s, ret %d\n" , __func__, ret);return ret; }
@@ -416,13 +413,13 @@ static int rt711_sdca_dev_system_suspend(struct device *dev)* deferred work completes and before the parent disables * interrupts on the link */ -mutex_lock (&rt711_sdca->disable_irq_lock); - rt711_sdca->disable_irq = true; - ret1 =sdw_update_no_pm (slave,SDW_SCP_SDCA_INTMASK1 , -SDW_SCP_SDCA_INTMASK_SDCA_0 ,0 ); - ret2 =sdw_update_no_pm (slave,SDW_SCP_SDCA_INTMASK2 , -SDW_SCP_SDCA_INTMASK_SDCA_8 ,0 ); -mutex_unlock (&rt711_sdca->disable_irq_lock); + scoped_guard(mutex, &rt711_sdca->disable_irq_lock) { + rt711_sdca->disable_irq = true; + ret1 =sdw_update_no_pm (slave,SDW_SCP_SDCA_INTMASK1 , +SDW_SCP_SDCA_INTMASK_SDCA_0 ,0 ); + ret2 =sdw_update_no_pm (slave,SDW_SCP_SDCA_INTMASK2 , +SDW_SCP_SDCA_INTMASK_SDCA_8 ,0 ); + }if (ret1 <0 || ret2 <0 ) {/* log but don't prevent suspend from happening */
@@ -444,13 +441,15 @@ static int rt711_sdca_dev_resume(struct device *dev)return 0 ;if (!slave->unattach_request) { -mutex_lock (&rt711->disable_irq_lock); -if (rt711->disable_irq == true) { -sdw_write_no_pm (slave,SDW_SCP_SDCA_INTMASK1 ,SDW_SCP_SDCA_INTMASK_SDCA_0 ); -sdw_write_no_pm (slave,SDW_SCP_SDCA_INTMASK2 ,SDW_SCP_SDCA_INTMASK_SDCA_8 ); - rt711->disable_irq = false; + scoped_guard(mutex, &rt711->disable_irq_lock) { +if (rt711->disable_irq == true) { +sdw_write_no_pm (slave,SDW_SCP_SDCA_INTMASK1 , +SDW_SCP_SDCA_INTMASK_SDCA_0 ); +sdw_write_no_pm (slave,SDW_SCP_SDCA_INTMASK2 , +SDW_SCP_SDCA_INTMASK_SDCA_8 ); + rt711->disable_irq = false; + } } -mutex_unlock (&rt711->disable_irq_lock); } ret =sdw_slave_wait_for_init (slave,RT711_PROBE_TIMEOUT );
sound/soc/codecs/rt711-sdca.c +2 -5
@@ -107,7 +107,7 @@ static int rt711_sdca_calibration(struct rt711_sdca_priv *rt711)int chk_cnt =100 ;int ret =0 ; -mutex_lock (&rt711->calibrate_mutex); +guard (mutex)(&rt711->calibrate_mutex); dev =regmap_get_device (regmap);regmap_read (rt711->regmap,RT711_RC_CAL_STATUS , &val);
@@ -178,7 +178,6 @@ static int rt711_sdca_calibration(struct rt711_sdca_priv *rt711)rt711_sdca_index_write (rt711,RT711_VENDOR_REG ,RT711_DIGITAL_MISC_CTRL4 ,0x201b ); -mutex_unlock (&rt711->calibrate_mutex);dev_dbg (dev,"%s calibration complete, ret=%d\n" , __func__, ret);return ret; }
@@ -450,7 +449,7 @@ static void rt711_sdca_btn_check_handler(struct work_struct *work)static void rt711_sdca_jack_init (struct rt711_sdca_priv *rt711) { -mutex_lock (&rt711->calibrate_mutex); +guard (mutex)(&rt711->calibrate_mutex);if (rt711->hs_jack) {/* Enable HID1 event & set button RTC mode */
@@ -515,8 +514,6 @@ static void rt711_sdca_jack_init(struct rt711_sdca_priv *rt711)dev_dbg (&rt711->slave->dev,"in %s disable\n" , __func__); } - -mutex_unlock (&rt711->calibrate_mutex); } static int rt711_sdca_set_jack_detect(struct snd_soc_component *component,
sound/soc/codecs/rt711-sdw.c +11 -12
@@ -423,12 +423,11 @@ static int rt711_interrupt_callback(struct sdw_slave *slave,dev_dbg (&slave->dev,"%s control_port_stat=%x" , __func__, status->control_port); -mutex_lock (&rt711->disable_irq_lock); +guard (mutex)(&rt711->disable_irq_lock);if (status->control_port &0x4 && !rt711->disable_irq) {mod_delayed_work (system_power_efficient_wq, &rt711->jack_detect_work,msecs_to_jiffies (250 )); } -mutex_unlock (&rt711->disable_irq_lock);return 0 ; }
@@ -510,11 +509,11 @@ static int rt711_dev_system_suspend(struct device *dev)* deferred work completes and before the parent disables * interrupts on the link */ -mutex_lock (&rt711->disable_irq_lock); - rt711->disable_irq = true; - ret =sdw_update_no_pm (slave,SDW_SCP_INTMASK1 , -SDW_SCP_INT1_IMPL_DEF ,0 ); -mutex_unlock (&rt711->disable_irq_lock); + scoped_guard(mutex, &rt711->disable_irq_lock) { + rt711->disable_irq = true; + ret =sdw_update_no_pm (slave,SDW_SCP_INTMASK1 , +SDW_SCP_INT1_IMPL_DEF ,0 ); + }if (ret <0 ) {/* log but don't prevent suspend from happening */
@@ -536,12 +535,12 @@ static int rt711_dev_resume(struct device *dev)return 0 ;if (!slave->unattach_request) { -mutex_lock (&rt711->disable_irq_lock); -if (rt711->disable_irq == true) { -sdw_write_no_pm (slave,SDW_SCP_INTMASK1 ,SDW_SCP_INT1_IMPL_DEF ); - rt711->disable_irq = false; + scoped_guard(mutex, &rt711->disable_irq_lock) { +if (rt711->disable_irq == true) { +sdw_write_no_pm (slave,SDW_SCP_INTMASK1 ,SDW_SCP_INT1_IMPL_DEF ); + rt711->disable_irq = false; + } } -mutex_unlock (&rt711->disable_irq_lock); } ret =sdw_slave_wait_for_init (slave,RT711_PROBE_TIMEOUT );
sound/soc/codecs/rt711.c +8 -11
@@ -89,7 +89,7 @@ static int rt711_calibration(struct rt711_priv *rt711)struct regmap *regmap = rt711->regmap;int ret =0 ; -mutex_lock (&rt711->calibrate_mutex); +guard (mutex)(&rt711->calibrate_mutex);regmap_write (rt711->regmap,RT711_SET_AUDIO_POWER_STATE ,AC_PWRST_D0 );
@@ -128,7 +128,6 @@ static int rt711_calibration(struct rt711_priv *rt711)regmap_write (rt711->regmap,RT711_SET_AUDIO_POWER_STATE ,AC_PWRST_D3 ); -mutex_unlock (&rt711->calibrate_mutex);dev_dbg (dev,"%s calibration complete, ret=%d\n" , __func__, ret);return ret;
@@ -362,7 +361,7 @@ static void rt711_jack_init(struct rt711_priv *rt711) {struct snd_soc_dapm_context *dapm =snd_soc_component_to_dapm (rt711->component); -mutex_lock (&rt711->calibrate_mutex); +guard (mutex)(&rt711->calibrate_mutex);/* power on */ if (snd_soc_dapm_get_bias_level (dapm) <=SND_SOC_BIAS_STANDBY ) regmap_write(rt711->regmap,
@@ -450,7 +449,6 @@ static void rt711_jack_init(struct rt711_priv *rt711)if (snd_soc_dapm_get_bias_level (dapm) <=SND_SOC_BIAS_STANDBY )regmap_write (rt711->regmap,RT711_SET_AUDIO_POWER_STATE ,AC_PWRST_D3 ); -mutex_unlock (&rt711->calibrate_mutex); } static int rt711_set_jack_detect(struct snd_soc_component *component,
@@ -511,7 +509,7 @@ static int rt711_set_amp_gain_put(struct snd_kcontrol *kcontrol,unsigned int read_ll, read_rl;int i; -mutex_lock (&rt711->calibrate_mutex); +guard (mutex)(&rt711->calibrate_mutex);/* Can't use update bit function, so read the original value first */ addr_h = mc->reg;
@@ -599,7 +597,6 @@ static int rt711_set_amp_gain_put(struct snd_kcontrol *kcontrol,regmap_write (rt711->regmap,RT711_SET_AUDIO_POWER_STATE ,AC_PWRST_D3 ); -mutex_unlock (&rt711->calibrate_mutex);return 0 ; }
@@ -908,11 +905,11 @@ static int rt711_set_bias_level(struct snd_soc_component *component,break ;case SND_SOC_BIAS_STANDBY : -mutex_lock (&rt711->calibrate_mutex); -regmap_write (rt711->regmap, -RT711_SET_AUDIO_POWER_STATE , -AC_PWRST_D3 ); -mutex_unlock (&rt711->calibrate_mutex); + scoped_guard(mutex, &rt711->calibrate_mutex) { +regmap_write (rt711->regmap, +RT711_SET_AUDIO_POWER_STATE , +AC_PWRST_D3 ); + }break ;default :
Signature · 1 line
2.43.0
PATCH 49/78 ASoC: codecs: rt712: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/rt712-sdca-sdw.c | 34 +++++++++++++++---------------- sound/soc/codecs/rt712-sdca.c | 7 ++----- 2 files changed, 18 insertions(+), 23 deletions(-)
sound/soc/codecs/rt712-sdca-sdw.c +16 -18
@@ -277,7 +277,7 @@ static int rt712_sdca_interrupt_callback(struct sdw_slave *slave,* scheme. We do want however to prevent new workqueues from being scheduled if * the disable_irq flag was set during system suspend. */ -mutex_lock (&rt712->disable_irq_lock); +guard (mutex)(&rt712->disable_irq_lock); ret =sdw_read_no_pm (rt712->slave,SDW_SCP_SDCA_INT1 );if (ret <0 )
@@ -341,12 +341,9 @@ static int rt712_sdca_interrupt_callback(struct sdw_slave *slave,mod_delayed_work (system_power_efficient_wq, &rt712->jack_detect_work,msecs_to_jiffies (30 )); -mutex_unlock (&rt712->disable_irq_lock); -return 0 ; io_error: -mutex_unlock (&rt712->disable_irq_lock);pr_err_ratelimited ("IO error in %s, ret %d\n" , __func__, ret);return ret; }
@@ -428,13 +425,13 @@ static int rt712_sdca_dev_system_suspend(struct device *dev)* deferred work completes and before the parent disables * interrupts on the link */ -mutex_lock (&rt712_sdca->disable_irq_lock); - rt712_sdca->disable_irq = true; - ret1 =sdw_update_no_pm (slave,SDW_SCP_SDCA_INTMASK1 , -SDW_SCP_SDCA_INTMASK_SDCA_0 ,0 ); - ret2 =sdw_update_no_pm (slave,SDW_SCP_SDCA_INTMASK2 , -SDW_SCP_SDCA_INTMASK_SDCA_8 ,0 ); -mutex_unlock (&rt712_sdca->disable_irq_lock); + scoped_guard(mutex, &rt712_sdca->disable_irq_lock) { + rt712_sdca->disable_irq = true; + ret1 =sdw_update_no_pm (slave,SDW_SCP_SDCA_INTMASK1 , +SDW_SCP_SDCA_INTMASK_SDCA_0 ,0 ); + ret2 =sdw_update_no_pm (slave,SDW_SCP_SDCA_INTMASK2 , +SDW_SCP_SDCA_INTMASK_SDCA_8 ,0 ); + }if (ret1 <0 || ret2 <0 ) {/* log but don't prevent suspend from happening */
@@ -456,14 +453,15 @@ static int rt712_sdca_dev_resume(struct device *dev)return 0 ;if (!slave->unattach_request) { -mutex_lock (&rt712->disable_irq_lock); -if (rt712->disable_irq == true) { - -sdw_write_no_pm (slave,SDW_SCP_SDCA_INTMASK1 ,SDW_SCP_SDCA_INTMASK_SDCA_0 ); -sdw_write_no_pm (slave,SDW_SCP_SDCA_INTMASK2 ,SDW_SCP_SDCA_INTMASK_SDCA_8 ); - rt712->disable_irq = false; + scoped_guard(mutex, &rt712->disable_irq_lock) { +if (rt712->disable_irq == true) { +sdw_write_no_pm (slave,SDW_SCP_SDCA_INTMASK1 , +SDW_SCP_SDCA_INTMASK_SDCA_0 ); +sdw_write_no_pm (slave,SDW_SCP_SDCA_INTMASK2 , +SDW_SCP_SDCA_INTMASK_SDCA_8 ); + rt712->disable_irq = false; + } } -mutex_unlock (&rt712->disable_irq_lock); } ret =sdw_slave_wait_for_init (slave,RT712_PROBE_TIMEOUT );
sound/soc/codecs/rt712-sdca.c +2 -5
@@ -79,7 +79,7 @@ static int rt712_sdca_calibration(struct rt712_sdca_priv *rt712)int chk_cnt =100 ;int ret =0 ; -mutex_lock (&rt712->calibrate_mutex); +guard (mutex)(&rt712->calibrate_mutex); dev =regmap_get_device (regmap);/* Set HP-JD source from JD1 */
@@ -126,7 +126,6 @@ static int rt712_sdca_calibration(struct rt712_sdca_priv *rt712)/* Release HP-JD, EN_CBJ_TIE_GL/R open, en_osw gating auto done bit */ rt712_sdca_index_write (rt712,RT712_VENDOR_REG ,RT712_DIGITAL_MISC_CTRL4 ,0x0010 ); -mutex_unlock (&rt712->calibrate_mutex);dev_dbg (dev,"%s calibration complete, ret=%d\n" , __func__, ret);return ret; }
@@ -403,7 +402,7 @@ static void rt712_sdca_btn_check_handler(struct work_struct *work)static void rt712_sdca_jack_init (struct rt712_sdca_priv *rt712) { -mutex_lock (&rt712->calibrate_mutex); +guard (mutex)(&rt712->calibrate_mutex);if (rt712->hs_jack) {/* Enable HID1 event & set button RTC mode */
@@ -450,8 +449,6 @@ static void rt712_sdca_jack_init(struct rt712_sdca_priv *rt712)dev_dbg (&rt712->slave->dev,"in %s disable\n" , __func__); } - -mutex_unlock (&rt712->calibrate_mutex); } static int rt712_sdca_set_jack_detect(struct snd_soc_component *component,
Signature · 1 line
2.43.0
PATCH 50/78 ASoC: codecs: rt721: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/rt721-sdca-sdw.c | 33 +++++++++++++++---------------- sound/soc/codecs/rt721-sdca.c | 3 +-- 2 files changed, 17 insertions(+), 19 deletions(-)
sound/soc/codecs/rt721-sdca-sdw.c +16 -17
@@ -315,7 +315,7 @@ static int rt721_sdca_interrupt_callback(struct sdw_slave *slave,* scheme. We do want however to prevent new workqueues from being scheduled if * the disable_irq flag was set during system suspend. */ -mutex_lock (&rt721->disable_irq_lock); +guard (mutex)(&rt721->disable_irq_lock); ret =sdw_read_no_pm (rt721->slave,SDW_SCP_SDCA_INT1 );if (ret <0 )
@@ -382,12 +382,9 @@ static int rt721_sdca_interrupt_callback(struct sdw_slave *slave,mod_delayed_work (system_power_efficient_wq, &rt721->jack_detect_work,msecs_to_jiffies (280 )); -mutex_unlock (&rt721->disable_irq_lock); -return 0 ; io_error: -mutex_unlock (&rt721->disable_irq_lock);pr_err_ratelimited ("IO error in %s, ret %d\n" , __func__, ret);return ret; }
@@ -467,13 +464,13 @@ static int rt721_sdca_dev_system_suspend(struct device *dev)* deferred work completes and before the parent disables * interrupts on the link */ -mutex_lock (&rt721_sdca->disable_irq_lock); - rt721_sdca->disable_irq = true; - ret1 =sdw_update_no_pm (slave,SDW_SCP_SDCA_INTMASK1 , -SDW_SCP_SDCA_INTMASK_SDCA_0 ,0 ); - ret2 =sdw_update_no_pm (slave,SDW_SCP_SDCA_INTMASK2 , -SDW_SCP_SDCA_INTMASK_SDCA_8 ,0 ); -mutex_unlock (&rt721_sdca->disable_irq_lock); + scoped_guard(mutex, &rt721_sdca->disable_irq_lock) { + rt721_sdca->disable_irq = true; + ret1 =sdw_update_no_pm (slave,SDW_SCP_SDCA_INTMASK1 , +SDW_SCP_SDCA_INTMASK_SDCA_0 ,0 ); + ret2 =sdw_update_no_pm (slave,SDW_SCP_SDCA_INTMASK2 , +SDW_SCP_SDCA_INTMASK_SDCA_8 ,0 ); + }if (ret1 <0 || ret2 <0 ) {/* log but don't prevent suspend from happening */
@@ -495,13 +492,15 @@ static int rt721_sdca_dev_resume(struct device *dev)return 0 ;if (!slave->unattach_request) { -mutex_lock (&rt721->disable_irq_lock); -if (rt721->disable_irq == true) { -sdw_write_no_pm (slave,SDW_SCP_SDCA_INTMASK1 ,SDW_SCP_SDCA_INTMASK_SDCA_0 ); -sdw_write_no_pm (slave,SDW_SCP_SDCA_INTMASK2 ,SDW_SCP_SDCA_INTMASK_SDCA_8 ); - rt721->disable_irq = false; + scoped_guard(mutex, &rt721->disable_irq_lock) { +if (rt721->disable_irq == true) { +sdw_write_no_pm (slave,SDW_SCP_SDCA_INTMASK1 , +SDW_SCP_SDCA_INTMASK_SDCA_0 ); +sdw_write_no_pm (slave,SDW_SCP_SDCA_INTMASK2 , +SDW_SCP_SDCA_INTMASK_SDCA_8 ); + rt721->disable_irq = false; + } } -mutex_unlock (&rt721->disable_irq_lock); } ret =sdw_slave_wait_for_init (slave,RT721_PROBE_TIMEOUT );
sound/soc/codecs/rt721-sdca.c +1 -2
@@ -289,7 +289,7 @@ static void rt721_sdca_jack_preset(struct rt721_sdca_priv *rt721)static void rt721_sdca_jack_init (struct rt721_sdca_priv *rt721) { -mutex_lock (&rt721->calibrate_mutex); +guard (mutex)(&rt721->calibrate_mutex);if (rt721->hs_jack) {sdw_write_no_pm (rt721->slave,SDW_SCP_SDCA_INTMASK1 ,SDW_SCP_SDCA_INTMASK_SDCA_0 );
@@ -309,7 +309,6 @@ static void rt721_sdca_jack_init(struct rt721_sdca_priv *rt721)rt_sdca_index_update_bits (rt721->mbq_regmap,RT721_HDA_SDCA_FLOAT ,RT721_GE_REL_CTRL1 ,0x4000 ,0x4000 ); } -mutex_unlock (&rt721->calibrate_mutex); } static int rt721_sdca_set_jack_detect(struct snd_soc_component *component,
Signature · 1 line
2.43.0
PATCH 51/78 ASoC: codecs: rt722: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/rt722-sdca-sdw.c | 33 +++++++++++++++---------------- sound/soc/codecs/rt722-sdca.c | 3 +-- 2 files changed, 17 insertions(+), 19 deletions(-)
sound/soc/codecs/rt722-sdca-sdw.c +16 -17
@@ -368,7 +368,7 @@ static int rt722_sdca_interrupt_callback(struct sdw_slave *slave,* scheme. We do want however to prevent new workqueues from being scheduled if * the disable_irq flag was set during system suspend. */ -mutex_lock (&rt722->disable_irq_lock); +guard (mutex)(&rt722->disable_irq_lock); ret =sdw_read_no_pm (rt722->slave,SDW_SCP_SDCA_INT1 );if (ret <0 )
@@ -432,12 +432,9 @@ static int rt722_sdca_interrupt_callback(struct sdw_slave *slave,mod_delayed_work (system_power_efficient_wq, &rt722->jack_detect_work,msecs_to_jiffies (280 )); -mutex_unlock (&rt722->disable_irq_lock); -return 0 ; io_error: -mutex_unlock (&rt722->disable_irq_lock);pr_err_ratelimited ("IO error in %s, ret %d\n" , __func__, ret);return ret; }
@@ -514,13 +511,13 @@ static int rt722_sdca_dev_system_suspend(struct device *dev)* deferred work completes and before the parent disables * interrupts on the link */ -mutex_lock (&rt722_sdca->disable_irq_lock); - rt722_sdca->disable_irq = true; - ret1 =sdw_update_no_pm (slave,SDW_SCP_SDCA_INTMASK1 , -SDW_SCP_SDCA_INTMASK_SDCA_0 ,0 ); - ret2 =sdw_update_no_pm (slave,SDW_SCP_SDCA_INTMASK2 , -SDW_SCP_SDCA_INTMASK_SDCA_8 ,0 ); -mutex_unlock (&rt722_sdca->disable_irq_lock); + scoped_guard(mutex, &rt722_sdca->disable_irq_lock) { + rt722_sdca->disable_irq = true; + ret1 =sdw_update_no_pm (slave,SDW_SCP_SDCA_INTMASK1 , +SDW_SCP_SDCA_INTMASK_SDCA_0 ,0 ); + ret2 =sdw_update_no_pm (slave,SDW_SCP_SDCA_INTMASK2 , +SDW_SCP_SDCA_INTMASK_SDCA_8 ,0 ); + }if (ret1 <0 || ret2 <0 ) {/* log but don't prevent suspend from happening */
@@ -542,13 +539,15 @@ static int rt722_sdca_dev_resume(struct device *dev)return 0 ;if (!slave->unattach_request) { -mutex_lock (&rt722->disable_irq_lock); -if (rt722->disable_irq == true) { -sdw_write_no_pm (slave,SDW_SCP_SDCA_INTMASK1 ,SDW_SCP_SDCA_INTMASK_SDCA_0 ); -sdw_write_no_pm (slave,SDW_SCP_SDCA_INTMASK2 ,SDW_SCP_SDCA_INTMASK_SDCA_8 ); - rt722->disable_irq = false; + scoped_guard(mutex, &rt722->disable_irq_lock) { +if (rt722->disable_irq == true) { +sdw_write_no_pm (slave,SDW_SCP_SDCA_INTMASK1 , +SDW_SCP_SDCA_INTMASK_SDCA_0 ); +sdw_write_no_pm (slave,SDW_SCP_SDCA_INTMASK2 , +SDW_SCP_SDCA_INTMASK_SDCA_8 ); + rt722->disable_irq = false; + } } -mutex_unlock (&rt722->disable_irq_lock); } ret =sdw_slave_wait_for_init (slave,RT722_PROBE_TIMEOUT );
sound/soc/codecs/rt722-sdca.c +1 -2
@@ -294,7 +294,7 @@ static void rt722_sdca_btn_check_handler(struct work_struct *work)static void rt722_sdca_jack_init (struct rt722_sdca_priv *rt722) { -mutex_lock (&rt722->calibrate_mutex); +guard (mutex)(&rt722->calibrate_mutex);if (rt722->hs_jack) {/* set SCP_SDCA_IntMask1[0]=1 */ sdw_write_no_pm(rt722->slave, SDW_SCP_SDCA_INTMASK1,
@@ -317,7 +317,6 @@ static void rt722_sdca_jack_init(struct rt722_sdca_priv *rt722)rt722_sdca_index_update_bits (rt722,RT722_VENDOR_HDA_CTL ,RT722_GE_RELATED_CTL2 ,0x4000 ,0x4000 ); } -mutex_unlock (&rt722->calibrate_mutex); } static int rt722_sdca_set_jack_detect(struct snd_soc_component *component,
Signature · 1 line
2.43.0
PATCH 52/78 ASoC: codecs: sigmadsp: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/sigmadsp.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-)
sound/soc/codecs/sigmadsp.c +6 -10
@@ -135,7 +135,7 @@ static int sigmadsp_ctrl_put(struct snd_kcontrol *kcontrol,uint8_t *data;int ret =0 ; -mutex_lock (&sigmadsp->lock); +guard (mutex)(&sigmadsp->lock); data = ucontrol->value.bytes.data;
@@ -148,8 +148,6 @@ static int sigmadsp_ctrl_put(struct snd_kcontrol *kcontrol, ctrl->cached = true; } -mutex_unlock (&sigmadsp->lock); -return ret; }
@@ -160,7 +158,7 @@ static int sigmadsp_ctrl_get(struct snd_kcontrol *kcontrol,struct sigmadsp *sigmadsp =snd_kcontrol_chip (kcontrol);int ret =0 ; -mutex_lock (&sigmadsp->lock); +guard (mutex)(&sigmadsp->lock);if (!ctrl->cached) { ret = sigmadsp_read(sigmadsp, ctrl->addr, ctrl->cache,
@@ -174,8 +172,6 @@ static int sigmadsp_ctrl_get(struct snd_kcontrol *kcontrol, ctrl->num_bytes); } -mutex_unlock (&sigmadsp->lock); -return ret; }
@@ -677,10 +673,10 @@ static void sigmadsp_activate_ctrl(struct sigmadsp *sigmadsp,return ; changed =snd_ctl_activate_id (card, &ctrl->kcontrol->id, active);if (active && changed >0 ) { -mutex_lock (&sigmadsp->lock); -if (ctrl->cached) -sigmadsp_ctrl_write (sigmadsp, ctrl, ctrl->cache); -mutex_unlock (&sigmadsp->lock); + scoped_guard(mutex, &sigmadsp->lock) { +if (ctrl->cached) +sigmadsp_ctrl_write (sigmadsp, ctrl, ctrl->cache); + } } }
Signature · 1 line
2.43.0
PATCH 53/78 ASoC: codecs: sta350: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/sta350.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-)
sound/soc/codecs/sta350.c +4 -8
@@ -306,9 +306,9 @@ static int sta350_coefficient_get(struct snd_kcontrol *kcontrol,int numcoef = kcontrol->private_value >>16 ;int index = kcontrol->private_value &0xffff ;unsigned int cfud, val; -int i, ret =0 ; +int i; -mutex_lock (&sta350->coeff_lock); +guard (mutex)(&sta350->coeff_lock);/* preserve reserved bits in STA350_CFUD */ regmap_read (sta350->regmap,STA350_CFUD , &cfud);
@@ -325,8 +325,7 @@ static int sta350_coefficient_get(struct snd_kcontrol *kcontrol, }else if (numcoef ==5 ) {regmap_write (sta350->regmap,STA350_CFUD , cfud |0x08 ); }else { - ret = -EINVAL ; - goto exit_unlock; +return -EINVAL ; }for (i =0 ; i <3 * numcoef; i++) {
@@ -334,10 +333,7 @@ static int sta350_coefficient_get(struct snd_kcontrol *kcontrol, ucontrol->value.bytes.data[i] = val; } -exit_unlock: -mutex_unlock (&sta350->coeff_lock); - -return ret; +return 0 ; } static int sta350_coefficient_put(struct snd_kcontrol *kcontrol,
Signature · 1 line
2.43.0
PATCH 54/78 ASoC: codecs: sta32x: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/sta32x.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-)
sound/soc/codecs/sta32x.c +4 -8
@@ -271,7 +271,7 @@ static int sta32x_coefficient_get(struct snd_kcontrol *kcontrol,unsigned int cfud, val;int i, ret =0 ; -mutex_lock (&sta32x->coeff_lock); +guard (mutex)(&sta32x->coeff_lock);/* preserve reserved bits in STA32X_CFUD */ regmap_read (sta32x->regmap,STA32X_CFUD , &cfud);
@@ -287,19 +287,15 @@ static int sta32x_coefficient_get(struct snd_kcontrol *kcontrol,regmap_write (sta32x->regmap,STA32X_CFUD , cfud |0x04 ); }else if (numcoef ==5 ) {regmap_write (sta32x->regmap,STA32X_CFUD , cfud |0x08 ); - }else { - ret = -EINVAL ; - goto exit_unlock; - } + }else +return -EINVAL ; +for (i =0 ; i <3 * numcoef; i++) {regmap_read (sta32x->regmap,STA32X_B1CF1 + i, &val); ucontrol->value.bytes.data[i] = val; } -exit_unlock: -mutex_unlock (&sta32x->coeff_lock); -return ret; }
Signature · 1 line
2.43.0
PATCH 55/78 ASoC: codecs: tas2781: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/tas2781-comlib-i2c.c | 4 +--- sound/soc/codecs/tas2781-i2c.c | 20 ++++++++------------ 2 files changed, 9 insertions(+), 15 deletions(-)
sound/soc/codecs/tas2781-comlib-i2c.c +1 -3
@@ -342,7 +342,7 @@ int tascodec_init(struct tasdevice_priv *tas_priv, void *codec,/* Codec Lock Hold to ensure that codec_probe and firmware parsing and * loading do not simultaneously execute. */ -mutex_lock (&tas_priv->codec_lock); +guard (mutex)(&tas_priv->codec_lock);if (tas_priv->name_prefix) scnprintf(tas_priv->rca_binaryname, 64, "%s-%sRCA%d.bin",
@@ -360,8 +360,6 @@ int tascodec_init(struct tasdevice_priv *tas_priv, void *codec,dev_err (tas_priv->dev,"request_firmware_nowait err:0x%08x\n" , ret); -/* Codec Lock Release*/ -mutex_unlock (&tas_priv->codec_lock);return ret; }EXPORT_SYMBOL_GPL (tascodec_init);
sound/soc/codecs/tas2781-i2c.c +8 -12
@@ -843,12 +843,12 @@ static int tasdevice_digital_gain_get(unsigned char data[4 ];int ret; -mutex_lock (&tas_dev->codec_lock); +guard (mutex)(&tas_dev->codec_lock);/* Read the primary device */ ret =tasdevice_dev_bulk_read (tas_dev,0 , reg, data,4 );if (ret) {dev_err (tas_dev->dev,"%s, get AMP vol error\n" , __func__); - goto out; +return ret; } target =get_unaligned_be32 (&data[0 ]);
@@ -868,8 +868,7 @@ static int tasdevice_digital_gain_get(/* find out the member same as or closer to the current volume */ ucontrol->value.integer.value[0 ] =abs (target - ar_l) <=abs (target - ar_r) ? l : r; -out: -mutex_unlock (&tas_dev->codec_lock); +return 0 ; }
@@ -889,13 +888,13 @@ static int tasdevice_digital_gain_put(unsigned char data[4 ]; vol =clamp (vol,0 , max); -mutex_lock (&tas_dev->codec_lock); +guard (mutex)(&tas_dev->codec_lock);/* Read the primary device */ ret =tasdevice_dev_bulk_read (tas_dev,0 , reg, data,4 );if (ret) {dev_err (tas_dev->dev,"%s, get AMP vol error\n" , __func__); rc =-1 ; - goto out; +return rc; } volrd =get_unaligned_be32 (&data[0 ]);
@@ -903,7 +902,7 @@ static int tasdevice_digital_gain_put(if (volrd == volwr) { rc =0 ; - goto out; +return rc; }for (i =0 ; i < tas_dev->ndev; i++) {
@@ -919,8 +918,7 @@ static int tasdevice_digital_gain_put(if (status) rc =-1 ; -out: -mutex_unlock (&tas_dev->codec_lock); +return rc; }
@@ -1766,12 +1764,10 @@ static int tasdevice_dapm_event(struct snd_soc_dapm_widget *w,int state =0 ;/* Codec Lock Hold */ -mutex_lock (&tas_priv->codec_lock); +guard (mutex)(&tas_priv->codec_lock);if (event ==SND_SOC_DAPM_PRE_PMD ) state =1 ;tasdevice_tuning_switch (tas_priv, state); -/* Codec Lock Release*/ -mutex_unlock (&tas_priv->codec_lock);return 0 ; }
Signature · 1 line
2.43.0
PATCH 56/78 ASoC: codecs: tas2783: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/tas2783-sdw.c | 89 ++++++++++++++++------------------ 1 file changed, 43 insertions(+), 46 deletions(-)
sound/soc/codecs/tas2783-sdw.c +43 -46
@@ -691,12 +691,12 @@ static s32 tas2783_update_calibdata(struct tas2783_prv *tas_dev)return 0 ; } -mutex_lock (&tas_dev->calib_lock); - ret =tas2783_validate_calibdata (tas_dev, tas_dev->cali_data.data, - tas_dev->cali_data.read_sz); -if (!ret) -tas2783_set_calib_params_to_device (tas_dev, tmp_val); -mutex_unlock (&tas_dev->calib_lock); + scoped_guard(mutex, &tas_dev->calib_lock) { + ret =tas2783_validate_calibdata (tas_dev, tas_dev->cali_data.data, + tas_dev->cali_data.read_sz); +if (!ret) +tas2783_set_calib_params_to_device (tas_dev, tmp_val); + }return ret; }
@@ -764,27 +764,27 @@ static void tas2783_fw_ready(const struct firmware *fmw, void *context) goto out; } -mutex_lock (&tas_dev->pde_lock); -while (offset < (img_sz -FW_FL_HDR )) { - offset +=tas_fw_get_next_file (&buf[offset], file); -dev_dbg (tas_dev->dev, -"v=%d, fid=%d, ver=%d, len=%d, daddr=0x%x, fw=%p" , - file->vendor_id, file->file_id, - file->version, file->length, - file->dest_addr, file->fw_data); - - ret =sdw_nwrite_no_pm (tas_dev->sdw_peripheral, - file->dest_addr, - file->length, - file->fw_data); -if (ret <0 ) { -dev_err (tas_dev->dev, -"FW download failed: %d" , ret); -break ; + scoped_guard(mutex, &tas_dev->pde_lock) { +while (offset < (img_sz -FW_FL_HDR )) { + offset +=tas_fw_get_next_file (&buf[offset], file); +dev_dbg (tas_dev->dev, +"v=%d, fid=%d, ver=%d, len=%d, daddr=0x%x, fw=%p" , + file->vendor_id, file->file_id, + file->version, file->length, + file->dest_addr, file->fw_data); + + ret =sdw_nwrite_no_pm (tas_dev->sdw_peripheral, + file->dest_addr, + file->length, + file->fw_data); +if (ret <0 ) { +dev_err (tas_dev->dev, +"FW download failed: %d" , ret); +break ; + } + cur_file++; } - cur_file++; } -mutex_unlock (&tas_dev->pde_lock);if (cur_file ==0 ) {dev_err (tas_dev->dev,"fw with no files" );
@@ -917,22 +917,22 @@ static s32 tas_sdw_hw_params(struct snd_pcm_substream *substream,dev_err (tas_dev->dev,"clear latch failed, err=%d" , ret); -mutex_lock (&tas_dev->pde_lock); -/* -* Sometimes, there is error returned during power on. -* So added retry logic to ensure power on so that -* port prepare succeeds -*/ -do { - ret =regmap_write (tas_dev->regmap, -SDW_SDCA_CTL (1 ,TAS2783_SDCA_ENT_PDE23 , -TAS2783_SDCA_CTL_REQ_POW_STATE ,0 ), -TAS2783_SDCA_POW_STATE_ON ); -if (!ret) -break ; -usleep_range (2000 ,2200 ); - }while (retry--); -mutex_unlock (&tas_dev->pde_lock); + scoped_guard(mutex, &tas_dev->pde_lock) { +/* +* Sometimes, there is error returned during power on. +* So added retry logic to ensure power on so that +* port prepare succeeds +*/ +do { + ret =regmap_write (tas_dev->regmap, +SDW_SDCA_CTL (1 ,TAS2783_SDCA_ENT_PDE23 , +TAS2783_SDCA_CTL_REQ_POW_STATE ,0 ), +TAS2783_SDCA_POW_STATE_ON ); +if (!ret) +break ; +usleep_range (2000 ,2200 ); + }while (retry--); + }if (ret)return ret;
@@ -965,14 +965,11 @@ static s32 tas_sdw_pcm_hw_free(struct snd_pcm_substream *substream,sdw_stream_remove_slave (tas_dev->sdw_peripheral, sdw_stream); -mutex_lock (&tas_dev->pde_lock); - ret =regmap_write (tas_dev->regmap, +guard (mutex)(&tas_dev->pde_lock); +return regmap_write (tas_dev->regmap,SDW_SDCA_CTL (1 ,TAS2783_SDCA_ENT_PDE23 ,TAS2783_SDCA_CTL_REQ_POW_STATE ,0 ),TAS2783_SDCA_POW_STATE_OFF ); -mutex_unlock (&tas_dev->pde_lock); - -return ret; }static const struct snd_soc_dai_ops tas_dai_ops = {
Signature · 1 line
2.43.0
PATCH 57/78 ASoC: codecs: tas5805m: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/tas5805m.c | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-)
sound/soc/codecs/tas5805m.c +5 -10
@@ -230,10 +230,9 @@ static int tas5805m_vol_get(struct snd_kcontrol *kcontrol,struct tas5805m_priv *tas5805m =snd_soc_component_get_drvdata (component); -mutex_lock (&tas5805m->lock); +guard (mutex)(&tas5805m->lock); ucontrol->value.integer.value[0 ] = tas5805m->vol[0 ]; ucontrol->value.integer.value[1 ] = tas5805m->vol[1 ]; -mutex_unlock (&tas5805m->lock);return 0 ; }
@@ -255,7 +254,7 @@ static int tas5805m_vol_put(struct snd_kcontrol *kcontrol, volume_is_valid(ucontrol->value.integer.value[1])))return -EINVAL ; -mutex_lock (&tas5805m->lock); +guard (mutex)(&tas5805m->lock);if (tas5805m->vol[0 ] != ucontrol->value.integer.value[0 ] || tas5805m->vol[1 ] != ucontrol->value.integer.value[1 ]) { tas5805m->vol[0 ] = ucontrol->value.integer.value[0 ];
@@ -267,7 +266,6 @@ static int tas5805m_vol_put(struct snd_kcontrol *kcontrol,tas5805m_refresh (tas5805m); ret =1 ; } -mutex_unlock (&tas5805m->lock);return ret; }
@@ -332,7 +330,7 @@ static void do_work(struct work_struct *work)dev_dbg (&tas5805m->i2c->dev,"DSP startup\n" ); -mutex_lock (&tas5805m->lock); +guard (mutex)(&tas5805m->lock);/* We mustn't issue any I2C transactions until the I2S * clock is stable. Furthermore, we must allow a 5ms * delay after the first set of register writes to
@@ -345,7 +343,6 @@ static void do_work(struct work_struct *work) tas5805m->is_powered = true;tas5805m_refresh (tas5805m); -mutex_unlock (&tas5805m->lock); } static int tas5805m_dac_event(struct snd_soc_dapm_widget *w,
@@ -362,7 +359,7 @@ static int tas5805m_dac_event(struct snd_soc_dapm_widget *w,dev_dbg (component->dev,"DSP shutdown\n" );cancel_work_sync (&tas5805m->work); -mutex_lock (&tas5805m->lock); +guard (mutex)(&tas5805m->lock);if (tas5805m->is_powered) { tas5805m->is_powered = false;
@@ -379,7 +376,6 @@ static int tas5805m_dac_event(struct snd_soc_dapm_widget *w,regmap_write (rm,REG_DEVICE_CTRL_2 ,DCTRL2_MODE_HIZ ); } -mutex_unlock (&tas5805m->lock); }return 0 ;
@@ -414,14 +410,13 @@ static int tas5805m_mute(struct snd_soc_dai *dai, int mute, int direction)struct tas5805m_priv *tas5805m =snd_soc_component_get_drvdata (component); -mutex_lock (&tas5805m->lock); +guard (mutex)(&tas5805m->lock);dev_dbg (component->dev,"set mute=%d (is_powered=%d)\n" , mute, tas5805m->is_powered); tas5805m->is_muted = mute;if (tas5805m->is_powered)tas5805m_refresh (tas5805m); -mutex_unlock (&tas5805m->lock);return 0 ; }
Signature · 1 line
2.43.0
PATCH 58/78 ASoC: codecs: tas675x: Use guard() for mutex locks
From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/tas675x.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-)
sound/soc/codecs/tas675x.c +2 -4
@@ -162,7 +162,7 @@ static int tas675x_dsp_mem_write(struct tas675x_priv *tas, u8 page, u8 reg, u32* DSP regs in a different book, therefore block * regmap access before completion. */ -mutex_lock (&tas->io_lock); +guard (mutex)(&tas->io_lock); ret =__tas675x_select_book (tas,TAS675X_BOOK_DSP );if (ret)
@@ -176,7 +176,6 @@ static int tas675x_dsp_mem_write(struct tas675x_priv *tas, u8 page, u8 reg, u32 out:__tas675x_select_book (tas,TAS675X_BOOK_DEFAULT ); -mutex_unlock (&tas->io_lock);return ret; }
@@ -191,7 +190,7 @@ static int tas675x_dsp_mem_read(struct tas675x_priv *tas, u8 page, u8 reg, u32 ** DSP regs in a different book, therefore block * regmap access before completion. */ -mutex_lock (&tas->io_lock); +guard (mutex)(&tas->io_lock); ret =__tas675x_select_book (tas,TAS675X_BOOK_DSP );if (ret)
@@ -211,7 +210,6 @@ static int tas675x_dsp_mem_read(struct tas675x_priv *tas, u8 page, u8 reg, u32 * out:__tas675x_select_book (tas,TAS675X_BOOK_DEFAULT ); -mutex_unlock (&tas->io_lock);return ret; }
Signature · 1 line
2.43.0
PATCH 59/78 ASoC: codecs: tlv320dac33: Use guard() for mutex & spin locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex & spin locks. Merely code refactoring, and no behavior change.
--- sound/soc/codecs/tlv320dac33.c | 77 ++++++++++++++-------------------- 1 file changed, 31 insertions(+), 46 deletions(-)
sound/soc/codecs/tlv320dac33.c +31 -46
@@ -236,13 +236,10 @@ static int dac33_write_locked(struct snd_soc_component *component, unsigned int unsigned int value) {struct tlv320dac33_priv *dac33 =snd_soc_component_get_drvdata (component); -int ret; -mutex_lock (&dac33->mutex); - ret =dac33_write (component, reg, value); -mutex_unlock (&dac33->mutex); +guard (mutex)(&dac33->mutex); -return ret; +return dac33_write (component, reg, value); }#define DAC33_I2C_ADDR_AUTOINC 0x80
@@ -365,13 +362,13 @@ static int dac33_hard_power(struct snd_soc_component *component, int power)struct tlv320dac33_priv *dac33 =snd_soc_component_get_drvdata (component);int ret =0 ; -mutex_lock (&dac33->mutex); +guard (mutex)(&dac33->mutex);/* Safety check */ if (unlikely (power == dac33->chip_power)) {dev_dbg (component->dev,"Trying to set the same power state: %s\n" , power ?"ON" :"OFF" ); - goto exit; +return ret; }if (power) {
@@ -380,7 +377,7 @@ static int dac33_hard_power(struct snd_soc_component *component, int power)if (ret !=0 ) {dev_err (component->dev,"Failed to enable supplies: %d\n" , ret); - goto exit; +return ret; }if (dac33->reset_gpiod) {
@@ -388,7 +385,7 @@ static int dac33_hard_power(struct snd_soc_component *component, int power)if (ret <0 ) {dev_err (&dac33->i2c->dev,"Failed to set reset GPIO: %d\n" , ret); - goto exit; +return ret; } }
@@ -400,7 +397,7 @@ static int dac33_hard_power(struct snd_soc_component *component, int power)if (ret <0 ) {dev_err (&dac33->i2c->dev,"Failed to set reset GPIO: %d\n" , ret); - goto exit; +return ret; } }
@@ -409,14 +406,12 @@ static int dac33_hard_power(struct snd_soc_component *component, int power)if (ret !=0 ) {dev_err (component->dev,"Failed to disable supplies: %d\n" , ret); - goto exit; +return ret; } dac33->chip_power =0 ; } -exit: -mutex_unlock (&dac33->mutex);return ret; }
@@ -659,7 +654,6 @@ static inline void dac33_prefill_handler(struct tlv320dac33_priv *dac33) {struct snd_soc_component *component = dac33->component;unsigned int delay; -unsigned long flags;switch (dac33->fifo_mode) {case DAC33_FIFO_MODE1 :
@@ -667,10 +661,10 @@ static inline void dac33_prefill_handler(struct tlv320dac33_priv *dac33) DAC33_THRREG(dac33->nsample));/* Take the timestamps */ -spin_lock_irqsave (&dac33->lock, flags); - dac33->t_stamp2 =ktime_to_us (ktime_get ()); - dac33->t_stamp1 = dac33->t_stamp2; -spin_unlock_irqrestore (&dac33->lock, flags); + scoped_guard(spinlock_irqsave, &dac33->lock) { + dac33->t_stamp2 =ktime_to_us (ktime_get ()); + dac33->t_stamp1 = dac33->t_stamp2; + }dac33_write16 (component,DAC33_PREFILL_MSB ,DAC33_THRREG (dac33->alarm_threshold));
@@ -682,11 +676,11 @@ static inline void dac33_prefill_handler(struct tlv320dac33_priv *dac33)break ;case DAC33_FIFO_MODE7 :/* Take the timestamp */ -spin_lock_irqsave (&dac33->lock, flags); - dac33->t_stamp1 =ktime_to_us (ktime_get ()); -/* Move back the timestamp with drain time */ - dac33->t_stamp1 -= dac33->mode7_us_to_lthr; -spin_unlock_irqrestore (&dac33->lock, flags); + scoped_guard(spinlock_irqsave, &dac33->lock) { + dac33->t_stamp1 =ktime_to_us (ktime_get ()); +/* Move back the timestamp with drain time */ + dac33->t_stamp1 -= dac33->mode7_us_to_lthr; + }dac33_write16 (component,DAC33_PREFILL_MSB ,DAC33_THRREG (DAC33_MODE7_MARGIN ));
@@ -704,14 +698,12 @@ static inline void dac33_prefill_handler(struct tlv320dac33_priv *dac33)static inline void dac33_playback_handler (struct tlv320dac33_priv *dac33) {struct snd_soc_component *component = dac33->component; -unsigned long flags;switch (dac33->fifo_mode) {case DAC33_FIFO_MODE1 :/* Take the timestamp */ -spin_lock_irqsave (&dac33->lock, flags); - dac33->t_stamp2 =ktime_to_us (ktime_get ()); -spin_unlock_irqrestore (&dac33->lock, flags); +scoped_guard (spinlock_irqsave, &dac33->lock) + dac33->t_stamp2 = ktime_to_us(ktime_get());dac33_write16 (component,DAC33_NSAMPLE_MSB ,DAC33_THRREG (dac33->nsample));
@@ -735,7 +727,7 @@ static void dac33_work(struct work_struct *work) dac33 = container_of(work, struct tlv320dac33_priv, work); component = dac33->component; -mutex_lock (&dac33->mutex); +guard (mutex)(&dac33->mutex);switch (dac33->state) {case DAC33_PREFILL : dac33->state =DAC33_PLAYBACK ;
@@ -757,18 +749,15 @@ static void dac33_work(struct work_struct *work)dac33_write (component,DAC33_FIFO_CTRL_A , reg);break ; } -mutex_unlock (&dac33->mutex); }static irqreturn_t dac33_interrupt_handler (int irq,void *dev) {struct snd_soc_component *component = dev;struct tlv320dac33_priv *dac33 =snd_soc_component_get_drvdata (component); -unsigned long flags; -spin_lock_irqsave (&dac33->lock, flags); - dac33->t_stamp1 =ktime_to_us (ktime_get ()); -spin_unlock_irqrestore (&dac33->lock, flags); +scoped_guard (spinlock_irqsave, &dac33->lock) + dac33->t_stamp1 = ktime_to_us(ktime_get());/* Do not schedule the workqueue in Mode7 */ if (dac33->fifo_mode !=DAC33_FIFO_MODE7 )
@@ -902,14 +891,13 @@ static int dac33_prepare_chip(struct snd_pcm_substream *substream,return -EINVAL ; } -mutex_lock (&dac33->mutex); +guard (mutex)(&dac33->mutex);if (!dac33->chip_power) {/* * Chip is not powered yet. * Do the init in the dac33_set_bias_level later. */ -mutex_unlock (&dac33->mutex);return 0 ; }
@@ -1053,8 +1041,6 @@ static int dac33_prepare_chip(struct snd_pcm_substream *substream,break ; } -mutex_unlock (&dac33->mutex); -return 0 ; }
@@ -1156,16 +1142,15 @@ static snd_pcm_sframes_t dac33_dai_delay(unsigned int time_delta, uthr;int samples_out, samples_in, samples;snd_pcm_sframes_t delay =0 ; -unsigned long flags;switch (dac33->fifo_mode) {case DAC33_FIFO_BYPASS :break ;case DAC33_FIFO_MODE1 : -spin_lock_irqsave (&dac33->lock, flags); - t0 = dac33->t_stamp1; - t1 = dac33->t_stamp2; -spin_unlock_irqrestore (&dac33->lock, flags); + scoped_guard(spinlock_irqsave, &dac33->lock) { + t0 = dac33->t_stamp1; + t1 = dac33->t_stamp2; + } t_now =ktime_to_us (ktime_get ());/* We have not started to fill the FIFO yet, delay is 0 */
@@ -1230,10 +1215,10 @@ static snd_pcm_sframes_t dac33_dai_delay( }break ;case DAC33_FIFO_MODE7 : -spin_lock_irqsave (&dac33->lock, flags); - t0 = dac33->t_stamp1; - uthr = dac33->uthr; -spin_unlock_irqrestore (&dac33->lock, flags); + scoped_guard(spinlock_irqsave, &dac33->lock) { + t0 = dac33->t_stamp1; + uthr = dac33->uthr; + } t_now =ktime_to_us (ktime_get ());/* We have not started to fill the FIFO yet, delay is 0 */
Signature · 1 line
2.43.0
PATCH 60/78 ASoC: codecs: tscs42xx: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/tscs42xx.c | 44 ++++++++++++------------------------- 1 file changed, 14 insertions(+), 30 deletions(-)
sound/soc/codecs/tscs42xx.c +14 -30
@@ -210,23 +210,21 @@ static int power_up_audio_plls(struct snd_soc_component *component)return ret; } -mutex_lock (&tscs42xx->pll_lock); +guard (mutex)(&tscs42xx->pll_lock); ret =snd_soc_component_update_bits (component,R_PLLCTL1C , mask, val);if (ret <0 ) {dev_err (component->dev,"Failed to turn PLL on (%d)\n" , ret); - goto exit; +return ret; }if (!plls_locked (component)) {dev_err (component->dev,"Failed to lock plls\n" ); ret = -ENOMSG ; - goto exit; +return ret; } ret =0 ; -exit: -mutex_unlock (&tscs42xx->pll_lock);return ret; }
@@ -236,26 +234,24 @@ static int power_down_audio_plls(struct snd_soc_component *component)struct tscs42xx *tscs42xx =snd_soc_component_get_drvdata (component);int ret; -mutex_lock (&tscs42xx->pll_lock); +guard (mutex)(&tscs42xx->pll_lock); ret =snd_soc_component_update_bits (component,R_PLLCTL1C ,RM_PLLCTL1C_PDB_PLL1 ,RV_PLLCTL1C_PDB_PLL1_DISABLE );if (ret <0 ) {dev_err (component->dev,"Failed to turn PLL off (%d)\n" , ret); - goto exit; +return ret; } ret =snd_soc_component_update_bits (component,R_PLLCTL1C ,RM_PLLCTL1C_PDB_PLL2 ,RV_PLLCTL1C_PDB_PLL2_DISABLE );if (ret <0 ) {dev_err (component->dev,"Failed to turn PLL off (%d)\n" , ret); - goto exit; +return ret; } ret =0 ; -exit: -mutex_unlock (&tscs42xx->pll_lock);return ret; }
@@ -269,13 +265,11 @@ static int coeff_ram_get(struct snd_kcontrol *kcontrol, (struct coeff_ram_ctl *)kcontrol->private_value;struct soc_bytes_ext *params = &ctl->bytes_ext; -mutex_lock (&tscs42xx->coeff_ram_lock); +guard (mutex)(&tscs42xx->coeff_ram_lock);memcpy (ucontrol->value.bytes.data, &tscs42xx->coeff_ram[ctl->addr *COEFF_SIZE ], params->max); -mutex_unlock (&tscs42xx->coeff_ram_lock); -return 0 ; }
@@ -290,14 +284,14 @@ static int coeff_ram_put(struct snd_kcontrol *kcontrol,unsigned int coeff_cnt = params->max /COEFF_SIZE ;int ret; -mutex_lock (&tscs42xx->coeff_ram_lock); +guard (mutex)(&tscs42xx->coeff_ram_lock); tscs42xx->coeff_ram_synced = false;memcpy (&tscs42xx->coeff_ram[ctl->addr *COEFF_SIZE ], ucontrol->value.bytes.data, params->max); -mutex_lock (&tscs42xx->pll_lock); +guard (mutex)(&tscs42xx->pll_lock);if (plls_locked (component)) { ret = write_coeff_ram(component, tscs42xx->coeff_ram,
@@ -305,16 +299,12 @@ static int coeff_ram_put(struct snd_kcontrol *kcontrol,if (ret <0 ) {dev_err (component->dev,"Failed to flush coeff ram cache (%d)\n" , ret); - goto exit; +return ret; } tscs42xx->coeff_ram_synced = true; } ret =0 ; -exit: -mutex_unlock (&tscs42xx->pll_lock); - -mutex_unlock (&tscs42xx->coeff_ram_lock);return ret; }
@@ -385,19 +375,17 @@ static int dac_event(struct snd_soc_dapm_widget *w,struct tscs42xx *tscs42xx =snd_soc_component_get_drvdata (component);int ret; -mutex_lock (&tscs42xx->coeff_ram_lock); +guard (mutex)(&tscs42xx->coeff_ram_lock);if (!tscs42xx->coeff_ram_synced) { ret =write_coeff_ram (component, tscs42xx->coeff_ram,0x00 ,COEFF_RAM_COEFF_COUNT );if (ret <0 ) - goto exit; +return ret; tscs42xx->coeff_ram_synced = true; } ret =0 ; -exit: -mutex_unlock (&tscs42xx->coeff_ram_lock);return ret; }
@@ -926,12 +914,10 @@ static int setup_sample_rate(struct snd_soc_component *component,return ret; } -mutex_lock (&tscs42xx->audio_params_lock); +guard (mutex)(&tscs42xx->audio_params_lock); tscs42xx->samplerate = rate; -mutex_unlock (&tscs42xx->audio_params_lock); -return 0 ; }
@@ -1253,12 +1239,10 @@ static int tscs42xx_set_dai_bclk_ratio(struct snd_soc_dai *codec_dai,return ret; } -mutex_lock (&tscs42xx->audio_params_lock); +guard (mutex)(&tscs42xx->audio_params_lock); tscs42xx->bclk_ratio = ratio; -mutex_unlock (&tscs42xx->audio_params_lock); -return 0 ; }
Signature · 1 line
2.43.0
PATCH 61/78 ASoC: codecs: tscs454: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/tscs454.c | 106 ++++++++++++++----------------------- 1 file changed, 41 insertions(+), 65 deletions(-)
sound/soc/codecs/tscs454.c +41 -65
@@ -329,12 +329,10 @@ static int coeff_ram_get(struct snd_kcontrol *kcontrol,return -EINVAL ; } -mutex_lock (coeff_ram_lock); - -memcpy (ucontrol->value.bytes.data, - &coeff_ram[ctl->addr *COEFF_SIZE ], params->max); - -mutex_unlock (coeff_ram_lock); + scoped_guard(mutex, coeff_ram_lock) { +memcpy (ucontrol->value.bytes.data, + &coeff_ram[ctl->addr *COEFF_SIZE ], params->max); + }return 0 ; }
@@ -428,15 +426,15 @@ static int coeff_ram_put(struct snd_kcontrol *kcontrol,return -EINVAL ; } -mutex_lock (coeff_ram_lock); +guard (mutex)(coeff_ram_lock); *coeff_ram_synced = false;memcpy (&coeff_ram[ctl->addr *COEFF_SIZE ], ucontrol->value.bytes.data, params->max); -mutex_lock (&tscs454->pll1.lock); -mutex_lock (&tscs454->pll2.lock); +guard (mutex)(&tscs454->pll1.lock); +guard (mutex)(&tscs454->pll2.lock); val =snd_soc_component_read (component,R_PLLSTAT );if (val) {/* PLLs locked */
@@ -446,18 +444,12 @@ static int coeff_ram_put(struct snd_kcontrol *kcontrol,if (ret <0 ) {dev_err (component->dev,"Failed to flush coeff ram cache (%d)\n" , ret); - goto exit; +return ret; } *coeff_ram_synced = true; } - ret =0 ; -exit: -mutex_unlock (&tscs454->pll2.lock); -mutex_unlock (&tscs454->pll1.lock); -mutex_unlock (coeff_ram_lock); - -return ret; +return 0 ; } static inline int coeff_ram_sync(struct snd_soc_component *component,
@@ -465,41 +457,35 @@ static inline int coeff_ram_sync(struct snd_soc_component *component, {int ret; -mutex_lock (&tscs454->dac_ram.lock); -if (!tscs454->dac_ram.synced) { - ret =write_coeff_ram (component, tscs454->dac_ram.cache, -R_DACCRS ,R_DACCRADD ,R_DACCRWDL , -0x00 ,COEFF_RAM_COEFF_COUNT ); -if (ret <0 ) { -mutex_unlock (&tscs454->dac_ram.lock); -return ret; + scoped_guard(mutex, &tscs454->dac_ram.lock) { +if (!tscs454->dac_ram.synced) { + ret =write_coeff_ram (component, tscs454->dac_ram.cache, +R_DACCRS ,R_DACCRADD ,R_DACCRWDL , +0x00 ,COEFF_RAM_COEFF_COUNT ); +if (ret <0 ) +return ret; } } -mutex_unlock (&tscs454->dac_ram.lock); -mutex_lock (&tscs454->spk_ram.lock); -if (!tscs454->spk_ram.synced) { - ret =write_coeff_ram (component, tscs454->spk_ram.cache, -R_SPKCRS ,R_SPKCRADD ,R_SPKCRWDL , -0x00 ,COEFF_RAM_COEFF_COUNT ); -if (ret <0 ) { -mutex_unlock (&tscs454->spk_ram.lock); -return ret; + scoped_guard(mutex, &tscs454->spk_ram.lock) { +if (!tscs454->spk_ram.synced) { + ret =write_coeff_ram (component, tscs454->spk_ram.cache, +R_SPKCRS ,R_SPKCRADD ,R_SPKCRWDL , +0x00 ,COEFF_RAM_COEFF_COUNT ); +if (ret <0 ) +return ret; } } -mutex_unlock (&tscs454->spk_ram.lock); -mutex_lock (&tscs454->sub_ram.lock); -if (!tscs454->sub_ram.synced) { - ret =write_coeff_ram (component, tscs454->sub_ram.cache, -R_SUBCRS ,R_SUBCRADD ,R_SUBCRWDL , -0x00 ,COEFF_RAM_COEFF_COUNT ); -if (ret <0 ) { -mutex_unlock (&tscs454->sub_ram.lock); -return ret; + scoped_guard(mutex, &tscs454->sub_ram.lock) { +if (!tscs454->sub_ram.synced) { + ret =write_coeff_ram (component, tscs454->sub_ram.cache, +R_SUBCRS ,R_SUBCRADD ,R_SUBCRWDL , +0x00 ,COEFF_RAM_COEFF_COUNT ); +if (ret <0 ) +return ret; } } -mutex_unlock (&tscs454->sub_ram.lock);return 0 ; }
@@ -658,16 +644,14 @@ static int set_sysclk(struct snd_soc_component *component)static inline void reserve_pll (struct pll *pll) { -mutex_lock (&pll->lock); +guard (mutex)(&pll->lock); pll->users++; -mutex_unlock (&pll->lock); }static inline void free_pll (struct pll *pll) { -mutex_lock (&pll->lock); +guard (mutex)(&pll->lock); pll->users--; -mutex_unlock (&pll->lock); } static int pll_connected(struct snd_soc_dapm_widget *source,
@@ -679,15 +663,13 @@ static int pll_connected(struct snd_soc_dapm_widget *source,int users;if (strstr (source->name,"PLL 1" )) { -mutex_lock (&tscs454->pll1.lock); - users = tscs454->pll1.users; -mutex_unlock (&tscs454->pll1.lock); +scoped_guard (mutex, &tscs454->pll1.lock) + users = tscs454->pll1.users;dev_dbg (component->dev,"%s(): PLL 1 users = %d\n" , __func__, users); }else { -mutex_lock (&tscs454->pll2.lock); - users = tscs454->pll2.users; -mutex_unlock (&tscs454->pll2.lock); +scoped_guard (mutex, &tscs454->pll2.lock) + users = tscs454->pll2.users;dev_dbg (component->dev,"%s(): PLL 2 users = %d\n" , __func__, users); }
@@ -806,7 +788,7 @@ static inline int aif_free(struct snd_soc_component *component, {struct tscs454 *tscs454 =snd_soc_component_get_drvdata (component); -mutex_lock (&tscs454->aifs_status_lock); +guard (mutex)(&tscs454->aifs_status_lock);dev_dbg (component->dev,"%s(): aif %d\n" , __func__, aif->id);
@@ -829,8 +811,6 @@ static inline int aif_free(struct snd_soc_component *component,free_pll (tscs454->internal_rate.pll); } -mutex_unlock (&tscs454->aifs_status_lock); -return 0 ; }
@@ -3174,7 +3154,7 @@ static int tscs454_hw_params(struct snd_pcm_substream *substream,unsigned int val;int ret; -mutex_lock (&tscs454->aifs_status_lock); +guard (mutex)(&tscs454->aifs_status_lock);dev_dbg (component->dev,"%s(): aif %d fs = %u\n" , __func__, aif->id, fs);
@@ -3207,14 +3187,14 @@ static int tscs454_hw_params(struct snd_pcm_substream *substream, ret =set_aif_fs (component, aif->id, fs);if (ret <0 ) {dev_err (component->dev,"Failed to set aif fs (%d)\n" , ret); - goto exit; +return ret; } ret =set_aif_sample_format (component,params_format (params), aif->id);if (ret <0 ) {dev_err (component->dev,"Failed to set aif sample format (%d)\n" , ret); - goto exit; +return ret; } set_aif_status_active(&tscs454->aifs_status, aif->id,
@@ -3223,11 +3203,7 @@ static int tscs454_hw_params(struct snd_pcm_substream *substream,dev_dbg (component->dev,"Set aif %d active. Streams status is 0x%x\n" , aif->id, tscs454->aifs_status.streams); - ret =0 ; -exit: -mutex_unlock (&tscs454->aifs_status_lock); - -return ret; +return 0 ; } static int tscs454_hw_free(struct snd_pcm_substream *substream,
Signature · 1 line
2.43.0
PATCH 62/78 ASoC: codecs: twl6040: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/twl6040.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-)
sound/soc/codecs/twl6040.c +1 -3
@@ -273,7 +273,7 @@ static void twl6040_hs_jack_report(struct snd_soc_component *component,struct twl6040_data *priv =snd_soc_component_get_drvdata (component);int status; -mutex_lock (&priv->mutex); +guard (mutex)(&priv->mutex);/* Sync status */ status =twl6040_read (component,TWL6040_REG_STATUS );
@@ -281,8 +281,6 @@ static void twl6040_hs_jack_report(struct snd_soc_component *component,snd_soc_jack_report (jack, report, report); else snd_soc_jack_report(jack, 0, report); - -mutex_unlock (&priv->mutex); } void twl6040_hs_jack_detect(struct snd_soc_component *component,
Signature · 1 line
2.43.0
PATCH 63/78 ASoC: codecs: wcd-mbhc: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/wcd-mbhc-v2.c | 142 +++++++++++++++------------------ 1 file changed, 66 insertions(+), 76 deletions(-)
sound/soc/codecs/wcd-mbhc-v2.c +66 -76
@@ -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); }
Signature · 1 line
2.43.0
PATCH 64/78 ASoC: codecs: wcd934x: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/wcd934x.c | 46 ++++++++++++++++---------------------- 1 file changed, 19 insertions(+), 27 deletions(-)
sound/soc/codecs/wcd934x.c +19 -27
@@ -1265,13 +1265,12 @@ static int wcd934x_set_sido_input_src(struct wcd934x_codec *wcd, int sido_src)static int wcd934x_enable_ana_bias_and_sysclk (struct wcd934x_codec *wcd) { -mutex_lock (&wcd->sysclk_mutex); - -if (++wcd->sysclk_users !=1 ) { -mutex_unlock (&wcd->sysclk_mutex); -return 0 ; + scoped_guard(mutex, &wcd->sysclk_mutex) { +if (++wcd->sysclk_users !=1 ) { +mutex_unlock (&wcd->sysclk_mutex); +return 0 ; + } } -mutex_unlock (&wcd->sysclk_mutex); regmap_update_bits(wcd->regmap, WCD934X_ANA_BIAS, WCD934X_ANA_BIAS_EN_MASK,
@@ -1328,12 +1327,12 @@ static int wcd934x_enable_ana_bias_and_sysclk(struct wcd934x_codec *wcd)static int wcd934x_disable_ana_bias_and_syclk (struct wcd934x_codec *wcd) { -mutex_lock (&wcd->sysclk_mutex); -if (--wcd->sysclk_users !=0 ) { -mutex_unlock (&wcd->sysclk_mutex); -return 0 ; + scoped_guard(mutex, &wcd->sysclk_mutex) { +if (--wcd->sysclk_users !=0 ) { +mutex_unlock (&wcd->sysclk_mutex); +return 0 ; + } } -mutex_unlock (&wcd->sysclk_mutex); regmap_update_bits(wcd->regmap, WCD934X_CLK_SYS_MCLK_PRG, WCD934X_EXT_CLK_BUF_EN_MASK |
@@ -2384,7 +2383,7 @@ static int wcd934x_micbias_control(struct snd_soc_component *component, __func__, micb_num);return -EINVAL ; } -mutex_lock (&wcd934x->micb_lock); +guard (mutex)(&wcd934x->micb_lock);switch (req) {case MICB_PULLUP_ENABLE :
@@ -2446,8 +2445,6 @@ static int wcd934x_micbias_control(struct snd_soc_component *component,break ; } -mutex_unlock (&wcd934x->micb_lock); -return 0 ; }
@@ -2488,7 +2485,7 @@ static int wcd934x_mbhc_micb_adjust_voltage(struct snd_soc_component *component, int req_volt, int micb_num) {struct wcd934x_codec *wcd934x =snd_soc_component_get_drvdata (component); -int cur_vout_ctl, req_vout_ctl, micb_reg, micb_en, ret =0 ; +int cur_vout_ctl, req_vout_ctl, micb_reg, micb_en;switch (micb_num) {case MIC_BIAS_1 :
@@ -2506,7 +2503,7 @@ static int wcd934x_mbhc_micb_adjust_voltage(struct snd_soc_component *component,default :return -EINVAL ; } -mutex_lock (&wcd934x->micb_lock); +guard (mutex)(&wcd934x->micb_lock);/* * If requested micbias voltage is same as current micbias * voltage, then just return. Otherwise, adjust voltage as
@@ -2521,15 +2518,11 @@ static int wcd934x_mbhc_micb_adjust_voltage(struct snd_soc_component *component, WCD934X_MICB_VAL_MASK); req_vout_ctl =wcd_get_micb_vout_ctl_val (component->dev, req_volt); -if (req_vout_ctl <0 ) { - ret = -EINVAL ; - goto exit; - } +if (req_vout_ctl <0 ) +return -EINVAL ; -if (cur_vout_ctl == req_vout_ctl) { - ret =0 ; - goto exit; - } +if (cur_vout_ctl == req_vout_ctl) +return 0 ;if (micb_en ==WCD934X_MICB_ENABLE ) snd_soc_component_write_field(component, micb_reg,
@@ -2550,9 +2543,8 @@ static int wcd934x_mbhc_micb_adjust_voltage(struct snd_soc_component *component,*/ usleep_range (2000 ,2100 ); } -exit: -mutex_unlock (&wcd934x->micb_lock); -return ret; + +return 0 ; } static int wcd934x_mbhc_micb_ctrl_threshold_mic(struct snd_soc_component *component,
Signature · 1 line
2.43.0
PATCH 65/78 ASoC: codecs: wcd937x: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/wcd937x.c | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-)
sound/soc/codecs/wcd937x.c +9 -15
@@ -1056,7 +1056,7 @@ static int wcd937x_micbias_control(struct snd_soc_component *component,return -EINVAL ; } -mutex_lock (&wcd937x->micb_lock); +guard (mutex)(&wcd937x->micb_lock);switch (req) {case MICB_PULLUP_ENABLE : wcd937x->pullup_ref[micb_index]++;
@@ -1136,7 +1136,6 @@ static int wcd937x_micbias_control(struct snd_soc_component *component, }break ; } -mutex_unlock (&wcd937x->micb_lock);return 0 ; }
@@ -1460,7 +1459,7 @@ static int wcd937x_mbhc_micb_adjust_voltage(struct snd_soc_component *component, int req_volt, int micb_num) {struct wcd937x_priv *wcd937x =snd_soc_component_get_drvdata (component); -int cur_vout_ctl, req_vout_ctl, micb_reg, micb_en, ret =0 ; +int cur_vout_ctl, req_vout_ctl, micb_reg, micb_en;switch (micb_num) {case MIC_BIAS_1 :
@@ -1475,7 +1474,7 @@ static int wcd937x_mbhc_micb_adjust_voltage(struct snd_soc_component *component,default :return -EINVAL ; } -mutex_lock (&wcd937x->micb_lock); +guard (mutex)(&wcd937x->micb_lock);/* * If requested micbias voltage is same as current micbias * voltage, then just return. Otherwise, adjust voltage as
@@ -1490,15 +1489,11 @@ static int wcd937x_mbhc_micb_adjust_voltage(struct snd_soc_component *component, WCD937X_MICB_VOUT_MASK); req_vout_ctl =wcd_get_micb_vout_ctl_val (component->dev, req_volt); -if (req_vout_ctl <0 ) { - ret = -EINVAL ; - goto exit; - } +if (req_vout_ctl <0 ) +return -EINVAL ; -if (cur_vout_ctl == req_vout_ctl) { - ret =0 ; - goto exit; - } +if (cur_vout_ctl == req_vout_ctl) +return 0 ;if (micb_en ==WCD937X_MICB_ENABLE ) snd_soc_component_write_field(component, micb_reg,
@@ -1519,9 +1514,8 @@ static int wcd937x_mbhc_micb_adjust_voltage(struct snd_soc_component *component,*/ usleep_range (2000 ,2100 ); } -exit: -mutex_unlock (&wcd937x->micb_lock); -return ret; + +return 0 ; } static int wcd937x_mbhc_micb_ctrl_threshold_mic(struct snd_soc_component *component,
Signature · 1 line
2.43.0
PATCH 66/78 ASoC: codecs: wcd938x: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/wcd938x.c | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-)
sound/soc/codecs/wcd938x.c +8 -13
@@ -1976,7 +1976,7 @@ static int wcd938x_mbhc_micb_adjust_voltage(struct snd_soc_component *component, int req_volt, int micb_num) {struct wcd938x_priv *wcd938x =snd_soc_component_get_drvdata (component); -int cur_vout_ctl, req_vout_ctl, micb_reg, micb_en, ret =0 ; +int cur_vout_ctl, req_vout_ctl, micb_reg, micb_en;switch (micb_num) {case MIC_BIAS_1 :
@@ -1994,7 +1994,7 @@ static int wcd938x_mbhc_micb_adjust_voltage(struct snd_soc_component *component,default :return -EINVAL ; } -mutex_lock (&wcd938x->micb_lock); +guard (mutex)(&wcd938x->micb_lock);/* * If requested micbias voltage is same as current micbias * voltage, then just return. Otherwise, adjust voltage as
@@ -2009,15 +2009,11 @@ static int wcd938x_mbhc_micb_adjust_voltage(struct snd_soc_component *component, WCD938X_MICB_VOUT_MASK); req_vout_ctl =wcd_get_micb_vout_ctl_val (component->dev, req_volt); -if (req_vout_ctl <0 ) { - ret = -EINVAL ; - goto exit; - } +if (req_vout_ctl <0 ) +return -EINVAL ; -if (cur_vout_ctl == req_vout_ctl) { - ret =0 ; - goto exit; - } +if (cur_vout_ctl == req_vout_ctl) +return 0 ;if (micb_en ==WCD938X_MICB_ENABLE ) snd_soc_component_write_field(component, micb_reg,
@@ -2038,9 +2034,8 @@ static int wcd938x_mbhc_micb_adjust_voltage(struct snd_soc_component *component,*/ usleep_range (2000 ,2100 ); } -exit: -mutex_unlock (&wcd938x->micb_lock); -return ret; + +return 0 ; } static int wcd938x_mbhc_micb_ctrl_threshold_mic(struct snd_soc_component *component,
Signature · 1 line
2.43.0
PATCH 67/78 ASoC: codecs: wcd939x: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/wcd939x.c | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-)
sound/soc/codecs/wcd939x.c +6 -13
@@ -1923,7 +1923,6 @@ static int wcd939x_mbhc_micb_adjust_voltage(struct snd_soc_component *component,struct wcd939x_priv *wcd939x =snd_soc_component_get_drvdata (component);unsigned int micb_reg, cur_vout_ctl, micb_en;int req_vout_ctl; -int ret =0 ;switch (micb_num) {case MIC_BIAS_1 :
@@ -1941,7 +1940,7 @@ static int wcd939x_mbhc_micb_adjust_voltage(struct snd_soc_component *component,default :return -EINVAL ; } -mutex_lock (&wcd939x->micb_lock); +guard (mutex)(&wcd939x->micb_lock);/* * If requested micbias voltage is same as current micbias
@@ -1957,15 +1956,11 @@ static int wcd939x_mbhc_micb_adjust_voltage(struct snd_soc_component *component, WCD939X_MICB_VOUT_CTL); req_vout_ctl =wcd_get_micb_vout_ctl_val (component->dev, req_volt); -if (req_vout_ctl <0 ) { - ret = req_vout_ctl; - goto exit; - } +if (req_vout_ctl <0 ) +return req_vout_ctl; -if (cur_vout_ctl == req_vout_ctl) { - ret =0 ; - goto exit; - } +if (cur_vout_ctl == req_vout_ctl) +return 0 ; dev_dbg(component->dev, "%s: micb_num: %d, cur_mv: %d, req_mv: %d, micb_en: %d\n", __func__, micb_num, WCD_VOUT_CTL_TO_MICB(cur_vout_ctl),
@@ -1990,9 +1985,7 @@ static int wcd939x_mbhc_micb_adjust_voltage(struct snd_soc_component *component,usleep_range (2000 ,2100 ); } -exit: -mutex_unlock (&wcd939x->micb_lock); -return ret; +return 0 ; } static int wcd939x_mbhc_micb_ctrl_threshold_mic(struct snd_soc_component *component,
Signature · 1 line
2.43.0
PATCH 68/78 ASoC: codecs: wm0010: Use guard() for mutex & spin locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex & spin locks. Merely code refactoring, and no behavior change.
--- sound/soc/codecs/wm0010.c | 63 ++++++++++++++------------------------- 1 file changed, 23 insertions(+), 40 deletions(-)
sound/soc/codecs/wm0010.c +23 -40
@@ -148,13 +148,11 @@ static const char *wm0010_state_to_str(enum wm0010_state state)static void wm0010_halt (struct snd_soc_component *component) {struct wm0010_priv *wm0010 =snd_soc_component_get_drvdata (component); -unsigned long flags;enum wm0010_state state;/* Fetch the wm0010 state */ -spin_lock_irqsave (&wm0010->irq_lock, flags); - state = wm0010->state; -spin_unlock_irqrestore (&wm0010->irq_lock, flags); +scoped_guard (spinlock_irqsave, &wm0010->irq_lock) + state = wm0010->state;switch (state) {case WM0010_POWER_OFF :
@@ -173,9 +171,8 @@ static void wm0010_halt(struct snd_soc_component *component)break ; } -spin_lock_irqsave (&wm0010->irq_lock, flags); - wm0010->state =WM0010_POWER_OFF ; -spin_unlock_irqrestore (&wm0010->irq_lock, flags); +scoped_guard (spinlock_irqsave, &wm0010->irq_lock) + wm0010->state = WM0010_POWER_OFF; }struct wm0010_boot_xfer {
@@ -190,11 +187,9 @@ struct wm0010_boot_xfer {static void wm0010_mark_boot_failure (struct wm0010_priv *wm0010) {enum wm0010_state state; -unsigned long flags; -spin_lock_irqsave (&wm0010->irq_lock, flags); - state = wm0010->state; -spin_unlock_irqrestore (&wm0010->irq_lock, flags); +scoped_guard (spinlock_irqsave, &wm0010->irq_lock) + state = wm0010->state;dev_err (wm0010->dev,"Failed to transition from `%s' state to `%s' state\n" ,wm0010_state_to_str (state),wm0010_state_to_str (state +1 ));
@@ -558,7 +553,6 @@ static int wm0010_boot(struct snd_soc_component *component) {struct spi_device *spi =to_spi_device (component->dev);struct wm0010_priv *wm0010 =snd_soc_component_get_drvdata (component); -unsigned long flags;int ret;struct spi_message m;struct spi_transfer t;
@@ -568,10 +562,10 @@ static int wm0010_boot(struct snd_soc_component *component)u8 *out;int i; -spin_lock_irqsave (&wm0010->irq_lock, flags); -if (wm0010->state !=WM0010_POWER_OFF ) -dev_warn (wm0010->dev,"DSP already powered up!\n" ); -spin_unlock_irqrestore (&wm0010->irq_lock, flags); + scoped_guard(spinlock_irqsave, &wm0010->irq_lock) { +if (wm0010->state !=WM0010_POWER_OFF ) +dev_warn (wm0010->dev,"DSP already powered up!\n" ); + }if (wm0010->sysclk >26000000 ) {dev_err (component->dev,"Max DSP clock frequency is 26MHz\n" );
@@ -579,7 +573,7 @@ static int wm0010_boot(struct snd_soc_component *component) goto err; } -mutex_lock (&wm0010->lock); +guard (mutex)(&wm0010->lock); wm0010->pll_running = false;dev_dbg (component->dev,"max_spi_freq: %d\n" , wm0010->max_spi_freq);
@@ -589,7 +583,6 @@ static int wm0010_boot(struct snd_soc_component *component)if (ret !=0 ) {dev_err (&spi->dev,"Failed to enable core supplies: %d\n" , ret); -mutex_unlock (&wm0010->lock); goto err; }
@@ -601,17 +594,15 @@ static int wm0010_boot(struct snd_soc_component *component)/* Release reset */ gpiod_set_value_cansleep (wm0010->reset,0 ); -spin_lock_irqsave (&wm0010->irq_lock, flags); - wm0010->state =WM0010_OUT_OF_RESET ; -spin_unlock_irqrestore (&wm0010->irq_lock, flags); +scoped_guard (spinlock_irqsave, &wm0010->irq_lock) + wm0010->state = WM0010_OUT_OF_RESET;if (!wait_for_completion_timeout (&wm0010->boot_completion,msecs_to_jiffies (20 )))dev_err (component->dev,"Failed to get interrupt from DSP\n" ); -spin_lock_irqsave (&wm0010->irq_lock, flags); - wm0010->state =WM0010_BOOTROM ; -spin_unlock_irqrestore (&wm0010->irq_lock, flags); +scoped_guard (spinlock_irqsave, &wm0010->irq_lock) + wm0010->state = WM0010_BOOTROM; ret =wm0010_stage2_load (component);if (ret)
@@ -621,9 +612,8 @@ static int wm0010_boot(struct snd_soc_component *component) msecs_to_jiffies(20))) dev_err(component->dev, "Failed to get interrupt from DSP loader.\n"); -spin_lock_irqsave (&wm0010->irq_lock, flags); - wm0010->state =WM0010_STAGE2 ; -spin_unlock_irqrestore (&wm0010->irq_lock, flags); + scoped_guard(spinlock_irqsave, &wm0010->irq_lock) + wm0010->state =WM0010_STAGE2 ;/* Only initialise PLL if max_spi_freq initialised */ if (wm0010->max_spi_freq) {
@@ -693,11 +683,8 @@ static int wm0010_boot(struct snd_soc_component *component)if (ret !=0 ) goto abort; -spin_lock_irqsave (&wm0010->irq_lock, flags); - wm0010->state =WM0010_FIRMWARE ; -spin_unlock_irqrestore (&wm0010->irq_lock, flags); - -mutex_unlock (&wm0010->lock); +scoped_guard (spinlock_irqsave, &wm0010->irq_lock) + wm0010->state = WM0010_FIRMWARE;return 0 ;
@@ -708,11 +695,9 @@ static int wm0010_boot(struct snd_soc_component *component) abort:/* Put the chip back into reset */ wm0010_halt (component); -mutex_unlock (&wm0010->lock);return ret; err_core: -mutex_unlock (&wm0010->lock);regulator_bulk_disable (ARRAY_SIZE (wm0010->core_supplies), wm0010->core_supplies); err:
@@ -734,9 +719,8 @@ static int wm0010_set_bias_level(struct snd_soc_component *component,break ;case SND_SOC_BIAS_STANDBY :if (snd_soc_dapm_get_bias_level (dapm) ==SND_SOC_BIAS_PREPARE ) { -mutex_lock (&wm0010->lock); -wm0010_halt (component); -mutex_unlock (&wm0010->lock); + scoped_guard(mutex, &wm0010->lock) +wm0010_halt (component); }break ;case SND_SOC_BIAS_OFF :
@@ -832,9 +816,8 @@ static irqreturn_t wm0010_irq(int irq, void *data)case WM0010_OUT_OF_RESET :case WM0010_BOOTROM :case WM0010_STAGE2 : -spin_lock (&wm0010->irq_lock); -complete (&wm0010->boot_completion); -spin_unlock (&wm0010->irq_lock); + scoped_guard(spinlock, &wm0010->irq_lock) +complete (&wm0010->boot_completion);return IRQ_HANDLED ;default :return IRQ_NONE ;
Signature · 1 line
2.43.0
PATCH 69/78 ASoC: codecs: wm2000: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/wm2000.c | 27 ++++++--------------------- 1 file changed, 6 insertions(+), 21 deletions(-)
sound/soc/codecs/wm2000.c +6 -21
@@ -612,20 +612,15 @@ static int wm2000_anc_mode_put(struct snd_kcontrol *kcontrol,struct snd_soc_component *component =snd_kcontrol_chip (kcontrol);struct wm2000_priv *wm2000 =dev_get_drvdata (component->dev);unsigned int anc_active = ucontrol->value.integer.value[0 ]; -int ret;if (anc_active >1 )return -EINVAL ; -mutex_lock (&wm2000->lock); +guard (mutex)(&wm2000->lock); wm2000->anc_active = anc_active; - ret =wm2000_anc_set_mode (wm2000); - -mutex_unlock (&wm2000->lock); - -return ret; +return wm2000_anc_set_mode (wm2000); } static int wm2000_speaker_get(struct snd_kcontrol *kcontrol,
@@ -645,20 +640,15 @@ static int wm2000_speaker_put(struct snd_kcontrol *kcontrol,struct snd_soc_component *component =snd_kcontrol_chip (kcontrol);struct wm2000_priv *wm2000 =dev_get_drvdata (component->dev);unsigned int val = ucontrol->value.integer.value[0 ]; -int ret;if (val >1 )return -EINVAL ; -mutex_lock (&wm2000->lock); +guard (mutex)(&wm2000->lock); wm2000->spk_ena = val; - ret =wm2000_anc_set_mode (wm2000); - -mutex_unlock (&wm2000->lock); - -return ret; +return wm2000_anc_set_mode (wm2000); }static const struct snd_kcontrol_new wm2000_controls[] = {
@@ -676,9 +666,8 @@ static int wm2000_anc_power_event(struct snd_soc_dapm_widget *w, {struct snd_soc_component *component =snd_soc_dapm_to_component (w->dapm);struct wm2000_priv *wm2000 =dev_get_drvdata (component->dev); -int ret; -mutex_lock (&wm2000->lock); +guard (mutex)(&wm2000->lock);if (SND_SOC_DAPM_EVENT_ON (event)) wm2000->anc_eng_ena =1 ;
@@ -686,11 +675,7 @@ static int wm2000_anc_power_event(struct snd_soc_dapm_widget *w,if (SND_SOC_DAPM_EVENT_OFF (event)) wm2000->anc_eng_ena =0 ; - ret =wm2000_anc_set_mode (wm2000); - -mutex_unlock (&wm2000->lock); - -return ret; +return wm2000_anc_set_mode (wm2000); }static const struct snd_soc_dapm_widget wm2000_dapm_widgets[] = {
Signature · 1 line
2.43.0
PATCH 70/78 ASoC: codecs: wm5102: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/wm5102.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-)
sound/soc/codecs/wm5102.c +4 -8
@@ -667,10 +667,9 @@ static int wm5102_out_comp_coeff_get(struct snd_kcontrol *kcontrol,struct snd_soc_component *component =snd_kcontrol_chip (kcontrol);struct arizona *arizona =dev_get_drvdata (component->dev->parent); -mutex_lock (&arizona->dac_comp_lock); +guard (mutex)(&arizona->dac_comp_lock);put_unaligned_be16 (arizona->dac_comp_coeff, ucontrol->value.bytes.data); -mutex_unlock (&arizona->dac_comp_lock);return 0 ; }
@@ -683,12 +682,11 @@ static int wm5102_out_comp_coeff_put(struct snd_kcontrol *kcontrol,uint16_t dac_comp_coeff =get_unaligned_be16 (ucontrol->value.bytes.data);int ret =0 ; -mutex_lock (&arizona->dac_comp_lock); +guard (mutex)(&arizona->dac_comp_lock);if (arizona->dac_comp_coeff != dac_comp_coeff) { arizona->dac_comp_coeff = dac_comp_coeff; ret =1 ; } -mutex_unlock (&arizona->dac_comp_lock);return ret; }
@@ -699,9 +697,8 @@ static int wm5102_out_comp_switch_get(struct snd_kcontrol *kcontrol,struct snd_soc_component *component =snd_kcontrol_chip (kcontrol);struct arizona *arizona =dev_get_drvdata (component->dev->parent); -mutex_lock (&arizona->dac_comp_lock); +guard (mutex)(&arizona->dac_comp_lock); ucontrol->value.integer.value[0 ] = arizona->dac_comp_enabled; -mutex_unlock (&arizona->dac_comp_lock);return 0 ; }
@@ -717,12 +714,11 @@ static int wm5102_out_comp_switch_put(struct snd_kcontrol *kcontrol,if (ucontrol->value.integer.value[0 ] > mc->max)return -EINVAL ; -mutex_lock (&arizona->dac_comp_lock); +guard (mutex)(&arizona->dac_comp_lock);if (arizona->dac_comp_enabled != ucontrol->value.integer.value[0 ]) { arizona->dac_comp_enabled = ucontrol->value.integer.value[0 ]; ret =1 ; } -mutex_unlock (&arizona->dac_comp_lock);return ret; }
Signature · 1 line
2.43.0
PATCH 71/78 ASoC: codecs: wm8731: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/wm8731.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
sound/soc/codecs/wm8731.c +1 -2
@@ -115,7 +115,7 @@ static int wm8731_put_deemph(struct snd_kcontrol *kcontrol,if (deemph >1 )return -EINVAL ; -mutex_lock (&wm8731->lock); +guard (mutex)(&wm8731->lock);if (wm8731->deemph != deemph) { wm8731->deemph = deemph;
@@ -123,7 +123,6 @@ static int wm8731_put_deemph(struct snd_kcontrol *kcontrol, ret =1 ; } -mutex_unlock (&wm8731->lock);return ret; }
Signature · 1 line
2.43.0
PATCH 72/78 ASoC: codecs: wm8903: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/wm8903.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
sound/soc/codecs/wm8903.c +1 -2
@@ -463,7 +463,7 @@ static int wm8903_put_deemph(struct snd_kcontrol *kcontrol,if (deemph >1 )return -EINVAL ; -mutex_lock (&wm8903->lock); +guard (mutex)(&wm8903->lock);if (wm8903->deemph != deemph) { wm8903->deemph = deemph;
@@ -471,7 +471,6 @@ static int wm8903_put_deemph(struct snd_kcontrol *kcontrol, ret =1 ; } -mutex_unlock (&wm8903->lock);return ret; }
Signature · 1 line
2.43.0
PATCH 73/78 ASoC: codecs: wm8958: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/wm8958-dsp2.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-)
sound/soc/codecs/wm8958-dsp2.c +3 -6
@@ -864,9 +864,8 @@ static void wm8958_enh_eq_loaded(const struct firmware *fw, void *context)struct wm8994_priv *wm8994 =snd_soc_component_get_drvdata (component);if (fw && (wm8958_dsp2_fw (component,"ENH_EQ" , fw, true) ==0 )) { -mutex_lock (&wm8994->fw_lock); +guard (mutex)(&wm8994->fw_lock); wm8994->enh_eq = fw; -mutex_unlock (&wm8994->fw_lock); } }
@@ -876,9 +875,8 @@ static void wm8958_mbc_vss_loaded(const struct firmware *fw, void *context)struct wm8994_priv *wm8994 =snd_soc_component_get_drvdata (component);if (fw && (wm8958_dsp2_fw (component,"MBC+VSS" , fw, true) ==0 )) { -mutex_lock (&wm8994->fw_lock); +guard (mutex)(&wm8994->fw_lock); wm8994->mbc_vss = fw; -mutex_unlock (&wm8994->fw_lock); } }
@@ -888,9 +886,8 @@ static void wm8958_mbc_loaded(const struct firmware *fw, void *context)struct wm8994_priv *wm8994 =snd_soc_component_get_drvdata (component);if (fw && (wm8958_dsp2_fw (component,"MBC" , fw, true) ==0 )) { -mutex_lock (&wm8994->fw_lock); +guard (mutex)(&wm8994->fw_lock); wm8994->mbc = fw; -mutex_unlock (&wm8994->fw_lock); } }
Signature · 1 line
2.43.0
PATCH 74/78 ASoC: codecs: wm8962: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/wm8962.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-)
sound/soc/codecs/wm8962.c +2 -5
@@ -1568,7 +1568,7 @@ static int wm8962_dsp2_ena_put(struct snd_kcontrol *kcontrol,int dsp2_running =snd_soc_component_read (component,WM8962_DSP2_POWER_MANAGEMENT ) &WM8962_DSP2_ENA ; -mutex_lock (&wm8962->dsp2_ena_lock); +guard (mutex)(&wm8962->dsp2_ena_lock);if (ucontrol->value.integer.value[0 ]) wm8962->dsp2_ena |=1 << shift;
@@ -1576,7 +1576,7 @@ static int wm8962_dsp2_ena_put(struct snd_kcontrol *kcontrol, wm8962->dsp2_ena &= ~(1 << shift);if (wm8962->dsp2_ena == old) - goto out; +return ret; ret =1 ;
@@ -1587,9 +1587,6 @@ static int wm8962_dsp2_ena_put(struct snd_kcontrol *kcontrol,wm8962_dsp2_stop (component); } -out: -mutex_unlock (&wm8962->dsp2_ena_lock); -return ret; }
Signature · 1 line
2.43.0
PATCH 75/78 ASoC: codecs: wm8994: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/wm8994.c | 51 +++++++++++++++------------------------ 1 file changed, 20 insertions(+), 31 deletions(-)
sound/soc/codecs/wm8994.c +20 -31
@@ -766,7 +766,7 @@ static void active_reference(struct snd_soc_component *component) {struct wm8994_priv *wm8994 =snd_soc_component_get_drvdata (component); -mutex_lock (&wm8994->accdet_lock); +guard (mutex)(&wm8994->accdet_lock); wm8994->active_refcount++;
@@ -775,8 +775,6 @@ static void active_reference(struct snd_soc_component *component)/* If we're using jack detection go into audio mode */ wm1811_jackdet_set_mode (component,WM1811_JACKDET_MODE_AUDIO ); - -mutex_unlock (&wm8994->accdet_lock); }static void active_dereference (struct snd_soc_component *component)
@@ -784,7 +782,7 @@ static void active_dereference(struct snd_soc_component *component)struct wm8994_priv *wm8994 =snd_soc_component_get_drvdata (component);u16 mode; -mutex_lock (&wm8994->accdet_lock); +guard (mutex)(&wm8994->accdet_lock); wm8994->active_refcount--;
@@ -800,8 +798,6 @@ static void active_dereference(struct snd_soc_component *component)wm1811_jackdet_set_mode (component, mode); } - -mutex_unlock (&wm8994->accdet_lock); } static int clk_sys_event(struct snd_soc_dapm_widget *w,
@@ -3704,7 +3700,7 @@ static void wm8958_open_circuit_work(struct work_struct *work) open_circuit_work.work);struct device *dev = wm8994->wm8994->dev; -mutex_lock (&wm8994->accdet_lock); +guard (mutex)(&wm8994->accdet_lock);wm1811_micd_stop (wm8994->hubs.component);
@@ -3718,8 +3714,6 @@ static void wm8958_open_circuit_work(struct work_struct *work)snd_soc_jack_report (wm8994->micdet[0 ].jack,0 , wm8994->btn_mask |SND_JACK_HEADSET ); - -mutex_unlock (&wm8994->accdet_lock); }static void wm8958_mic_id (void *data,u16 status)
@@ -3785,27 +3779,25 @@ static void wm1811_mic_work(struct work_struct *work)snd_soc_dapm_sync (dapm); } -mutex_lock (&wm8994->accdet_lock); - -dev_dbg (component->dev,"Starting mic detection\n" ); + scoped_guard(mutex, &wm8994->accdet_lock) { +dev_dbg (component->dev,"Starting mic detection\n" ); -/* Use a user-supplied callback if we have one */ -if (wm8994->micd_cb) { - wm8994->micd_cb (wm8994->micd_cb_data); - }else { -/* -* Start off measument of microphone impedence to find out -* what's actually there. -*/ - wm8994->mic_detecting = true; -wm1811_jackdet_set_mode (component,WM1811_JACKDET_MODE_MIC ); +/* Use a user-supplied callback if we have one */ +if (wm8994->micd_cb) { + wm8994->micd_cb (wm8994->micd_cb_data); + }else { +/* +* Start off measument of microphone impedence to find out +* what's actually there. +*/ + wm8994->mic_detecting = true; +wm1811_jackdet_set_mode (component,WM1811_JACKDET_MODE_MIC ); -snd_soc_component_update_bits (component,WM8958_MIC_DETECT_1 , -WM8958_MICD_ENA ,WM8958_MICD_ENA ); +snd_soc_component_update_bits (component,WM8958_MIC_DETECT_1 , +WM8958_MICD_ENA ,WM8958_MICD_ENA ); + } } -mutex_unlock (&wm8994->accdet_lock); -pm_runtime_put (component->dev); }
@@ -4028,11 +4020,8 @@ static void wm8958_mic_work(struct work_struct *work)pm_runtime_get_sync (component->dev); -mutex_lock (&wm8994->accdet_lock); - - wm8994->mic_id_cb (wm8994->mic_id_cb_data, wm8994->mic_status); - -mutex_unlock (&wm8994->accdet_lock); +scoped_guard (mutex, &wm8994->accdet_lock) + wm8994->mic_id_cb(wm8994->mic_id_cb_data, wm8994->mic_status);pm_runtime_put (component->dev); }
Signature · 1 line
2.43.0
PATCH 76/78 ASoC: codecs: wm971x: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/wm9712.c | 4 +--- sound/soc/codecs/wm9713.c | 4 +--- 2 files changed, 2 insertions(+), 6 deletions(-)
sound/soc/codecs/wm9712.c +1 -3
@@ -229,7 +229,7 @@ static int wm9712_hp_mixer_put(struct snd_kcontrol *kcontrol, shift = mc->shift &0xff ; mask =1 << shift; -mutex_lock (&wm9712->lock); +guard (mutex)(&wm9712->lock); old = wm9712->hp_mixer[mixer];if (ucontrol->value.integer.value[0 ]) wm9712->hp_mixer[mixer] |= mask;
@@ -251,8 +251,6 @@ static int wm9712_hp_mixer_put(struct snd_kcontrol *kcontrol, &update); } -mutex_unlock (&wm9712->lock); -return change; }
sound/soc/codecs/wm9713.c +1 -3
@@ -238,7 +238,7 @@ static int wm9713_hp_mixer_put(struct snd_kcontrol *kcontrol, shift = mc->shift &0xff ; mask = (1 << shift); -mutex_lock (&wm9713->lock); +guard (mutex)(&wm9713->lock); old = wm9713->hp_mixer[mixer];if (ucontrol->value.integer.value[0 ]) wm9713->hp_mixer[mixer] |= mask;
@@ -260,8 +260,6 @@ static int wm9713_hp_mixer_put(struct snd_kcontrol *kcontrol, &update); } -mutex_unlock (&wm9713->lock); -return change; }
Signature · 1 line
2.43.0
PATCH 77/78 ASoC: codecs: wm_adsp: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/wm_adsp.c | 87 +++++++++++--------------------------- 1 file changed, 25 insertions(+), 62 deletions(-)
sound/soc/codecs/wm_adsp.c +25 -62
@@ -356,15 +356,13 @@ int wm_adsp_fw_put(struct snd_kcontrol *kcontrol,if (ucontrol->value.enumerated.item[0 ] >=WM_ADSP_NUM_FW )return -EINVAL ; -mutex_lock (&dsp[e->shift_l].cs_dsp.pwr_lock); +guard (mutex)(&dsp[e->shift_l].cs_dsp.pwr_lock);if (dsp[e->shift_l].cs_dsp.booted || !list_empty (&dsp[e->shift_l].compr_list)) ret = -EBUSY ;else dsp[e->shift_l].fw = ucontrol->value.enumerated.item[0 ]; -mutex_unlock (&dsp[e->shift_l].cs_dsp.pwr_lock); -return ret; }EXPORT_SYMBOL_GPL (wm_adsp_fw_put);
@@ -450,15 +448,11 @@ static int wm_coeff_put_acked(struct snd_kcontrol *kctl,if (val ==0 )return 0 ;/* 0 means no event */ -mutex_lock (&cs_ctl->dsp->pwr_lock); -if (cs_ctl->enabled) ret =cs_dsp_coeff_write_acked_control (cs_ctl, val);else ret = -EPERM ; -mutex_unlock (&cs_ctl->dsp->pwr_lock); -if (ret <0 )return ret;
@@ -486,15 +480,13 @@ static int wm_coeff_tlv_get(struct snd_kcontrol *kctl,struct cs_dsp_coeff_ctl *cs_ctl = ctl->cs_ctl;int ret =0 ; -mutex_lock (&cs_ctl->dsp->pwr_lock); +guard (mutex)(&cs_ctl->dsp->pwr_lock); ret =cs_dsp_coeff_read_ctrl (cs_ctl,0 , cs_ctl->cache, size);if (!ret &©_to_user (bytes, cs_ctl->cache, size)) ret = -EFAULT ; -mutex_unlock (&cs_ctl->dsp->pwr_lock); -return ret; }
@@ -694,10 +686,9 @@ int wm_adsp_write_ctl(struct wm_adsp *dsp, const char *name, int type,struct cs_dsp_coeff_ctl *cs_ctl;int ret; -mutex_lock (&dsp->cs_dsp.pwr_lock); +guard (mutex)(&dsp->cs_dsp.pwr_lock); cs_ctl =cs_dsp_get_ctl (&dsp->cs_dsp, name, type, alg); ret =cs_dsp_coeff_write_ctrl (cs_ctl,0 , buf, len); -mutex_unlock (&dsp->cs_dsp.pwr_lock);if (ret <0 )return ret;
@@ -709,14 +700,10 @@ EXPORT_SYMBOL_GPL(wm_adsp_write_ctl);int wm_adsp_read_ctl (struct wm_adsp *dsp,const char *name,int type,unsigned int alg,void *buf,size_t len) { -int ret; +guard (mutex)(&dsp->cs_dsp.pwr_lock); -mutex_lock (&dsp->cs_dsp.pwr_lock); - ret =cs_dsp_coeff_read_ctrl (cs_dsp_get_ctl (&dsp->cs_dsp, name, type, alg), +return cs_dsp_coeff_read_ctrl (cs_dsp_get_ctl (&dsp->cs_dsp, name, type, alg),0 , buf, len); -mutex_unlock (&dsp->cs_dsp.pwr_lock); - -return ret; }EXPORT_SYMBOL_GPL (wm_adsp_read_ctl);
@@ -1270,38 +1257,32 @@ int wm_adsp_compr_open(struct wm_adsp *dsp, struct snd_compr_stream *stream) {struct wm_adsp_compr *compr, *tmp;struct snd_soc_pcm_runtime *rtd = stream->private_data; -int ret =0 ; -mutex_lock (&dsp->cs_dsp.pwr_lock); +guard (mutex)(&dsp->cs_dsp.pwr_lock);if (wm_adsp_fw[dsp->fw].num_caps ==0 ) {adsp_err (dsp,"%s: Firmware does not support compressed API\n" ,snd_soc_rtd_to_codec (rtd,0 )->name); - ret = -ENXIO ; - goto out; +return -ENXIO ; }if (wm_adsp_fw[dsp->fw].compr_direction != stream->direction) {adsp_err (dsp,"%s: Firmware does not support stream direction\n" ,snd_soc_rtd_to_codec (rtd,0 )->name); - ret = -EINVAL ; - goto out; +return -EINVAL ; }list_for_each_entry (tmp, &dsp->compr_list, list) {if (!strcmp (tmp->name,snd_soc_rtd_to_codec (rtd,0 )->name)) {adsp_err (dsp,"%s: Only a single stream supported per dai\n" ,snd_soc_rtd_to_codec (rtd,0 )->name); - ret = -EBUSY ; - goto out; +return -EBUSY ; } } compr =kzalloc_obj (*compr); -if (!compr) { - ret = -ENOMEM ; - goto out; - } +if (!compr) +return -ENOMEM ; compr->dsp = dsp; compr->stream = stream;
@@ -1311,10 +1292,7 @@ int wm_adsp_compr_open(struct wm_adsp *dsp, struct snd_compr_stream *stream) stream->runtime->private_data = compr; -out: -mutex_unlock (&dsp->cs_dsp.pwr_lock); - -return ret; +return 0 ; }EXPORT_SYMBOL_GPL (wm_adsp_compr_open);
@@ -1324,7 +1302,7 @@ int wm_adsp_compr_free(struct snd_soc_component *component,struct wm_adsp_compr *compr = stream->runtime->private_data;struct wm_adsp *dsp = compr->dsp; -mutex_lock (&dsp->cs_dsp.pwr_lock); +guard (mutex)(&dsp->cs_dsp.pwr_lock);wm_adsp_compr_detach (compr);list_del (&compr->list);
@@ -1332,8 +1310,6 @@ int wm_adsp_compr_free(struct snd_soc_component *component,kfree (compr->raw_buf);kfree (compr); -mutex_unlock (&dsp->cs_dsp.pwr_lock); -return 0 ; }EXPORT_SYMBOL_GPL (wm_adsp_compr_free);
@@ -1741,7 +1717,7 @@ int wm_adsp_compr_trigger(struct snd_soc_component *component,compr_dbg (compr,"Trigger: %d\n" , cmd); -mutex_lock (&dsp->cs_dsp.pwr_lock); +guard (mutex)(&dsp->cs_dsp.pwr_lock);switch (cmd) {case SNDRV_PCM_TRIGGER_START :
@@ -1777,8 +1753,6 @@ int wm_adsp_compr_trigger(struct snd_soc_component *component,break ; } -mutex_unlock (&dsp->cs_dsp.pwr_lock); -return ret; }EXPORT_SYMBOL_GPL (wm_adsp_compr_trigger);
@@ -1839,12 +1813,10 @@ int wm_adsp_compr_handle_irq(struct wm_adsp *dsp)struct wm_adsp_compr *compr;int ret =0 ; -mutex_lock (&dsp->cs_dsp.pwr_lock); +guard (mutex)(&dsp->cs_dsp.pwr_lock); -if (list_empty (&dsp->buffer_list)) { - ret = -ENODEV ; - goto out; - } +if (list_empty (&dsp->buffer_list)) +return -ENODEV ;adsp_dbg (dsp,"Handling buffer IRQ\n" );
@@ -1859,13 +1831,13 @@ int wm_adsp_compr_handle_irq(struct wm_adsp *dsp) &buf->irq_count);if (ret <0 ) {compr_err (buf,"Failed to get irq_count: %d\n" , ret); - goto out; +return ret; } ret =wm_adsp_buffer_update_avail (buf);if (ret <0 ) {compr_err (buf,"Error reading avail: %d\n" , ret); - goto out; +return ret; }if (wm_adsp_fw[dsp->fw].voice_trigger && buf->irq_count ==2 )
@@ -1876,9 +1848,6 @@ int wm_adsp_compr_handle_irq(struct wm_adsp *dsp)snd_compr_fragment_elapsed (compr->stream); } -out: -mutex_unlock (&dsp->cs_dsp.pwr_lock); -return ret; }EXPORT_SYMBOL_GPL (wm_adsp_compr_handle_irq);
@@ -1907,21 +1876,20 @@ int wm_adsp_compr_pointer(struct snd_soc_component *component,compr_dbg (compr,"Pointer request\n" ); -mutex_lock (&dsp->cs_dsp.pwr_lock); +guard (mutex)(&dsp->cs_dsp.pwr_lock); buf = compr->buf;if (dsp->fatal_error || !buf || buf->error) {snd_compr_stop_error (stream,SNDRV_PCM_STATE_XRUN ); - ret = -EIO ; - goto out; +return -EIO ; }if (buf->avail <wm_adsp_compr_frag_words (compr)) { ret =wm_adsp_buffer_update_avail (buf);if (ret <0 ) {compr_err (compr,"Error reading avail: %d\n" , ret); - goto out; +return ret; }/*
@@ -1934,14 +1902,14 @@ int wm_adsp_compr_pointer(struct snd_soc_component *component,if (buf->error)snd_compr_stop_error (stream,SNDRV_PCM_STATE_XRUN ); - goto out; +return ret; } ret =wm_adsp_buffer_reenable_irq (buf);if (ret <0 ) {compr_err (compr,"Failed to re-enable buffer IRQ: %d\n" , ret); - goto out; +return ret; } } }
@@ -1950,9 +1918,6 @@ int wm_adsp_compr_pointer(struct snd_soc_component *component, tstamp->copied_total += buf->avail *CS_DSP_DATA_WORD_SIZE ; tstamp->sampling_rate = compr->sample_rate; -out: -mutex_unlock (&dsp->cs_dsp.pwr_lock); -return ret; }EXPORT_SYMBOL_GPL (wm_adsp_compr_pointer);
@@ -2063,15 +2028,13 @@ int wm_adsp_compr_copy(struct snd_soc_component *component,struct wm_adsp *dsp = compr->dsp;int ret; -mutex_lock (&dsp->cs_dsp.pwr_lock); +guard (mutex)(&dsp->cs_dsp.pwr_lock);if (stream->direction ==SND_COMPRESS_CAPTURE ) ret =wm_adsp_compr_read (compr, buf, count);else ret = -ENOTSUPP ; -mutex_unlock (&dsp->cs_dsp.pwr_lock); -return ret; }EXPORT_SYMBOL_GPL (wm_adsp_compr_copy);
Signature · 1 line
2.43.0
PATCH 78/78 ASoC: codecs: wsa88xx: Use guard() for mutex locks
In reply to [email protected]From: bui duc phuc <[email protected]>
Clean up the code using guard() for mutex locks.
Merely code refactoring, and no behavior change.
--- sound/soc/codecs/wsa883x.c | 10 ++++------ sound/soc/codecs/wsa884x.c | 10 ++++------ 2 files changed, 8 insertions(+), 12 deletions(-)
sound/soc/codecs/wsa883x.c +4 -6
@@ -1237,9 +1237,8 @@ static int wsa883x_spkr_event(struct snd_soc_dapm_widget *w,switch (event) {case SND_SOC_DAPM_POST_PMU : -mutex_lock (&wsa883x->sp_lock); - wsa883x->pa_on = true; -mutex_unlock (&wsa883x->sp_lock); +scoped_guard (mutex, &wsa883x->sp_lock) + wsa883x->pa_on = true;switch (wsa883x->dev_mode) {case RECEIVER :
@@ -1290,9 +1289,8 @@ static int wsa883x_spkr_event(struct snd_soc_dapm_widget *w, WSA883X_GLOBAL_PA_EN_MASK, 0);snd_soc_component_write_field (component,WSA883X_PDM_WD_CTL ,WSA883X_PDM_EN_MASK ,0 ); -mutex_lock (&wsa883x->sp_lock); - wsa883x->pa_on = false; -mutex_unlock (&wsa883x->sp_lock); +scoped_guard (mutex, &wsa883x->sp_lock) + wsa883x->pa_on = false;break ; }return 0 ;
sound/soc/codecs/wsa884x.c +4 -6
@@ -1701,9 +1701,8 @@ static int wsa884x_spkr_event(struct snd_soc_dapm_widget *w,switch (event) {case SND_SOC_DAPM_POST_PMU : -mutex_lock (&wsa884x->sp_lock); - wsa884x->pa_on = true; -mutex_unlock (&wsa884x->sp_lock); +scoped_guard (mutex, &wsa884x->sp_lock) + wsa884x->pa_on = true;wsa884x_spkr_post_pmu (component, wsa884x);
@@ -1717,9 +1716,8 @@ static int wsa884x_spkr_event(struct snd_soc_dapm_widget *w,WSA884X_PDM_WD_CTL_PDM_WD_EN_MASK , 0x0); -mutex_lock (&wsa884x->sp_lock); - wsa884x->pa_on = false; -mutex_unlock (&wsa884x->sp_lock); +scoped_guard (mutex, &wsa884x->sp_lock) + wsa884x->pa_on = false;break ; }
Signature · 1 line
2.43.0