Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e1a65374 authored by Mark Brown's avatar Mark Brown
Browse files

Merge branch 'topic/es8328' of...

Merge branch 'topic/es8328' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into asoc-fsl
parents 708b4351 567e4f98
Loading
Loading
Loading
Loading
+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 = <&reg_3p3v>;
	AVDD-supply = <&reg_3p3v>;
	PVDD-supply = <&reg_3p3v>;
	HPVDD-supply = <&reg_3p3v>;
	clocks = <&clks 169>;
	reg = <0x11>;
};
+1 −0
Original line number Diff line number Diff line
@@ -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.
+13 −0
Original line number Diff line number Diff line
@@ -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
@@ -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

+6 −0
Original line number Diff line number Diff line
@@ -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
@@ -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
+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