blob: f1d2586944b2080fa716b77e3cbc1629e54d7951 [file] [log] [blame]
Ramprasad Katkame38aed42018-03-07 16:26:49 +05301/* Copyright (c) 2015, 2018 The Linux Foundation. All rights reserved.
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302 *
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License version 2 and
5 * only version 2 as published by the Free Software Foundation.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 */
12
13#ifndef _SWRM_REGISTERS_H
14#define _SWRM_REGISTERS_H
15
16#define SWRM_BASE_ADDRESS 0x00
17
18#define SWRM_COMP_HW_VERSION SWRM_BASE_ADDRESS
19#define SWRM_COMP_CFG_ADDR (SWRM_BASE_ADDRESS+0x00000004)
20#define SWRM_COMP_CFG_RMSK 0x3
21#define SWRM_COMP_CFG_IRQ_LEVEL_OR_PULSE_BMSK 0x2
22#define SWRM_COMP_CFG_IRQ_LEVEL_OR_PULSE_SHFT 0x1
23#define SWRM_COMP_CFG_ENABLE_BMSK 0x1
24#define SWRM_COMP_CFG_ENABLE_SHFT 0x0
25
26#define SWRM_COMP_SW_RESET (SWRM_BASE_ADDRESS+0x00000008)
27
28#define SWRM_COMP_PARAMS (SWRM_BASE_ADDRESS+0x100)
29#define SWRM_COMP_PARAMS_DOUT_PORTS_MASK 0x0000001F
30#define SWRM_COMP_PARAMS_DIN_PORTS_MASK 0x000003E0
31#define SWRM_COMP_PARAMS_WR_FIFO_DEPTH 0x00007C00
32#define SWRM_COMP_PARAMS_RD_FIFO_DEPTH 0x000F8000
33#define SWRM_COMP_PARAMS_AUTO_ENUM_SLAVES 0x00F00000
34#define SWRM_COMP_PARAMS_DATA_LANES 0x07000000
35
Ramprasad Katkame38aed42018-03-07 16:26:49 +053036#define SWRM_COMP_MASTER_ID (SWRM_BASE_ADDRESS+0x104)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053037
38#define SWRM_INTERRUPT_STATUS (SWRM_BASE_ADDRESS+0x00000200)
39#define SWRM_INTERRUPT_STATUS_RMSK 0x1FFFD
40
41#define SWRM_INTERRUPT_STATUS_SLAVE_PEND_IRQ 0x1
42#define SWRM_INTERRUPT_STATUS_NEW_SLAVE_ATTACHED 0x2
43#define SWRM_INTERRUPT_STATUS_CHANGE_ENUM_SLAVE_STATUS 0x4
44#define SWRM_INTERRUPT_STATUS_MASTER_CLASH_DET 0x8
45#define SWRM_INTERRUPT_STATUS_RD_FIFO_OVERFLOW 0x10
46#define SWRM_INTERRUPT_STATUS_RD_FIFO_UNDERFLOW 0x20
47#define SWRM_INTERRUPT_STATUS_WR_CMD_FIFO_OVERFLOW 0x40
48#define SWRM_INTERRUPT_STATUS_CMD_ERROR 0x80
49#define SWRM_INTERRUPT_STATUS_DOUT_PORT_COLLISION 0x100
50#define SWRM_INTERRUPT_STATUS_READ_EN_RD_VALID_MISMATCH 0x200
51#define SWRM_INTERRUPT_STATUS_SPECIAL_CMD_ID_FINISHED 0x400
52#define SWRM_INTERRUPT_STATUS_NEW_SLAVE_AUTO_ENUM_FINISHED 0x800
53#define SWRM_INTERRUPT_STATUS_AUTO_ENUM_FAILED 0x1000
54#define SWRM_INTERRUPT_STATUS_AUTO_ENUM_TABLE_IS_FULL 0x2000
55#define SWRM_INTERRUPT_STATUS_BUS_RESET_FINISHED 0x4000
56#define SWRM_INTERRUPT_STATUS_CLK_STOP_FINISHED 0x8000
57#define SWRM_INTERRUPT_STATUS_ERROR_PORT_TEST 0x10000
58
59#define SWRM_INTERRUPT_MASK_ADDR (SWRM_BASE_ADDRESS+0x00000204)
60#define SWRM_INTERRUPT_MASK_RMSK 0x1FFFF
61
62#define SWRM_INTERRUPT_MASK_SLAVE_PEND_IRQ_BMSK 0x1
63#define SWRM_INTERRUPT_MASK_SLAVE_PEND_IRQ_SHFT 0x0
64
65#define SWRM_INTERRUPT_MASK_NEW_SLAVE_ATTACHED_BMSK 0x2
66#define SWRM_INTERRUPT_MASK_NEW_SLAVE_ATTACHED_SHFT 0x1
67
68#define SWRM_INTERRUPT_MASK_CHANGE_ENUM_SLAVE_STATUS_BMSK 0x4
69#define SWRM_INTERRUPT_MASK_CHANGE_ENUM_SLAVE_STATUS_SHFT 0x2
70
71#define SWRM_INTERRUPT_MASK_MASTER_CLASH_DET_BMSK 0x8
72#define SWRM_INTERRUPT_MASK_MASTER_CLASH_DET_SHFT 0x3
73
74#define SWRM_INTERRUPT_MASK_RD_FIFO_OVERFLOW_BMSK 0x10
75#define SWRM_INTERRUPT_MASK_RD_FIFO_OVERFLOW_SHFT 0x4
76
77#define SWRM_INTERRUPT_MASK_RD_FIFO_UNDERFLOW_BMSK 0x20
78#define SWRM_INTERRUPT_MASK_RD_FIFO_UNDERFLOW_SHFT 0x5
79
80#define SWRM_INTERRUPT_MASK_WR_CMD_FIFO_OVERFLOW_BMSK 0x40
81#define SWRM_INTERRUPT_MASK_WR_CMD_FIFO_OVERFLOW_SHFT 0x6
82
83#define SWRM_INTERRUPT_MASK_CMD_ERROR_BMSK 0x80
84#define SWRM_INTERRUPT_MASK_CMD_ERROR_SHFT 0x7
85
86#define SWRM_INTERRUPT_MASK_DOUT_PORT_COLLISION_BMSK 0x100
87#define SWRM_INTERRUPT_MASK_DOUT_PORT_COLLISION_SHFT 0x8
88
89#define SWRM_INTERRUPT_MASK_READ_EN_RD_VALID_MISMATCH_BMSK 0x200
90#define SWRM_INTERRUPT_MASK_READ_EN_RD_VALID_MISMATCH_SHFT 0x9
91
92#define SWRM_INTERRUPT_MASK_SPECIAL_CMD_ID_FINISHED_BMSK 0x400
93#define SWRM_INTERRUPT_MASK_SPECIAL_CMD_ID_FINISHED_SHFT 0xA
94
95#define SWRM_INTERRUPT_MASK_NEW_SLAVE_AUTO_ENUM_FINISHED_BMSK 0x800
96#define SWRM_INTERRUPT_MASK_NEW_SLAVE_AUTO_ENUM_FINISHED_SHFT 0xB
97
98#define SWRM_INTERRUPT_MASK_AUTO_ENUM_FAILED_BMSK 0x1000
99#define SWRM_INTERRUPT_MASK_AUTO_ENUM_FAILED_SHFT 0xC
100
101#define SWRM_INTERRUPT_MASK_AUTO_ENUM_TABLE_IS_FULL_BMSK 0x2000
102#define SWRM_INTERRUPT_MASK_AUTO_ENUM_TABLE_IS_FULL_SHFT 0xD
103
104#define SWRM_INTERRUPT_MASK_BUS_RESET_FINISHED_BMSK 0x4000
105#define SWRM_INTERRUPT_MASK_BUS_RESET_FINISHED_SHFT 0xE
106
107#define SWRM_INTERRUPT_MASK_CLK_STOP_FINISHED_BMSK 0x8000
108#define SWRM_INTERRUPT_MASK_CLK_STOP_FINISHED_SHFT 0xF
109
110#define SWRM_INTERRUPT_MASK_ERROR_PORT_TEST_BMSK 0x10000
111#define SWRM_INTERRUPT_MASK_ERROR_PORT_TEST_SHFT 0x10
112
113#define SWRM_INTERRUPT_MAX 0x11
114
115#define SWRM_INTERRUPT_CLEAR (SWRM_BASE_ADDRESS+0x00000208)
116
117#define SWRM_CMD_FIFO_WR_CMD (SWRM_BASE_ADDRESS + 0x00000300)
118#define SWRM_CMD_FIFO_WR_CMD_MASK 0xFFFFFFFF
119#define SWRM_CMD_FIFO_RD_CMD (SWRM_BASE_ADDRESS + 0x00000304)
120#define SWRM_CMD_FIFO_RD_CMD_MASK 0xFFFFFFF
121#define SWRM_CMD_FIFO_CMD (SWRM_BASE_ADDRESS + 0x00000308)
122#define SWRM_CMD_FIFO_STATUS (SWRM_BASE_ADDRESS + 0x0000030C)
123
124#define SWRM_CMD_FIFO_STATUS_WR_CMD_FIFO_CNT_MASK 0x1F00
125#define SWRM_CMD_FIFO_STATUS_RD_CMD_FIFO_CNT_MASK 0x7C00000
126
127#define SWRM_CMD_FIFO_CFG_ADDR (SWRM_BASE_ADDRESS+0x00000314)
128#define SWRM_CMD_FIFO_CFG_NUM_OF_CMD_RETRY_BMSK 0x7
129#define SWRM_CMD_FIFO_CFG_NUM_OF_CMD_RETRY_SHFT 0x0
130
131#define SWRM_CMD_FIFO_RD_FIFO_ADDR (SWRM_BASE_ADDRESS + 0x00000318)
132
133#define SWRM_ENUMERATOR_CFG_ADDR (SWRM_BASE_ADDRESS+0x00000500)
134#define SWRM_ENUMERATOR_CFG_AUTO_ENUM_EN_BMSK 0x1
135#define SWRM_ENUMERATOR_CFG_AUTO_ENUM_EN_SHFT 0x0
136
137#define SWRM_ENUMERATOR_SLAVE_DEV_ID_1(m) (SWRM_BASE_ADDRESS+0x530+0x8*m)
138#define SWRM_ENUMERATOR_SLAVE_DEV_ID_2(m) (SWRM_BASE_ADDRESS+0x534+0x8*m)
139
140#define SWRM_MCP_FRAME_CTRL_BANK_ADDR(m) (SWRM_BASE_ADDRESS+0x101C+0x40*m)
141#define SWRM_MCP_FRAME_CTRL_BANK_RMSK 0x00ff07ff
142#define SWRM_MCP_FRAME_CTRL_BANK_SHFT 0
143#define SWRM_MCP_FRAME_CTRL_BANK_SSP_PERIOD_BMSK 0xff0000
144#define SWRM_MCP_FRAME_CTRL_BANK_SSP_PERIOD_SHFT 16
145#define SWRM_MCP_FRAME_CTRL_BANK_PHASE_BMSK 0xf800
146#define SWRM_MCP_FRAME_CTRL_BANK_PHASE_SHFT 11
147#define SWRM_MCP_FRAME_CTRL_BANK_CLK_DIV_VALUE_BMSK 0x700
148#define SWRM_MCP_FRAME_CTRL_BANK_CLK_DIV_VALUE_SHFT 8
149#define SWRM_MCP_FRAME_CTRL_BANK_ROW_CTRL_BMSK 0xF8
150#define SWRM_MCP_FRAME_CTRL_BANK_ROW_CTRL_SHFT 3
151#define SWRM_MCP_FRAME_CTRL_BANK_COL_CTRL_BMSK 0x7
152#define SWRM_MCP_FRAME_CTRL_BANK_COL_CTRL_SHFT 0
153
154#define SWRM_MCP_BUS_CTRL_ADDR (SWRM_BASE_ADDRESS+0x00001044)
155#define SWRM_MCP_BUS_CTRL_BUS_RESET_BMSK 0x1
156#define SWRM_MCP_BUS_CTRL_BUS_RESET_SHFT 0x0
157#define SWRM_MCP_BUS_CTRL_CLK_START_BMSK 0x2
158#define SWRM_MCP_BUS_CTRL_CLK_START_SHFT 0x1
159
160#define SWRM_MCP_CFG_ADDR (SWRM_BASE_ADDRESS+0x00001048)
161#define SWRM_MCP_CFG_MAX_NUM_OF_CMD_NO_PINGS_BMSK 0x3E0000
162#define SWRM_MCP_CFG_MAX_NUM_OF_CMD_NO_PINGS_SHFT 0x11
163#define SWRM_MCP_CFG_BUS_CLK_PAUSE_BMSK 0x02
164
165#define SWRM_MCP_STATUS (SWRM_BASE_ADDRESS+0x104C)
166#define SWRM_MCP_STATUS_BANK_NUM_MASK 0x01
167
168#define SWRM_MCP_SLV_STATUS (SWRM_BASE_ADDRESS+0x1090)
169#define SWRM_MCP_SLV_STATUS_MASK 0x03
170
171#define SWRM_DP_PORT_CTRL_BANK(n, m) (SWRM_BASE_ADDRESS + \
172 0x00001124 + \
173 0x100*(n-1) + \
174 0x40*m)
175#define SWRM_DP_PORT_CTRL_BANK_MASK 0xFFFFFFFF
176#define SWRM_DP_PORT_CTRL_EN_CHAN_MASK 0xFF000000
177#define SWRM_DP_PORT_CTRL_EN_CHAN_SHFT 0x18
178#define SWRM_DP_PORT_CTRL_OFFSET2_SHFT 0x10
179#define SWRM_DP_PORT_CTRL_OFFSET1_SHFT 0x08
180#define SWRM_DP_PORT_CTRL_SAMPLE_INTERVAL 0x00
181
Ramprasad Katkame38aed42018-03-07 16:26:49 +0530182#define SWRM_DIN_DPn_PCM_PORT_CTRL(n) (SWRM_BASE_ADDRESS + \
183 0x00001054 + 0x100*n)
184
185#define SWRM_MAX_REGISTER SWRM_DIN_DPn_PCM_PORT_CTRL(7)
186
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530187/* Soundwire Slave Register definition */
188
189#define SWRS_BASE_ADDRESS 0x00
190
191#define SWRS_DP_REG_OFFSET(port, bank) ((0x100*port)+(0x10*bank))
192
193#define SWRS_DP_CHANNEL_ENABLE_BANK(n, m) (SWRS_BASE_ADDRESS + 0x120 + \
194 SWRS_DP_REG_OFFSET(n, m))
195#define SWRS_DP_SAMPLE_CONTROL_1_BANK(n, m) (SWRS_BASE_ADDRESS + 0x122 + \
196 SWRS_DP_REG_OFFSET(n, m))
197#define SWRS_DP_OFFSET_CONTROL_1_BANK(n, m) (SWRS_BASE_ADDRESS + 0x124 + \
198 SWRS_DP_REG_OFFSET(n, m))
199#define SWRS_DP_OFFSET_CONTROL_2_BANK(n, m) (SWRS_BASE_ADDRESS + 0x125 + \
200 SWRS_DP_REG_OFFSET(n, m))
201#define SWRS_DP_HCONTROL_BANK(n, m) (SWRS_BASE_ADDRESS + 0x126 + \
202 SWRS_DP_REG_OFFSET(n, m))
203#define SWRS_DP_BLOCK_CONTROL_3_BANK(n, m) (SWRS_BASE_ADDRESS + 0x127 + \
204 SWRS_DP_REG_OFFSET(n, m))
205#define SWRS_SCP_FRAME_CTRL_BANK(m) (SWRS_BASE_ADDRESS + 0x60 + \
206 0x10*m)
207#define SWRS_SCP_HOST_CLK_DIV2_CTL_BANK(m) (SWRS_BASE_ADDRESS + 0xE0 + \
208 0x10*m)
209
210#endif /* _SWRM_REGISTERS_H */