75 lines
2.0 KiB
C
75 lines
2.0 KiB
C
/*
|
|
* Platform data for Madera codec driver
|
|
*
|
|
* Copyright 2016 Cirrus Logic
|
|
*
|
|
* 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 _MADERA_CODEC_PDATA_H
|
|
#define _MADERA_CODEC_PDATA_H
|
|
|
|
#include <linux/kernel.h>
|
|
#include <dt-bindings/mfd/madera.h>
|
|
|
|
#define MADERA_MAX_INPUT 6
|
|
#define MADERA_MAX_MUXED_CHANNELS 4
|
|
#define MADERA_MAX_OUTPUT 6
|
|
#define MADERA_MAX_AIF 4
|
|
#define MADERA_MAX_PDM_SPK 2
|
|
#define MADERA_MAX_DSP 7
|
|
|
|
struct madera_codec_pdata {
|
|
/**
|
|
* Maximum number of channels that clocks will be generated for,
|
|
* useful for systems where an I2S bus with multiple data
|
|
* lines is mastered.
|
|
*/
|
|
int max_channels_clocked[MADERA_MAX_AIF];
|
|
|
|
/** Reference voltage for DMIC inputs */
|
|
int dmic_ref[MADERA_MAX_INPUT];
|
|
|
|
/** Clock Source for DMICs
|
|
* The meaning of the values here depends on the codec. See the
|
|
* datasheet for a list of valid values for the INn_DMIC_SUP fields
|
|
* [0] = IN1, [1]=IN2 [2]=IN3
|
|
*/
|
|
int dmic_clksrc[MADERA_MAX_INPUT];
|
|
|
|
/** Mode of input structures
|
|
* One of the MADERA_INMODE_xxx values
|
|
* Two-dimensional array [input_number][channel number]
|
|
* Four slots per input in the order:
|
|
* [n][0]=INnAL [n][1]=INnAR [n][2]=INnBL [n][3]=INnBR
|
|
*/
|
|
int inmode[MADERA_MAX_INPUT][MADERA_MAX_MUXED_CHANNELS];
|
|
|
|
/** Output mono mode control
|
|
* For each output set the value to TRUE to indicate that
|
|
* the output is mono
|
|
* [0]=OUT1, [1]=OUT2, ...
|
|
*/
|
|
bool out_mono[MADERA_MAX_OUTPUT];
|
|
|
|
/** PDM mute control settings.
|
|
* See the PDM_SPKn_CTRL_1 register in the datasheet for the
|
|
* meaning of the values.
|
|
*/
|
|
unsigned int pdm_mute[MADERA_MAX_PDM_SPK];
|
|
|
|
/** PDM speaker format
|
|
* See the PDM_SPKn_FMT field in the datasheet for the
|
|
* meaning of the values
|
|
*/
|
|
unsigned int pdm_fmt[MADERA_MAX_PDM_SPK];
|
|
|
|
/** Override default list of firmwares */
|
|
struct wm_adsp_fw_defs *fw_defs[MADERA_MAX_DSP];
|
|
int num_fw_defs[MADERA_MAX_DSP];
|
|
};
|
|
|
|
#endif
|