mirror of
https://github.com/torvalds/linux.git
synced 2024-12-22 19:01:37 +00:00
e5224f58e3
The AD1934 codec has no ADC feature. Hence it register mapping is slightly different from the register mapping of other members of the AD193x family. Some ASoC controls and widgets are related to the DAC feature so are not relevant in the case of an AD1934 codec. Signed-off-by: Cyrille Pitchen <cyrille.pitchen@atmel.com> Acked-by: Lars-Peter Clausen <lars@metafoo.de> Signed-off-by: Mark Brown <broonie@kernel.org>
63 lines
1.3 KiB
C
63 lines
1.3 KiB
C
/*
|
|
* AD1938/AD1939 audio driver
|
|
*
|
|
* Copyright 2014 Analog Devices Inc.
|
|
*
|
|
* Licensed under the GPL-2.
|
|
*/
|
|
|
|
#include <linux/module.h>
|
|
#include <linux/spi/spi.h>
|
|
#include <linux/regmap.h>
|
|
|
|
#include <sound/soc.h>
|
|
|
|
#include "ad193x.h"
|
|
|
|
static int ad193x_spi_probe(struct spi_device *spi)
|
|
{
|
|
const struct spi_device_id *id = spi_get_device_id(spi);
|
|
struct regmap_config config;
|
|
|
|
config = ad193x_regmap_config;
|
|
config.val_bits = 8;
|
|
config.reg_bits = 16;
|
|
config.read_flag_mask = 0x09;
|
|
config.write_flag_mask = 0x08;
|
|
|
|
return ad193x_probe(&spi->dev, devm_regmap_init_spi(spi, &config),
|
|
(enum ad193x_type)id->driver_data);
|
|
}
|
|
|
|
static int ad193x_spi_remove(struct spi_device *spi)
|
|
{
|
|
snd_soc_unregister_codec(&spi->dev);
|
|
return 0;
|
|
}
|
|
|
|
static const struct spi_device_id ad193x_spi_id[] = {
|
|
{ "ad193x", AD193X },
|
|
{ "ad1933", AD1933 },
|
|
{ "ad1934", AD1934 },
|
|
{ "ad1936", AD193X },
|
|
{ "ad1937", AD193X },
|
|
{ "ad1938", AD193X },
|
|
{ }
|
|
};
|
|
MODULE_DEVICE_TABLE(spi, ad193x_spi_id);
|
|
|
|
static struct spi_driver ad193x_spi_driver = {
|
|
.driver = {
|
|
.name = "ad193x",
|
|
.owner = THIS_MODULE,
|
|
},
|
|
.probe = ad193x_spi_probe,
|
|
.remove = ad193x_spi_remove,
|
|
.id_table = ad193x_spi_id,
|
|
};
|
|
module_spi_driver(ad193x_spi_driver);
|
|
|
|
MODULE_DESCRIPTION("ASoC AD1938/AD1939 audio CODEC driver");
|
|
MODULE_AUTHOR("Barry Song <21cnbao@gmail.com>");
|
|
MODULE_LICENSE("GPL");
|