Blame view

include/linux/mfd/davinci_voicecodec.h 3.29 KB
ca26308c2   Miguel Aguilar   MFD: DaVinci Voic...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  /*
   * DaVinci Voice Codec Core Interface for TI platforms
   *
   * Copyright (C) 2010 Texas Instruments, Inc
   *
   * Author: Miguel Aguilar <miguel.aguilar@ridgerun.com>
   *
   * 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
   */
  
  #ifndef __LINUX_MFD_DAVINCI_VOICECODEC_H_
c593aca4e   Rasmus Villemoes   mfd: davinci_voic...
24
  #define __LINUX_MFD_DAVINCI_VOICECODEC_H_
ca26308c2   Miguel Aguilar   MFD: DaVinci Voic...
25
26
27
28
  
  #include <linux/kernel.h>
  #include <linux/platform_device.h>
  #include <linux/mfd/core.h>
3ad7a42d5   Matt Porter   ARM: davinci: mov...
29
  #include <linux/platform_data/edma.h>
ca26308c2   Miguel Aguilar   MFD: DaVinci Voic...
30

997174705   Sachin Kamat   mfd: davinci_voic...
31
  #include <mach/hardware.h>
ca26308c2   Miguel Aguilar   MFD: DaVinci Voic...
32

921a2c870   Mark Brown   mfd: davinci_voic...
33
  struct regmap;
ca26308c2   Miguel Aguilar   MFD: DaVinci Voic...
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
  /*
   * Register values.
   */
  #define DAVINCI_VC_PID			0x00
  #define DAVINCI_VC_CTRL			0x04
  #define DAVINCI_VC_INTEN		0x08
  #define DAVINCI_VC_INTSTATUS		0x0c
  #define DAVINCI_VC_INTCLR		0x10
  #define DAVINCI_VC_EMUL_CTRL		0x14
  #define DAVINCI_VC_RFIFO		0x20
  #define DAVINCI_VC_WFIFO		0x24
  #define DAVINCI_VC_FIFOSTAT		0x28
  #define DAVINCI_VC_TST_CTRL		0x2C
  #define DAVINCI_VC_REG05		0x94
  #define DAVINCI_VC_REG09		0xA4
  #define DAVINCI_VC_REG12		0xB0
  
  /* DAVINCI_VC_CTRL bit fields */
  #define DAVINCI_VC_CTRL_MASK		0x5500
  #define DAVINCI_VC_CTRL_RSTADC		BIT(0)
  #define DAVINCI_VC_CTRL_RSTDAC		BIT(1)
  #define DAVINCI_VC_CTRL_RD_BITS_8	BIT(4)
  #define DAVINCI_VC_CTRL_RD_UNSIGNED	BIT(5)
  #define DAVINCI_VC_CTRL_WD_BITS_8	BIT(6)
  #define DAVINCI_VC_CTRL_WD_UNSIGNED	BIT(7)
  #define DAVINCI_VC_CTRL_RFIFOEN		BIT(8)
  #define DAVINCI_VC_CTRL_RFIFOCL		BIT(9)
  #define DAVINCI_VC_CTRL_RFIFOMD_WORD_1	BIT(10)
  #define DAVINCI_VC_CTRL_WFIFOEN		BIT(12)
  #define DAVINCI_VC_CTRL_WFIFOCL		BIT(13)
  #define DAVINCI_VC_CTRL_WFIFOMD_WORD_1	BIT(14)
  
  /* DAVINCI_VC_INT bit fields */
  #define DAVINCI_VC_INT_MASK		0x3F
  #define DAVINCI_VC_INT_RDRDY_MASK	BIT(0)
  #define DAVINCI_VC_INT_RERROVF_MASK	BIT(1)
  #define DAVINCI_VC_INT_RERRUDR_MASK	BIT(2)
  #define DAVINCI_VC_INT_WDREQ_MASK	BIT(3)
  #define DAVINCI_VC_INT_WERROVF_MASKBIT	BIT(4)
  #define DAVINCI_VC_INT_WERRUDR_MASK	BIT(5)
  
  /* DAVINCI_VC_REG05 bit fields */
  #define DAVINCI_VC_REG05_PGA_GAIN	0x07
  
  /* DAVINCI_VC_REG09 bit fields */
  #define DAVINCI_VC_REG09_MUTE		0x40
  #define DAVINCI_VC_REG09_DIG_ATTEN	0x3F
  
  /* DAVINCI_VC_REG12 bit fields */
  #define DAVINCI_VC_REG12_POWER_ALL_ON	0xFD
  #define DAVINCI_VC_REG12_POWER_ALL_OFF	0x00
  
  #define DAVINCI_VC_CELLS		2
  
  enum davinci_vc_cells {
  	DAVINCI_VC_VCIF_CELL,
  	DAVINCI_VC_CQ93VC_CELL,
  };
  
  struct davinci_vcif {
  	struct platform_device	*pdev;
  	u32 dma_tx_channel;
  	u32 dma_rx_channel;
  	dma_addr_t dma_tx_addr;
  	dma_addr_t dma_rx_addr;
  };
ca26308c2   Miguel Aguilar   MFD: DaVinci Voic...
100
101
102
103
104
105
106
107
108
109
  struct davinci_vc;
  
  struct davinci_vc {
  	/* Device data */
  	struct device *dev;
  	struct platform_device *pdev;
  	struct clk *clk;
  
  	/* Memory resources */
  	void __iomem *base;
921a2c870   Mark Brown   mfd: davinci_voic...
110
  	struct regmap *regmap;
ca26308c2   Miguel Aguilar   MFD: DaVinci Voic...
111
112
113
114
115
116
  
  	/* MFD cells */
  	struct mfd_cell cells[DAVINCI_VC_CELLS];
  
  	/* Client devices */
  	struct davinci_vcif davinci_vcif;
ca26308c2   Miguel Aguilar   MFD: DaVinci Voic...
117
118
119
  };
  
  #endif