Refactor audio device tree handling
Subsystems (7)
Charles Keepax
maintainercover Refactor audio device tree handling
Move the audio device tree binding out into its own documentation file, as is already done for the regulator and extcon bindings. Then add support for a new device tree property allowing the volume limits on the CODEC to be configured.
It should be possible to put the patches through their separate trees.
Thanks,
Charles
Charles Keepax (7):
ASoC: arizona: Add new common Arizona init function
ASoC: arizona: Add handling for audio related device tree entries
ASoC: arizona: Add audio device tree bindings
mfd: arizona: Remove audio related device tree code
mfd: arizona: Remove audio bindings from MFD binding document
ASoC: arizona: Add support for setting the output volume limits
ASoC: arizona: Add device tree binding doc for volume limits
Documentation/devicetree/bindings/mfd/arizona.txt | 40 +---- .../devicetree/bindings/sound/wlf,arizona.txt | 53 +++++++ MAINTAINERS | 1 + drivers/mfd/arizona-core.c | 132 +--------------- include/linux/mfd/arizona/pdata.h | 3 + sound/soc/codecs/arizona.c | 166 ++++++++++++++++++++- sound/soc/codecs/arizona.h | 6 +- sound/soc/codecs/cs47l24.c | 14 +- sound/soc/codecs/wm5102.c | 14 +- sound/soc/codecs/wm5110.c | 14 +- sound/soc/codecs/wm8997.c | 15 +- sound/soc/codecs/wm8998.c | 11 +- 12 files changed, 288 insertions(+), 181 deletions(-) create mode 100644 Documentation/devicetree/bindings/sound/wlf,arizona.txt
Signature · 1 line
2.11.0
Charles Keepax
maintainerPATCH 1/7 ASoC: arizona: Add new common Arizona init function
Currently the driver has quite a few small initialisation functions, in preparation for some refactoring add a new function arizona_init_common. This will be used bus probe level initialisation that is common across Arizona devices. For now just move the notifier chain initialisation in there.
--- sound/soc/codecs/arizona.c | 7 ++----- sound/soc/codecs/arizona.h | 3 ++- sound/soc/codecs/cs47l24.c | 3 ++- sound/soc/codecs/wm5102.c | 3 ++- sound/soc/codecs/wm5110.c | 3 ++- sound/soc/codecs/wm8997.c | 4 ++-- sound/soc/codecs/wm8998.c | 3 ++- 7 files changed, 14 insertions(+), 12 deletions(-)
sound/soc/codecs/arizona.c +2 -5
@@ -293,16 +293,13 @@ int arizona_init_gpio(struct snd_soc_codec *codec) }EXPORT_SYMBOL_GPL (arizona_init_gpio); -int arizona_init_notifiers (struct snd_soc_codec *codec) +int arizona_init_common (struct arizona *arizona) { -struct arizona_priv *priv =snd_soc_codec_get_drvdata (codec); -struct arizona *arizona = priv->arizona; -BLOCKING_INIT_NOTIFIER_HEAD (&arizona->notifier);return 0 ; } -EXPORT_SYMBOL_GPL (arizona_init_notifiers); +EXPORT_SYMBOL_GPL (arizona_init_common);const char *const arizona_mixer_texts[ARIZONA_NUM_MIXER_INPUTS ] = {"None" ,
sound/soc/codecs/arizona.h +2 -1
@@ -313,7 +313,8 @@ int arizona_set_fll(struct arizona_fll *fll, int source,int arizona_init_spk (struct snd_soc_codec *codec);int arizona_init_gpio (struct snd_soc_codec *codec);int arizona_init_mono (struct snd_soc_codec *codec); -int arizona_init_notifiers (struct snd_soc_codec *codec); + +int arizona_init_common (struct arizona *arizona);int arizona_init_spk_irqs (struct arizona *arizona);int arizona_free_spk_irqs (struct arizona *arizona);
sound/soc/codecs/cs47l24.c +2 -1
@@ -1130,7 +1130,6 @@ static int cs47l24_codec_probe(struct snd_soc_codec *codec)arizona_init_gpio (codec);arizona_init_mono (codec); -arizona_init_notifiers (codec); ret =wm_adsp2_codec_probe (&priv->core.adsp[1 ], codec);if (ret)
@@ -1288,6 +1287,8 @@ static int cs47l24_probe(struct platform_device *pdev)return ret; } +arizona_init_common (arizona); + ret =arizona_init_spk_irqs (arizona);if (ret <0 ) goto err_dsp_irq;
sound/soc/codecs/wm5102.c +2 -1
@@ -1951,7 +1951,6 @@ static int wm5102_codec_probe(struct snd_soc_codec *codec)return ret;arizona_init_gpio (codec); -arizona_init_notifiers (codec);snd_soc_component_disable_pin (component,"HAPTICS" );
@@ -2098,6 +2097,8 @@ static int wm5102_probe(struct platform_device *pdev)return ret; } +arizona_init_common (arizona); + ret =arizona_init_spk_irqs (arizona);if (ret <0 ) goto err_dsp_irq;
sound/soc/codecs/wm5110.c +2 -1
@@ -2290,7 +2290,6 @@ static int wm5110_codec_probe(struct snd_soc_codec *codec)arizona_init_gpio (codec);arizona_init_mono (codec); -arizona_init_notifiers (codec);for (i =0 ; i <WM5110_NUM_ADSP ; ++i) { ret =wm_adsp2_codec_probe (&priv->core.adsp[i], codec);
@@ -2454,6 +2453,8 @@ static int wm5110_probe(struct platform_device *pdev)return ret; } +arizona_init_common (arizona); + ret =arizona_init_spk_irqs (arizona);if (ret <0 ) goto err_dsp_irq;
sound/soc/codecs/wm8997.c +2 -2
@@ -1068,8 +1068,6 @@ static int wm8997_codec_probe(struct snd_soc_codec *codec)if (ret <0 )return ret; -arizona_init_notifiers (codec); -snd_soc_component_disable_pin (component,"HAPTICS" ); priv->core.arizona->dapm = dapm;
@@ -1168,6 +1166,8 @@ static int wm8997_probe(struct platform_device *pdev)pm_runtime_enable (&pdev->dev);pm_runtime_idle (&pdev->dev); +arizona_init_common (arizona); + ret =arizona_init_spk_irqs (arizona);if (ret <0 )return ret;
sound/soc/codecs/wm8998.c +2 -1
@@ -1330,7 +1330,6 @@ static int wm8998_codec_probe(struct snd_soc_codec *codec)return ret;arizona_init_gpio (codec); -arizona_init_notifiers (codec);snd_soc_component_disable_pin (component,"HAPTICS" );
@@ -1423,6 +1422,8 @@ static int wm8998_probe(struct platform_device *pdev)pm_runtime_enable (&pdev->dev);pm_runtime_idle (&pdev->dev); +arizona_init_common (arizona); + ret =arizona_init_spk_irqs (arizona);if (ret <0 )return ret;
Signature · 6 lines
2.11.0 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Mark Brown
maintainerApplied "ASoC: arizona: Add new common Arizona init function" to the asoc tree
The patch
ASoC: arizona: Add new common Arizona init function
has been applied to the asoc tree at
git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git
All being well this means that it will be integrated into the linux-next tree (usually sometime in the next 24 hours) and sent to Linus during the next merge window (or sooner if it is a bug fix), however if problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing and review of the tree, please engage with people reporting problems and send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they should be sent as incremental updates against current git, existing patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying to this mail.
Thanks,
Mark
Quoted 1 line
From
9e3f9f36a6f40bb6ba9b3844d709314121e4c106Mon Sep 17 00:00:00 2001
From: Charles Keepax <[email protected]>
Date: Mon, 4 Sep 2017 16:41:48 +0100
Subject: [PATCH] ASoC: arizona: Add new common Arizona init function
Currently the driver has quite a few small initialisation functions, in preparation for some refactoring add a new function arizona_init_common. This will be used bus probe level initialisation that is common across Arizona devices. For now just move the notifier chain initialisation in there.
--- sound/soc/codecs/arizona.c | 7 ++----- sound/soc/codecs/arizona.h | 3 ++- sound/soc/codecs/cs47l24.c | 3 ++- sound/soc/codecs/wm5102.c | 3 ++- sound/soc/codecs/wm5110.c | 3 ++- sound/soc/codecs/wm8997.c | 4 ++-- sound/soc/codecs/wm8998.c | 3 ++- 7 files changed, 14 insertions(+), 12 deletions(-)
sound/soc/codecs/arizona.c +2 -5
@@ -293,16 +293,13 @@ int arizona_init_gpio(struct snd_soc_codec *codec) }EXPORT_SYMBOL_GPL (arizona_init_gpio); -int arizona_init_notifiers (struct snd_soc_codec *codec) +int arizona_init_common (struct arizona *arizona) { -struct arizona_priv *priv =snd_soc_codec_get_drvdata (codec); -struct arizona *arizona = priv->arizona; -BLOCKING_INIT_NOTIFIER_HEAD (&arizona->notifier);return 0 ; } -EXPORT_SYMBOL_GPL (arizona_init_notifiers); +EXPORT_SYMBOL_GPL (arizona_init_common);const char *const arizona_mixer_texts[ARIZONA_NUM_MIXER_INPUTS ] = {"None" ,
sound/soc/codecs/arizona.h +2 -1
@@ -313,7 +313,8 @@ int arizona_set_fll(struct arizona_fll *fll, int source,int arizona_init_spk (struct snd_soc_codec *codec);int arizona_init_gpio (struct snd_soc_codec *codec);int arizona_init_mono (struct snd_soc_codec *codec); -int arizona_init_notifiers (struct snd_soc_codec *codec); + +int arizona_init_common (struct arizona *arizona);int arizona_init_spk_irqs (struct arizona *arizona);int arizona_free_spk_irqs (struct arizona *arizona);
sound/soc/codecs/cs47l24.c +2 -1
@@ -1130,7 +1130,6 @@ static int cs47l24_codec_probe(struct snd_soc_codec *codec)arizona_init_gpio (codec);arizona_init_mono (codec); -arizona_init_notifiers (codec); ret =wm_adsp2_codec_probe (&priv->core.adsp[1 ], codec);if (ret)
@@ -1288,6 +1287,8 @@ static int cs47l24_probe(struct platform_device *pdev)return ret; } +arizona_init_common (arizona); + ret =arizona_init_spk_irqs (arizona);if (ret <0 ) goto err_dsp_irq;
sound/soc/codecs/wm5102.c +2 -1
@@ -1951,7 +1951,6 @@ static int wm5102_codec_probe(struct snd_soc_codec *codec)return ret;arizona_init_gpio (codec); -arizona_init_notifiers (codec);snd_soc_component_disable_pin (component,"HAPTICS" );
@@ -2098,6 +2097,8 @@ static int wm5102_probe(struct platform_device *pdev)return ret; } +arizona_init_common (arizona); + ret =arizona_init_spk_irqs (arizona);if (ret <0 ) goto err_dsp_irq;
sound/soc/codecs/wm5110.c +2 -1
@@ -2290,7 +2290,6 @@ static int wm5110_codec_probe(struct snd_soc_codec *codec)arizona_init_gpio (codec);arizona_init_mono (codec); -arizona_init_notifiers (codec);for (i =0 ; i <WM5110_NUM_ADSP ; ++i) { ret =wm_adsp2_codec_probe (&priv->core.adsp[i], codec);
@@ -2454,6 +2453,8 @@ static int wm5110_probe(struct platform_device *pdev)return ret; } +arizona_init_common (arizona); + ret =arizona_init_spk_irqs (arizona);if (ret <0 ) goto err_dsp_irq;
sound/soc/codecs/wm8997.c +2 -2
@@ -1068,8 +1068,6 @@ static int wm8997_codec_probe(struct snd_soc_codec *codec)if (ret <0 )return ret; -arizona_init_notifiers (codec); -snd_soc_component_disable_pin (component,"HAPTICS" ); priv->core.arizona->dapm = dapm;
@@ -1168,6 +1166,8 @@ static int wm8997_probe(struct platform_device *pdev)pm_runtime_enable (&pdev->dev);pm_runtime_idle (&pdev->dev); +arizona_init_common (arizona); + ret =arizona_init_spk_irqs (arizona);if (ret <0 )return ret;
sound/soc/codecs/wm8998.c +2 -1
@@ -1330,7 +1330,6 @@ static int wm8998_codec_probe(struct snd_soc_codec *codec)return ret;arizona_init_gpio (codec); -arizona_init_notifiers (codec);snd_soc_component_disable_pin (component,"HAPTICS" );
@@ -1423,6 +1422,8 @@ static int wm8998_probe(struct platform_device *pdev)pm_runtime_enable (&pdev->dev);pm_runtime_idle (&pdev->dev); +arizona_init_common (arizona); + ret =arizona_init_spk_irqs (arizona);if (ret <0 )return ret;
Signature · 1 line
2.14.1
Charles Keepax
maintainerPATCH 2/7 ASoC: arizona: Add handling for audio related device tree entries
In reply to Charles KeepaxCurrently all the audio related device tree entries are handled by the MFD code, for most parts of the Arizona driver we group the device tree handling with the component that uses it and should do so here as well.
Add handling in the ASoC code for the audio device tree entries, a later patch removes the MFD side handling but there is no harm in it being duplicated temporarily.
--- sound/soc/codecs/arizona.c | 136 +++++++++++++++++++++++++++++++++++++++++++++ sound/soc/codecs/arizona.h | 2 + sound/soc/codecs/cs47l24.c | 8 +++ sound/soc/codecs/wm5102.c | 8 +++ sound/soc/codecs/wm5110.c | 8 +++ sound/soc/codecs/wm8997.c | 8 +++ sound/soc/codecs/wm8998.c | 8 +++ 7 files changed, 178 insertions(+)
sound/soc/codecs/arizona.c +136 -0
@@ -13,6 +13,7 @@#include <linux/delay.h> #include <linux/gcd.h> #include <linux/module.h> +#include <linux/of.h> #include <linux/pm_runtime.h> #include <sound/pcm.h> #include <sound/pcm_params.h>
@@ -295,8 +296,78 @@ EXPORT_SYMBOL_GPL(arizona_init_gpio);int arizona_init_common (struct arizona *arizona) { +struct arizona_pdata *pdata = &arizona->pdata; +unsigned int val, mask; +int i; +BLOCKING_INIT_NOTIFIER_HEAD (&arizona->notifier); +for (i =0 ; i <ARIZONA_MAX_OUTPUT ; ++i) { +/* Default is 0 so noop with defaults */ +if (pdata->out_mono[i]) + val =ARIZONA_OUT1_MONO ; +else + val =0 ; + +regmap_update_bits (arizona->regmap, +ARIZONA_OUTPUT_PATH_CONFIG_1L + (i *8 ), +ARIZONA_OUT1_MONO , val); + } + +for (i =0 ; i <ARIZONA_MAX_PDM_SPK ; i++) { +if (pdata->spk_mute[i]) +regmap_update_bits (arizona->regmap, +ARIZONA_PDM_SPK1_CTRL_1 + (i *2 ), +ARIZONA_SPK1_MUTE_ENDIAN_MASK | +ARIZONA_SPK1_MUTE_SEQ1_MASK , + pdata->spk_mute[i]); + +if (pdata->spk_fmt[i]) +regmap_update_bits (arizona->regmap, +ARIZONA_PDM_SPK1_CTRL_2 + (i *2 ), +ARIZONA_SPK1_FMT_MASK , + pdata->spk_fmt[i]); + } + +for (i =0 ; i <ARIZONA_MAX_INPUT ; i++) { +/* Default for both is 0 so noop with defaults */ + val = pdata->dmic_ref[i] <<ARIZONA_IN1_DMIC_SUP_SHIFT ; +if (pdata->inmode[i] &ARIZONA_INMODE_DMIC ) + val |=1 <<ARIZONA_IN1_MODE_SHIFT ; + +switch (arizona->type) { +case WM8998 : +case WM1814 : +regmap_update_bits (arizona->regmap, +ARIZONA_ADC_DIGITAL_VOLUME_1L + (i *8 ), +ARIZONA_IN1L_SRC_SE_MASK , + (pdata->inmode[i] &ARIZONA_INMODE_SE ) + <<ARIZONA_IN1L_SRC_SE_SHIFT ); + +regmap_update_bits (arizona->regmap, +ARIZONA_ADC_DIGITAL_VOLUME_1R + (i *8 ), +ARIZONA_IN1R_SRC_SE_MASK , + (pdata->inmode[i] &ARIZONA_INMODE_SE ) + <<ARIZONA_IN1R_SRC_SE_SHIFT ); + + mask =ARIZONA_IN1_DMIC_SUP_MASK | +ARIZONA_IN1_MODE_MASK ; +break ; +default : +if (pdata->inmode[i] &ARIZONA_INMODE_SE ) + val |=1 <<ARIZONA_IN1_SINGLE_ENDED_SHIFT ; + + mask =ARIZONA_IN1_DMIC_SUP_MASK | +ARIZONA_IN1_MODE_MASK | +ARIZONA_IN1_SINGLE_ENDED_MASK ; +break ; + } + +regmap_update_bits (arizona->regmap, +ARIZONA_IN1L_CONTROL + (i *8 ), + mask, val); + } +return 0 ; }EXPORT_SYMBOL_GPL (arizona_init_common);
@@ -2692,6 +2763,71 @@ int arizona_lhpf_coeff_put(struct snd_kcontrol *kcontrol, }EXPORT_SYMBOL_GPL (arizona_lhpf_coeff_put); +int arizona_of_get_audio_pdata (struct arizona *arizona) +{ +struct arizona_pdata *pdata = &arizona->pdata; +struct device_node *np = arizona->dev->of_node; +struct property *prop; +const __be32 *cur; +u32 val; +u32 pdm_val[ARIZONA_MAX_PDM_SPK ]; +int ret; +int count =0 ; + + count =0 ; +of_property_for_each_u32 (np,"wlf,inmode" , prop, cur, val) { +if (count ==ARRAY_SIZE (pdata->inmode)) +break ; + + pdata->inmode[count] = val; + count++; + } + + count =0 ; +of_property_for_each_u32 (np,"wlf,dmic-ref" , prop, cur, val) { +if (count ==ARRAY_SIZE (pdata->dmic_ref)) +break ; + + pdata->dmic_ref[count] = val; + count++; + } + + count =0 ; +of_property_for_each_u32 (np,"wlf,out-mono" , prop, cur, val) { +if (count ==ARRAY_SIZE (pdata->out_mono)) +break ; + + pdata->out_mono[count] = !!val; + count++; + } + + count =0 ; +of_property_for_each_u32 (np,"wlf,max-channels-clocked" , prop, cur, val) { +if (count ==ARRAY_SIZE (pdata->max_channels_clocked)) +break ; + + pdata->max_channels_clocked[count] = val; + count++; + } + + ret =of_property_read_u32_array (np,"wlf,spk-fmt" , + pdm_val,ARRAY_SIZE (pdm_val)); + +if (ret >=0 ) +for (count =0 ; count <ARRAY_SIZE (pdata->spk_fmt); ++count) + pdata->spk_fmt[count] = pdm_val[count]; + + ret =of_property_read_u32_array (np,"wlf,spk-mute" , + pdm_val,ARRAY_SIZE (pdm_val)); + +if (ret >=0 ) +for (count =0 ; count <ARRAY_SIZE (pdata->spk_mute); ++count) + pdata->spk_mute[count] = pdm_val[count]; + +return 0 ; +} +EXPORT_SYMBOL_GPL (arizona_of_get_audio_pdata); +MODULE_DESCRIPTION ("ASoC Wolfson Arizona class device support" );MODULE_AUTHOR ("Mark Brown <[email protected]>" );MODULE_LICENSE ("GPL" );
sound/soc/codecs/arizona.h +2 -0
@@ -351,4 +351,6 @@ static inline int arizona_unregister_notifier(struct snd_soc_codec *codec, return blocking_notifier_chain_unregister(&arizona->notifier, nb); } +int arizona_of_get_audio_pdata (struct arizona *arizona); +#endif
sound/soc/codecs/cs47l24.c +8 -0
@@ -1229,6 +1229,14 @@ static int cs47l24_probe(struct platform_device *pdev)if (!cs47l24)return -ENOMEM ; +if (IS_ENABLED (CONFIG_OF )) { +if (!dev_get_platdata (arizona->dev)) { + ret =arizona_of_get_audio_pdata (arizona); +if (ret <0 ) +return ret; + } + } +platform_set_drvdata (pdev, cs47l24); cs47l24->core.arizona = arizona;
sound/soc/codecs/wm5102.c +8 -0
@@ -2042,6 +2042,14 @@ static int wm5102_probe(struct platform_device *pdev)return -ENOMEM ;platform_set_drvdata (pdev, wm5102); +if (IS_ENABLED (CONFIG_OF )) { +if (!dev_get_platdata (arizona->dev)) { + ret =arizona_of_get_audio_pdata (arizona); +if (ret <0 ) +return ret; + } + } +mutex_init (&arizona->dac_comp_lock); wm5102->core.arizona = arizona;
sound/soc/codecs/wm5110.c +8 -0
@@ -2397,6 +2397,14 @@ static int wm5110_probe(struct platform_device *pdev)return -ENOMEM ;platform_set_drvdata (pdev, wm5110); +if (IS_ENABLED (CONFIG_OF )) { +if (!dev_get_platdata (arizona->dev)) { + ret =arizona_of_get_audio_pdata (arizona); +if (ret <0 ) +return ret; + } + } + wm5110->core.arizona = arizona; wm5110->core.num_inputs =8 ;
sound/soc/codecs/wm8997.c +8 -0
@@ -1134,6 +1134,14 @@ static int wm8997_probe(struct platform_device *pdev)return -ENOMEM ;platform_set_drvdata (pdev, wm8997); +if (IS_ENABLED (CONFIG_OF )) { +if (!dev_get_platdata (arizona->dev)) { + ret =arizona_of_get_audio_pdata (arizona); +if (ret <0 ) +return ret; + } + } + wm8997->core.arizona = arizona; wm8997->core.num_inputs =4 ;
sound/soc/codecs/wm8998.c +8 -0
@@ -1398,6 +1398,14 @@ static int wm8998_probe(struct platform_device *pdev)return -ENOMEM ;platform_set_drvdata (pdev, wm8998); +if (IS_ENABLED (CONFIG_OF )) { +if (!dev_get_platdata (arizona->dev)) { + ret =arizona_of_get_audio_pdata (arizona); +if (ret <0 ) +return ret; + } + } + wm8998->core.arizona = arizona; wm8998->core.num_inputs =3 ;/* IN1L, IN1R, IN2 */
Signature · 1 line
2.11.0
Mark Brown
maintainerApplied "ASoC: arizona: Add handling for audio related device tree entries" to the asoc tree
The patch
ASoC: arizona: Add handling for audio related device tree entries
has been applied to the asoc tree at
git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git
All being well this means that it will be integrated into the linux-next tree (usually sometime in the next 24 hours) and sent to Linus during the next merge window (or sooner if it is a bug fix), however if problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing and review of the tree, please engage with people reporting problems and send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they should be sent as incremental updates against current git, existing patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying to this mail.
Thanks,
Mark
Quoted 1 line
From
0a229b15d99e0a9761f9672f4ff7efeb18ce0ea1Mon Sep 17 00:00:00 2001
From: Charles Keepax <[email protected]>
Date: Mon, 4 Sep 2017 16:41:49 +0100
Subject: [PATCH] ASoC: arizona: Add handling for audio related device tree
entries
Currently all the audio related device tree entries are handled by the MFD code, for most parts of the Arizona driver we group the device tree handling with the component that uses it and should do so here as well.
Add handling in the ASoC code for the audio device tree entries, a later patch removes the MFD side handling but there is no harm in it being duplicated temporarily.
--- sound/soc/codecs/arizona.c | 136 +++++++++++++++++++++++++++++++++++++++++++++ sound/soc/codecs/arizona.h | 2 + sound/soc/codecs/cs47l24.c | 8 +++ sound/soc/codecs/wm5102.c | 8 +++ sound/soc/codecs/wm5110.c | 8 +++ sound/soc/codecs/wm8997.c | 8 +++ sound/soc/codecs/wm8998.c | 8 +++ 7 files changed, 178 insertions(+)
sound/soc/codecs/arizona.c +136 -0
@@ -13,6 +13,7 @@#include <linux/delay.h> #include <linux/gcd.h> #include <linux/module.h> +#include <linux/of.h> #include <linux/pm_runtime.h> #include <sound/pcm.h> #include <sound/pcm_params.h>
@@ -295,8 +296,78 @@ EXPORT_SYMBOL_GPL(arizona_init_gpio);int arizona_init_common (struct arizona *arizona) { +struct arizona_pdata *pdata = &arizona->pdata; +unsigned int val, mask; +int i; +BLOCKING_INIT_NOTIFIER_HEAD (&arizona->notifier); +for (i =0 ; i <ARIZONA_MAX_OUTPUT ; ++i) { +/* Default is 0 so noop with defaults */ +if (pdata->out_mono[i]) + val =ARIZONA_OUT1_MONO ; +else + val =0 ; + +regmap_update_bits (arizona->regmap, +ARIZONA_OUTPUT_PATH_CONFIG_1L + (i *8 ), +ARIZONA_OUT1_MONO , val); + } + +for (i =0 ; i <ARIZONA_MAX_PDM_SPK ; i++) { +if (pdata->spk_mute[i]) +regmap_update_bits (arizona->regmap, +ARIZONA_PDM_SPK1_CTRL_1 + (i *2 ), +ARIZONA_SPK1_MUTE_ENDIAN_MASK | +ARIZONA_SPK1_MUTE_SEQ1_MASK , + pdata->spk_mute[i]); + +if (pdata->spk_fmt[i]) +regmap_update_bits (arizona->regmap, +ARIZONA_PDM_SPK1_CTRL_2 + (i *2 ), +ARIZONA_SPK1_FMT_MASK , + pdata->spk_fmt[i]); + } + +for (i =0 ; i <ARIZONA_MAX_INPUT ; i++) { +/* Default for both is 0 so noop with defaults */ + val = pdata->dmic_ref[i] <<ARIZONA_IN1_DMIC_SUP_SHIFT ; +if (pdata->inmode[i] &ARIZONA_INMODE_DMIC ) + val |=1 <<ARIZONA_IN1_MODE_SHIFT ; + +switch (arizona->type) { +case WM8998 : +case WM1814 : +regmap_update_bits (arizona->regmap, +ARIZONA_ADC_DIGITAL_VOLUME_1L + (i *8 ), +ARIZONA_IN1L_SRC_SE_MASK , + (pdata->inmode[i] &ARIZONA_INMODE_SE ) + <<ARIZONA_IN1L_SRC_SE_SHIFT ); + +regmap_update_bits (arizona->regmap, +ARIZONA_ADC_DIGITAL_VOLUME_1R + (i *8 ), +ARIZONA_IN1R_SRC_SE_MASK , + (pdata->inmode[i] &ARIZONA_INMODE_SE ) + <<ARIZONA_IN1R_SRC_SE_SHIFT ); + + mask =ARIZONA_IN1_DMIC_SUP_MASK | +ARIZONA_IN1_MODE_MASK ; +break ; +default : +if (pdata->inmode[i] &ARIZONA_INMODE_SE ) + val |=1 <<ARIZONA_IN1_SINGLE_ENDED_SHIFT ; + + mask =ARIZONA_IN1_DMIC_SUP_MASK | +ARIZONA_IN1_MODE_MASK | +ARIZONA_IN1_SINGLE_ENDED_MASK ; +break ; + } + +regmap_update_bits (arizona->regmap, +ARIZONA_IN1L_CONTROL + (i *8 ), + mask, val); + } +return 0 ; }EXPORT_SYMBOL_GPL (arizona_init_common);
@@ -2692,6 +2763,71 @@ int arizona_lhpf_coeff_put(struct snd_kcontrol *kcontrol, }EXPORT_SYMBOL_GPL (arizona_lhpf_coeff_put); +int arizona_of_get_audio_pdata (struct arizona *arizona) +{ +struct arizona_pdata *pdata = &arizona->pdata; +struct device_node *np = arizona->dev->of_node; +struct property *prop; +const __be32 *cur; +u32 val; +u32 pdm_val[ARIZONA_MAX_PDM_SPK ]; +int ret; +int count =0 ; + + count =0 ; +of_property_for_each_u32 (np,"wlf,inmode" , prop, cur, val) { +if (count ==ARRAY_SIZE (pdata->inmode)) +break ; + + pdata->inmode[count] = val; + count++; + } + + count =0 ; +of_property_for_each_u32 (np,"wlf,dmic-ref" , prop, cur, val) { +if (count ==ARRAY_SIZE (pdata->dmic_ref)) +break ; + + pdata->dmic_ref[count] = val; + count++; + } + + count =0 ; +of_property_for_each_u32 (np,"wlf,out-mono" , prop, cur, val) { +if (count ==ARRAY_SIZE (pdata->out_mono)) +break ; + + pdata->out_mono[count] = !!val; + count++; + } + + count =0 ; +of_property_for_each_u32 (np,"wlf,max-channels-clocked" , prop, cur, val) { +if (count ==ARRAY_SIZE (pdata->max_channels_clocked)) +break ; + + pdata->max_channels_clocked[count] = val; + count++; + } + + ret =of_property_read_u32_array (np,"wlf,spk-fmt" , + pdm_val,ARRAY_SIZE (pdm_val)); + +if (ret >=0 ) +for (count =0 ; count <ARRAY_SIZE (pdata->spk_fmt); ++count) + pdata->spk_fmt[count] = pdm_val[count]; + + ret =of_property_read_u32_array (np,"wlf,spk-mute" , + pdm_val,ARRAY_SIZE (pdm_val)); + +if (ret >=0 ) +for (count =0 ; count <ARRAY_SIZE (pdata->spk_mute); ++count) + pdata->spk_mute[count] = pdm_val[count]; + +return 0 ; +} +EXPORT_SYMBOL_GPL (arizona_of_get_audio_pdata); +MODULE_DESCRIPTION ("ASoC Wolfson Arizona class device support" );MODULE_AUTHOR ("Mark Brown <[email protected]>" );MODULE_LICENSE ("GPL" );
sound/soc/codecs/arizona.h +2 -0
@@ -351,4 +351,6 @@ static inline int arizona_unregister_notifier(struct snd_soc_codec *codec, return blocking_notifier_chain_unregister(&arizona->notifier, nb); } +int arizona_of_get_audio_pdata (struct arizona *arizona); +#endif
sound/soc/codecs/cs47l24.c +8 -0
@@ -1229,6 +1229,14 @@ static int cs47l24_probe(struct platform_device *pdev)if (!cs47l24)return -ENOMEM ; +if (IS_ENABLED (CONFIG_OF )) { +if (!dev_get_platdata (arizona->dev)) { + ret =arizona_of_get_audio_pdata (arizona); +if (ret <0 ) +return ret; + } + } +platform_set_drvdata (pdev, cs47l24); cs47l24->core.arizona = arizona;
sound/soc/codecs/wm5102.c +8 -0
@@ -2042,6 +2042,14 @@ static int wm5102_probe(struct platform_device *pdev)return -ENOMEM ;platform_set_drvdata (pdev, wm5102); +if (IS_ENABLED (CONFIG_OF )) { +if (!dev_get_platdata (arizona->dev)) { + ret =arizona_of_get_audio_pdata (arizona); +if (ret <0 ) +return ret; + } + } +mutex_init (&arizona->dac_comp_lock); wm5102->core.arizona = arizona;
sound/soc/codecs/wm5110.c +8 -0
@@ -2397,6 +2397,14 @@ static int wm5110_probe(struct platform_device *pdev)return -ENOMEM ;platform_set_drvdata (pdev, wm5110); +if (IS_ENABLED (CONFIG_OF )) { +if (!dev_get_platdata (arizona->dev)) { + ret =arizona_of_get_audio_pdata (arizona); +if (ret <0 ) +return ret; + } + } + wm5110->core.arizona = arizona; wm5110->core.num_inputs =8 ;
sound/soc/codecs/wm8997.c +8 -0
@@ -1134,6 +1134,14 @@ static int wm8997_probe(struct platform_device *pdev)return -ENOMEM ;platform_set_drvdata (pdev, wm8997); +if (IS_ENABLED (CONFIG_OF )) { +if (!dev_get_platdata (arizona->dev)) { + ret =arizona_of_get_audio_pdata (arizona); +if (ret <0 ) +return ret; + } + } + wm8997->core.arizona = arizona; wm8997->core.num_inputs =4 ;
sound/soc/codecs/wm8998.c +8 -0
@@ -1398,6 +1398,14 @@ static int wm8998_probe(struct platform_device *pdev)return -ENOMEM ;platform_set_drvdata (pdev, wm8998); +if (IS_ENABLED (CONFIG_OF )) { +if (!dev_get_platdata (arizona->dev)) { + ret =arizona_of_get_audio_pdata (arizona); +if (ret <0 ) +return ret; + } + } + wm8998->core.arizona = arizona; wm8998->core.num_inputs =3 ;/* IN1L, IN1R, IN2 */
Signature · 1 line
2.14.1
Charles Keepax
maintainerPATCH 3/7 ASoC: arizona: Add audio device tree bindings
In reply to Charles KeepaxIn keeping with the style of the rest of this drivers device tree bindings split the audio device tree bindings into their own document. It should be noted this patch makes no change to the binding itself just moves the documentation into a specific file for the audio binding. For easy of merging a separate patch removes the current documentation from the MFD binding documentation.
--- .../devicetree/bindings/sound/wlf,arizona.txt | 49 ++++++++++++++++++++++ MAINTAINERS | 1 + 2 files changed, 50 insertions(+) create mode 100644 Documentation/devicetree/bindings/sound/wlf,arizona.txt
Documentation/devicetree/bindings/sound/wlf,arizona.txt new file +49 -0
@@ -0,0 +1,49 @@ +Cirrus Logic Arizona class audio SoCs + +These devices are audio SoCs with extensive digital capabilities and a range +of analogue I/O. + +This document lists sound specific bindings, see the primary binding +document: + ../mfd/arizona.txt + +Optional properties: + + - wlf,inmode : A list of INn_MODE register values, where n is the number + of input signals. Valid values are 0 (Differential), 1 (Single-ended) and + 2 (Digital Microphone). If absent, INn_MODE registers set to 0 by default. + If present, values must be specified less than or equal to the number of + input signals. If values less than the number of input signals, elements + that have not been specified are set to 0 by default. Entries are: + <IN1, IN2, IN3, IN4> (wm5102, wm5110, wm8280, wm8997) + <IN1A, IN2A, IN1B, IN2B> (wm8998, wm1814) + - wlf,out-mono : A list of boolean values indicating whether each output is + mono or stereo. Position within the list indicates the output affected + (eg. First entry in the list corresponds to output 1). A non-zero value + indicates a mono output. If present, the number of values should be less + than or equal to the number of outputs, if less values are supplied the + additional outputs will be treated as stereo. + + - wlf,dmic-ref : DMIC reference voltage source for each input, can be + selected from either MICVDD or one of the MICBIAS's, defines + (ARIZONA_DMIC_xxxx) are provided in <dt-bindings/mfd/arizona.txt>. If + present, the number of values should be less than or equal to the + number of inputs, unspecified inputs will use the chip default. + + - wlf,max-channels-clocked : The maximum number of channels to be clocked on + each AIF, useful for I2S systems with multiple data lines being mastered. + Specify one cell for each AIF to be configured, specify zero for AIFs that + should be handled normally. + If present, number of cells must be less than or equal to the number of + AIFs. If less than the number of AIFs, for cells that have not been + specified the corresponding AIFs will be treated as default setting. + + - wlf,spk-fmt : PDM speaker data format, must contain 2 cells (OUT5 and OUT6). + See the datasheet for values. + The second cell is ignored for codecs that do not have OUT6 (wm5102, wm8997, + wm8998, wm1814) + + - wlf,spk-mute : PDM speaker mute setting, must contain 2 cells (OUT5 and OUT6). + See the datasheet for values. + The second cell is ignored for codecs that do not have OUT6 (wm5102, wm8997, + wm8998, wm1814)
MAINTAINERS +1 -0
@@ -14288,6 +14288,7 @@ F: Documentation/devicetree/bindings/extcon/extcon-arizona.txt F: Documentation/devicetree/bindings/regulator/arizona-regulator.txt F: Documentation/devicetree/bindings/mfd/arizona.txt F: Documentation/devicetree/bindings/mfd/wm831x.txt +F: Documentation/devicetree/bindings/sound/wlf,arizona.txt F: arch/arm/mach-s3c64xx/mach-crag6410* F: drivers/clk/clk-wm83*.c F: drivers/extcon/extcon-arizona.c
Signature · 1 line
2.11.0
Re: [PATCH 3/7] ASoC: arizona: Add audio device tree bindings
Quoted 7 lines · Charles Keepax
In keeping with the style of the rest of this drivers device tree bindings split the audio device tree bindings into their own document. It should be noted this patch makes no change to the binding itself just moves the documentation into a specific file for the audio binding. For easy of merging a separate patch removes the current documentation from the MFD binding documentation.
Quoted 6 lines
Signed-off-by Charles Keepax <[email protected]>--- .../devicetree/bindings/sound/wlf,arizona.txt | 49 ++++++++++++++++++++++ MAINTAINERS | 1 + 2 files changed, 50 insertions(+) create mode 100644 Documentation/devicetree/bindings/sound/wlf,arizona.txt
Mark Brown
maintainerApplied "ASoC: arizona: Add audio device tree bindings" to the asoc tree
In reply to Charles KeepaxThe patch
ASoC: arizona: Add audio device tree bindings
has been applied to the asoc tree at
git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git
All being well this means that it will be integrated into the linux-next tree (usually sometime in the next 24 hours) and sent to Linus during the next merge window (or sooner if it is a bug fix), however if problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing and review of the tree, please engage with people reporting problems and send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they should be sent as incremental updates against current git, existing patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying to this mail.
Thanks,
Mark
Quoted 1 line
From
9fda3b428a74339e358d4b0850427fa1ce1b4714Mon Sep 17 00:00:00 2001
From: Charles Keepax <[email protected]>
Date: Mon, 4 Sep 2017 16:41:50 +0100
Subject: [PATCH] ASoC: arizona: Add audio device tree bindings
In keeping with the style of the rest of this drivers device tree bindings split the audio device tree bindings into their own document. It should be noted this patch makes no change to the binding itself just moves the documentation into a specific file for the audio binding. For easy of merging a separate patch removes the current documentation from the MFD binding documentation.
--- .../devicetree/bindings/sound/wlf,arizona.txt | 49 ++++++++++++++++++++++ MAINTAINERS | 1 + 2 files changed, 50 insertions(+) create mode 100644 Documentation/devicetree/bindings/sound/wlf,arizona.txt
Documentation/devicetree/bindings/sound/wlf,arizona.txt new file +49 -0
@@ -0,0 +1,49 @@ +Cirrus Logic Arizona class audio SoCs + +These devices are audio SoCs with extensive digital capabilities and a range +of analogue I/O. + +This document lists sound specific bindings, see the primary binding +document: + ../mfd/arizona.txt + +Optional properties: + + - wlf,inmode : A list of INn_MODE register values, where n is the number + of input signals. Valid values are 0 (Differential), 1 (Single-ended) and + 2 (Digital Microphone). If absent, INn_MODE registers set to 0 by default. + If present, values must be specified less than or equal to the number of + input signals. If values less than the number of input signals, elements + that have not been specified are set to 0 by default. Entries are: + <IN1, IN2, IN3, IN4> (wm5102, wm5110, wm8280, wm8997) + <IN1A, IN2A, IN1B, IN2B> (wm8998, wm1814) + - wlf,out-mono : A list of boolean values indicating whether each output is + mono or stereo. Position within the list indicates the output affected + (eg. First entry in the list corresponds to output 1). A non-zero value + indicates a mono output. If present, the number of values should be less + than or equal to the number of outputs, if less values are supplied the + additional outputs will be treated as stereo. + + - wlf,dmic-ref : DMIC reference voltage source for each input, can be + selected from either MICVDD or one of the MICBIAS's, defines + (ARIZONA_DMIC_xxxx) are provided in <dt-bindings/mfd/arizona.txt>. If + present, the number of values should be less than or equal to the + number of inputs, unspecified inputs will use the chip default. + + - wlf,max-channels-clocked : The maximum number of channels to be clocked on + each AIF, useful for I2S systems with multiple data lines being mastered. + Specify one cell for each AIF to be configured, specify zero for AIFs that + should be handled normally. + If present, number of cells must be less than or equal to the number of + AIFs. If less than the number of AIFs, for cells that have not been + specified the corresponding AIFs will be treated as default setting. + + - wlf,spk-fmt : PDM speaker data format, must contain 2 cells (OUT5 and OUT6). + See the datasheet for values. + The second cell is ignored for codecs that do not have OUT6 (wm5102, wm8997, + wm8998, wm1814) + + - wlf,spk-mute : PDM speaker mute setting, must contain 2 cells (OUT5 and OUT6). + See the datasheet for values. + The second cell is ignored for codecs that do not have OUT6 (wm5102, wm8997, + wm8998, wm1814)
MAINTAINERS +1 -0
@@ -14575,6 +14575,7 @@ F: Documentation/devicetree/bindings/extcon/extcon-arizona.txt F: Documentation/devicetree/bindings/regulator/arizona-regulator.txt F: Documentation/devicetree/bindings/mfd/arizona.txt F: Documentation/devicetree/bindings/mfd/wm831x.txt +F: Documentation/devicetree/bindings/sound/wlf,arizona.txt F: arch/arm/mach-s3c64xx/mach-crag6410* F: drivers/clk/clk-wm83*.c F: drivers/extcon/extcon-arizona.c
Signature · 1 line
2.14.1
Charles Keepax
maintainerPATCH 4/7 mfd: arizona: Remove audio related device tree code
In reply to Charles KeepaxThis code has now been moved to the audio subsystem so is no longer required in the MFD code.
--- drivers/mfd/arizona-core.c | 132 +-------------------------------------------- 1 file changed, 1 insertion(+), 131 deletions(-)
drivers/mfd/arizona-core.c +1 -131
@@ -797,12 +797,7 @@ EXPORT_SYMBOL_GPL(arizona_of_get_type);static int arizona_of_get_core_pdata (struct arizona *arizona) {struct arizona_pdata *pdata = &arizona->pdata; -struct property *prop; -const __be32 *cur; -u32 val; -u32 pdm_val[ARIZONA_MAX_PDM_SPK ];int ret, i; -int count =0 ; pdata->reset =of_get_named_gpio (arizona->dev->of_node,"wlf,reset" ,0 );if (pdata->reset == -EPROBE_DEFER ) {
@@ -836,64 +831,6 @@ static int arizona_of_get_core_pdata(struct arizona *arizona) ret); } -of_property_for_each_u32 (arizona->dev->of_node,"wlf,inmode" , prop, - cur, val) { -if (count ==ARRAY_SIZE (pdata->inmode)) -break ; - - pdata->inmode[count] = val; - count++; - } - - count =0 ; -of_property_for_each_u32 (arizona->dev->of_node,"wlf,dmic-ref" , prop, - cur, val) { -if (count ==ARRAY_SIZE (pdata->dmic_ref)) -break ; - - pdata->dmic_ref[count] = val; - count++; - } - - count =0 ; -of_property_for_each_u32 (arizona->dev->of_node,"wlf,out-mono" , prop, - cur, val) { -if (count ==ARRAY_SIZE (pdata->out_mono)) -break ; - - pdata->out_mono[count] = !!val; - count++; - } - - count =0 ; -of_property_for_each_u32 (arizona->dev->of_node, -"wlf,max-channels-clocked" , - prop, cur, val) { -if (count ==ARRAY_SIZE (pdata->max_channels_clocked)) -break ; - - pdata->max_channels_clocked[count] = val; - count++; - } - - ret =of_property_read_u32_array (arizona->dev->of_node, -"wlf,spk-fmt" , - pdm_val, -ARRAY_SIZE (pdm_val)); - -if (ret >=0 ) -for (count =0 ; count <ARRAY_SIZE (pdata->spk_fmt); ++count) - pdata->spk_fmt[count] = pdm_val[count]; - - ret =of_property_read_u32_array (arizona->dev->of_node, -"wlf,spk-mute" , - pdm_val, -ARRAY_SIZE (pdm_val)); - -if (ret >=0 ) -for (count =0 ; count <ARRAY_SIZE (pdata->spk_mute); ++count) - pdata->spk_mute[count] = pdm_val[count]; -return 0 ; }
@@ -1026,7 +963,7 @@ int arizona_dev_init(struct arizona *arizona)const char *const mclk_name[] = {"mclk1" ,"mclk2" };struct device *dev = arizona->dev;const char *type_name =NULL ; -unsigned int reg, val, mask; +unsigned int reg, val;int (*apply_patch)(struct arizona *) =NULL ;const struct mfd_cell *subdevs =NULL ;int n_subdevs, ret, i;
@@ -1429,73 +1366,6 @@ int arizona_dev_init(struct arizona *arizona) ARIZONA_MICB1_RATE, val); } -for (i =0 ; i <ARIZONA_MAX_INPUT ; i++) { -/* Default for both is 0 so noop with defaults */ - val = arizona->pdata.dmic_ref[i] - <<ARIZONA_IN1_DMIC_SUP_SHIFT ; -if (arizona->pdata.inmode[i] &ARIZONA_INMODE_DMIC ) - val |=1 <<ARIZONA_IN1_MODE_SHIFT ; - -switch (arizona->type) { -case WM8998 : -case WM1814 : -regmap_update_bits (arizona->regmap, -ARIZONA_ADC_DIGITAL_VOLUME_1L + (i *8 ), -ARIZONA_IN1L_SRC_SE_MASK , - (arizona->pdata.inmode[i] &ARIZONA_INMODE_SE ) - <<ARIZONA_IN1L_SRC_SE_SHIFT ); - -regmap_update_bits (arizona->regmap, -ARIZONA_ADC_DIGITAL_VOLUME_1R + (i *8 ), -ARIZONA_IN1R_SRC_SE_MASK , - (arizona->pdata.inmode[i] &ARIZONA_INMODE_SE ) - <<ARIZONA_IN1R_SRC_SE_SHIFT ); - - mask =ARIZONA_IN1_DMIC_SUP_MASK | -ARIZONA_IN1_MODE_MASK ; -break ; -default : -if (arizona->pdata.inmode[i] &ARIZONA_INMODE_SE ) - val |=1 <<ARIZONA_IN1_SINGLE_ENDED_SHIFT ; - - mask =ARIZONA_IN1_DMIC_SUP_MASK | -ARIZONA_IN1_MODE_MASK | -ARIZONA_IN1_SINGLE_ENDED_MASK ; -break ; - } - -regmap_update_bits (arizona->regmap, -ARIZONA_IN1L_CONTROL + (i *8 ), - mask, val); - } - -for (i =0 ; i <ARIZONA_MAX_OUTPUT ; i++) { -/* Default is 0 so noop with defaults */ -if (arizona->pdata.out_mono[i]) - val =ARIZONA_OUT1_MONO ; -else - val =0 ; - -regmap_update_bits (arizona->regmap, -ARIZONA_OUTPUT_PATH_CONFIG_1L + (i *8 ), -ARIZONA_OUT1_MONO , val); - } - -for (i =0 ; i <ARIZONA_MAX_PDM_SPK ; i++) { -if (arizona->pdata.spk_mute[i]) -regmap_update_bits (arizona->regmap, -ARIZONA_PDM_SPK1_CTRL_1 + (i *2 ), -ARIZONA_SPK1_MUTE_ENDIAN_MASK | -ARIZONA_SPK1_MUTE_SEQ1_MASK , - arizona->pdata.spk_mute[i]); - -if (arizona->pdata.spk_fmt[i]) -regmap_update_bits (arizona->regmap, -ARIZONA_PDM_SPK1_CTRL_2 + (i *2 ), -ARIZONA_SPK1_FMT_MASK , - arizona->pdata.spk_fmt[i]); - } -pm_runtime_set_active (arizona->dev);pm_runtime_enable (arizona->dev);
Signature · 1 line
2.11.0
Re: [PATCH 4/7] mfd: arizona: Remove audio related device tree code
Quoted 7 lines · Charles Keepax
This code has now been moved to the audio subsystem so is no longer required in the MFD code.
Signed-off-by Charles Keepax <[email protected]>--- drivers/mfd/arizona-core.c | 132 +-------------------------------------------- 1 file changed, 1 insertion(+), 131 deletions(-)
I will require pull-request for this patch, but:
Signature · 4 lines
Lee Jones Linaro STMicroelectronics Landing Team Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
Mark Brown
maintainerApplied "mfd: arizona: Remove audio related device tree code" to the asoc tree
In reply to Charles KeepaxThe patch
mfd: arizona: Remove audio related device tree code
has been applied to the asoc tree at
git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git
All being well this means that it will be integrated into the linux-next tree (usually sometime in the next 24 hours) and sent to Linus during the next merge window (or sooner if it is a bug fix), however if problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing and review of the tree, please engage with people reporting problems and send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they should be sent as incremental updates against current git, existing patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying to this mail.
Thanks,
Mark
Quoted 1 line
From
6000c99ee6e9876cb33275c752937d99f77cdb95Mon Sep 17 00:00:00 2001
From: Charles Keepax <[email protected]>
Date: Mon, 4 Sep 2017 16:41:51 +0100
Subject: [PATCH] mfd: arizona: Remove audio related device tree code
This code has now been moved to the audio subsystem so is no longer required in the MFD code.
--- drivers/mfd/arizona-core.c | 132 +-------------------------------------------- 1 file changed, 1 insertion(+), 131 deletions(-)
drivers/mfd/arizona-core.c +1 -131
@@ -797,12 +797,7 @@ EXPORT_SYMBOL_GPL(arizona_of_get_type);static int arizona_of_get_core_pdata (struct arizona *arizona) {struct arizona_pdata *pdata = &arizona->pdata; -struct property *prop; -const __be32 *cur; -u32 val; -u32 pdm_val[ARIZONA_MAX_PDM_SPK ];int ret, i; -int count =0 ; pdata->reset =of_get_named_gpio (arizona->dev->of_node,"wlf,reset" ,0 );if (pdata->reset == -EPROBE_DEFER ) {
@@ -836,64 +831,6 @@ static int arizona_of_get_core_pdata(struct arizona *arizona) ret); } -of_property_for_each_u32 (arizona->dev->of_node,"wlf,inmode" , prop, - cur, val) { -if (count ==ARRAY_SIZE (pdata->inmode)) -break ; - - pdata->inmode[count] = val; - count++; - } - - count =0 ; -of_property_for_each_u32 (arizona->dev->of_node,"wlf,dmic-ref" , prop, - cur, val) { -if (count ==ARRAY_SIZE (pdata->dmic_ref)) -break ; - - pdata->dmic_ref[count] = val; - count++; - } - - count =0 ; -of_property_for_each_u32 (arizona->dev->of_node,"wlf,out-mono" , prop, - cur, val) { -if (count ==ARRAY_SIZE (pdata->out_mono)) -break ; - - pdata->out_mono[count] = !!val; - count++; - } - - count =0 ; -of_property_for_each_u32 (arizona->dev->of_node, -"wlf,max-channels-clocked" , - prop, cur, val) { -if (count ==ARRAY_SIZE (pdata->max_channels_clocked)) -break ; - - pdata->max_channels_clocked[count] = val; - count++; - } - - ret =of_property_read_u32_array (arizona->dev->of_node, -"wlf,spk-fmt" , - pdm_val, -ARRAY_SIZE (pdm_val)); - -if (ret >=0 ) -for (count =0 ; count <ARRAY_SIZE (pdata->spk_fmt); ++count) - pdata->spk_fmt[count] = pdm_val[count]; - - ret =of_property_read_u32_array (arizona->dev->of_node, -"wlf,spk-mute" , - pdm_val, -ARRAY_SIZE (pdm_val)); - -if (ret >=0 ) -for (count =0 ; count <ARRAY_SIZE (pdata->spk_mute); ++count) - pdata->spk_mute[count] = pdm_val[count]; -return 0 ; }
@@ -1026,7 +963,7 @@ int arizona_dev_init(struct arizona *arizona)const char *const mclk_name[] = {"mclk1" ,"mclk2" };struct device *dev = arizona->dev;const char *type_name =NULL ; -unsigned int reg, val, mask; +unsigned int reg, val;int (*apply_patch)(struct arizona *) =NULL ;const struct mfd_cell *subdevs =NULL ;int n_subdevs, ret, i;
@@ -1429,73 +1366,6 @@ int arizona_dev_init(struct arizona *arizona) ARIZONA_MICB1_RATE, val); } -for (i =0 ; i <ARIZONA_MAX_INPUT ; i++) { -/* Default for both is 0 so noop with defaults */ - val = arizona->pdata.dmic_ref[i] - <<ARIZONA_IN1_DMIC_SUP_SHIFT ; -if (arizona->pdata.inmode[i] &ARIZONA_INMODE_DMIC ) - val |=1 <<ARIZONA_IN1_MODE_SHIFT ; - -switch (arizona->type) { -case WM8998 : -case WM1814 : -regmap_update_bits (arizona->regmap, -ARIZONA_ADC_DIGITAL_VOLUME_1L + (i *8 ), -ARIZONA_IN1L_SRC_SE_MASK , - (arizona->pdata.inmode[i] &ARIZONA_INMODE_SE ) - <<ARIZONA_IN1L_SRC_SE_SHIFT ); - -regmap_update_bits (arizona->regmap, -ARIZONA_ADC_DIGITAL_VOLUME_1R + (i *8 ), -ARIZONA_IN1R_SRC_SE_MASK , - (arizona->pdata.inmode[i] &ARIZONA_INMODE_SE ) - <<ARIZONA_IN1R_SRC_SE_SHIFT ); - - mask =ARIZONA_IN1_DMIC_SUP_MASK | -ARIZONA_IN1_MODE_MASK ; -break ; -default : -if (arizona->pdata.inmode[i] &ARIZONA_INMODE_SE ) - val |=1 <<ARIZONA_IN1_SINGLE_ENDED_SHIFT ; - - mask =ARIZONA_IN1_DMIC_SUP_MASK | -ARIZONA_IN1_MODE_MASK | -ARIZONA_IN1_SINGLE_ENDED_MASK ; -break ; - } - -regmap_update_bits (arizona->regmap, -ARIZONA_IN1L_CONTROL + (i *8 ), - mask, val); - } - -for (i =0 ; i <ARIZONA_MAX_OUTPUT ; i++) { -/* Default is 0 so noop with defaults */ -if (arizona->pdata.out_mono[i]) - val =ARIZONA_OUT1_MONO ; -else - val =0 ; - -regmap_update_bits (arizona->regmap, -ARIZONA_OUTPUT_PATH_CONFIG_1L + (i *8 ), -ARIZONA_OUT1_MONO , val); - } - -for (i =0 ; i <ARIZONA_MAX_PDM_SPK ; i++) { -if (arizona->pdata.spk_mute[i]) -regmap_update_bits (arizona->regmap, -ARIZONA_PDM_SPK1_CTRL_1 + (i *2 ), -ARIZONA_SPK1_MUTE_ENDIAN_MASK | -ARIZONA_SPK1_MUTE_SEQ1_MASK , - arizona->pdata.spk_mute[i]); - -if (arizona->pdata.spk_fmt[i]) -regmap_update_bits (arizona->regmap, -ARIZONA_PDM_SPK1_CTRL_2 + (i *2 ), -ARIZONA_SPK1_FMT_MASK , - arizona->pdata.spk_fmt[i]); - } -pm_runtime_set_active (arizona->dev);pm_runtime_enable (arizona->dev);
Signature · 1 line
2.14.1
Charles Keepax
maintainerPATCH 5/7 mfd: arizona: Remove audio bindings from MFD binding document
In reply to Charles KeepaxNow the audio bindings have their own binding document update the main MFD document to point to that file and remove the audio binding documentation.
--- Documentation/devicetree/bindings/mfd/arizona.txt | 40 +---------------------- 1 file changed, 1 insertion(+), 39 deletions(-)
Documentation/devicetree/bindings/mfd/arizona.txt +1 -39
@@ -65,45 +65,6 @@ Optional properties: a value that is out of range for a 16 bit register then the chip default will be used. If present exactly five values must be specified. - - wlf,inmode : A list of INn_MODE register values, where n is the number - of input signals. Valid values are 0 (Differential), 1 (Single-ended) and - 2 (Digital Microphone). If absent, INn_MODE registers set to 0 by default. - If present, values must be specified less than or equal to the number of - input signals. If values less than the number of input signals, elements - that have not been specified are set to 0 by default. Entries are: - <IN1, IN2, IN3, IN4> (wm5102, wm5110, wm8280, wm8997) - <IN1A, IN2A, IN1B, IN2B> (wm8998, wm1814) - - wlf,out-mono : A list of boolean values indicating whether each output is - mono or stereo. Position within the list indicates the output affected - (eg. First entry in the list corresponds to output 1). A non-zero value - indicates a mono output. If present, the number of values should be less - than or equal to the number of outputs, if less values are supplied the - additional outputs will be treated as stereo. - - - wlf,dmic-ref : DMIC reference voltage source for each input, can be - selected from either MICVDD or one of the MICBIAS's, defines - (ARIZONA_DMIC_xxxx) are provided in <dt-bindings/mfd/arizona.txt>. If - present, the number of values should be less than or equal to the - number of inputs, unspecified inputs will use the chip default. - - - wlf,max-channels-clocked : The maximum number of channels to be clocked on - each AIF, useful for I2S systems with multiple data lines being mastered. - Specify one cell for each AIF to be configured, specify zero for AIFs that - should be handled normally. - If present, number of cells must be less than or equal to the number of - AIFs. If less than the number of AIFs, for cells that have not been - specified the corresponding AIFs will be treated as default setting. - - - wlf,spk-fmt : PDM speaker data format, must contain 2 cells (OUT5 and OUT6). - See the datasheet for values. - The second cell is ignored for codecs that do not have OUT6 (wm5102, wm8997, - wm8998, wm1814) - - - wlf,spk-mute : PDM speaker mute setting, must contain 2 cells (OUT5 and OUT6). - See the datasheet for values. - The second cell is ignored for codecs that do not have OUT6 (wm5102, wm8997, - wm8998, wm1814) - - DCVDD-supply, MICVDD-supply : Power supplies, only need to be specified if they are being externally supplied. As covered in Documentation/devicetree/bindings/regulator/regulator.txt
@@ -112,6 +73,7 @@ Optional properties: Also see child specific device properties: Regulator - ../regulator/arizona-regulator.txt Extcon - ../extcon/extcon-arizona.txt + Sound - ../sound/arizona.txt Example:
Signature · 1 line
2.11.0
Re: [PATCH 5/7] mfd: arizona: Remove audio bindings from MFD binding document
Quoted 8 lines · Charles Keepax
Now the audio bindings have their own binding document update the main MFD document to point to that file and remove the audio binding documentation.
Signed-off-by Charles Keepax <[email protected]>--- Documentation/devicetree/bindings/mfd/arizona.txt | 40 +---------------------- 1 file changed, 1 insertion(+), 39 deletions(-)
For my own reference:
Signature · 4 lines
Lee Jones Linaro STMicroelectronics Landing Team Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
Re: [PATCH 5/7] mfd: arizona: Remove audio bindings from MFD binding document
In reply to Charles KeepaxQuoted 8 lines · Charles Keepax
Now the audio bindings have their own binding document update the main MFD document to point to that file and remove the audio binding documentation.
Signed-off-by Charles Keepax <[email protected]>--- Documentation/devicetree/bindings/mfd/arizona.txt | 40 +---------------------- 1 file changed, 1 insertion(+), 39 deletions(-)
Mark Brown
maintainerApplied "mfd: arizona: Remove audio bindings from MFD binding document" to the asoc tree
In reply to Charles KeepaxThe patch
mfd: arizona: Remove audio bindings from MFD binding document
has been applied to the asoc tree at
git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git
All being well this means that it will be integrated into the linux-next tree (usually sometime in the next 24 hours) and sent to Linus during the next merge window (or sooner if it is a bug fix), however if problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing and review of the tree, please engage with people reporting problems and send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they should be sent as incremental updates against current git, existing patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying to this mail.
Thanks,
Mark
Quoted 1 line
From
601516a6f8cf9118a7c65ec38aa53896efc446bbMon Sep 17 00:00:00 2001
From: Charles Keepax <[email protected]>
Date: Mon, 4 Sep 2017 16:41:52 +0100
Subject: [PATCH] mfd: arizona: Remove audio bindings from MFD binding document
Now the audio bindings have their own binding document update the main MFD document to point to that file and remove the audio binding documentation.
--- Documentation/devicetree/bindings/mfd/arizona.txt | 40 +---------------------- 1 file changed, 1 insertion(+), 39 deletions(-)
Documentation/devicetree/bindings/mfd/arizona.txt +1 -39
@@ -65,45 +65,6 @@ Optional properties: a value that is out of range for a 16 bit register then the chip default will be used. If present exactly five values must be specified. - - wlf,inmode : A list of INn_MODE register values, where n is the number - of input signals. Valid values are 0 (Differential), 1 (Single-ended) and - 2 (Digital Microphone). If absent, INn_MODE registers set to 0 by default. - If present, values must be specified less than or equal to the number of - input signals. If values less than the number of input signals, elements - that have not been specified are set to 0 by default. Entries are: - <IN1, IN2, IN3, IN4> (wm5102, wm5110, wm8280, wm8997) - <IN1A, IN2A, IN1B, IN2B> (wm8998, wm1814) - - wlf,out-mono : A list of boolean values indicating whether each output is - mono or stereo. Position within the list indicates the output affected - (eg. First entry in the list corresponds to output 1). A non-zero value - indicates a mono output. If present, the number of values should be less - than or equal to the number of outputs, if less values are supplied the - additional outputs will be treated as stereo. - - - wlf,dmic-ref : DMIC reference voltage source for each input, can be - selected from either MICVDD or one of the MICBIAS's, defines - (ARIZONA_DMIC_xxxx) are provided in <dt-bindings/mfd/arizona.txt>. If - present, the number of values should be less than or equal to the - number of inputs, unspecified inputs will use the chip default. - - - wlf,max-channels-clocked : The maximum number of channels to be clocked on - each AIF, useful for I2S systems with multiple data lines being mastered. - Specify one cell for each AIF to be configured, specify zero for AIFs that - should be handled normally. - If present, number of cells must be less than or equal to the number of - AIFs. If less than the number of AIFs, for cells that have not been - specified the corresponding AIFs will be treated as default setting. - - - wlf,spk-fmt : PDM speaker data format, must contain 2 cells (OUT5 and OUT6). - See the datasheet for values. - The second cell is ignored for codecs that do not have OUT6 (wm5102, wm8997, - wm8998, wm1814) - - - wlf,spk-mute : PDM speaker mute setting, must contain 2 cells (OUT5 and OUT6). - See the datasheet for values. - The second cell is ignored for codecs that do not have OUT6 (wm5102, wm8997, - wm8998, wm1814) - - DCVDD-supply, MICVDD-supply : Power supplies, only need to be specified if they are being externally supplied. As covered in Documentation/devicetree/bindings/regulator/regulator.txt
@@ -112,6 +73,7 @@ Optional properties: Also see child specific device properties: Regulator - ../regulator/arizona-regulator.txt Extcon - ../extcon/extcon-arizona.txt + Sound - ../sound/arizona.txt Example:
Signature · 1 line
2.14.1
Charles Keepax
maintainerPATCH 6/7 ASoC: arizona: Add support for setting the output volume limits
In reply to Charles KeepaxThe output volume limits allow signals to be limited to specific levels appropriate for the hardware attached. As this is a property of the hardware itself these will be configured through device tree.
--- include/linux/mfd/arizona/pdata.h | 3 +++ sound/soc/codecs/arizona.c | 25 +++++++++++++++++++++++++ sound/soc/codecs/arizona.h | 1 + sound/soc/codecs/cs47l24.c | 3 +++ sound/soc/codecs/wm5102.c | 3 +++ sound/soc/codecs/wm5110.c | 3 +++ sound/soc/codecs/wm8997.c | 3 +++ 7 files changed, 41 insertions(+)
include/linux/mfd/arizona/pdata.h +3 -0
@@ -174,6 +174,9 @@ struct arizona_pdata {/** Mode for outputs */ int out_mono[ARIZONA_MAX_OUTPUT ]; +/** Limit output volumes */ +unsigned int out_vol_limit[2 *ARIZONA_MAX_OUTPUT ]; +/** PDM speaker mute setting */ unsigned int spk_mute[ARIZONA_MAX_PDM_SPK ];
sound/soc/codecs/arizona.c +25 -0
@@ -372,6 +372,22 @@ int arizona_init_common(struct arizona *arizona) }EXPORT_SYMBOL_GPL (arizona_init_common); +int arizona_init_vol_limit (struct arizona *arizona) +{ +int i; + +for (i =0 ; i <ARRAY_SIZE (arizona->pdata.out_vol_limit); ++i) { +if (arizona->pdata.out_vol_limit[i]) +regmap_update_bits (arizona->regmap, +ARIZONA_DAC_VOLUME_LIMIT_1L + i *4 , +ARIZONA_OUT1L_VOL_LIM_MASK , + arizona->pdata.out_vol_limit[i]); + } + +return 0 ; +} +EXPORT_SYMBOL_GPL (arizona_init_vol_limit); +const char *const arizona_mixer_texts[ARIZONA_NUM_MIXER_INPUTS ] = {"None" ,"Tone Generator 1" ,
@@ -2810,6 +2826,15 @@ int arizona_of_get_audio_pdata(struct arizona *arizona) count++; } + count =0 ; +of_property_for_each_u32 (np,"wlf,out-volume-limit" , prop, cur, val) { +if (count ==ARRAY_SIZE (pdata->out_vol_limit)) +break ; + + pdata->out_vol_limit[count] = val; + count++; + } + ret =of_property_read_u32_array (np,"wlf,spk-fmt" , pdm_val,ARRAY_SIZE (pdm_val));
sound/soc/codecs/arizona.h +1 -0
@@ -315,6 +315,7 @@ int arizona_init_gpio(struct snd_soc_codec *codec);int arizona_init_mono (struct snd_soc_codec *codec);int arizona_init_common (struct arizona *arizona); +int arizona_init_vol_limit (struct arizona *arizona);int arizona_init_spk_irqs (struct arizona *arizona);int arizona_free_spk_irqs (struct arizona *arizona);
sound/soc/codecs/cs47l24.c +3 -0
@@ -1297,6 +1297,9 @@ static int cs47l24_probe(struct platform_device *pdev)arizona_init_common (arizona); + ret =arizona_init_vol_limit (arizona); +if (ret <0 ) + goto err_dsp_irq; ret =arizona_init_spk_irqs (arizona);if (ret <0 ) goto err_dsp_irq;
sound/soc/codecs/wm5102.c +3 -0
@@ -2107,6 +2107,9 @@ static int wm5102_probe(struct platform_device *pdev)arizona_init_common (arizona); + ret =arizona_init_vol_limit (arizona); +if (ret <0 ) + goto err_dsp_irq; ret =arizona_init_spk_irqs (arizona);if (ret <0 ) goto err_dsp_irq;
sound/soc/codecs/wm5110.c +3 -0
@@ -2463,6 +2463,9 @@ static int wm5110_probe(struct platform_device *pdev)arizona_init_common (arizona); + ret =arizona_init_vol_limit (arizona); +if (ret <0 ) + goto err_dsp_irq; ret =arizona_init_spk_irqs (arizona);if (ret <0 ) goto err_dsp_irq;
sound/soc/codecs/wm8997.c +3 -0
@@ -1176,6 +1176,9 @@ static int wm8997_probe(struct platform_device *pdev)arizona_init_common (arizona); + ret =arizona_init_vol_limit (arizona); +if (ret <0 ) +return ret; ret =arizona_init_spk_irqs (arizona);if (ret <0 )return ret;
Signature · 1 line
2.11.0
Re: [PATCH 6/7] ASoC: arizona: Add support for setting the output volume limits
Quoted 7 lines · Charles Keepax
The output volume limits allow signals to be limited to specific levels appropriate for the hardware attached. As this is a property of the hardware itself these will be configured through device tree.
Signed-off-by Charles Keepax <[email protected]>--- include/linux/mfd/arizona/pdata.h | 3 +++
Signature · 4 lines
Lee Jones Linaro STMicroelectronics Landing Team Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
Mark Brown
maintainerApplied "ASoC: arizona: Add support for setting the output volume limits" to the asoc tree
In reply to Charles KeepaxThe patch
ASoC: arizona: Add support for setting the output volume limits
has been applied to the asoc tree at
git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git
All being well this means that it will be integrated into the linux-next tree (usually sometime in the next 24 hours) and sent to Linus during the next merge window (or sooner if it is a bug fix), however if problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing and review of the tree, please engage with people reporting problems and send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they should be sent as incremental updates against current git, existing patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying to this mail.
Thanks,
Mark
Quoted 1 line
From
85e7dd3f871b988702973c80d9ef128e10dd3dadMon Sep 17 00:00:00 2001
From: Charles Keepax <[email protected]>
Date: Mon, 4 Sep 2017 16:41:53 +0100
Subject: [PATCH] ASoC: arizona: Add support for setting the output volume
limits
The output volume limits allow signals to be limited to specific levels appropriate for the hardware attached. As this is a property of the hardware itself these will be configured through device tree.
--- include/linux/mfd/arizona/pdata.h | 3 +++ sound/soc/codecs/arizona.c | 25 +++++++++++++++++++++++++ sound/soc/codecs/arizona.h | 1 + sound/soc/codecs/cs47l24.c | 3 +++ sound/soc/codecs/wm5102.c | 3 +++ sound/soc/codecs/wm5110.c | 3 +++ sound/soc/codecs/wm8997.c | 3 +++ 7 files changed, 41 insertions(+)
include/linux/mfd/arizona/pdata.h +3 -0
@@ -174,6 +174,9 @@ struct arizona_pdata {/** Mode for outputs */ int out_mono[ARIZONA_MAX_OUTPUT ]; +/** Limit output volumes */ +unsigned int out_vol_limit[2 *ARIZONA_MAX_OUTPUT ]; +/** PDM speaker mute setting */ unsigned int spk_mute[ARIZONA_MAX_PDM_SPK ];
sound/soc/codecs/arizona.c +25 -0
@@ -372,6 +372,22 @@ int arizona_init_common(struct arizona *arizona) }EXPORT_SYMBOL_GPL (arizona_init_common); +int arizona_init_vol_limit (struct arizona *arizona) +{ +int i; + +for (i =0 ; i <ARRAY_SIZE (arizona->pdata.out_vol_limit); ++i) { +if (arizona->pdata.out_vol_limit[i]) +regmap_update_bits (arizona->regmap, +ARIZONA_DAC_VOLUME_LIMIT_1L + i *4 , +ARIZONA_OUT1L_VOL_LIM_MASK , + arizona->pdata.out_vol_limit[i]); + } + +return 0 ; +} +EXPORT_SYMBOL_GPL (arizona_init_vol_limit); +const char *const arizona_mixer_texts[ARIZONA_NUM_MIXER_INPUTS ] = {"None" ,"Tone Generator 1" ,
@@ -2810,6 +2826,15 @@ int arizona_of_get_audio_pdata(struct arizona *arizona) count++; } + count =0 ; +of_property_for_each_u32 (np,"wlf,out-volume-limit" , prop, cur, val) { +if (count ==ARRAY_SIZE (pdata->out_vol_limit)) +break ; + + pdata->out_vol_limit[count] = val; + count++; + } + ret =of_property_read_u32_array (np,"wlf,spk-fmt" , pdm_val,ARRAY_SIZE (pdm_val));
sound/soc/codecs/arizona.h +1 -0
@@ -315,6 +315,7 @@ int arizona_init_gpio(struct snd_soc_codec *codec);int arizona_init_mono (struct snd_soc_codec *codec);int arizona_init_common (struct arizona *arizona); +int arizona_init_vol_limit (struct arizona *arizona);int arizona_init_spk_irqs (struct arizona *arizona);int arizona_free_spk_irqs (struct arizona *arizona);
sound/soc/codecs/cs47l24.c +3 -0
@@ -1297,6 +1297,9 @@ static int cs47l24_probe(struct platform_device *pdev)arizona_init_common (arizona); + ret =arizona_init_vol_limit (arizona); +if (ret <0 ) + goto err_dsp_irq; ret =arizona_init_spk_irqs (arizona);if (ret <0 ) goto err_dsp_irq;
sound/soc/codecs/wm5102.c +3 -0
@@ -2107,6 +2107,9 @@ static int wm5102_probe(struct platform_device *pdev)arizona_init_common (arizona); + ret =arizona_init_vol_limit (arizona); +if (ret <0 ) + goto err_dsp_irq; ret =arizona_init_spk_irqs (arizona);if (ret <0 ) goto err_dsp_irq;
sound/soc/codecs/wm5110.c +3 -0
@@ -2463,6 +2463,9 @@ static int wm5110_probe(struct platform_device *pdev)arizona_init_common (arizona); + ret =arizona_init_vol_limit (arizona); +if (ret <0 ) + goto err_dsp_irq; ret =arizona_init_spk_irqs (arizona);if (ret <0 ) goto err_dsp_irq;
sound/soc/codecs/wm8997.c +3 -0
@@ -1176,6 +1176,9 @@ static int wm8997_probe(struct platform_device *pdev)arizona_init_common (arizona); + ret =arizona_init_vol_limit (arizona); +if (ret <0 ) +return ret; ret =arizona_init_spk_irqs (arizona);if (ret <0 )return ret;
Signature · 1 line
2.14.1
Charles Keepax
maintainerPATCH 7/7 ASoC: arizona: Add device tree binding doc for volume limits
In reply to Charles Keepax--- Documentation/devicetree/bindings/sound/wlf,arizona.txt | 4 ++++ 1 file changed, 4 insertions(+)
Documentation/devicetree/bindings/sound/wlf,arizona.txt +4 -0
@@ -47,3 +47,7 @@ Optional properties: See the datasheet for values. The second cell is ignored for codecs that do not have OUT6 (wm5102, wm8997, wm8998, wm1814) + + - wlf,out-volume-limit : The volume limit value that should be applied to each + output channel. See the datasheet for exact values. Channels are specified + in the order OUT1L, OUT1R, OUT2L, OUT2R, etc.
Signature · 6 lines
2.11.0 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 7/7] ASoC: arizona: Add device tree binding doc for volume limits
Quoted 4 lines · Charles Keepax
--- Documentation/devicetree/bindings/sound/wlf,arizona.txt | 4 ++++ 1 file changed, 4 insertions(+)
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Mark Brown
maintainerApplied "ASoC: arizona: Add device tree binding doc for volume limits" to the asoc tree
In reply to Charles KeepaxThe patch
ASoC: arizona: Add device tree binding doc for volume limits
has been applied to the asoc tree at
git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git
All being well this means that it will be integrated into the linux-next tree (usually sometime in the next 24 hours) and sent to Linus during the next merge window (or sooner if it is a bug fix), however if problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing and review of the tree, please engage with people reporting problems and send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they should be sent as incremental updates against current git, existing patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying to this mail.
Thanks,
Mark
Quoted 1 line
From
0340afe74d43e9c82bc0f5904d8f5b99d0fc3ab0Mon Sep 17 00:00:00 2001
From: Charles Keepax <[email protected]>
Date: Mon, 4 Sep 2017 16:41:54 +0100
Subject: [PATCH] ASoC: arizona: Add device tree binding doc for volume limits
--- Documentation/devicetree/bindings/sound/wlf,arizona.txt | 4 ++++ 1 file changed, 4 insertions(+)
Documentation/devicetree/bindings/sound/wlf,arizona.txt +4 -0
@@ -47,3 +47,7 @@ Optional properties: See the datasheet for values. The second cell is ignored for codecs that do not have OUT6 (wm5102, wm8997, wm8998, wm1814) + + - wlf,out-volume-limit : The volume limit value that should be applied to each + output channel. See the datasheet for exact values. Channels are specified + in the order OUT1L, OUT1R, OUT2L, OUT2R, etc.
Signature · 1 line
2.14.1