2 * This file is provided under a dual BSD/GPLv2 license. When using or
3 * redistributing this file, you may do so under either license.
7 * Copyright(c) 2008 - 2011 Intel Corporation. All rights reserved.
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of version 2 of the GNU General Public License as
11 * published by the Free Software Foundation.
13 * This program is distributed in the hope that it will be useful, but
14 * WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * General Public License for more details.
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
21 * The full GNU General Public License is included in this distribution
22 * in the file called LICENSE.GPL.
26 * Copyright(c) 2008 - 2011 Intel Corporation. All rights reserved.
27 * All rights reserved.
29 * Redistribution and use in source and binary forms, with or without
30 * modification, are permitted provided that the following conditions
33 * * Redistributions of source code must retain the above copyright
34 * notice, this list of conditions and the following disclaimer.
35 * * Redistributions in binary form must reproduce the above copyright
36 * notice, this list of conditions and the following disclaimer in
37 * the documentation and/or other materials provided with the
39 * * Neither the name of Intel Corporation nor the names of its
40 * contributors may be used to endorse or promote products derived
41 * from this software without specific prior written permission.
43 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
44 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
45 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
46 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
47 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
48 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
49 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
50 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
51 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
52 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
53 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
56 #ifndef _SCIC_SDS_CONTROLLER_REGISTERS_H_
57 #define _SCIC_SDS_CONTROLLER_REGISTERS_H_
60 * This file contains macros used to perform the register reads/writes to the
66 #include "scu_registers.h"
67 #include "scic_sds_controller.h"
70 * scic_sds_controller_smu_register_read() -
72 * SMU_REGISTER_ACCESS_MACROS
74 #define scic_sds_controller_smu_register_read(controller, reg) \
77 (controller)->smu_registers->reg \
80 #define scic_sds_controller_smu_register_write(controller, reg, value) \
83 (controller)->smu_registers->reg, \
88 * scu_afe_register_write() -
90 * AFE_REGISTER_ACCESS_MACROS
92 #define scu_afe_register_write(controller, reg, value) \
95 (controller)->scu_registers->afe.reg, \
99 #define scu_afe_txreg_write(controller, phy, reg, value) \
102 (controller)->scu_registers->afe.scu_afe_xcvr[phy].reg,\
106 #define scu_afe_register_read(controller, reg) \
109 (controller)->scu_registers->afe.reg \
113 * scu_controller_viit_register_write() -
115 * VIIT_REGISTER_ACCESS_MACROS
117 #define scu_controller_viit_register_write(controller, index, reg, value) \
120 (controller)->scu_registers->peg0.viit[index].reg, \
125 * *****************************************************************************
127 * ***************************************************************************** */
132 * struct smu_registers
134 #define SMU_PCP_WRITE(controller, value) \
135 scic_sds_controller_smu_register_write(\
136 controller, post_context_port, value \
139 #define SMU_TCR_READ(controller, value) \
140 scic_sds_controller_smu_register_read(\
141 controller, task_context_range \
144 #define SMU_TCR_WRITE(controller, value) \
145 scic_sds_controller_smu_register_write(\
146 controller, task_context_range, value \
149 #define SMU_HTTBAR_WRITE(controller, address) \
151 scic_sds_controller_smu_register_write(\
153 host_task_table_lower, \
154 lower_32_bits(address) \
156 scic_sds_controller_smu_register_write(\
158 host_task_table_upper, \
159 upper_32_bits(address) \
163 #define SMU_CQBAR_WRITE(controller, address) \
165 scic_sds_controller_smu_register_write(\
167 completion_queue_lower, \
168 lower_32_bits(address) \
170 scic_sds_controller_smu_register_write(\
172 completion_queue_upper, \
173 upper_32_bits(address) \
177 #define SMU_CQGR_WRITE(controller, value) \
178 scic_sds_controller_smu_register_write(\
179 controller, completion_queue_get, value \
182 #define SMU_CQGR_READ(controller, value) \
183 scic_sds_controller_smu_register_read(\
184 controller, completion_queue_get \
187 #define SMU_CQPR_WRITE(controller, value) \
188 scic_sds_controller_smu_register_write(\
189 controller, completion_queue_put, value \
192 #define SMU_RNCBAR_WRITE(controller, address) \
194 scic_sds_controller_smu_register_write(\
196 remote_node_context_lower, \
197 lower_32_bits(address) \
199 scic_sds_controller_smu_register_write(\
201 remote_node_context_upper, \
202 upper_32_bits(address) \
206 #define SMU_AMR_READ(controller) \
207 scic_sds_controller_smu_register_read(\
208 controller, address_modifier \
211 #define SMU_IMR_READ(controller) \
212 scic_sds_controller_smu_register_read(\
213 controller, interrupt_mask \
216 #define SMU_IMR_WRITE(controller, mask) \
217 scic_sds_controller_smu_register_write(\
218 controller, interrupt_mask, mask \
221 #define SMU_ISR_READ(controller) \
222 scic_sds_controller_smu_register_read(\
223 controller, interrupt_status \
226 #define SMU_ISR_WRITE(controller, status) \
227 scic_sds_controller_smu_register_write(\
228 controller, interrupt_status, status \
231 #define SMU_ICC_READ(controller) \
232 scic_sds_controller_smu_register_read(\
233 controller, interrupt_coalesce_control \
236 #define SMU_ICC_WRITE(controller, value) \
237 scic_sds_controller_smu_register_write(\
238 controller, interrupt_coalesce_control, value \
241 #define SMU_CQC_WRITE(controller, value) \
242 scic_sds_controller_smu_register_write(\
243 controller, completion_queue_control, value \
246 #define SMU_SMUSRCR_WRITE(controller, value) \
247 scic_sds_controller_smu_register_write(\
248 controller, soft_reset_control, value \
251 #define SMU_TCA_WRITE(controller, index, value) \
252 scic_sds_controller_smu_register_write(\
253 controller, task_context_assignment[index], value \
256 #define SMU_TCA_READ(controller, index) \
257 scic_sds_controller_smu_register_read(\
258 controller, task_context_assignment[index] \
261 #define SMU_DCC_READ(controller) \
262 scic_sds_controller_smu_register_read(\
263 controller, device_context_capacity \
266 #define SMU_DFC_READ(controller) \
267 scic_sds_controller_smu_register_read(\
268 controller, device_function_capacity \
271 #define SMU_SMUCSR_READ(controller) \
272 scic_sds_controller_smu_register_read(\
273 controller, control_status \
276 #define SMU_CQPR_READ(controller) \
277 scic_sds_controller_smu_register_read(\
278 controller, completion_queue_put \
283 * scic_sds_controller_scu_register_read() -
285 * SCU_REGISTER_ACCESS_MACROS
287 #define scic_sds_controller_scu_register_read(controller, reg) \
290 (controller)->scu_registers->reg \
293 #define scic_sds_controller_scu_register_write(controller, reg, value) \
296 (controller)->scu_registers->reg, \
302 * ****************************************************************************
303 * * SCU SDMA REGISTERS
304 * **************************************************************************** */
307 * scu_sdma_register_read() -
309 * SCU_SDMA_REGISTER_ACCESS_MACROS
311 #define scu_sdma_register_read(controller, reg) \
314 (controller)->scu_registers->sdma.reg \
317 #define scu_sdma_register_write(controller, reg, value) \
320 (controller)->scu_registers->sdma.reg, \
325 * SCU_PUFATHAR_WRITE() -
327 * struct scu_sdma_registers
329 #define SCU_PUFATHAR_WRITE(controller, address) \
331 scu_sdma_register_write(\
333 uf_address_table_lower, \
334 lower_32_bits(address) \
336 scu_sdma_register_write(\
338 uf_address_table_upper, \
339 upper_32_bits(address) \
343 #define SCU_UFHBAR_WRITE(controller, address) \
345 scu_sdma_register_write(\
347 uf_header_base_address_lower, \
348 lower_32_bits(address) \
350 scu_sdma_register_write(\
352 uf_header_base_address_upper, \
353 upper_32_bits(address) \
357 #define SCU_UFQC_READ(controller) \
358 scu_sdma_register_read(\
360 unsolicited_frame_queue_control \
363 #define SCU_UFQC_WRITE(controller, value) \
364 scu_sdma_register_write(\
366 unsolicited_frame_queue_control, \
370 #define SCU_UFQPP_READ(controller) \
371 scu_sdma_register_read(\
373 unsolicited_frame_put_pointer \
376 #define SCU_UFQPP_WRITE(controller, value) \
377 scu_sdma_register_write(\
379 unsolicited_frame_put_pointer, \
383 #define SCU_UFQGP_WRITE(controller, value) \
384 scu_sdma_register_write(\
386 unsolicited_frame_get_pointer, \
390 #define SCU_PDMACR_READ(controller) \
391 scu_sdma_register_read(\
396 #define SCU_PDMACR_WRITE(controller, value) \
397 scu_sdma_register_write(\
399 pdma_configuration, \
403 #define SCU_CDMACR_READ(controller) \
404 scu_sdma_register_read(\
409 #define SCU_CDMACR_WRITE(controller, value) \
410 scu_sdma_register_write(\
412 cdma_configuration, \
417 * *****************************************************************************
418 * * SCU Port Task Scheduler Group Registers
419 * ***************************************************************************** */
422 * scu_ptsg_register_read() -
424 * SCU_PTSG_REGISTER_ACCESS_MACROS
426 #define scu_ptsg_register_read(controller, reg) \
429 (controller)->scu_registers->peg0.ptsg.reg \
432 #define scu_ptsg_register_write(controller, reg, value) \
435 (controller)->scu_registers->peg0.ptsg.reg, \
440 * SCU_PTSGCR_READ() -
444 #define SCU_PTSGCR_READ(controller) \
445 scu_ptsg_register_read(\
450 #define SCU_PTSGCR_WRITE(controller, value) \
451 scu_ptsg_register_write(\
457 #define SCU_PTSGRTC_READ(controller) \
458 scu_ptsg_register_read(\
463 #endif /* _SCIC_SDS_CONTROLLER_REGISTERS_H_ */