Loading Documentation/devicetree/bindings/sound/es8328.txt 0 → 100644 +38 −0 Original line number Diff line number Diff line Everest ES8328 audio CODEC This device supports both I2C and SPI. Required properties: - compatible : "everest,es8328" - DVDD-supply : Regulator providing digital core supply voltage 1.8 - 3.6V - AVDD-supply : Regulator providing analog supply voltage 3.3V - PVDD-supply : Regulator providing digital IO supply voltage 1.8 - 3.6V - IPVDD-supply : Regulator providing analog output voltage 3.3V - clocks : A 22.5792 or 11.2896 MHz clock - reg : the I2C address of the device for I2C, the chip select number for SPI Pins on the device (for linking into audio routes): * LOUT1 * LOUT2 * ROUT1 * ROUT2 * LINPUT1 * RINPUT1 * LINPUT2 * RINPUT2 * Mic Bias Example: codec: es8328@11 { compatible = "everest,es8328"; DVDD-supply = <®_3p3v>; AVDD-supply = <®_3p3v>; PVDD-supply = <®_3p3v>; HPVDD-supply = <®_3p3v>; clocks = <&clks 169>; reg = <0x11>; }; Documentation/devicetree/bindings/vendor-prefixes.txt +1 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,7 @@ epfl Ecole Polytechnique Fédérale de Lausanne epson Seiko Epson Corp. est ESTeem Wireless Modems eukrea Eukréa Electromatique everest Everest Semiconductor Co. Ltd. excito Excito fsl Freescale Semiconductor GEFanuc GE Fanuc Intelligent Platforms Embedded Systems, Inc. Loading sound/soc/codecs/Kconfig +13 −0 Original line number Diff line number Diff line Loading @@ -57,6 +57,8 @@ config SND_SOC_ALL_CODECS select SND_SOC_DA732X if I2C select SND_SOC_DA9055 if I2C select SND_SOC_BT_SCO select SND_SOC_ES8328_SPI if SPI_MASTER select SND_SOC_ES8328_I2C if I2C select SND_SOC_ISABELLE if I2C select SND_SOC_JZ4740_CODEC select SND_SOC_LM4857 if I2C Loading Loading @@ -405,6 +407,17 @@ config SND_SOC_DMIC config SND_SOC_HDMI_CODEC tristate "HDMI stub CODEC" config SND_SOC_ES8328 tristate "Everest Semi ES8328 CODEC" config SND_SOC_ES8328_I2C tristate select SND_SOC_ES8328 config SND_SOC_ES8328_SPI tristate select SND_SOC_ES8328 config SND_SOC_ISABELLE tristate Loading sound/soc/codecs/Makefile +6 −0 Original line number Diff line number Diff line Loading @@ -49,6 +49,9 @@ snd-soc-da732x-objs := da732x.o snd-soc-da9055-objs := da9055.o snd-soc-bt-sco-objs := bt-sco.o snd-soc-dmic-objs := dmic.o snd-soc-es8328-objs := es8328.o snd-soc-es8328-i2c-objs := es8328-i2c.o snd-soc-es8328-spi-objs := es8328-spi.o snd-soc-isabelle-objs := isabelle.o snd-soc-jz4740-codec-objs := jz4740.o snd-soc-l3-objs := l3.o Loading Loading @@ -220,6 +223,9 @@ obj-$(CONFIG_SND_SOC_DA732X) += snd-soc-da732x.o obj-$(CONFIG_SND_SOC_DA9055) += snd-soc-da9055.o obj-$(CONFIG_SND_SOC_BT_SCO) += snd-soc-bt-sco.o obj-$(CONFIG_SND_SOC_DMIC) += snd-soc-dmic.o obj-$(CONFIG_SND_SOC_ES8328) += snd-soc-es8328.o obj-$(CONFIG_SND_SOC_ES8328_I2C)+= snd-soc-es8328-i2c.o obj-$(CONFIG_SND_SOC_ES8328_SPI)+= snd-soc-es8328-spi.o obj-$(CONFIG_SND_SOC_ISABELLE) += snd-soc-isabelle.o obj-$(CONFIG_SND_SOC_JZ4740_CODEC) += snd-soc-jz4740-codec.o obj-$(CONFIG_SND_SOC_L3) += snd-soc-l3.o Loading sound/soc/codecs/es8328-i2c.c 0 → 100644 +60 −0 Original line number Diff line number Diff line /* * es8328-i2c.c -- ES8328 ALSA SoC I2C Audio driver * * Copyright 2014 Sutajio Ko-Usagi PTE LTD * * Author: Sean Cross <xobs@kosagi.com> * * 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. */ #include <linux/module.h> #include <linux/i2c.h> #include <linux/regmap.h> #include <sound/soc.h> #include "es8328.h" static const struct i2c_device_id es8328_id[] = { { "everest,es8328", 0 }, { } }; MODULE_DEVICE_TABLE(i2c, es8328_id); static const struct of_device_id es8328_of_match[] = { { .compatible = "everest,es8328", }, { } }; MODULE_DEVICE_TABLE(of, es8328_of_match); static int es8328_i2c_probe(struct i2c_client *i2c, const struct i2c_device_id *id) { return es8328_probe(&i2c->dev, devm_regmap_init_i2c(i2c, &es8328_regmap_config)); } static int es8328_i2c_remove(struct i2c_client *i2c) { snd_soc_unregister_codec(&i2c->dev); return 0; } static struct i2c_driver es8328_i2c_driver = { .driver = { .name = "es8328", .of_match_table = es8328_of_match, }, .probe = es8328_i2c_probe, .remove = es8328_i2c_remove, .id_table = es8328_id, }; module_i2c_driver(es8328_i2c_driver); MODULE_DESCRIPTION("ASoC ES8328 audio CODEC I2C driver"); MODULE_AUTHOR("Sean Cross <xobs@kosagi.com>"); MODULE_LICENSE("GPL"); Loading
Documentation/devicetree/bindings/sound/es8328.txt 0 → 100644 +38 −0 Original line number Diff line number Diff line Everest ES8328 audio CODEC This device supports both I2C and SPI. Required properties: - compatible : "everest,es8328" - DVDD-supply : Regulator providing digital core supply voltage 1.8 - 3.6V - AVDD-supply : Regulator providing analog supply voltage 3.3V - PVDD-supply : Regulator providing digital IO supply voltage 1.8 - 3.6V - IPVDD-supply : Regulator providing analog output voltage 3.3V - clocks : A 22.5792 or 11.2896 MHz clock - reg : the I2C address of the device for I2C, the chip select number for SPI Pins on the device (for linking into audio routes): * LOUT1 * LOUT2 * ROUT1 * ROUT2 * LINPUT1 * RINPUT1 * LINPUT2 * RINPUT2 * Mic Bias Example: codec: es8328@11 { compatible = "everest,es8328"; DVDD-supply = <®_3p3v>; AVDD-supply = <®_3p3v>; PVDD-supply = <®_3p3v>; HPVDD-supply = <®_3p3v>; clocks = <&clks 169>; reg = <0x11>; };
Documentation/devicetree/bindings/vendor-prefixes.txt +1 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,7 @@ epfl Ecole Polytechnique Fédérale de Lausanne epson Seiko Epson Corp. est ESTeem Wireless Modems eukrea Eukréa Electromatique everest Everest Semiconductor Co. Ltd. excito Excito fsl Freescale Semiconductor GEFanuc GE Fanuc Intelligent Platforms Embedded Systems, Inc. Loading
sound/soc/codecs/Kconfig +13 −0 Original line number Diff line number Diff line Loading @@ -57,6 +57,8 @@ config SND_SOC_ALL_CODECS select SND_SOC_DA732X if I2C select SND_SOC_DA9055 if I2C select SND_SOC_BT_SCO select SND_SOC_ES8328_SPI if SPI_MASTER select SND_SOC_ES8328_I2C if I2C select SND_SOC_ISABELLE if I2C select SND_SOC_JZ4740_CODEC select SND_SOC_LM4857 if I2C Loading Loading @@ -405,6 +407,17 @@ config SND_SOC_DMIC config SND_SOC_HDMI_CODEC tristate "HDMI stub CODEC" config SND_SOC_ES8328 tristate "Everest Semi ES8328 CODEC" config SND_SOC_ES8328_I2C tristate select SND_SOC_ES8328 config SND_SOC_ES8328_SPI tristate select SND_SOC_ES8328 config SND_SOC_ISABELLE tristate Loading
sound/soc/codecs/Makefile +6 −0 Original line number Diff line number Diff line Loading @@ -49,6 +49,9 @@ snd-soc-da732x-objs := da732x.o snd-soc-da9055-objs := da9055.o snd-soc-bt-sco-objs := bt-sco.o snd-soc-dmic-objs := dmic.o snd-soc-es8328-objs := es8328.o snd-soc-es8328-i2c-objs := es8328-i2c.o snd-soc-es8328-spi-objs := es8328-spi.o snd-soc-isabelle-objs := isabelle.o snd-soc-jz4740-codec-objs := jz4740.o snd-soc-l3-objs := l3.o Loading Loading @@ -220,6 +223,9 @@ obj-$(CONFIG_SND_SOC_DA732X) += snd-soc-da732x.o obj-$(CONFIG_SND_SOC_DA9055) += snd-soc-da9055.o obj-$(CONFIG_SND_SOC_BT_SCO) += snd-soc-bt-sco.o obj-$(CONFIG_SND_SOC_DMIC) += snd-soc-dmic.o obj-$(CONFIG_SND_SOC_ES8328) += snd-soc-es8328.o obj-$(CONFIG_SND_SOC_ES8328_I2C)+= snd-soc-es8328-i2c.o obj-$(CONFIG_SND_SOC_ES8328_SPI)+= snd-soc-es8328-spi.o obj-$(CONFIG_SND_SOC_ISABELLE) += snd-soc-isabelle.o obj-$(CONFIG_SND_SOC_JZ4740_CODEC) += snd-soc-jz4740-codec.o obj-$(CONFIG_SND_SOC_L3) += snd-soc-l3.o Loading
sound/soc/codecs/es8328-i2c.c 0 → 100644 +60 −0 Original line number Diff line number Diff line /* * es8328-i2c.c -- ES8328 ALSA SoC I2C Audio driver * * Copyright 2014 Sutajio Ko-Usagi PTE LTD * * Author: Sean Cross <xobs@kosagi.com> * * 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. */ #include <linux/module.h> #include <linux/i2c.h> #include <linux/regmap.h> #include <sound/soc.h> #include "es8328.h" static const struct i2c_device_id es8328_id[] = { { "everest,es8328", 0 }, { } }; MODULE_DEVICE_TABLE(i2c, es8328_id); static const struct of_device_id es8328_of_match[] = { { .compatible = "everest,es8328", }, { } }; MODULE_DEVICE_TABLE(of, es8328_of_match); static int es8328_i2c_probe(struct i2c_client *i2c, const struct i2c_device_id *id) { return es8328_probe(&i2c->dev, devm_regmap_init_i2c(i2c, &es8328_regmap_config)); } static int es8328_i2c_remove(struct i2c_client *i2c) { snd_soc_unregister_codec(&i2c->dev); return 0; } static struct i2c_driver es8328_i2c_driver = { .driver = { .name = "es8328", .of_match_table = es8328_of_match, }, .probe = es8328_i2c_probe, .remove = es8328_i2c_remove, .id_table = es8328_id, }; module_i2c_driver(es8328_i2c_driver); MODULE_DESCRIPTION("ASoC ES8328 audio CODEC I2C driver"); MODULE_AUTHOR("Sean Cross <xobs@kosagi.com>"); MODULE_LICENSE("GPL");