summaryrefslogtreecommitdiff
path: root/sound/arm/mxc-alsa-pmic.h
blob: ccda66ecc70f6d268437e564ba11c3a1a861d307 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
/*
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 * Copyright 2007-2010 Freescale Semiconductor, Inc. All Rights Reserved.
 */

 /*!
  * @file mxc-alsa-pmic.h
  * @brief
  * @ingroup SOUND_DRV
  */

#ifndef __MXC_ALSA_PMIC_H__
#define __MXC_ALSA_PMIC_H__

#ifdef __KERNEL__

 /**/
#define PMIC_MASTER					0x1
#define PMIC_SLAVE					0x2
     /**/
#define DAM_PORT_4					port_4
#define DAM_PORT_5					port_5
     /**/
#define PMIC_STEREODAC					0x1
#define PMIC_CODEC					0x2
     /**/
#define PMIC_AUDIO_ADDER_STEREO				0x1
#define PMIC_AUDIO_ADDER_STEREO_OPPOSITE		0x2
#define PMIC_AUDIO_ADDER_MONO				0x4
#define PMIC_AUDIO_ADDER_MONO_OPPOSITE			0x8
#define TX_WATERMARK					0x4
#define RX_WATERMARK					0x6
     /**/
#define SSI_DEFAULT_FIFO				0x0
#define DEFAULT_MASTER_CLOCK				0x1
     /**/
#define SDMA_TXFIFO_WATERMARK				0x4
#define SDMA_RXFIFO_WATERMARK				0x6
     /**/
#define TIMESLOTS_2					0x3
#define TIMESLOTS_4					0x2
#define SAMPLE_RATE_MAX					0x9
     /**/
#define CLK_SELECT_SLAVE_BCL				0x7
#define CLK_SELECT_SLAVE_CLI				0x5
#define CLK_SELECT_MASTER_CLI				0x4
/* Volume to balance ratio */
#define VOLUME_BALANCE_RATIO				((6 + 39) / (21 + 21))
/* -21dB */
#define PMIC_BALANCE_MIN				0x0
/* 0dB*/
#define PMIC_BALANCE_MAX				0x7
/* -21dB left */
#define BALANCE_MIN					0x0
/* 0db, no balance */
#define NO_BALANCE					0x32
/* -21dB right*/
#define BALANCE_MAX					0x64
/* -8dB */
#define PMIC_INPUT_VOLUME_MIN             		0x0
/* +23dB */
#define PMIC_INPUT_VOLUME_MAX             		0x1f
/* -39dB */
#define PMIC_OUTPUT_VOLUME_MIN			PMIC_INPUT_VOLUME_MIN
/* +6dB */
#define PMIC_OUTPUT_VOLUME_MAX            		0xd
/* -8dB */
#define INPUT_VOLUME_MIN				0x0
/* +23dB */
#define INPUT_VOLUME_MAX				0x64
/* -39dB */
#define OUTPUT_VOLUME_MIN				0x0
/* +6dB */
#define OUTPUT_VOLUME_MAX				0x64
/* 96 Khz */
#define SAMPLE_FREQ_MAX					96000
/* 8 Khz */
#define SAMPLE_FREQ_MIN					8000
/*!
 * Define channels available on MC13783. This is mainly used
 * in mixer interface to control different input/output
 * devices
 */
#define MXC_STEREO_OUTPUT				(SOUND_MASK_VOLUME | SOUND_MASK_PCM)
#define MXC_STEREO_INPUT				(SOUND_MASK_PHONEIN)
#define MXC_MONO_OUTPUT					(SOUND_MASK_PHONEOUT | SOUND_MASK_SPEAKER)
#define MXC_MONO_INPUT					(SOUND_MASK_LINE | SOUND_MASK_MIC)
#define SNDCTL_CLK_SET_MASTER                   	_SIOR('Z', 30, int)
#define SNDCTL_PMIC_READ_OUT_BALANCE      		_SIOR('Z', 8, int)
/*#define SNDCTL_MC13783_WRITE_OUT_BALANCE                      _SIOWR('Z', 9, int)*/
#define SNDCTL_PMIC_WRITE_OUT_ADDER			_SIOWR('Z', 10, int)
#define SNDCTL_PMIC_READ_OUT_ADDER			_SIOR('Z', 11, int)
#define SNDCTL_PMIC_WRITE_CODEC_FILTER		_SIOWR('Z', 12, int)
#define SNDCTL_PMIC_READ_CODEC_FILTER		_SIOR('Z', 13, int)
#define SNDCTL_DAM_SET_OUT_PORT				_SIOWR('Z', 14, int)
#endif				/* __KERNEL__ */
#endif				/* __MXC_ALSA_PMIC_H__ */