On Tue, Jan 19, 2016 at 11:50:35AM +0100, Michael Trimarchi wrote: > Hi Jacob > > On Tue, Jan 19, 2016 at 11:29 AM, Jacob Siverskog > <jacob@teenage.engineering> wrote: > > The PCM179x family supports both SPI and I2C. This patch adds support > > for the I2C interface. > > > > Reviewed-by: Johan Hovold <johan@xxxxxxxxxx> > > Signed-off-by: Jacob Siverskog <jacob@teenage.engineering> > > --- > > +static int pcm179x_i2c_probe(struct i2c_client *client, > > + const struct i2c_device_id *id) > > +{ > > + struct pcm179x_private *pcm179x; > > + int ret; > > + > > + pcm179x = devm_kzalloc(&client->dev, sizeof(struct pcm179x_private), > > + GFP_KERNEL); > > + if (!pcm179x) > > + return -ENOMEM; > > + > > + i2c_set_clientdata(client, pcm179x); > > + > > + pcm179x->dev = &client->dev; > > + > > + pcm179x->regmap = devm_regmap_init_i2c(client, &pcm179x_regmap_config); > > + if (IS_ERR(pcm179x->regmap)) { > > + ret = PTR_ERR(pcm179x->regmap); > > + dev_err(&client->dev, "Failed to register regmap: %d\n", ret); > > + return ret; > > + } > > + > > sound/soc/codecs/adau1781-spi.c > > I like more how was done here for private data and codec data. What do > you think? Why do you prefer that? Having a common_exit() to clean up whatever was done in common_init() seems like a better design than open-coding this in both of the i2c and spi drivers (if that's what you were referring to). > > + return pcm179x_common_init(pcm179x); > > +} > > + > > +static int pcm179x_i2c_remove(struct i2c_client *client) > > +{ > > + return pcm179x_common_exit(i2c_get_clientdata(client)); > > +} Thanks, Johan _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel