* [PATCH] ASoC: adav80x: Convert to direct regmap API usage @ 2013-09-20 11:29 Mark Brown 2013-09-20 11:42 ` Lars-Peter Clausen 0 siblings, 1 reply; 5+ messages in thread From: Mark Brown @ 2013-09-20 11:29 UTC (permalink / raw) To: Liam Girdwood, Lars-Peter Clausen Cc: alsa-devel, device-drivers-devel, Mark Brown From: Mark Brown <broonie@linaro.org> As part of a move towards eliminating the ASoC level I/O code convert to use regmap directly. Signed-off-by: Mark Brown <broonie@linaro.org> --- sound/soc/codecs/adav80x.c | 244 ++++++++++++++++++++++++++++++++++----------- 1 file changed, 186 insertions(+), 58 deletions(-) diff --git a/sound/soc/codecs/adav80x.c b/sound/soc/codecs/adav80x.c index 15b012d0..5d9e913 100644 --- a/sound/soc/codecs/adav80x.c +++ b/sound/soc/codecs/adav80x.c @@ -115,22 +115,146 @@ #define ADAV80X_PLL_OUTE_SYSCLKPD(x) BIT(2 - (x)) -static u8 adav80x_default_regs[] = { - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x01, 0x80, 0x26, 0x00, 0x00, - 0x02, 0x40, 0x20, 0x00, 0x09, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd1, 0x92, 0xb1, 0x37, - 0x48, 0xd2, 0xfb, 0xca, 0xd2, 0x15, 0xe8, 0x29, 0xb9, 0x6a, 0xda, 0x2b, - 0xb7, 0xc0, 0x11, 0x65, 0x5c, 0xf6, 0xff, 0x8d, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, - 0x00, 0xe8, 0x46, 0xe1, 0x5b, 0xd3, 0x43, 0x77, 0x93, 0xa7, 0x44, 0xee, - 0x32, 0x12, 0xc0, 0x11, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3f, 0x3f, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, +static const struct reg_default adav80x_default_regs[] = { + { 0, 0x00 }, + { 1, 0x00 }, + { 2, 0x00 }, + { 3, 0x00 }, + { 4, 0x01 }, + { 5, 0x01 }, + { 6, 0x02 }, + { 7, 0x01 }, + { 8, 0x80 }, + { 9, 0x26 }, + { 10, 0x00 }, + { 11, 0x00 }, + { 12, 0x02 }, + { 13, 0x40 }, + { 14, 0x20 }, + { 15, 0x00 }, + { 16, 0x09 }, + { 17, 0x08 }, + { 18, 0x00 }, + { 19, 0x00 }, + { 20, 0x00 }, + { 21, 0x00 }, + { 22, 0x00 }, + { 23, 0x00 }, + { 24, 0x04 }, + { 25, 0x00 }, + { 26, 0x01 }, + { 27, 0x00 }, + { 28, 0x00 }, + { 29, 0x00 }, + { 30, 0x00 }, + { 31, 0x00 }, + { 32, 0xd1 }, + { 33, 0x92 }, + { 34, 0xb1 }, + { 35, 0x37 }, + { 36, 0x48 }, + { 37, 0xd2 }, + { 38, 0xfb }, + { 39, 0xca }, + { 40, 0xd2 }, + { 41, 0x15 }, + { 42, 0xe8 }, + { 43, 0x29 }, + { 44, 0xb9 }, + { 45, 0x6a }, + { 46, 0xda }, + { 47, 0x2b }, + { 48, 0xb7 }, + { 49, 0xc0 }, + { 50, 0x11 }, + { 51, 0x65 }, + { 52, 0x5c }, + { 53, 0xf6 }, + { 54, 0xff }, + { 55, 0x8d }, + { 56, 0x00 }, + { 57, 0x00 }, + { 58, 0x00 }, + { 59, 0x00 }, + { 60, 0x00 }, + { 61, 0x00 }, + { 62, 0x00 }, + { 63, 0x00 }, + { 64, 0x00 }, + { 65, 0x00 }, + { 66, 0x00 }, + { 67, 0x00 }, + { 68, 0x00 }, + { 69, 0x00 }, + { 70, 0x00 }, + { 71, 0x00 }, + { 72, 0x00 }, + { 73, 0x00 }, + { 74, 0x00 }, + { 75, 0x00 }, + { 76, 0x00 }, + { 77, 0x00 }, + { 78, 0x00 }, + { 79, 0x00 }, + { 80, 0x00 }, + { 81, 0xa5 }, + { 82, 0x00 }, + { 83, 0x00 }, + { 84, 0x00 }, + { 85, 0xe8 }, + { 86, 0x46 }, + { 87, 0xe1 }, + { 88, 0x5b }, + { 89, 0xd3 }, + { 90, 0x43 }, + { 91, 0x77 }, + { 92, 0x93 }, + { 93, 0xa7 }, + { 94, 0x44 }, + { 95, 0xee }, + { 96, 0x32 }, + { 97, 0x12 }, + { 98, 0xc0 }, + { 99, 0x11 }, + { 100, 0x00 }, + { 101, 0x00 }, + { 102, 0x00 }, + { 103, 0x00 }, + { 104, 0xff }, + { 105, 0xff }, + { 106, 0x3f }, + { 107, 0x3f }, + { 108, 0x00 }, + { 109, 0x00 }, + { 110, 0x00 }, + { 111, 0x00 }, + { 112, 0xff }, + { 113, 0xff }, + { 114, 0x00 }, + { 115, 0x1d }, + { 116, 0x00 }, + { 117, 0x00 }, + { 118, 0x00 }, + { 119, 0x00 }, + { 120, 0x00 }, + { 121, 0x00 }, + { 122, 0x00 }, + { 123, 0x00 }, + { 124, 0x52 }, + { 125, 0x00 }, +}; + +static const struct regmap_config adav80x_regmap = { + .reg_bits = 7, + .val_bits = 9, + + .reg_defaults = adav80x_default_regs, + .num_reg_defaults = ARRAY_SIZE(adav80x_default_regs), + .max_register = ARRAY_SIZE(adav80x_default_regs) - 1, }; struct adav80x { - enum snd_soc_control_type control_type; + struct regmap *regmap; enum adav80x_clk_src clk_src; unsigned int sysclk; @@ -777,14 +901,9 @@ static struct snd_soc_dai_driver adav80x_dais[] = { static int adav80x_probe(struct snd_soc_codec *codec) { - int ret; struct adav80x *adav80x = snd_soc_codec_get_drvdata(codec); - ret = snd_soc_codec_set_cache_io(codec, 7, 9, adav80x->control_type); - if (ret) { - dev_err(codec->dev, "failed to set cache I/O: %d\n", ret); - return ret; - } + codec->control_data = adav80x->regmap; /* Force PLLs on for SYSCLK output */ snd_soc_dapm_force_enable_pin(&codec->dapm, "PLL1"); @@ -800,14 +919,25 @@ static int adav80x_probe(struct snd_soc_codec *codec) static int adav80x_suspend(struct snd_soc_codec *codec) { - return adav80x_set_bias_level(codec, SND_SOC_BIAS_OFF); + struct adav80x *adav80x = snd_soc_codec_get_drvdata(codec); + int ret; + + ret = adav80x_set_bias_level(codec, SND_SOC_BIAS_OFF); + + regcache_cache_only(adav80x->regmap, true); + + return ret; } static int adav80x_resume(struct snd_soc_codec *codec) { + struct adav80x *adav80x = snd_soc_codec_get_drvdata(codec); + + regcache_cache_only(adav80x->regmap, false); + adav80x_set_bias_level(codec, SND_SOC_BIAS_STANDBY); - codec->cache_sync = 1; - snd_soc_cache_sync(codec); + + regcache_sync(adav80x->regmap); return 0; } @@ -827,10 +957,6 @@ static struct snd_soc_codec_driver adav80x_codec_driver = { .set_pll = adav80x_set_pll, .set_sysclk = adav80x_set_sysclk, - .reg_word_size = sizeof(u8), - .reg_cache_size = ARRAY_SIZE(adav80x_default_regs), - .reg_cache_default = adav80x_default_regs, - .controls = adav80x_controls, .num_controls = ARRAY_SIZE(adav80x_controls), .dapm_widgets = adav80x_dapm_widgets, @@ -839,34 +965,6 @@ static struct snd_soc_codec_driver adav80x_codec_driver = { .num_dapm_routes = ARRAY_SIZE(adav80x_dapm_routes), }; -static int adav80x_bus_probe(struct device *dev, - enum snd_soc_control_type control_type) -{ - struct adav80x *adav80x; - int ret; - - adav80x = kzalloc(sizeof(*adav80x), GFP_KERNEL); - if (!adav80x) - return -ENOMEM; - - dev_set_drvdata(dev, adav80x); - adav80x->control_type = control_type; - - ret = snd_soc_register_codec(dev, &adav80x_codec_driver, - adav80x_dais, ARRAY_SIZE(adav80x_dais)); - if (ret) - kfree(adav80x); - - return ret; -} - -static int adav80x_bus_remove(struct device *dev) -{ - snd_soc_unregister_codec(dev); - kfree(dev_get_drvdata(dev)); - return 0; -} - #if defined(CONFIG_SPI_MASTER) static const struct spi_device_id adav80x_spi_id[] = { { "adav801", 0 }, @@ -876,12 +974,27 @@ MODULE_DEVICE_TABLE(spi, adav80x_spi_id); static int adav80x_spi_probe(struct spi_device *spi) { - return adav80x_bus_probe(&spi->dev, SND_SOC_SPI); + struct adav80x *adav80x; + + adav80x = devm_kzalloc(&spi->dev, sizeof(*adav80x), GFP_KERNEL); + if (!adav80x) + return -ENOMEM; + + adav80x->regmap = devm_regmap_init_spi(spi, &adav80x_regmap); + if (IS_ERR(adav80x->regmap)) + return PTR_ERR(adav80x->regmap); + + dev_set_drvdata(&spi->dev, adav80x); + + return snd_soc_register_codec(&spi->dev, &adav80x_codec_driver, + adav80x_dais, ARRAY_SIZE(adav80x_dais)); } static int adav80x_spi_remove(struct spi_device *spi) { - return adav80x_bus_remove(&spi->dev); + snd_soc_unregister_codec(&spi->dev); + + return 0; } static struct spi_driver adav80x_spi_driver = { @@ -905,12 +1018,27 @@ MODULE_DEVICE_TABLE(i2c, adav80x_i2c_id); static int adav80x_i2c_probe(struct i2c_client *client, const struct i2c_device_id *id) { - return adav80x_bus_probe(&client->dev, SND_SOC_I2C); + struct adav80x *adav80x; + + adav80x = devm_kzalloc(&client->dev, sizeof(*adav80x), GFP_KERNEL); + if (!adav80x) + return -ENOMEM; + + adav80x->regmap = devm_regmap_init_i2c(client, &adav80x_regmap); + if (IS_ERR(adav80x->regmap)) + return PTR_ERR(adav80x->regmap); + + dev_set_drvdata(&client->dev, adav80x); + + return snd_soc_register_codec(&client->dev, &adav80x_codec_driver, + adav80x_dais, ARRAY_SIZE(adav80x_dais)); } static int adav80x_i2c_remove(struct i2c_client *client) { - return adav80x_bus_remove(&client->dev); + snd_soc_unregister_codec(&client->dev); + + return 0; } static struct i2c_driver adav80x_i2c_driver = { -- 1.8.4.rc3 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] ASoC: adav80x: Convert to direct regmap API usage 2013-09-20 11:29 [PATCH] ASoC: adav80x: Convert to direct regmap API usage Mark Brown @ 2013-09-20 11:42 ` Lars-Peter Clausen 2013-09-20 16:39 ` Mark Brown 0 siblings, 1 reply; 5+ messages in thread From: Lars-Peter Clausen @ 2013-09-20 11:42 UTC (permalink / raw) To: Mark Brown; +Cc: alsa-devel, Liam Girdwood, device-drivers-devel, Mark Brown On 09/20/2013 01:29 PM, Mark Brown wrote: > From: Mark Brown <broonie@linaro.org> > > As part of a move towards eliminating the ASoC level I/O code convert to > use regmap directly. > > Signed-off-by: Mark Brown <broonie@linaro.org> I have a, in my opinion, slightly better version of this patch, just hadn't had the time to test it yet. I also have regmap conversion for the adau1373 driver. - Lars > --- > sound/soc/codecs/adav80x.c | 244 ++++++++++++++++++++++++++++++++++----------- > 1 file changed, 186 insertions(+), 58 deletions(-) > > diff --git a/sound/soc/codecs/adav80x.c b/sound/soc/codecs/adav80x.c > index 15b012d0..5d9e913 100644 > --- a/sound/soc/codecs/adav80x.c > +++ b/sound/soc/codecs/adav80x.c > @@ -115,22 +115,146 @@ > > #define ADAV80X_PLL_OUTE_SYSCLKPD(x) BIT(2 - (x)) > > -static u8 adav80x_default_regs[] = { > - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x01, 0x80, 0x26, 0x00, 0x00, > - 0x02, 0x40, 0x20, 0x00, 0x09, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd1, 0x92, 0xb1, 0x37, > - 0x48, 0xd2, 0xfb, 0xca, 0xd2, 0x15, 0xe8, 0x29, 0xb9, 0x6a, 0xda, 0x2b, > - 0xb7, 0xc0, 0x11, 0x65, 0x5c, 0xf6, 0xff, 0x8d, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, > - 0x00, 0xe8, 0x46, 0xe1, 0x5b, 0xd3, 0x43, 0x77, 0x93, 0xa7, 0x44, 0xee, > - 0x32, 0x12, 0xc0, 0x11, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3f, 0x3f, > - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, > +static const struct reg_default adav80x_default_regs[] = { > + { 0, 0x00 }, > + { 1, 0x00 }, > + { 2, 0x00 }, > + { 3, 0x00 }, > + { 4, 0x01 }, > + { 5, 0x01 }, > + { 6, 0x02 }, > + { 7, 0x01 }, > + { 8, 0x80 }, > + { 9, 0x26 }, > + { 10, 0x00 }, > + { 11, 0x00 }, > + { 12, 0x02 }, > + { 13, 0x40 }, > + { 14, 0x20 }, > + { 15, 0x00 }, > + { 16, 0x09 }, > + { 17, 0x08 }, > + { 18, 0x00 }, > + { 19, 0x00 }, > + { 20, 0x00 }, > + { 21, 0x00 }, > + { 22, 0x00 }, > + { 23, 0x00 }, > + { 24, 0x04 }, > + { 25, 0x00 }, > + { 26, 0x01 }, > + { 27, 0x00 }, > + { 28, 0x00 }, > + { 29, 0x00 }, > + { 30, 0x00 }, > + { 31, 0x00 }, > + { 32, 0xd1 }, > + { 33, 0x92 }, > + { 34, 0xb1 }, > + { 35, 0x37 }, > + { 36, 0x48 }, > + { 37, 0xd2 }, > + { 38, 0xfb }, > + { 39, 0xca }, > + { 40, 0xd2 }, > + { 41, 0x15 }, > + { 42, 0xe8 }, > + { 43, 0x29 }, > + { 44, 0xb9 }, > + { 45, 0x6a }, > + { 46, 0xda }, > + { 47, 0x2b }, > + { 48, 0xb7 }, > + { 49, 0xc0 }, > + { 50, 0x11 }, > + { 51, 0x65 }, > + { 52, 0x5c }, > + { 53, 0xf6 }, > + { 54, 0xff }, > + { 55, 0x8d }, > + { 56, 0x00 }, > + { 57, 0x00 }, > + { 58, 0x00 }, > + { 59, 0x00 }, > + { 60, 0x00 }, > + { 61, 0x00 }, > + { 62, 0x00 }, > + { 63, 0x00 }, > + { 64, 0x00 }, > + { 65, 0x00 }, > + { 66, 0x00 }, > + { 67, 0x00 }, > + { 68, 0x00 }, > + { 69, 0x00 }, > + { 70, 0x00 }, > + { 71, 0x00 }, > + { 72, 0x00 }, > + { 73, 0x00 }, > + { 74, 0x00 }, > + { 75, 0x00 }, > + { 76, 0x00 }, > + { 77, 0x00 }, > + { 78, 0x00 }, > + { 79, 0x00 }, > + { 80, 0x00 }, > + { 81, 0xa5 }, > + { 82, 0x00 }, > + { 83, 0x00 }, > + { 84, 0x00 }, > + { 85, 0xe8 }, > + { 86, 0x46 }, > + { 87, 0xe1 }, > + { 88, 0x5b }, > + { 89, 0xd3 }, > + { 90, 0x43 }, > + { 91, 0x77 }, > + { 92, 0x93 }, > + { 93, 0xa7 }, > + { 94, 0x44 }, > + { 95, 0xee }, > + { 96, 0x32 }, > + { 97, 0x12 }, > + { 98, 0xc0 }, > + { 99, 0x11 }, > + { 100, 0x00 }, > + { 101, 0x00 }, > + { 102, 0x00 }, > + { 103, 0x00 }, > + { 104, 0xff }, > + { 105, 0xff }, > + { 106, 0x3f }, > + { 107, 0x3f }, > + { 108, 0x00 }, > + { 109, 0x00 }, > + { 110, 0x00 }, > + { 111, 0x00 }, > + { 112, 0xff }, > + { 113, 0xff }, > + { 114, 0x00 }, > + { 115, 0x1d }, > + { 116, 0x00 }, > + { 117, 0x00 }, > + { 118, 0x00 }, > + { 119, 0x00 }, > + { 120, 0x00 }, > + { 121, 0x00 }, > + { 122, 0x00 }, > + { 123, 0x00 }, > + { 124, 0x52 }, > + { 125, 0x00 }, > +}; > + > +static const struct regmap_config adav80x_regmap = { > + .reg_bits = 7, > + .val_bits = 9, > + > + .reg_defaults = adav80x_default_regs, > + .num_reg_defaults = ARRAY_SIZE(adav80x_default_regs), > + .max_register = ARRAY_SIZE(adav80x_default_regs) - 1, > }; > > struct adav80x { > - enum snd_soc_control_type control_type; > + struct regmap *regmap; > > enum adav80x_clk_src clk_src; > unsigned int sysclk; > @@ -777,14 +901,9 @@ static struct snd_soc_dai_driver adav80x_dais[] = { > > static int adav80x_probe(struct snd_soc_codec *codec) > { > - int ret; > struct adav80x *adav80x = snd_soc_codec_get_drvdata(codec); > > - ret = snd_soc_codec_set_cache_io(codec, 7, 9, adav80x->control_type); > - if (ret) { > - dev_err(codec->dev, "failed to set cache I/O: %d\n", ret); > - return ret; > - } > + codec->control_data = adav80x->regmap; > > /* Force PLLs on for SYSCLK output */ > snd_soc_dapm_force_enable_pin(&codec->dapm, "PLL1"); > @@ -800,14 +919,25 @@ static int adav80x_probe(struct snd_soc_codec *codec) > > static int adav80x_suspend(struct snd_soc_codec *codec) > { > - return adav80x_set_bias_level(codec, SND_SOC_BIAS_OFF); > + struct adav80x *adav80x = snd_soc_codec_get_drvdata(codec); > + int ret; > + > + ret = adav80x_set_bias_level(codec, SND_SOC_BIAS_OFF); > + > + regcache_cache_only(adav80x->regmap, true); > + > + return ret; > } > > static int adav80x_resume(struct snd_soc_codec *codec) > { > + struct adav80x *adav80x = snd_soc_codec_get_drvdata(codec); > + > + regcache_cache_only(adav80x->regmap, false); > + > adav80x_set_bias_level(codec, SND_SOC_BIAS_STANDBY); > - codec->cache_sync = 1; > - snd_soc_cache_sync(codec); > + > + regcache_sync(adav80x->regmap); > > return 0; > } > @@ -827,10 +957,6 @@ static struct snd_soc_codec_driver adav80x_codec_driver = { > .set_pll = adav80x_set_pll, > .set_sysclk = adav80x_set_sysclk, > > - .reg_word_size = sizeof(u8), > - .reg_cache_size = ARRAY_SIZE(adav80x_default_regs), > - .reg_cache_default = adav80x_default_regs, > - > .controls = adav80x_controls, > .num_controls = ARRAY_SIZE(adav80x_controls), > .dapm_widgets = adav80x_dapm_widgets, > @@ -839,34 +965,6 @@ static struct snd_soc_codec_driver adav80x_codec_driver = { > .num_dapm_routes = ARRAY_SIZE(adav80x_dapm_routes), > }; > > -static int adav80x_bus_probe(struct device *dev, > - enum snd_soc_control_type control_type) > -{ > - struct adav80x *adav80x; > - int ret; > - > - adav80x = kzalloc(sizeof(*adav80x), GFP_KERNEL); > - if (!adav80x) > - return -ENOMEM; > - > - dev_set_drvdata(dev, adav80x); > - adav80x->control_type = control_type; > - > - ret = snd_soc_register_codec(dev, &adav80x_codec_driver, > - adav80x_dais, ARRAY_SIZE(adav80x_dais)); > - if (ret) > - kfree(adav80x); > - > - return ret; > -} > - > -static int adav80x_bus_remove(struct device *dev) > -{ > - snd_soc_unregister_codec(dev); > - kfree(dev_get_drvdata(dev)); > - return 0; > -} > - > #if defined(CONFIG_SPI_MASTER) > static const struct spi_device_id adav80x_spi_id[] = { > { "adav801", 0 }, > @@ -876,12 +974,27 @@ MODULE_DEVICE_TABLE(spi, adav80x_spi_id); > > static int adav80x_spi_probe(struct spi_device *spi) > { > - return adav80x_bus_probe(&spi->dev, SND_SOC_SPI); > + struct adav80x *adav80x; > + > + adav80x = devm_kzalloc(&spi->dev, sizeof(*adav80x), GFP_KERNEL); > + if (!adav80x) > + return -ENOMEM; > + > + adav80x->regmap = devm_regmap_init_spi(spi, &adav80x_regmap); > + if (IS_ERR(adav80x->regmap)) > + return PTR_ERR(adav80x->regmap); > + > + dev_set_drvdata(&spi->dev, adav80x); > + > + return snd_soc_register_codec(&spi->dev, &adav80x_codec_driver, > + adav80x_dais, ARRAY_SIZE(adav80x_dais)); > } > > static int adav80x_spi_remove(struct spi_device *spi) > { > - return adav80x_bus_remove(&spi->dev); > + snd_soc_unregister_codec(&spi->dev); > + > + return 0; > } > > static struct spi_driver adav80x_spi_driver = { > @@ -905,12 +1018,27 @@ MODULE_DEVICE_TABLE(i2c, adav80x_i2c_id); > static int adav80x_i2c_probe(struct i2c_client *client, > const struct i2c_device_id *id) > { > - return adav80x_bus_probe(&client->dev, SND_SOC_I2C); > + struct adav80x *adav80x; > + > + adav80x = devm_kzalloc(&client->dev, sizeof(*adav80x), GFP_KERNEL); > + if (!adav80x) > + return -ENOMEM; > + > + adav80x->regmap = devm_regmap_init_i2c(client, &adav80x_regmap); > + if (IS_ERR(adav80x->regmap)) > + return PTR_ERR(adav80x->regmap); > + > + dev_set_drvdata(&client->dev, adav80x); > + > + return snd_soc_register_codec(&client->dev, &adav80x_codec_driver, > + adav80x_dais, ARRAY_SIZE(adav80x_dais)); > } > > static int adav80x_i2c_remove(struct i2c_client *client) > { > - return adav80x_bus_remove(&client->dev); > + snd_soc_unregister_codec(&client->dev); > + > + return 0; > } > > static struct i2c_driver adav80x_i2c_driver = { > ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] ASoC: adav80x: Convert to direct regmap API usage 2013-09-20 11:42 ` Lars-Peter Clausen @ 2013-09-20 16:39 ` Mark Brown 2013-09-20 16:50 ` Lars-Peter Clausen 0 siblings, 1 reply; 5+ messages in thread From: Mark Brown @ 2013-09-20 16:39 UTC (permalink / raw) To: Lars-Peter Clausen; +Cc: alsa-devel, Liam Girdwood, device-drivers-devel [-- Attachment #1.1: Type: text/plain, Size: 260 bytes --] On Fri, Sep 20, 2013 at 01:42:05PM +0200, Lars-Peter Clausen wrote: > I have a, in my opinion, slightly better version of this patch, just hadn't > had the time to test it yet. I also have regmap conversion for the adau1373 > driver. OK. Any ETA for those? [-- Attachment #1.2: Digital signature --] [-- Type: application/pgp-signature, Size: 836 bytes --] [-- Attachment #2: Type: text/plain, Size: 0 bytes --] ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] ASoC: adav80x: Convert to direct regmap API usage 2013-09-20 16:39 ` Mark Brown @ 2013-09-20 16:50 ` Lars-Peter Clausen 2013-09-21 13:16 ` Mark Brown 0 siblings, 1 reply; 5+ messages in thread From: Lars-Peter Clausen @ 2013-09-20 16:50 UTC (permalink / raw) To: Mark Brown; +Cc: alsa-devel, Liam Girdwood, device-drivers-devel On 09/20/2013 06:39 PM, Mark Brown wrote: > On Fri, Sep 20, 2013 at 01:42:05PM +0200, Lars-Peter Clausen wrote: > >> I have a, in my opinion, slightly better version of this patch, just hadn't >> had the time to test it yet. I also have regmap conversion for the adau1373 >> driver. > > OK. Any ETA for those? > Next week, maybe. - Lars ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] ASoC: adav80x: Convert to direct regmap API usage 2013-09-20 16:50 ` Lars-Peter Clausen @ 2013-09-21 13:16 ` Mark Brown 0 siblings, 0 replies; 5+ messages in thread From: Mark Brown @ 2013-09-21 13:16 UTC (permalink / raw) To: Lars-Peter Clausen; +Cc: alsa-devel, Liam Girdwood, device-drivers-devel [-- Attachment #1.1: Type: text/plain, Size: 354 bytes --] On Fri, Sep 20, 2013 at 06:50:38PM +0200, Lars-Peter Clausen wrote: > On 09/20/2013 06:39 PM, Mark Brown wrote: > >> I have a, in my opinion, slightly better version of this patch, just hadn't > >> had the time to test it yet. I also have regmap conversion for the adau1373 > >> driver. > > OK. Any ETA for those? > Next week, maybe. Great, thanks. [-- Attachment #1.2: Digital signature --] [-- Type: application/pgp-signature, Size: 836 bytes --] [-- Attachment #2: Type: text/plain, Size: 0 bytes --] ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2013-09-21 13:16 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2013-09-20 11:29 [PATCH] ASoC: adav80x: Convert to direct regmap API usage Mark Brown 2013-09-20 11:42 ` Lars-Peter Clausen 2013-09-20 16:39 ` Mark Brown 2013-09-20 16:50 ` Lars-Peter Clausen 2013-09-21 13:16 ` Mark Brown
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.