-
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.
Merge remote-tracking branches 'asoc/topic/cs42l56', 'asoc/topic/cs42…
…xx8' and 'asoc/topic/davinci' into asoc-next
- Loading branch information
Showing
28 changed files
with
2,103 additions
and
308 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,63 @@ | ||
CS42L52 audio CODEC | ||
|
||
Required properties: | ||
|
||
- compatible : "cirrus,cs42l56" | ||
|
||
- reg : the I2C address of the device for I2C | ||
|
||
- VA-supply, VCP-supply, VLDO-supply : power supplies for the device, | ||
as covered in Documentation/devicetree/bindings/regulator/regulator.txt. | ||
|
||
Optional properties: | ||
|
||
- cirrus,gpio-nreset : GPIO controller's phandle and the number | ||
of the GPIO used to reset the codec. | ||
|
||
- cirrus,chgfreq-divisor : Values used to set the Charge Pump Frequency. | ||
Allowable values of 0x00 through 0x0F. These are raw values written to the | ||
register, not the actual frequency. The frequency is determined by the following. | ||
Frequency = MCLK / 4 * (N+2) | ||
N = chgfreq_val | ||
MCLK = Where MCLK is the frequency of the mclk signal after the MCLKDIV2 circuit. | ||
|
||
- cirrus,ain1a-ref-cfg, ain1b-ref-cfg : boolean, If present, AIN1A or AIN1B are configured | ||
as a pseudo-differential input referenced to AIN1REF/AIN3A. | ||
|
||
- cirrus,ain2a-ref-cfg, ain2b-ref-cfg : boolean, If present, AIN2A or AIN2B are configured | ||
as a pseudo-differential input referenced to AIN2REF/AIN3B. | ||
|
||
- cirrus,micbias-lvl: Set the output voltage level on the MICBIAS Pin. | ||
0 = 0.5 x VA | ||
1 = 0.6 x VA | ||
2 = 0.7 x VA | ||
3 = 0.8 x VA | ||
4 = 0.83 x VA | ||
5 = 0.91 x VA | ||
|
||
- cirrus,adaptive-pwr-cfg : Configures how the power to the Headphone and Lineout | ||
Amplifiers adapt to the output signal levels. | ||
0 = Adapt to Volume Mode. Voltage level determined by the sum of the relevant volume settings. | ||
1 = Fixed - Headphone and Line Amp supply = + or - VCP/2. | ||
2 = Fixed - Headphone and Line Amp supply = + or - VCP. | ||
3 = Adapted to Signal; Voltage level is dynamically determined by the output signal. | ||
|
||
- cirrus,hpf-left-freq, hpf-right-freq : Sets the corner frequency (-3dB point) for the internal High-Pass | ||
Filter. | ||
0 = 1.8Hz | ||
1 = 119Hz | ||
2 = 236Hz | ||
3 = 464Hz | ||
|
||
|
||
Example: | ||
|
||
codec: codec@4b { | ||
compatible = "cirrus,cs42l56"; | ||
reg = <0x4b>; | ||
gpio-reset = <&gpio 10 0>; | ||
cirrus,chgfreq-divisor = <0x05>; | ||
cirrus.ain1_ref_cfg; | ||
cirrus,micbias-lvl = <5>; | ||
VA-supply = <®_audio>; | ||
}; |
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,48 @@ | ||
/* | ||
* linux/sound/cs42l56.h -- Platform data for CS42L56 | ||
* | ||
* Copyright (c) 2014 Cirrus Logic Inc. | ||
* | ||
* 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. | ||
*/ | ||
|
||
#ifndef __CS42L56_H | ||
#define __CS42L56_H | ||
|
||
struct cs42l56_platform_data { | ||
|
||
/* GPIO for Reset */ | ||
unsigned int gpio_nreset; | ||
|
||
/* MICBIAS Level. Check datasheet Pg48 */ | ||
unsigned int micbias_lvl; | ||
|
||
/* Analog Input 1A Reference 0=Single 1=Pseudo-Differential */ | ||
unsigned int ain1a_ref_cfg; | ||
|
||
/* Analog Input 2A Reference 0=Single 1=Pseudo-Differential */ | ||
unsigned int ain2a_ref_cfg; | ||
|
||
/* Analog Input 1B Reference 0=Single 1=Pseudo-Differential */ | ||
unsigned int ain1b_ref_cfg; | ||
|
||
/* Analog Input 2B Reference 0=Single 1=Pseudo-Differential */ | ||
unsigned int ain2b_ref_cfg; | ||
|
||
/* Charge Pump Freq. Check datasheet Pg62 */ | ||
unsigned int chgfreq; | ||
|
||
/* HighPass Filter Right Channel Corner Frequency */ | ||
unsigned int hpfb_freq; | ||
|
||
/* HighPass Filter Left Channel Corner Frequency */ | ||
unsigned int hpfa_freq; | ||
|
||
/* Adaptive Power Control for LO/HP */ | ||
unsigned int adaptive_pwr; | ||
|
||
}; | ||
|
||
#endif /* __CS42L56_H */ |
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
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,59 @@ | ||
/* | ||
* cs42l56.c -- CS42L51 ALSA SoC I2C audio driver | ||
* | ||
* Copyright 2014 CirrusLogic, Inc. | ||
* | ||
* Author: Brian Austin <brian.austin@cirrus.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/i2c.h> | ||
#include <linux/module.h> | ||
#include <sound/soc.h> | ||
|
||
#include "cs42l51.h" | ||
|
||
static struct i2c_device_id cs42l51_i2c_id[] = { | ||
{"cs42l51", 0}, | ||
{} | ||
}; | ||
MODULE_DEVICE_TABLE(i2c, cs42l51_i2c_id); | ||
|
||
static int cs42l51_i2c_probe(struct i2c_client *i2c, | ||
const struct i2c_device_id *id) | ||
{ | ||
struct regmap_config config; | ||
|
||
config = cs42l51_regmap; | ||
config.val_bits = 8; | ||
config.reg_bits = 8; | ||
|
||
return cs42l51_probe(&i2c->dev, devm_regmap_init_i2c(i2c, &config)); | ||
} | ||
|
||
static int cs42l51_i2c_remove(struct i2c_client *i2c) | ||
{ | ||
snd_soc_unregister_codec(&i2c->dev); | ||
|
||
return 0; | ||
} | ||
|
||
static struct i2c_driver cs42l51_i2c_driver = { | ||
.driver = { | ||
.name = "cs42l51", | ||
.owner = THIS_MODULE, | ||
}, | ||
.probe = cs42l51_i2c_probe, | ||
.remove = cs42l51_i2c_remove, | ||
.id_table = cs42l51_i2c_id, | ||
}; | ||
|
||
module_i2c_driver(cs42l51_i2c_driver); | ||
|
||
MODULE_DESCRIPTION("ASoC CS42L51 I2C Driver"); | ||
MODULE_AUTHOR("Brian Austin, Cirrus Logic Inc, <brian.austin@cirrus.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
Oops, something went wrong.