From fcc9d2e5a6c89d22b8b773a64fb4ad21ac318446 Mon Sep 17 00:00:00 2001 From: Jonathan Herman Date: Tue, 22 Jan 2013 10:38:37 -0500 Subject: Added missing tegra files. --- sound/soc/codecs/tlv320aic326x_mini-dsp.h | 128 ++++++++++++++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 sound/soc/codecs/tlv320aic326x_mini-dsp.h (limited to 'sound/soc/codecs/tlv320aic326x_mini-dsp.h') diff --git a/sound/soc/codecs/tlv320aic326x_mini-dsp.h b/sound/soc/codecs/tlv320aic326x_mini-dsp.h new file mode 100644 index 00000000000..bebb12fa680 --- /dev/null +++ b/sound/soc/codecs/tlv320aic326x_mini-dsp.h @@ -0,0 +1,128 @@ +/* + * linux/sound/soc/codecs/tlv320aic3262_mini-dsp.h + * + * + * Copyright (C) 2011 Texas Instruments, Inc. + * + * + * This package 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. + * + * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED + * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. + * + * History: + * Rev 0.1 Added the multiconfig support 17-08-2011 + * + * Rev 0.2 Migrated for aic3262 nVidia + * 21-10-2011 + */ + +#ifndef _TLV320AIC3262_MINI_DSP_H +#define _TLV320AIC3262_MINI_DSP_H + +/* defines */ + +#define MAXCONFIG 4 + +//#define DEBUG_MINIDSP_LOADING + +/* Select the functionalities to be used in mini dsp module */ +#define PROGRAM_MINI_DSP_first +//#define PROGRAM_MINI_DSP_second +#define PROGRAM_CODEC_REG_SECTIONS +#define ADD_MINI_DSP_CONTROLS + +/* use the following macros to select between burst and byte mode of i2c + * Byte mode uses standard read & write as provides debugging information if enabled + * if enabled. + * Multibyte should be used for production codes where performance is priority + */ +//#define MULTIBYTE_I2C +#undef MULTIBYTE_I2C + +typedef struct { + u8 reg_off; + u8 reg_val; +} reg_value; + +/*CONTROL LOCATIONS*/ +typedef struct { + u8 control_book; /*coefficient book location*/ + u8 control_page; /*coefficient page location*/ + u8 control_base; /*coefficient base address within page*/ + u8 control_mute_flag; /*non-zero means muting required*/ + u8 control_string_index; /*string table index*/ +} control; + +/* volume ranges from -110db to 6db + * amixer controls does not accept negative values + * Therefore we are normalizing values to start from value 0 + * value 0 corresponds to -110db and 116 to 6db + */ +#define MAX_VOLUME_CONTROLS 2 +#define MIN_VOLUME 0 +#define MAX_VOLUME 116 +#define VOLUME_REG_SIZE 3 /* 3 bytes */ +#define VOLUME_KCONTROL_NAME "(0=-110dB, 116=+6dB)" + +#define FILT_CTL_NAME_ADC "ADC adaptive filter(0=Disable, 1=Enable)" +#define FILT_CTL_NAME_DAC "DAC adaptive filter(0=Disable, 1=Enable)" +#define COEFF_CTL_NAME_ADC "ADC coeff Buffer(0=Buffer A, 1=Buffer B)" +#define COEFF_CTL_NAME_DAC "DAC coeff Buffer(0=Buffer A, 1=Buffer B)" + +#define BUFFER_PAGE_ADC 0x8 +#define BUFFER_PAGE_DAC 0x2c + +#define ADAPTIVE_MAX_CONTROLS 4 + +/* + * MUX controls, 3 bytes of control data. + */ +#define MAX_MUX_CONTROLS 2 +#define MIN_MUX_CTRL 0 +#define MAX_MUX_CTRL 2 +#define MUX_CTRL_REG_SIZE 3 /* 3 bytes */ + +#define MINIDSP_PARSING_START 0 +#define MINIDSP_PARSING_END (-1) + +#define CODEC_REG_DONT_IGNORE 0 +#define CODEC_REG_IGNORE 1 + +#define CODEC_REG_PRE_INIT 0 +#define CODEC_REG_POST_INIT 1 +#define INIT_SEQ_DELIMITER 255 /* Delimiter register */ +#define DELIMITER_COUNT 2 /* 2 delimiter entries */ + +/* Parser info structure */ +typedef struct { + char page_num; + char burst_array[129]; + int burst_size; + int current_loc; + int book_change;CONFIG_MINI_DSP + u8 book_no; +} minidsp_parser_data; + +/* I2c Page Change Structure */ +typedef struct { + char burst_array[4]; +} minidsp_i2c_page; + +/* This macro defines the total size of the miniDSP parser arrays + * that the driver will maintain as a data backup. + * The total memory requirement will be around + * sizeof(minidsp_parser_data) * 48 = 138 * 32 = 4416 bytes + */ +#define MINIDSP_PARSER_ARRAY_SIZE 200 + +extern int +minidsp_i2c_multibyte_transfer(struct snd_soc_codec *, reg_value *, int); +extern int byte_i2c_array_transfer(struct snd_soc_codec *, reg_value *, int); +extern void minidsp_multiconfig(struct snd_soc_codec *,reg_value *, int ,reg_value *, int ); +extern int reg_def_conf(struct snd_soc_codec *); + +#endif -- cgit v1.2.2