mfd: arizona: Provide platform data for MICBIAS configuration
Allow the MICBIAS voltages and other attributes to be configured by the platform. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
This commit is contained in:
parent
648a98808c
commit
3d91f8282c
|
@ -510,6 +510,29 @@ int arizona_dev_init(struct arizona *arizona)
|
|||
goto err_reset;
|
||||
}
|
||||
|
||||
for (i = 0; i < ARIZONA_MAX_MICBIAS; i++) {
|
||||
if (!arizona->pdata.micbias[i].mV)
|
||||
continue;
|
||||
|
||||
val = (arizona->pdata.micbias[i].mV - 1500) / 100;
|
||||
val <<= ARIZONA_MICB1_LVL_SHIFT;
|
||||
|
||||
if (arizona->pdata.micbias[i].ext_cap)
|
||||
val |= ARIZONA_MICB1_EXT_CAP;
|
||||
|
||||
if (arizona->pdata.micbias[i].discharge)
|
||||
val |= ARIZONA_MICB1_DISCH;
|
||||
|
||||
if (arizona->pdata.micbias[i].fast_start)
|
||||
val |= ARIZONA_MICB1_RATE;
|
||||
|
||||
regmap_update_bits(arizona->regmap,
|
||||
ARIZONA_MIC_BIAS_CTRL_1 + i,
|
||||
ARIZONA_MICB1_LVL_MASK |
|
||||
ARIZONA_MICB1_DISCH |
|
||||
ARIZONA_MICB1_RATE, val);
|
||||
}
|
||||
|
||||
for (i = 0; i < ARIZONA_MAX_INPUT; i++) {
|
||||
/* Default for both is 0 so noop with defaults */
|
||||
val = arizona->pdata.dmic_ref[i]
|
||||
|
|
|
@ -56,6 +56,8 @@
|
|||
#define ARIZONA_DMIC_MICBIAS2 2
|
||||
#define ARIZONA_DMIC_MICBIAS3 3
|
||||
|
||||
#define ARIZONA_MAX_MICBIAS 3
|
||||
|
||||
#define ARIZONA_INMODE_DIFF 0
|
||||
#define ARIZONA_INMODE_SE 1
|
||||
#define ARIZONA_INMODE_DMIC 2
|
||||
|
@ -69,6 +71,13 @@
|
|||
|
||||
struct regulator_init_data;
|
||||
|
||||
struct arizona_micbias {
|
||||
int mV; /** Regulated voltage */
|
||||
unsigned int ext_cap:1; /** External capacitor fitted */
|
||||
unsigned int discharge:1; /** Actively discharge */
|
||||
unsigned int fast_start:1; /** Enable aggressive startup ramp rate */
|
||||
};
|
||||
|
||||
struct arizona_micd_config {
|
||||
unsigned int src;
|
||||
unsigned int bias;
|
||||
|
@ -106,6 +115,9 @@ struct arizona_pdata {
|
|||
/** Reference voltage for DMIC inputs */
|
||||
int dmic_ref[ARIZONA_MAX_INPUT];
|
||||
|
||||
/** MICBIAS configurations */
|
||||
struct arizona_micbias micbias[ARIZONA_MAX_MICBIAS];
|
||||
|
||||
/** Mode of input structures */
|
||||
int inmode[ARIZONA_MAX_INPUT];
|
||||
|
||||
|
|
Loading…
Reference in New Issue