Loading Documentation/devicetree/bindings/sound/pcm512x.txt 0 → 100644 +30 −0 Original line number Diff line number Diff line PCM512x audio CODECs These devices support both I2C and SPI (configured with pin strapping on the board). Required properties: - compatible : One of "ti,pcm5121" or "ti,pcm5122" - reg : the I2C address of the device for I2C, the chip select number for SPI. - AVDD-supply, DVDD-supply, and CPVDD-supply : power supplies for the device, as covered in bindings/regulator/regulator.txt Optional properties: - clocks : A clock specifier for the clock connected as SCLK. If this is absent the device will be configured to clock from BCLK. Example: pcm5122: pcm5122@4c { compatible = "ti,pcm5122"; reg = <0x4c>; AVDD-supply = <®_3v3_analog>; DVDD-supply = <®_1v8>; CPVDD-supply = <®_3v3>; }; sound/soc/codecs/Kconfig +17 −0 Original line number Diff line number Diff line Loading @@ -59,6 +59,8 @@ config SND_SOC_ALL_CODECS select SND_SOC_PCM1681 if I2C select SND_SOC_PCM1792A if SPI_MASTER select SND_SOC_PCM3008 select SND_SOC_PCM512x_I2C if I2C select SND_SOC_PCM512x_SPI if SPI_MASTER select SND_SOC_RT5631 if I2C select SND_SOC_RT5640 if I2C select SND_SOC_SGTL5000 if I2C Loading Loading @@ -313,6 +315,21 @@ config SND_SOC_PCM1792A config SND_SOC_PCM3008 tristate config SND_SOC_PCM512x tristate config SND_SOC_PCM512x_I2C tristate "Texas Instruments PCM512x CODECs - I2C" depends on I2C select SND_SOC_PCM512x select REGMAP_I2C config SND_SOC_PCM512x_SPI tristate "Texas Instruments PCM512x CODECs - SPI" depends on SPI_MASTER select SND_SOC_PCM512x select REGMAP_SPI config SND_SOC_RT5631 tristate Loading sound/soc/codecs/Makefile +6 −0 Original line number Diff line number Diff line Loading @@ -46,6 +46,9 @@ snd-soc-hdmi-codec-objs := hdmi.o snd-soc-pcm1681-objs := pcm1681.o snd-soc-pcm1792a-codec-objs := pcm1792a.o snd-soc-pcm3008-objs := pcm3008.o snd-soc-pcm512x-objs := pcm512x.o snd-soc-pcm512x-i2c-objs := pcm512x-i2c.o snd-soc-pcm512x-spi-objs := pcm512x-spi.o snd-soc-rt5631-objs := rt5631.o snd-soc-rt5640-objs := rt5640.o snd-soc-sgtl5000-objs := sgtl5000.o Loading Loading @@ -179,6 +182,9 @@ obj-$(CONFIG_SND_SOC_HDMI_CODEC) += snd-soc-hdmi-codec.o obj-$(CONFIG_SND_SOC_PCM1681) += snd-soc-pcm1681.o obj-$(CONFIG_SND_SOC_PCM1792A) += snd-soc-pcm1792a-codec.o obj-$(CONFIG_SND_SOC_PCM3008) += snd-soc-pcm3008.o obj-$(CONFIG_SND_SOC_PCM512x) += snd-soc-pcm512x.o obj-$(CONFIG_SND_SOC_PCM512x_I2C) += snd-soc-pcm512x-i2c.o obj-$(CONFIG_SND_SOC_PCM512x_SPI) += snd-soc-pcm512x-spi.o obj-$(CONFIG_SND_SOC_RT5631) += snd-soc-rt5631.o obj-$(CONFIG_SND_SOC_RT5640) += snd-soc-rt5640.o obj-$(CONFIG_SND_SOC_SGTL5000) += snd-soc-sgtl5000.o Loading sound/soc/codecs/pcm512x-i2c.c 0 → 100644 +71 −0 Original line number Diff line number Diff line /* * Driver for the PCM512x CODECs * * Author: Mark Brown <broonie@linaro.org> * Copyright 2014 Linaro Ltd * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * version 2 as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. */ #include <linux/init.h> #include <linux/module.h> #include <linux/i2c.h> #include "pcm512x.h" static int pcm512x_i2c_probe(struct i2c_client *i2c, const struct i2c_device_id *id) { struct regmap *regmap; regmap = devm_regmap_init_i2c(i2c, &pcm512x_regmap); if (IS_ERR(regmap)) return PTR_ERR(regmap); return pcm512x_probe(&i2c->dev, regmap); } static int pcm512x_i2c_remove(struct i2c_client *i2c) { pcm512x_remove(&i2c->dev); return 0; } static const struct i2c_device_id pcm512x_i2c_id[] = { { "pcm5121", }, { "pcm5122", }, { } }; MODULE_DEVICE_TABLE(i2c, pcm512x_i2c_id); static const struct of_device_id pcm512x_of_match[] = { { .compatible = "ti,pcm5121", }, { .compatible = "ti,pcm5122", }, { } }; MODULE_DEVICE_TABLE(of, pcm512x_of_match); static struct i2c_driver pcm512x_i2c_driver = { .probe = pcm512x_i2c_probe, .remove = pcm512x_i2c_remove, .id_table = pcm512x_i2c_id, .driver = { .name = "pcm512x", .owner = THIS_MODULE, .of_match_table = pcm512x_of_match, .pm = &pcm512x_pm_ops, }, }; module_i2c_driver(pcm512x_i2c_driver); MODULE_DESCRIPTION("ASoC PCM512x codec driver - I2C"); MODULE_AUTHOR("Mark Brown <broonie@linaro.org>"); MODULE_LICENSE("GPL v2"); sound/soc/codecs/pcm512x-spi.c 0 → 100644 +69 −0 Original line number Diff line number Diff line /* * Driver for the PCM512x CODECs * * Author: Mark Brown <broonie@linaro.org> * Copyright 2014 Linaro Ltd * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * version 2 as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. */ #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", }, { }, }; MODULE_DEVICE_TABLE(spi, pcm512x_spi_id); static const struct of_device_id pcm512x_of_match[] = { { .compatible = "ti,pcm5121", }, { .compatible = "ti,pcm5122", }, { } }; 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", .owner = THIS_MODULE, .of_match_table = pcm512x_of_match, .pm = &pcm512x_pm_ops, }, }; module_spi_driver(pcm512x_spi_driver); Loading
Documentation/devicetree/bindings/sound/pcm512x.txt 0 → 100644 +30 −0 Original line number Diff line number Diff line PCM512x audio CODECs These devices support both I2C and SPI (configured with pin strapping on the board). Required properties: - compatible : One of "ti,pcm5121" or "ti,pcm5122" - reg : the I2C address of the device for I2C, the chip select number for SPI. - AVDD-supply, DVDD-supply, and CPVDD-supply : power supplies for the device, as covered in bindings/regulator/regulator.txt Optional properties: - clocks : A clock specifier for the clock connected as SCLK. If this is absent the device will be configured to clock from BCLK. Example: pcm5122: pcm5122@4c { compatible = "ti,pcm5122"; reg = <0x4c>; AVDD-supply = <®_3v3_analog>; DVDD-supply = <®_1v8>; CPVDD-supply = <®_3v3>; };
sound/soc/codecs/Kconfig +17 −0 Original line number Diff line number Diff line Loading @@ -59,6 +59,8 @@ config SND_SOC_ALL_CODECS select SND_SOC_PCM1681 if I2C select SND_SOC_PCM1792A if SPI_MASTER select SND_SOC_PCM3008 select SND_SOC_PCM512x_I2C if I2C select SND_SOC_PCM512x_SPI if SPI_MASTER select SND_SOC_RT5631 if I2C select SND_SOC_RT5640 if I2C select SND_SOC_SGTL5000 if I2C Loading Loading @@ -313,6 +315,21 @@ config SND_SOC_PCM1792A config SND_SOC_PCM3008 tristate config SND_SOC_PCM512x tristate config SND_SOC_PCM512x_I2C tristate "Texas Instruments PCM512x CODECs - I2C" depends on I2C select SND_SOC_PCM512x select REGMAP_I2C config SND_SOC_PCM512x_SPI tristate "Texas Instruments PCM512x CODECs - SPI" depends on SPI_MASTER select SND_SOC_PCM512x select REGMAP_SPI config SND_SOC_RT5631 tristate Loading
sound/soc/codecs/Makefile +6 −0 Original line number Diff line number Diff line Loading @@ -46,6 +46,9 @@ snd-soc-hdmi-codec-objs := hdmi.o snd-soc-pcm1681-objs := pcm1681.o snd-soc-pcm1792a-codec-objs := pcm1792a.o snd-soc-pcm3008-objs := pcm3008.o snd-soc-pcm512x-objs := pcm512x.o snd-soc-pcm512x-i2c-objs := pcm512x-i2c.o snd-soc-pcm512x-spi-objs := pcm512x-spi.o snd-soc-rt5631-objs := rt5631.o snd-soc-rt5640-objs := rt5640.o snd-soc-sgtl5000-objs := sgtl5000.o Loading Loading @@ -179,6 +182,9 @@ obj-$(CONFIG_SND_SOC_HDMI_CODEC) += snd-soc-hdmi-codec.o obj-$(CONFIG_SND_SOC_PCM1681) += snd-soc-pcm1681.o obj-$(CONFIG_SND_SOC_PCM1792A) += snd-soc-pcm1792a-codec.o obj-$(CONFIG_SND_SOC_PCM3008) += snd-soc-pcm3008.o obj-$(CONFIG_SND_SOC_PCM512x) += snd-soc-pcm512x.o obj-$(CONFIG_SND_SOC_PCM512x_I2C) += snd-soc-pcm512x-i2c.o obj-$(CONFIG_SND_SOC_PCM512x_SPI) += snd-soc-pcm512x-spi.o obj-$(CONFIG_SND_SOC_RT5631) += snd-soc-rt5631.o obj-$(CONFIG_SND_SOC_RT5640) += snd-soc-rt5640.o obj-$(CONFIG_SND_SOC_SGTL5000) += snd-soc-sgtl5000.o Loading
sound/soc/codecs/pcm512x-i2c.c 0 → 100644 +71 −0 Original line number Diff line number Diff line /* * Driver for the PCM512x CODECs * * Author: Mark Brown <broonie@linaro.org> * Copyright 2014 Linaro Ltd * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * version 2 as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. */ #include <linux/init.h> #include <linux/module.h> #include <linux/i2c.h> #include "pcm512x.h" static int pcm512x_i2c_probe(struct i2c_client *i2c, const struct i2c_device_id *id) { struct regmap *regmap; regmap = devm_regmap_init_i2c(i2c, &pcm512x_regmap); if (IS_ERR(regmap)) return PTR_ERR(regmap); return pcm512x_probe(&i2c->dev, regmap); } static int pcm512x_i2c_remove(struct i2c_client *i2c) { pcm512x_remove(&i2c->dev); return 0; } static const struct i2c_device_id pcm512x_i2c_id[] = { { "pcm5121", }, { "pcm5122", }, { } }; MODULE_DEVICE_TABLE(i2c, pcm512x_i2c_id); static const struct of_device_id pcm512x_of_match[] = { { .compatible = "ti,pcm5121", }, { .compatible = "ti,pcm5122", }, { } }; MODULE_DEVICE_TABLE(of, pcm512x_of_match); static struct i2c_driver pcm512x_i2c_driver = { .probe = pcm512x_i2c_probe, .remove = pcm512x_i2c_remove, .id_table = pcm512x_i2c_id, .driver = { .name = "pcm512x", .owner = THIS_MODULE, .of_match_table = pcm512x_of_match, .pm = &pcm512x_pm_ops, }, }; module_i2c_driver(pcm512x_i2c_driver); MODULE_DESCRIPTION("ASoC PCM512x codec driver - I2C"); MODULE_AUTHOR("Mark Brown <broonie@linaro.org>"); MODULE_LICENSE("GPL v2");
sound/soc/codecs/pcm512x-spi.c 0 → 100644 +69 −0 Original line number Diff line number Diff line /* * Driver for the PCM512x CODECs * * Author: Mark Brown <broonie@linaro.org> * Copyright 2014 Linaro Ltd * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * version 2 as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. */ #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", }, { }, }; MODULE_DEVICE_TABLE(spi, pcm512x_spi_id); static const struct of_device_id pcm512x_of_match[] = { { .compatible = "ti,pcm5121", }, { .compatible = "ti,pcm5122", }, { } }; 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", .owner = THIS_MODULE, .of_match_table = pcm512x_of_match, .pm = &pcm512x_pm_ops, }, }; module_spi_driver(pcm512x_spi_driver);