1 // SPDX-License-Identifier: GPL-2.0-only << 2 /* 1 /* 3 * Driver for the PCM512x CODECs 2 * Driver for the PCM512x CODECs 4 * 3 * 5 * Author: Mark Brown <broonie@kernel.org !! 4 * Author: Mark Brown <broonie@linaro.org> 6 * Copyright 2014 Linaro Ltd 5 * Copyright 2014 Linaro Ltd >> 6 * >> 7 * This program is free software; you can redistribute it and/or >> 8 * modify it under the terms of the GNU General Public License >> 9 * version 2 as published by the Free Software Foundation. >> 10 * >> 11 * This program is distributed in the hope that it will be useful, but >> 12 * WITHOUT ANY WARRANTY; without even the implied warranty of >> 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >> 14 * General Public License for more details. 7 */ 15 */ 8 16 9 #include <linux/init.h> 17 #include <linux/init.h> 10 #include <linux/module.h> 18 #include <linux/module.h> 11 #include <linux/spi/spi.h> 19 #include <linux/spi/spi.h> 12 20 13 #include "pcm512x.h" 21 #include "pcm512x.h" 14 22 15 static int pcm512x_spi_probe(struct spi_device 23 static int pcm512x_spi_probe(struct spi_device *spi) 16 { 24 { 17 struct regmap *regmap; 25 struct regmap *regmap; 18 int ret; 26 int ret; 19 27 20 regmap = devm_regmap_init_spi(spi, &pc 28 regmap = devm_regmap_init_spi(spi, &pcm512x_regmap); 21 if (IS_ERR(regmap)) { 29 if (IS_ERR(regmap)) { 22 ret = PTR_ERR(regmap); 30 ret = PTR_ERR(regmap); 23 return ret; 31 return ret; 24 } 32 } 25 33 26 return pcm512x_probe(&spi->dev, regmap 34 return pcm512x_probe(&spi->dev, regmap); 27 } 35 } 28 36 29 static void pcm512x_spi_remove(struct spi_devi !! 37 static int pcm512x_spi_remove(struct spi_device *spi) 30 { 38 { 31 pcm512x_remove(&spi->dev); 39 pcm512x_remove(&spi->dev); >> 40 return 0; 32 } 41 } 33 42 34 static const struct spi_device_id pcm512x_spi_ 43 static const struct spi_device_id pcm512x_spi_id[] = { 35 { "pcm5121", }, 44 { "pcm5121", }, 36 { "pcm5122", }, 45 { "pcm5122", }, 37 { "pcm5141", }, 46 { "pcm5141", }, 38 { "pcm5142", }, 47 { "pcm5142", }, 39 { "pcm5242", }, << 40 { }, 48 { }, 41 }; 49 }; 42 MODULE_DEVICE_TABLE(spi, pcm512x_spi_id); 50 MODULE_DEVICE_TABLE(spi, pcm512x_spi_id); 43 51 44 static const struct of_device_id pcm512x_of_ma 52 static const struct of_device_id pcm512x_of_match[] = { 45 { .compatible = "ti,pcm5121", }, 53 { .compatible = "ti,pcm5121", }, 46 { .compatible = "ti,pcm5122", }, 54 { .compatible = "ti,pcm5122", }, 47 { .compatible = "ti,pcm5141", }, 55 { .compatible = "ti,pcm5141", }, 48 { .compatible = "ti,pcm5142", }, 56 { .compatible = "ti,pcm5142", }, 49 { .compatible = "ti,pcm5242", }, << 50 { } 57 { } 51 }; 58 }; 52 MODULE_DEVICE_TABLE(of, pcm512x_of_match); 59 MODULE_DEVICE_TABLE(of, pcm512x_of_match); 53 60 54 static struct spi_driver pcm512x_spi_driver = 61 static struct spi_driver pcm512x_spi_driver = { 55 .probe = pcm512x_spi_probe, 62 .probe = pcm512x_spi_probe, 56 .remove = pcm512x_spi_remove, 63 .remove = pcm512x_spi_remove, 57 .id_table = pcm512x_spi_id, 64 .id_table = pcm512x_spi_id, 58 .driver = { 65 .driver = { 59 .name = "pcm512x", 66 .name = "pcm512x", 60 .of_match_table = pcm512x_of_m 67 .of_match_table = pcm512x_of_match, 61 .pm = &pcm512x_pm_ops, 68 .pm = &pcm512x_pm_ops, 62 }, 69 }, 63 }; 70 }; 64 71 65 module_spi_driver(pcm512x_spi_driver); 72 module_spi_driver(pcm512x_spi_driver); 66 73 67 MODULE_DESCRIPTION("ASoC PCM512x codec driver 74 MODULE_DESCRIPTION("ASoC PCM512x codec driver - SPI"); 68 MODULE_AUTHOR("Mark Brown <broonie@kernel.org> 75 MODULE_AUTHOR("Mark Brown <broonie@kernel.org>"); 69 MODULE_LICENSE("GPL v2"); 76 MODULE_LICENSE("GPL v2"); 70 77
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.