-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add a codec driver for the Everest ES8328. It supports two separate audio outputs and two separate audio inputs. Signed-off-by: Sean Cross <xobs@kosagi.com> Signed-off-by: Mark Brown <broonie@linaro.org>
- Loading branch information
Sean Cross
authored and
Mark Brown
committed
Aug 16, 2014
1 parent
d4f7fac
commit 567e4f9
Showing
7 changed files
with
1,236 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
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>; | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
/* | ||
* 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"); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
/* | ||
* es8328.c -- ES8328 ALSA SoC SPI 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/regmap.h> | ||
#include <linux/spi/spi.h> | ||
#include <sound/soc.h> | ||
#include "es8328.h" | ||
|
||
static const struct of_device_id es8328_of_match[] = { | ||
{ .compatible = "everest,es8328", }, | ||
{ } | ||
}; | ||
MODULE_DEVICE_TABLE(of, es8328_of_match); | ||
|
||
static int es8328_spi_probe(struct spi_device *spi) | ||
{ | ||
return es8328_probe(&spi->dev, | ||
devm_regmap_init_spi(spi, &es8328_regmap_config)); | ||
} | ||
|
||
static int es8328_spi_remove(struct spi_device *spi) | ||
{ | ||
snd_soc_unregister_codec(&spi->dev); | ||
return 0; | ||
} | ||
|
||
static struct spi_driver es8328_spi_driver = { | ||
.driver = { | ||
.name = "es8328", | ||
.of_match_table = es8328_of_match, | ||
}, | ||
.probe = es8328_spi_probe, | ||
.remove = es8328_spi_remove, | ||
}; | ||
|
||
module_spi_driver(es8328_spi_driver); | ||
MODULE_DESCRIPTION("ASoC ES8328 audio CODEC SPI driver"); | ||
MODULE_AUTHOR("Sean Cross <xobs@kosagi.com>"); | ||
MODULE_LICENSE("GPL"); |
Oops, something went wrong.