2019-05-27 09:55:21 +03:00
// SPDX-License-Identifier: GPL-2.0-only
2014-03-07 07:44:08 +04:00
/*
* Driver for the PCM512x CODECs
*
2017-09-07 16:22:48 +03:00
* Author : Mark Brown < broonie @ kernel . org >
2014-03-07 07:44:08 +04:00
* Copyright 2014 Linaro Ltd
*/
# include <linux/init.h>
# include <linux/module.h>
# include <linux/spi/spi.h>
# include "pcm512x.h"
static int pcm512x_spi_probe ( struct spi_device * spi )
{
struct regmap * regmap ;
int ret ;
regmap = devm_regmap_init_spi ( spi , & pcm512x_regmap ) ;
if ( IS_ERR ( regmap ) ) {
ret = PTR_ERR ( regmap ) ;
return ret ;
}
return pcm512x_probe ( & spi - > dev , regmap ) ;
}
static int pcm512x_spi_remove ( struct spi_device * spi )
{
pcm512x_remove ( & spi - > dev ) ;
return 0 ;
}
static const struct spi_device_id pcm512x_spi_id [ ] = {
{ " pcm5121 " , } ,
{ " pcm5122 " , } ,
2014-12-09 11:28:09 +03:00
{ " pcm5141 " , } ,
{ " pcm5142 " , } ,
2014-03-07 07:44:08 +04:00
{ } ,
} ;
MODULE_DEVICE_TABLE ( spi , pcm512x_spi_id ) ;
static const struct of_device_id pcm512x_of_match [ ] = {
{ . compatible = " ti,pcm5121 " , } ,
{ . compatible = " ti,pcm5122 " , } ,
2014-12-09 11:28:09 +03:00
{ . compatible = " ti,pcm5141 " , } ,
{ . compatible = " ti,pcm5142 " , } ,
2014-03-07 07:44:08 +04:00
{ }
} ;
MODULE_DEVICE_TABLE ( of , pcm512x_of_match ) ;
static struct spi_driver pcm512x_spi_driver = {
. probe = pcm512x_spi_probe ,
. remove = pcm512x_spi_remove ,
. id_table = pcm512x_spi_id ,
. driver = {
. name = " pcm512x " ,
. of_match_table = pcm512x_of_match ,
. pm = & pcm512x_pm_ops ,
} ,
} ;
module_spi_driver ( pcm512x_spi_driver ) ;
2017-11-20 10:45:49 +03:00
MODULE_DESCRIPTION ( " ASoC PCM512x codec driver - SPI " ) ;
MODULE_AUTHOR ( " Mark Brown <broonie@kernel.org> " ) ;
MODULE_LICENSE ( " GPL v2 " ) ;