1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * Platform data for Madera codec driver 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Copyright (C) 2016-2019 Cirrus Logic, Inc. and 6*4882a593Smuzhiyun * Cirrus Logic International Semiconductor Ltd. 7*4882a593Smuzhiyun */ 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun #ifndef MADERA_CODEC_PDATA_H 10*4882a593Smuzhiyun #define MADERA_CODEC_PDATA_H 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun #include <linux/kernel.h> 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun #define MADERA_MAX_INPUT 6 15*4882a593Smuzhiyun #define MADERA_MAX_MUXED_CHANNELS 4 16*4882a593Smuzhiyun #define MADERA_MAX_OUTPUT 6 17*4882a593Smuzhiyun #define MADERA_MAX_AIF 4 18*4882a593Smuzhiyun #define MADERA_MAX_PDM_SPK 2 19*4882a593Smuzhiyun #define MADERA_MAX_DSP 7 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun /** 22*4882a593Smuzhiyun * struct madera_codec_pdata 23*4882a593Smuzhiyun * 24*4882a593Smuzhiyun * @max_channels_clocked: Maximum number of channels that I2S clocks will be 25*4882a593Smuzhiyun * generated for. Useful when clock master for systems 26*4882a593Smuzhiyun * where the I2S bus has multiple data lines. 27*4882a593Smuzhiyun * @dmic_ref: Indicates how the MICBIAS pins have been externally 28*4882a593Smuzhiyun * connected to DMICs on each input. A value of 0 29*4882a593Smuzhiyun * indicates MICVDD and is the default. Other values are: 30*4882a593Smuzhiyun * For CS47L35 one of the CS47L35_DMIC_REF_xxx values 31*4882a593Smuzhiyun * For all other codecs one of the MADERA_DMIC_REF_xxx 32*4882a593Smuzhiyun * Also see the datasheet for a description of the 33*4882a593Smuzhiyun * INn_DMIC_SUP field. 34*4882a593Smuzhiyun * @inmode: Mode for the ADC inputs. One of the MADERA_INMODE_xxx 35*4882a593Smuzhiyun * values. Two-dimensional array 36*4882a593Smuzhiyun * [input_number][channel number], with four slots per 37*4882a593Smuzhiyun * input in the order 38*4882a593Smuzhiyun * [n][0]=INnAL [n][1]=INnAR [n][2]=INnBL [n][3]=INnBR 39*4882a593Smuzhiyun * @out_mono: For each output set the value to TRUE to indicate that 40*4882a593Smuzhiyun * the output is mono. [0]=OUT1, [1]=OUT2, ... 41*4882a593Smuzhiyun * @pdm_fmt: PDM speaker data format. See the PDM_SPKn_FMT field in 42*4882a593Smuzhiyun * the datasheet for a description of this value. 43*4882a593Smuzhiyun * @pdm_mute: PDM mute format. See the PDM_SPKn_CTRL_1 register 44*4882a593Smuzhiyun * in the datasheet for a description of this value. 45*4882a593Smuzhiyun */ 46*4882a593Smuzhiyun struct madera_codec_pdata { 47*4882a593Smuzhiyun u32 max_channels_clocked[MADERA_MAX_AIF]; 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun u32 dmic_ref[MADERA_MAX_INPUT]; 50*4882a593Smuzhiyun 51*4882a593Smuzhiyun u32 inmode[MADERA_MAX_INPUT][MADERA_MAX_MUXED_CHANNELS]; 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun bool out_mono[MADERA_MAX_OUTPUT]; 54*4882a593Smuzhiyun 55*4882a593Smuzhiyun u32 pdm_fmt[MADERA_MAX_PDM_SPK]; 56*4882a593Smuzhiyun u32 pdm_mute[MADERA_MAX_PDM_SPK]; 57*4882a593Smuzhiyun }; 58*4882a593Smuzhiyun 59*4882a593Smuzhiyun #endif 60