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@kernel.org 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