* [RFC][PATCH 0/3] Remove set_cache_io entirely from ASoC probe
@ 2014-03-04 8:25 ` Xiubo Li
0 siblings, 0 replies; 10+ messages in thread
From: Xiubo Li @ 2014-03-04 8:25 UTC (permalink / raw)
To: broonie, lgirdwood, lars; +Cc: alsa-devel, linux-kernel, Xiubo Li
Xiubo Li (3):
ASoC: core: Move the default regmap I/O setting to
snd_soc_register_codec()
ASoc: codec: remove the set_cache_io() entirely from CODEC ASoC probe.
ASoC: core: remove the default regmap I/O setting up from
soc_probe_codec()
include/sound/soc.h | 3 +++
sound/soc/codecs/cq93vc.c | 6 ++++--
sound/soc/codecs/mc13783.c | 10 ++--------
sound/soc/codecs/wm5102.c | 6 ++----
sound/soc/codecs/wm5110.c | 6 ++----
sound/soc/codecs/wm8350.c | 6 ++++--
sound/soc/codecs/wm8400.c | 6 ++++--
sound/soc/codecs/wm8994.c | 4 ++--
sound/soc/codecs/wm8997.c | 7 ++-----
sound/soc/soc-core.c | 21 +++++++++++----------
10 files changed, 36 insertions(+), 39 deletions(-)
--
1.8.4
^ permalink raw reply [flat|nested] 10+ messages in thread* [RFC][PATCH 0/3] Remove set_cache_io entirely from ASoC probe @ 2014-03-04 8:25 ` Xiubo Li 0 siblings, 0 replies; 10+ messages in thread From: Xiubo Li @ 2014-03-04 8:25 UTC (permalink / raw) To: broonie, lgirdwood, lars; +Cc: alsa-devel, linux-kernel, Xiubo Li Xiubo Li (3): ASoC: core: Move the default regmap I/O setting to snd_soc_register_codec() ASoc: codec: remove the set_cache_io() entirely from CODEC ASoC probe. ASoC: core: remove the default regmap I/O setting up from soc_probe_codec() include/sound/soc.h | 3 +++ sound/soc/codecs/cq93vc.c | 6 ++++-- sound/soc/codecs/mc13783.c | 10 ++-------- sound/soc/codecs/wm5102.c | 6 ++---- sound/soc/codecs/wm5110.c | 6 ++---- sound/soc/codecs/wm8350.c | 6 ++++-- sound/soc/codecs/wm8400.c | 6 ++++-- sound/soc/codecs/wm8994.c | 4 ++-- sound/soc/codecs/wm8997.c | 7 ++----- sound/soc/soc-core.c | 21 +++++++++++---------- 10 files changed, 36 insertions(+), 39 deletions(-) -- 1.8.4 ^ permalink raw reply [flat|nested] 10+ messages in thread
* [RFC][PATCH 1/3] ASoC: core: Move the default regmap I/O setting to snd_soc_register_codec() 2014-03-04 8:25 ` Xiubo Li @ 2014-03-04 8:25 ` Xiubo Li -1 siblings, 0 replies; 10+ messages in thread From: Xiubo Li @ 2014-03-04 8:25 UTC (permalink / raw) To: broonie, lgirdwood, lars; +Cc: alsa-devel, linux-kernel, Xiubo Li Add the default regmap I/O setting to snd_soc_register_codec() while the CODEC is initialising, which will be called by CODEC driver device probe(), and then we can make set_cache_io() go away entirely from each CODEC ASoC probe. Signed-off-by: Xiubo Li <Li.Xiubo@freescale.com> --- include/sound/soc.h | 3 +++ sound/soc/soc-core.c | 11 +++++++++++ 2 files changed, 14 insertions(+) diff --git a/include/sound/soc.h b/include/sound/soc.h index 4c4d7e1..94bc1c4 100644 --- a/include/sound/soc.h +++ b/include/sound/soc.h @@ -749,6 +749,9 @@ struct snd_soc_codec_driver { int (*set_pll)(struct snd_soc_codec *codec, int pll_id, int source, unsigned int freq_in, unsigned int freq_out); + /* codec regmap */ + struct regmap *regmap; + /* codec IO */ unsigned int (*read)(struct snd_soc_codec *, unsigned int); int (*write)(struct snd_soc_codec *, unsigned int, unsigned int); diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index a14155b..0fb502f 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c @@ -4443,6 +4443,17 @@ int snd_soc_register_codec(struct device *dev, codec->num_dai = num_dai; mutex_init(&codec->mutex); + if (!codec->write && (codec_drv->regmap || + dev_get_regmap(codec->dev, NULL))) { + /* Set the default I/O up try regmap */ + ret = snd_soc_codec_set_cache_io(codec, codec_drv->regmap); + if (ret < 0 && ret != -ENOTSUPP) { + dev_err(codec->dev, + "Failed to set cache I/O: %d\n", ret); + goto fail_codec_name; + } + } + for (i = 0; i < num_dai; i++) { fixup_codec_formats(&dai_drv[i].playback); fixup_codec_formats(&dai_drv[i].capture); -- 1.8.4 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [RFC][PATCH 1/3] ASoC: core: Move the default regmap I/O setting to snd_soc_register_codec() @ 2014-03-04 8:25 ` Xiubo Li 0 siblings, 0 replies; 10+ messages in thread From: Xiubo Li @ 2014-03-04 8:25 UTC (permalink / raw) To: broonie, lgirdwood, lars; +Cc: alsa-devel, linux-kernel, Xiubo Li Add the default regmap I/O setting to snd_soc_register_codec() while the CODEC is initialising, which will be called by CODEC driver device probe(), and then we can make set_cache_io() go away entirely from each CODEC ASoC probe. Signed-off-by: Xiubo Li <Li.Xiubo@freescale.com> --- include/sound/soc.h | 3 +++ sound/soc/soc-core.c | 11 +++++++++++ 2 files changed, 14 insertions(+) diff --git a/include/sound/soc.h b/include/sound/soc.h index 4c4d7e1..94bc1c4 100644 --- a/include/sound/soc.h +++ b/include/sound/soc.h @@ -749,6 +749,9 @@ struct snd_soc_codec_driver { int (*set_pll)(struct snd_soc_codec *codec, int pll_id, int source, unsigned int freq_in, unsigned int freq_out); + /* codec regmap */ + struct regmap *regmap; + /* codec IO */ unsigned int (*read)(struct snd_soc_codec *, unsigned int); int (*write)(struct snd_soc_codec *, unsigned int, unsigned int); diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index a14155b..0fb502f 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c @@ -4443,6 +4443,17 @@ int snd_soc_register_codec(struct device *dev, codec->num_dai = num_dai; mutex_init(&codec->mutex); + if (!codec->write && (codec_drv->regmap || + dev_get_regmap(codec->dev, NULL))) { + /* Set the default I/O up try regmap */ + ret = snd_soc_codec_set_cache_io(codec, codec_drv->regmap); + if (ret < 0 && ret != -ENOTSUPP) { + dev_err(codec->dev, + "Failed to set cache I/O: %d\n", ret); + goto fail_codec_name; + } + } + for (i = 0; i < num_dai; i++) { fixup_codec_formats(&dai_drv[i].playback); fixup_codec_formats(&dai_drv[i].capture); -- 1.8.4 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [alsa-devel] [RFC][PATCH 1/3] ASoC: core: Move the default regmap I/O setting to snd_soc_register_codec() 2014-03-04 8:25 ` Xiubo Li (?) @ 2014-03-04 9:50 ` Lars-Peter Clausen 2014-03-05 1:32 ` Li.Xiubo -1 siblings, 1 reply; 10+ messages in thread From: Lars-Peter Clausen @ 2014-03-04 9:50 UTC (permalink / raw) To: Xiubo Li; +Cc: broonie, lgirdwood, alsa-devel, linux-kernel On 03/04/2014 09:25 AM, Xiubo Li wrote: > Add the default regmap I/O setting to snd_soc_register_codec() while > the CODEC is initialising, which will be called by CODEC driver device > probe(), and then we can make set_cache_io() go away entirely from each > CODEC ASoC probe. > > Signed-off-by: Xiubo Li <Li.Xiubo@freescale.com> > --- > include/sound/soc.h | 3 +++ > sound/soc/soc-core.c | 11 +++++++++++ > 2 files changed, 14 insertions(+) > > diff --git a/include/sound/soc.h b/include/sound/soc.h > index 4c4d7e1..94bc1c4 100644 > --- a/include/sound/soc.h > +++ b/include/sound/soc.h > @@ -749,6 +749,9 @@ struct snd_soc_codec_driver { > int (*set_pll)(struct snd_soc_codec *codec, int pll_id, int source, > unsigned int freq_in, unsigned int freq_out); > > + /* codec regmap */ > + struct regmap *regmap; > + Nope. The driver struct is globally shared between all device instances, the regmap struct is device instance specific. The proper way to solve this is to have a function like snd_soc_register_codec_with_io() which takes a pointer to the regmap struct. ^ permalink raw reply [flat|nested] 10+ messages in thread
* RE: [alsa-devel] [RFC][PATCH 1/3] ASoC: core: Move the default regmap I/O setting to snd_soc_register_codec() 2014-03-04 9:50 ` [alsa-devel] " Lars-Peter Clausen @ 2014-03-05 1:32 ` Li.Xiubo 0 siblings, 0 replies; 10+ messages in thread From: Li.Xiubo @ 2014-03-05 1:32 UTC (permalink / raw) To: Lars-Peter Clausen Cc: broonie@kernel.org, lgirdwood@gmail.com, alsa-devel@alsa-project.org, linux-kernel@vger.kernel.org > Subject: Re: [alsa-devel] [RFC][PATCH 1/3] ASoC: core: Move the default regmap > I/O setting to snd_soc_register_codec() > > On 03/04/2014 09:25 AM, Xiubo Li wrote: > > Add the default regmap I/O setting to snd_soc_register_codec() while > > the CODEC is initialising, which will be called by CODEC driver device > > probe(), and then we can make set_cache_io() go away entirely from each > > CODEC ASoC probe. > > > > Signed-off-by: Xiubo Li <Li.Xiubo@freescale.com> > > --- > > include/sound/soc.h | 3 +++ > > sound/soc/soc-core.c | 11 +++++++++++ > > 2 files changed, 14 insertions(+) > > > > diff --git a/include/sound/soc.h b/include/sound/soc.h > > index 4c4d7e1..94bc1c4 100644 > > --- a/include/sound/soc.h > > +++ b/include/sound/soc.h > > @@ -749,6 +749,9 @@ struct snd_soc_codec_driver { > > int (*set_pll)(struct snd_soc_codec *codec, int pll_id, int source, > > unsigned int freq_in, unsigned int freq_out); > > > > + /* codec regmap */ > > + struct regmap *regmap; > > + > > Nope. The driver struct is globally shared between all device instances, the > regmap struct is device instance specific. The proper way to solve this is > to have a function like snd_soc_register_codec_with_io() which takes a > pointer to the regmap struct. > @Lars Yes, this maybe a better choice, and I will think of it. Thanks very much, -- Best Regards, Xiubo ^ permalink raw reply [flat|nested] 10+ messages in thread
* [RFC][PATCH 2/3] ASoc: codec: remove the set_cache_io() entirely from CODEC ASoC probe. 2014-03-04 8:25 ` Xiubo Li @ 2014-03-04 8:25 ` Xiubo Li -1 siblings, 0 replies; 10+ messages in thread From: Xiubo Li @ 2014-03-04 8:25 UTC (permalink / raw) To: broonie, lgirdwood, lars; +Cc: alsa-devel, linux-kernel, Xiubo Li As we can set the CODEC I/O while snd_soc_register_codec(), so the calling of set_cache_io() from CODEC ASoC probe could be removed entirely. Signed-off-by: Xiubo Li <Li.Xiubo@freescale.com> --- sound/soc/codecs/cq93vc.c | 6 ++++-- sound/soc/codecs/mc13783.c | 10 ++-------- sound/soc/codecs/wm5102.c | 6 ++---- sound/soc/codecs/wm5110.c | 6 ++---- sound/soc/codecs/wm8350.c | 6 ++++-- sound/soc/codecs/wm8400.c | 6 ++++-- sound/soc/codecs/wm8994.c | 4 ++-- sound/soc/codecs/wm8997.c | 7 ++----- 8 files changed, 22 insertions(+), 29 deletions(-) diff --git a/sound/soc/codecs/cq93vc.c b/sound/soc/codecs/cq93vc.c index 1e25c7a..27e2b7e 100644 --- a/sound/soc/codecs/cq93vc.c +++ b/sound/soc/codecs/cq93vc.c @@ -139,8 +139,6 @@ static int cq93vc_probe(struct snd_soc_codec *codec) davinci_vc->cq93vc.codec = codec; - snd_soc_codec_set_cache_io(codec, davinci_vc->regmap); - /* Off, with power on */ cq93vc_set_bias_level(codec, SND_SOC_BIAS_STANDBY); @@ -165,6 +163,10 @@ static struct snd_soc_codec_driver soc_codec_dev_cq93vc = { static int cq93vc_platform_probe(struct platform_device *pdev) { + struct davinci_vc *davinci_vc = codec->dev->platform_data; + + soc_codec_dev_cq93vc.regmap = davinci_vc->regmap; + return snd_soc_register_codec(&pdev->dev, &soc_codec_dev_cq93vc, &cq93vc_dai, 1); } diff --git a/sound/soc/codecs/mc13783.c b/sound/soc/codecs/mc13783.c index 3331cc7..63b4dcb 100644 --- a/sound/soc/codecs/mc13783.c +++ b/sound/soc/codecs/mc13783.c @@ -612,14 +612,6 @@ static struct snd_kcontrol_new mc13783_control_list[] = { static int mc13783_probe(struct snd_soc_codec *codec) { struct mc13783_priv *priv = snd_soc_codec_get_drvdata(codec); - int ret; - - ret = snd_soc_codec_set_cache_io(codec, - dev_get_regmap(codec->dev->parent, NULL)); - if (ret != 0) { - dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret); - return ret; - } /* these are the reset values */ mc13xxx_reg_write(priv->mc13xxx, MC13783_AUDIO_RX0, 0x25893); @@ -770,6 +762,8 @@ static int __init mc13783_codec_probe(struct platform_device *pdev) dev_set_drvdata(&pdev->dev, priv); priv->mc13xxx = dev_get_drvdata(pdev->dev.parent); + soc_codec_dev_mc13783.regmap = dev_get_regmap(pdev->dev->parent, NULL); + if (priv->adc_ssi_port == priv->dac_ssi_port) ret = snd_soc_register_codec(&pdev->dev, &soc_codec_dev_mc13783, mc13783_dai_sync, ARRAY_SIZE(mc13783_dai_sync)); diff --git a/sound/soc/codecs/wm5102.c b/sound/soc/codecs/wm5102.c index 01b6ee4..4c3ebfd 100644 --- a/sound/soc/codecs/wm5102.c +++ b/sound/soc/codecs/wm5102.c @@ -1760,10 +1760,6 @@ static int wm5102_codec_probe(struct snd_soc_codec *codec) struct wm5102_priv *priv = snd_soc_codec_get_drvdata(codec); int ret; - ret = snd_soc_codec_set_cache_io(codec, priv->core.arizona->regmap); - if (ret != 0) - return ret; - ret = snd_soc_add_codec_controls(codec, wm_adsp2_fw_controls, 2); if (ret != 0) return ret; @@ -1874,6 +1870,8 @@ static int wm5102_probe(struct platform_device *pdev) pm_runtime_enable(&pdev->dev); pm_runtime_idle(&pdev->dev); + soc_codec_dev_wm5102.regmap = arizona->regmap; + return snd_soc_register_codec(&pdev->dev, &soc_codec_dev_wm5102, wm5102_dai, ARRAY_SIZE(wm5102_dai)); } diff --git a/sound/soc/codecs/wm5110.c b/sound/soc/codecs/wm5110.c index cf5d828f..bfb4597 100644 --- a/sound/soc/codecs/wm5110.c +++ b/sound/soc/codecs/wm5110.c @@ -1589,10 +1589,6 @@ static int wm5110_codec_probe(struct snd_soc_codec *codec) priv->core.arizona->dapm = &codec->dapm; - ret = snd_soc_codec_set_cache_io(codec, priv->core.arizona->regmap); - if (ret != 0) - return ret; - arizona_init_spk(codec); arizona_init_gpio(codec); @@ -1710,6 +1706,8 @@ static int wm5110_probe(struct platform_device *pdev) pm_runtime_enable(&pdev->dev); pm_runtime_idle(&pdev->dev); + soc_codec_dev_wm5110.regmap = arizona->regmap; + return snd_soc_register_codec(&pdev->dev, &soc_codec_dev_wm5110, wm5110_dai, ARRAY_SIZE(wm5110_dai)); } diff --git a/sound/soc/codecs/wm8350.c b/sound/soc/codecs/wm8350.c index 757256b..9a8f4d4 100644 --- a/sound/soc/codecs/wm8350.c +++ b/sound/soc/codecs/wm8350.c @@ -1505,8 +1505,6 @@ static int wm8350_codec_probe(struct snd_soc_codec *codec) if (ret != 0) return ret; - snd_soc_codec_set_cache_io(codec, wm8350->regmap); - /* Put the codec into reset if it wasn't already */ wm8350_clear_bits(wm8350, WM8350_POWER_MGMT_5, WM8350_CODEC_ENA); @@ -1625,6 +1623,10 @@ static struct snd_soc_codec_driver soc_codec_dev_wm8350 = { static int wm8350_probe(struct platform_device *pdev) { + struct wm8350 *wm8350 = dev_get_platdata(pdev->dev); + + soc_codec_dev_wm8350.regmap = wm8350->regmap; + return snd_soc_register_codec(&pdev->dev, &soc_codec_dev_wm8350, &wm8350_dai, 1); } diff --git a/sound/soc/codecs/wm8400.c b/sound/soc/codecs/wm8400.c index 146564f..38c0a4a 100644 --- a/sound/soc/codecs/wm8400.c +++ b/sound/soc/codecs/wm8400.c @@ -1318,8 +1318,6 @@ static int wm8400_codec_probe(struct snd_soc_codec *codec) priv->wm8400 = wm8400; priv->codec = codec; - snd_soc_codec_set_cache_io(codec, wm8400->regmap); - ret = devm_regulator_bulk_get(wm8400->dev, ARRAY_SIZE(power), &power[0]); if (ret != 0) { @@ -1378,6 +1376,10 @@ static struct snd_soc_codec_driver soc_codec_dev_wm8400 = { static int wm8400_probe(struct platform_device *pdev) { + struct wm8400 *wm8400 = dev_get_platdata(codec->dev); + + soc_codec_dev_wm8400.regmap = wm8400->regmap; + return snd_soc_register_codec(&pdev->dev, &soc_codec_dev_wm8400, &wm8400_dai, 1); } diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c index decc3c9..128c50c 100644 --- a/sound/soc/codecs/wm8994.c +++ b/sound/soc/codecs/wm8994.c @@ -4000,8 +4000,6 @@ static int wm8994_codec_probe(struct snd_soc_codec *codec) wm8994->hubs.codec = codec; - snd_soc_codec_set_cache_io(codec, control->regmap); - mutex_init(&wm8994->accdet_lock); INIT_DELAYED_WORK(&wm8994->jackdet_bootstrap, wm1811_jackdet_bootstrap); @@ -4458,6 +4456,8 @@ static int wm8994_probe(struct platform_device *pdev) pm_runtime_enable(&pdev->dev); pm_runtime_idle(&pdev->dev); + soc_codec_dev_wm8994.regmap = wm8994->wm8994->regmap; + return snd_soc_register_codec(&pdev->dev, &soc_codec_dev_wm8994, wm8994_dai, ARRAY_SIZE(wm8994_dai)); } diff --git a/sound/soc/codecs/wm8997.c b/sound/soc/codecs/wm8997.c index 5e1a32e..8ad6537 100644 --- a/sound/soc/codecs/wm8997.c +++ b/sound/soc/codecs/wm8997.c @@ -1051,11 +1051,6 @@ static struct snd_soc_dai_driver wm8997_dai[] = { static int wm8997_codec_probe(struct snd_soc_codec *codec) { struct wm8997_priv *priv = snd_soc_codec_get_drvdata(codec); - int ret; - - ret = snd_soc_codec_set_cache_io(codec, priv->core.arizona->regmap); - if (ret != 0) - return ret; arizona_init_spk(codec); @@ -1145,6 +1140,8 @@ static int wm8997_probe(struct platform_device *pdev) pm_runtime_enable(&pdev->dev); pm_runtime_idle(&pdev->dev); + soc_codec_dev_wm8997.regmap = arizona->regmap; + return snd_soc_register_codec(&pdev->dev, &soc_codec_dev_wm8997, wm8997_dai, ARRAY_SIZE(wm8997_dai)); } -- 1.8.4 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [RFC][PATCH 2/3] ASoc: codec: remove the set_cache_io() entirely from CODEC ASoC probe. @ 2014-03-04 8:25 ` Xiubo Li 0 siblings, 0 replies; 10+ messages in thread From: Xiubo Li @ 2014-03-04 8:25 UTC (permalink / raw) To: broonie, lgirdwood, lars; +Cc: alsa-devel, linux-kernel, Xiubo Li As we can set the CODEC I/O while snd_soc_register_codec(), so the calling of set_cache_io() from CODEC ASoC probe could be removed entirely. Signed-off-by: Xiubo Li <Li.Xiubo@freescale.com> --- sound/soc/codecs/cq93vc.c | 6 ++++-- sound/soc/codecs/mc13783.c | 10 ++-------- sound/soc/codecs/wm5102.c | 6 ++---- sound/soc/codecs/wm5110.c | 6 ++---- sound/soc/codecs/wm8350.c | 6 ++++-- sound/soc/codecs/wm8400.c | 6 ++++-- sound/soc/codecs/wm8994.c | 4 ++-- sound/soc/codecs/wm8997.c | 7 ++----- 8 files changed, 22 insertions(+), 29 deletions(-) diff --git a/sound/soc/codecs/cq93vc.c b/sound/soc/codecs/cq93vc.c index 1e25c7a..27e2b7e 100644 --- a/sound/soc/codecs/cq93vc.c +++ b/sound/soc/codecs/cq93vc.c @@ -139,8 +139,6 @@ static int cq93vc_probe(struct snd_soc_codec *codec) davinci_vc->cq93vc.codec = codec; - snd_soc_codec_set_cache_io(codec, davinci_vc->regmap); - /* Off, with power on */ cq93vc_set_bias_level(codec, SND_SOC_BIAS_STANDBY); @@ -165,6 +163,10 @@ static struct snd_soc_codec_driver soc_codec_dev_cq93vc = { static int cq93vc_platform_probe(struct platform_device *pdev) { + struct davinci_vc *davinci_vc = codec->dev->platform_data; + + soc_codec_dev_cq93vc.regmap = davinci_vc->regmap; + return snd_soc_register_codec(&pdev->dev, &soc_codec_dev_cq93vc, &cq93vc_dai, 1); } diff --git a/sound/soc/codecs/mc13783.c b/sound/soc/codecs/mc13783.c index 3331cc7..63b4dcb 100644 --- a/sound/soc/codecs/mc13783.c +++ b/sound/soc/codecs/mc13783.c @@ -612,14 +612,6 @@ static struct snd_kcontrol_new mc13783_control_list[] = { static int mc13783_probe(struct snd_soc_codec *codec) { struct mc13783_priv *priv = snd_soc_codec_get_drvdata(codec); - int ret; - - ret = snd_soc_codec_set_cache_io(codec, - dev_get_regmap(codec->dev->parent, NULL)); - if (ret != 0) { - dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret); - return ret; - } /* these are the reset values */ mc13xxx_reg_write(priv->mc13xxx, MC13783_AUDIO_RX0, 0x25893); @@ -770,6 +762,8 @@ static int __init mc13783_codec_probe(struct platform_device *pdev) dev_set_drvdata(&pdev->dev, priv); priv->mc13xxx = dev_get_drvdata(pdev->dev.parent); + soc_codec_dev_mc13783.regmap = dev_get_regmap(pdev->dev->parent, NULL); + if (priv->adc_ssi_port == priv->dac_ssi_port) ret = snd_soc_register_codec(&pdev->dev, &soc_codec_dev_mc13783, mc13783_dai_sync, ARRAY_SIZE(mc13783_dai_sync)); diff --git a/sound/soc/codecs/wm5102.c b/sound/soc/codecs/wm5102.c index 01b6ee4..4c3ebfd 100644 --- a/sound/soc/codecs/wm5102.c +++ b/sound/soc/codecs/wm5102.c @@ -1760,10 +1760,6 @@ static int wm5102_codec_probe(struct snd_soc_codec *codec) struct wm5102_priv *priv = snd_soc_codec_get_drvdata(codec); int ret; - ret = snd_soc_codec_set_cache_io(codec, priv->core.arizona->regmap); - if (ret != 0) - return ret; - ret = snd_soc_add_codec_controls(codec, wm_adsp2_fw_controls, 2); if (ret != 0) return ret; @@ -1874,6 +1870,8 @@ static int wm5102_probe(struct platform_device *pdev) pm_runtime_enable(&pdev->dev); pm_runtime_idle(&pdev->dev); + soc_codec_dev_wm5102.regmap = arizona->regmap; + return snd_soc_register_codec(&pdev->dev, &soc_codec_dev_wm5102, wm5102_dai, ARRAY_SIZE(wm5102_dai)); } diff --git a/sound/soc/codecs/wm5110.c b/sound/soc/codecs/wm5110.c index cf5d828f..bfb4597 100644 --- a/sound/soc/codecs/wm5110.c +++ b/sound/soc/codecs/wm5110.c @@ -1589,10 +1589,6 @@ static int wm5110_codec_probe(struct snd_soc_codec *codec) priv->core.arizona->dapm = &codec->dapm; - ret = snd_soc_codec_set_cache_io(codec, priv->core.arizona->regmap); - if (ret != 0) - return ret; - arizona_init_spk(codec); arizona_init_gpio(codec); @@ -1710,6 +1706,8 @@ static int wm5110_probe(struct platform_device *pdev) pm_runtime_enable(&pdev->dev); pm_runtime_idle(&pdev->dev); + soc_codec_dev_wm5110.regmap = arizona->regmap; + return snd_soc_register_codec(&pdev->dev, &soc_codec_dev_wm5110, wm5110_dai, ARRAY_SIZE(wm5110_dai)); } diff --git a/sound/soc/codecs/wm8350.c b/sound/soc/codecs/wm8350.c index 757256b..9a8f4d4 100644 --- a/sound/soc/codecs/wm8350.c +++ b/sound/soc/codecs/wm8350.c @@ -1505,8 +1505,6 @@ static int wm8350_codec_probe(struct snd_soc_codec *codec) if (ret != 0) return ret; - snd_soc_codec_set_cache_io(codec, wm8350->regmap); - /* Put the codec into reset if it wasn't already */ wm8350_clear_bits(wm8350, WM8350_POWER_MGMT_5, WM8350_CODEC_ENA); @@ -1625,6 +1623,10 @@ static struct snd_soc_codec_driver soc_codec_dev_wm8350 = { static int wm8350_probe(struct platform_device *pdev) { + struct wm8350 *wm8350 = dev_get_platdata(pdev->dev); + + soc_codec_dev_wm8350.regmap = wm8350->regmap; + return snd_soc_register_codec(&pdev->dev, &soc_codec_dev_wm8350, &wm8350_dai, 1); } diff --git a/sound/soc/codecs/wm8400.c b/sound/soc/codecs/wm8400.c index 146564f..38c0a4a 100644 --- a/sound/soc/codecs/wm8400.c +++ b/sound/soc/codecs/wm8400.c @@ -1318,8 +1318,6 @@ static int wm8400_codec_probe(struct snd_soc_codec *codec) priv->wm8400 = wm8400; priv->codec = codec; - snd_soc_codec_set_cache_io(codec, wm8400->regmap); - ret = devm_regulator_bulk_get(wm8400->dev, ARRAY_SIZE(power), &power[0]); if (ret != 0) { @@ -1378,6 +1376,10 @@ static struct snd_soc_codec_driver soc_codec_dev_wm8400 = { static int wm8400_probe(struct platform_device *pdev) { + struct wm8400 *wm8400 = dev_get_platdata(codec->dev); + + soc_codec_dev_wm8400.regmap = wm8400->regmap; + return snd_soc_register_codec(&pdev->dev, &soc_codec_dev_wm8400, &wm8400_dai, 1); } diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c index decc3c9..128c50c 100644 --- a/sound/soc/codecs/wm8994.c +++ b/sound/soc/codecs/wm8994.c @@ -4000,8 +4000,6 @@ static int wm8994_codec_probe(struct snd_soc_codec *codec) wm8994->hubs.codec = codec; - snd_soc_codec_set_cache_io(codec, control->regmap); - mutex_init(&wm8994->accdet_lock); INIT_DELAYED_WORK(&wm8994->jackdet_bootstrap, wm1811_jackdet_bootstrap); @@ -4458,6 +4456,8 @@ static int wm8994_probe(struct platform_device *pdev) pm_runtime_enable(&pdev->dev); pm_runtime_idle(&pdev->dev); + soc_codec_dev_wm8994.regmap = wm8994->wm8994->regmap; + return snd_soc_register_codec(&pdev->dev, &soc_codec_dev_wm8994, wm8994_dai, ARRAY_SIZE(wm8994_dai)); } diff --git a/sound/soc/codecs/wm8997.c b/sound/soc/codecs/wm8997.c index 5e1a32e..8ad6537 100644 --- a/sound/soc/codecs/wm8997.c +++ b/sound/soc/codecs/wm8997.c @@ -1051,11 +1051,6 @@ static struct snd_soc_dai_driver wm8997_dai[] = { static int wm8997_codec_probe(struct snd_soc_codec *codec) { struct wm8997_priv *priv = snd_soc_codec_get_drvdata(codec); - int ret; - - ret = snd_soc_codec_set_cache_io(codec, priv->core.arizona->regmap); - if (ret != 0) - return ret; arizona_init_spk(codec); @@ -1145,6 +1140,8 @@ static int wm8997_probe(struct platform_device *pdev) pm_runtime_enable(&pdev->dev); pm_runtime_idle(&pdev->dev); + soc_codec_dev_wm8997.regmap = arizona->regmap; + return snd_soc_register_codec(&pdev->dev, &soc_codec_dev_wm8997, wm8997_dai, ARRAY_SIZE(wm8997_dai)); } -- 1.8.4 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [RFC][PATCH 3/3] ASoC: core: remove the default regmap I/O setting up from soc_probe_codec() 2014-03-04 8:25 ` Xiubo Li @ 2014-03-04 8:25 ` Xiubo Li -1 siblings, 0 replies; 10+ messages in thread From: Xiubo Li @ 2014-03-04 8:25 UTC (permalink / raw) To: broonie, lgirdwood, lars; +Cc: alsa-devel, linux-kernel, Xiubo Li Since all the CODEC drivers has using the snd_soc_register_codec() to set up the CODEC I/O while the CODEC probing, so this could be removed entirely. Signed-off-by: Xiubo Li <Li.Xiubo@freescale.com> --- sound/soc/soc-core.c | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index 0fb502f..bc3a930 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c @@ -1137,16 +1137,6 @@ static int soc_probe_codec(struct snd_soc_card *card, codec->dapm.idle_bias_off = driver->idle_bias_off; - if (!codec->write && dev_get_regmap(codec->dev, NULL)) { - /* Set the default I/O up try regmap */ - ret = snd_soc_codec_set_cache_io(codec, NULL); - if (ret < 0) { - dev_err(codec->dev, - "Failed to set cache I/O: %d\n", ret); - goto err_probe; - } - } - if (driver->probe) { ret = driver->probe(codec); if (ret < 0) { -- 1.8.4 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [RFC][PATCH 3/3] ASoC: core: remove the default regmap I/O setting up from soc_probe_codec() @ 2014-03-04 8:25 ` Xiubo Li 0 siblings, 0 replies; 10+ messages in thread From: Xiubo Li @ 2014-03-04 8:25 UTC (permalink / raw) To: broonie, lgirdwood, lars; +Cc: alsa-devel, linux-kernel, Xiubo Li Since all the CODEC drivers has using the snd_soc_register_codec() to set up the CODEC I/O while the CODEC probing, so this could be removed entirely. Signed-off-by: Xiubo Li <Li.Xiubo@freescale.com> --- sound/soc/soc-core.c | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index 0fb502f..bc3a930 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c @@ -1137,16 +1137,6 @@ static int soc_probe_codec(struct snd_soc_card *card, codec->dapm.idle_bias_off = driver->idle_bias_off; - if (!codec->write && dev_get_regmap(codec->dev, NULL)) { - /* Set the default I/O up try regmap */ - ret = snd_soc_codec_set_cache_io(codec, NULL); - if (ret < 0) { - dev_err(codec->dev, - "Failed to set cache I/O: %d\n", ret); - goto err_probe; - } - } - if (driver->probe) { ret = driver->probe(codec); if (ret < 0) { -- 1.8.4 ^ permalink raw reply related [flat|nested] 10+ messages in thread
end of thread, other threads:[~2014-03-05 1:32 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-03-04 8:25 [RFC][PATCH 0/3] Remove set_cache_io entirely from ASoC probe Xiubo Li 2014-03-04 8:25 ` Xiubo Li 2014-03-04 8:25 ` [RFC][PATCH 1/3] ASoC: core: Move the default regmap I/O setting to snd_soc_register_codec() Xiubo Li 2014-03-04 8:25 ` Xiubo Li 2014-03-04 9:50 ` [alsa-devel] " Lars-Peter Clausen 2014-03-05 1:32 ` Li.Xiubo 2014-03-04 8:25 ` [RFC][PATCH 2/3] ASoc: codec: remove the set_cache_io() entirely from CODEC ASoC probe Xiubo Li 2014-03-04 8:25 ` Xiubo Li 2014-03-04 8:25 ` [RFC][PATCH 3/3] ASoC: core: remove the default regmap I/O setting up from soc_probe_codec() Xiubo Li 2014-03-04 8:25 ` Xiubo Li
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.