xref: /openbmc/linux/sound/soc/codecs/adav803.c (revision 0c2d6964)
10c2d6964SLars-Peter Clausen /*
20c2d6964SLars-Peter Clausen  * ADAV803 audio driver
30c2d6964SLars-Peter Clausen  *
40c2d6964SLars-Peter Clausen  * Copyright 2014 Analog Devices Inc.
50c2d6964SLars-Peter Clausen  *
60c2d6964SLars-Peter Clausen  * Licensed under the GPL-2.
70c2d6964SLars-Peter Clausen  */
80c2d6964SLars-Peter Clausen 
90c2d6964SLars-Peter Clausen #include <linux/module.h>
100c2d6964SLars-Peter Clausen #include <linux/i2c.h>
110c2d6964SLars-Peter Clausen #include <linux/regmap.h>
120c2d6964SLars-Peter Clausen 
130c2d6964SLars-Peter Clausen #include <sound/soc.h>
140c2d6964SLars-Peter Clausen 
150c2d6964SLars-Peter Clausen #include "adav80x.h"
160c2d6964SLars-Peter Clausen 
170c2d6964SLars-Peter Clausen static const struct i2c_device_id adav803_id[] = {
180c2d6964SLars-Peter Clausen 	{ "adav803", 0 },
190c2d6964SLars-Peter Clausen 	{ }
200c2d6964SLars-Peter Clausen };
210c2d6964SLars-Peter Clausen MODULE_DEVICE_TABLE(i2c, adav803_id);
220c2d6964SLars-Peter Clausen 
230c2d6964SLars-Peter Clausen static int adav803_probe(struct i2c_client *client,
240c2d6964SLars-Peter Clausen 			     const struct i2c_device_id *id)
250c2d6964SLars-Peter Clausen {
260c2d6964SLars-Peter Clausen 	return adav80x_bus_probe(&client->dev,
270c2d6964SLars-Peter Clausen 		devm_regmap_init_i2c(client, &adav80x_regmap_config));
280c2d6964SLars-Peter Clausen }
290c2d6964SLars-Peter Clausen 
300c2d6964SLars-Peter Clausen static int adav803_remove(struct i2c_client *client)
310c2d6964SLars-Peter Clausen {
320c2d6964SLars-Peter Clausen 	snd_soc_unregister_codec(&client->dev);
330c2d6964SLars-Peter Clausen 	return 0;
340c2d6964SLars-Peter Clausen }
350c2d6964SLars-Peter Clausen 
360c2d6964SLars-Peter Clausen static struct i2c_driver adav803_driver = {
370c2d6964SLars-Peter Clausen 	.driver = {
380c2d6964SLars-Peter Clausen 		.name = "adav803",
390c2d6964SLars-Peter Clausen 		.owner = THIS_MODULE,
400c2d6964SLars-Peter Clausen 	},
410c2d6964SLars-Peter Clausen 	.probe = adav803_probe,
420c2d6964SLars-Peter Clausen 	.remove = adav803_remove,
430c2d6964SLars-Peter Clausen 	.id_table = adav803_id,
440c2d6964SLars-Peter Clausen };
450c2d6964SLars-Peter Clausen module_i2c_driver(adav803_driver);
460c2d6964SLars-Peter Clausen 
470c2d6964SLars-Peter Clausen MODULE_DESCRIPTION("ASoC ADAV803 driver");
480c2d6964SLars-Peter Clausen MODULE_AUTHOR("Lars-Peter Clausen <lars@metafoo.de>");
490c2d6964SLars-Peter Clausen MODULE_AUTHOR("Yi Li <yi.li@analog.com>>");
500c2d6964SLars-Peter Clausen MODULE_LICENSE("GPL");
51