xref: /openbmc/linux/sound/soc/codecs/adav801.c (revision 0c2d6964)
10c2d6964SLars-Peter Clausen /*
20c2d6964SLars-Peter Clausen  * ADAV801 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/spi/spi.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 spi_device_id adav80x_spi_id[] = {
180c2d6964SLars-Peter Clausen 	{ "adav801", 0 },
190c2d6964SLars-Peter Clausen 	{ }
200c2d6964SLars-Peter Clausen };
210c2d6964SLars-Peter Clausen MODULE_DEVICE_TABLE(spi, adav80x_spi_id);
220c2d6964SLars-Peter Clausen 
230c2d6964SLars-Peter Clausen static int adav80x_spi_probe(struct spi_device *spi)
240c2d6964SLars-Peter Clausen {
250c2d6964SLars-Peter Clausen 	struct regmap_config config;
260c2d6964SLars-Peter Clausen 
270c2d6964SLars-Peter Clausen 	config = adav80x_regmap_config;
280c2d6964SLars-Peter Clausen 	config.read_flag_mask = 0x01;
290c2d6964SLars-Peter Clausen 
300c2d6964SLars-Peter Clausen 	return adav80x_bus_probe(&spi->dev, devm_regmap_init_spi(spi, &config));
310c2d6964SLars-Peter Clausen }
320c2d6964SLars-Peter Clausen 
330c2d6964SLars-Peter Clausen static int adav80x_spi_remove(struct spi_device *spi)
340c2d6964SLars-Peter Clausen {
350c2d6964SLars-Peter Clausen 	snd_soc_unregister_codec(&spi->dev);
360c2d6964SLars-Peter Clausen 	return 0;
370c2d6964SLars-Peter Clausen }
380c2d6964SLars-Peter Clausen 
390c2d6964SLars-Peter Clausen static struct spi_driver adav80x_spi_driver = {
400c2d6964SLars-Peter Clausen 	.driver = {
410c2d6964SLars-Peter Clausen 		.name	= "adav801",
420c2d6964SLars-Peter Clausen 		.owner	= THIS_MODULE,
430c2d6964SLars-Peter Clausen 	},
440c2d6964SLars-Peter Clausen 	.probe		= adav80x_spi_probe,
450c2d6964SLars-Peter Clausen 	.remove		= adav80x_spi_remove,
460c2d6964SLars-Peter Clausen 	.id_table	= adav80x_spi_id,
470c2d6964SLars-Peter Clausen };
480c2d6964SLars-Peter Clausen module_spi_driver(adav80x_spi_driver);
490c2d6964SLars-Peter Clausen 
500c2d6964SLars-Peter Clausen MODULE_DESCRIPTION("ASoC ADAV801 driver");
510c2d6964SLars-Peter Clausen MODULE_AUTHOR("Lars-Peter Clausen <lars@metafoo.de>");
520c2d6964SLars-Peter Clausen MODULE_AUTHOR("Yi Li <yi.li@analog.com>>");
530c2d6964SLars-Peter Clausen MODULE_LICENSE("GPL");
54