summaryrefslogtreecommitdiff
path: root/sound/soc/omap/aess/abe_mem.h
blob: c8fba3b9ae78258e087618b1e32d68c6600ddb94 (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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
/*

  This file is provided under a dual BSD/GPLv2 license.  When using or
  redistributing this file, you may do so under either license.

  GPL LICENSE SUMMARY

  Copyright(c) 2010-2011 Texas Instruments Incorporated,
  All rights reserved.

  This program is free software; you can redistribute it and/or modify
  it under the terms of version 2 of the GNU General Public License as
  published by the Free Software Foundation.

  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., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
  The full GNU General Public License is included in this distribution
  in the file called LICENSE.GPL.

  BSD LICENSE

  Copyright(c) 2010-2011 Texas Instruments Incorporated,
  All rights reserved.

  Redistribution and use in source and binary forms, with or without
  modification, are permitted provided that the following conditions
  are met:

    * Redistributions of source code must retain the above copyright
      notice, this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above copyright
      notice, this list of conditions and the following disclaimer in
      the documentation and/or other materials provided with the
      distribution.
    * Neither the name of Texas Instruments Incorporated nor the names of
      its contributors may be used to endorse or promote products derived
      from this software without specific prior written permission.

  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

*/

#ifndef _ABE_MEM_H_
#define _ABE_MEM_H_

#define OMAP_ABE_DMEM 0
#define OMAP_ABE_CMEM 1
#define OMAP_ABE_SMEM 2
#define OMAP_ABE_PMEM 3
#define OMAP_ABE_AESS 4

struct omap_aess_addr {
	int bank;
	unsigned int offset;
	unsigned int bytes;
};







#define OMAP_AESS_DMEM_MULTIFRAME_ID	0
#define OMAP_AESS_DMEM_DMIC_UL_FIFO_ID	1
#define OMAP_AESS_DMEM_MCPDM_UL_FIFO_ID	2
#define OMAP_AESS_DMEM_BT_UL_FIFO_ID	3
#define OMAP_AESS_DMEM_MM_UL_FIFO_ID	4
#define OMAP_AESS_DMEM_MM_UL2_FIFO_ID	5
#define OMAP_AESS_DMEM_VX_UL_FIFO_ID	6
#define OMAP_AESS_DMEM_MM_DL_FIFO_ID	7
#define OMAP_AESS_DMEM_VX_DL_FIFO_ID	8
#define OMAP_AESS_DMEM_TONES_DL_FIFO_ID	9
#define OMAP_AESS_DMEM_MCASP_DL_FIFO_ID	10
#define OMAP_AESS_DMEM_BT_DL_FIFO_ID	11
#define OMAP_AESS_DMEM_MCPDM_DL_FIFO_ID	12
#define OMAP_AESS_DMEM_MM_EXT_OUT_FIFO_ID	13
#define OMAP_AESS_DMEM_MM_EXT_IN_FIFO_ID	14
#define OMAP_AESS_SMEM_DMIC0_96_48_DATA_ID	15
#define OMAP_AESS_SMEM_DMIC1_96_48_DATA_ID	16
#define OMAP_AESS_SMEM_DMIC2_96_48_DATA_ID	17
#define OMAP_AESS_SMEM_AMIC_96_48_DATA_ID	18
#define OMAP_AESS_SMEM_BT_UL_ID	19
#define OMAP_AESS_SMEM_BT_UL_8_48_HP_DATA_ID	20
#define OMAP_AESS_SMEM_BT_UL_8_48_LP_DATA_ID	21
#define OMAP_AESS_SMEM_BT_UL_16_48_HP_DATA_ID	22
#define OMAP_AESS_SMEM_BT_UL_16_48_LP_DATA_ID	23
#define OMAP_AESS_SMEM_MM_UL2_ID	24
#define OMAP_AESS_SMEM_MM_UL_ID	25
#define OMAP_AESS_SMEM_VX_UL_ID	26
#define OMAP_AESS_SMEM_VX_UL_48_8_HP_DATA_ID	27
#define OMAP_AESS_SMEM_VX_UL_48_8_LP_DATA_ID	28
#define OMAP_AESS_SMEM_VX_UL_48_16_HP_DATA_ID	29
#define OMAP_AESS_SMEM_VX_UL_48_16_LP_DATA_ID	30
#define OMAP_AESS_SMEM_MM_DL_ID	31
#define OMAP_AESS_SMEM_MM_DL_44P1_ID	32
#define OMAP_AESS_SMEM_MM_DL_44P1_XK_ID	33
#define OMAP_AESS_SMEM_VX_DL_ID	34
#define OMAP_AESS_SMEM_VX_DL_8_48_HP_DATA_ID	35
#define OMAP_AESS_SMEM_VX_DL_8_48_LP_DATA_ID	36
#define OMAP_AESS_SMEM_VX_DL_8_48_OSR_LP_DATA_ID	37
#define OMAP_AESS_SMEM_VX_DL_16_48_HP_DATA_ID	38
#define OMAP_AESS_SMEM_VX_DL_16_48_LP_DATA_ID	39
#define OMAP_AESS_SMEM_TONES_ID	40
#define OMAP_AESS_SMEM_TONES_44P1_ID	41
#define OMAP_AESS_SMEM_TONES_44P1_XK_ID	42
#define OMAP_AESS_SMEM_MCASP1_ID	43
#define OMAP_AESS_SMEM_BT_DL_ID	44
#define OMAP_AESS_SMEM_BT_DL_8_48_OSR_LP_DATA_ID	45
#define OMAP_AESS_SMEM_BT_DL_48_8_HP_DATA_ID	46
#define OMAP_AESS_SMEM_BT_DL_48_8_LP_DATA_ID	47
#define OMAP_AESS_SMEM_BT_DL_48_16_HP_DATA_ID	48
#define OMAP_AESS_SMEM_BT_DL_48_16_LP_DATA_ID	49
#define OMAP_AESS_SMEM_DL2_M_LR_EQ_DATA_ID	50
#define OMAP_AESS_SMEM_DL1_M_EQ_DATA_ID	51
#define OMAP_AESS_SMEM_EARP_48_96_LP_DATA_ID	52
#define OMAP_AESS_SMEM_IHF_48_96_LP_DATA_ID	53
#define OMAP_AESS_SMEM_DC_HS_ID	54
#define OMAP_AESS_SMEM_DC_HF_ID	55
#define OMAP_AESS_SMEM_SDT_F_DATA_ID	56
#define OMAP_AESS_SMEM_GTARGET1_ID	57
#define OMAP_AESS_SMEM_GCURRENT_ID	58
#define OMAP_AESS_CMEM_DL1_COEFS_ID	59
#define OMAP_AESS_CMEM_DL2_L_COEFS_ID	60
#define OMAP_AESS_CMEM_DL2_R_COEFS_ID	61
#define OMAP_AESS_CMEM_SDT_COEFS_ID	62
#define OMAP_AESS_CMEM_96_48_AMIC_COEFS_ID	63
#define OMAP_AESS_CMEM_96_48_DMIC_COEFS_ID	64
#define OMAP_AESS_CMEM_1_ALPHA_ID	65
#define OMAP_AESS_CMEM_ALPHA_ID	66
#define OMAP_AESS_DMEM_SLOT23_CTRL_ID	67
#define OMAP_AESS_DMEM_AUPLINKROUTING_ID	68
#define OMAP_AESS_DMEM_MAXTASKBYTESINSLOT_ID	69
#define OMAP_AESS_DMEM_PINGPONGDESC_ID	70
#define OMAP_AESS_DMEM_IODESCR_ID	71
#define OMAP_AESS_DMEM_MCUIRQFIFO_ID	72
#define OMAP_AESS_DMEM_PING_ID	73
#define OMAP_AESS_DMEM_DEBUG_FIFO_ID	74
#define OMAP_AESS_DMEM_DEBUG_FIFO_HAL_ID	75
#define OMAP_AESS_DMEM_DEBUG_HAL_TASK_ID	76
#define OMAP_AESS_DMEM_LOOPCOUNTER_ID	77
#define OMAP_AESS_DMEM_FWMEMINITDESCR_ID	78

#define OMAP_AESS_CMEM__ID	7


/* Distinction between Read and Write from/to ABE memory
 * is useful for simulation tool */
static inline void omap_abe_mem_write(struct omap_aess *abe, int bank,
				u32 offset, u32 *src, size_t bytes)
{
	memcpy((abe->io_base[bank] + offset), src, bytes);
}

static inline void omap_abe_mem_read(struct omap_aess *abe, int bank,
				u32 offset, u32 *dest, size_t bytes)
{
	memcpy(dest, (abe->io_base[bank] + offset), bytes);
}

static inline u32 omap_aess_reg_readl(struct omap_aess *abe, u32 offset)
{
	return __raw_readl(abe->io_base[OMAP_ABE_AESS] + offset);
}

static inline void omap_aess_reg_writel(struct omap_aess *abe,
				u32 offset, u32 val)
{
	__raw_writel(val, (abe->io_base[OMAP_ABE_AESS] + offset));
}

static inline void *omap_abe_reset_mem(struct omap_aess *abe, int bank,
			u32 offset, size_t bytes)
{
	return memset(abe->io_base[bank] + offset, 0, bytes);
}

static inline void omap_aess_mem_write(struct omap_aess *abe,
			struct omap_aess_addr addr, u32 *src)
{
	memcpy((abe->io_base[addr.bank] + addr.offset), src, addr.bytes);
}

static inline void omap_aess_mem_read(struct omap_aess *abe,
				struct omap_aess_addr addr, u32 *dest)
{
	memcpy(dest, (abe->io_base[addr.bank] + addr.offset), addr.bytes);
}

static inline void *omap_aess_reset_mem(struct omap_aess *abe,
			struct omap_aess_addr addr)
{
	return memset(abe->io_base[addr.bank] + addr.offset, 0, addr.bytes);
}


#endif /*_ABE_MEM_H_*/