149b49cdaSZbigniew Bodek /*-
249b49cdaSZbigniew Bodek *******************************************************************************
349b49cdaSZbigniew Bodek Copyright (C) 2015 Annapurna Labs Ltd.
449b49cdaSZbigniew Bodek
549b49cdaSZbigniew Bodek This file may be licensed under the terms of the Annapurna Labs Commercial
649b49cdaSZbigniew Bodek License Agreement.
749b49cdaSZbigniew Bodek
849b49cdaSZbigniew Bodek Alternatively, this file can be distributed under the terms of the GNU General
949b49cdaSZbigniew Bodek Public License V2 as published by the Free Software Foundation and can be
1049b49cdaSZbigniew Bodek found at http://www.gnu.org/licenses/gpl-2.0.html
1149b49cdaSZbigniew Bodek
1249b49cdaSZbigniew Bodek Alternatively, redistribution and use in source and binary forms, with or
1349b49cdaSZbigniew Bodek without modification, are permitted provided that the following conditions are
1449b49cdaSZbigniew Bodek met:
1549b49cdaSZbigniew Bodek
1649b49cdaSZbigniew Bodek * Redistributions of source code must retain the above copyright notice,
1749b49cdaSZbigniew Bodek this list of conditions and the following disclaimer.
1849b49cdaSZbigniew Bodek
1949b49cdaSZbigniew Bodek * Redistributions in binary form must reproduce the above copyright
2049b49cdaSZbigniew Bodek notice, this list of conditions and the following disclaimer in
2149b49cdaSZbigniew Bodek the documentation and/or other materials provided with the
2249b49cdaSZbigniew Bodek distribution.
2349b49cdaSZbigniew Bodek
2449b49cdaSZbigniew Bodek THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
2549b49cdaSZbigniew Bodek ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
2649b49cdaSZbigniew Bodek WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
2749b49cdaSZbigniew Bodek DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
2849b49cdaSZbigniew Bodek ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
2949b49cdaSZbigniew Bodek (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
3049b49cdaSZbigniew Bodek LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
3149b49cdaSZbigniew Bodek ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
3249b49cdaSZbigniew Bodek (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
3349b49cdaSZbigniew Bodek SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3449b49cdaSZbigniew Bodek
3549b49cdaSZbigniew Bodek *******************************************************************************/
3649b49cdaSZbigniew Bodek
3749b49cdaSZbigniew Bodek /**
3849b49cdaSZbigniew Bodek * @file al_hal_udma_debug.c
3949b49cdaSZbigniew Bodek *
4049b49cdaSZbigniew Bodek * @brief Universal DMA HAL driver for debug
4149b49cdaSZbigniew Bodek *
4249b49cdaSZbigniew Bodek */
4349b49cdaSZbigniew Bodek
4449b49cdaSZbigniew Bodek #define DEBUG
4549b49cdaSZbigniew Bodek
4649b49cdaSZbigniew Bodek #include <al_hal_common.h>
4749b49cdaSZbigniew Bodek #include <al_hal_udma_regs.h>
4849b49cdaSZbigniew Bodek #include <al_hal_udma_debug.h>
4949b49cdaSZbigniew Bodek
al_udma_regs_m2s_axi_print(struct al_udma * udma)5049b49cdaSZbigniew Bodek static void al_udma_regs_m2s_axi_print(struct al_udma *udma)
5149b49cdaSZbigniew Bodek {
5249b49cdaSZbigniew Bodek al_dbg("M2S AXI regs:\n");
5349b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, axi_m2s, comp_wr_cfg_1);
5449b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, axi_m2s, comp_wr_cfg_2);
5549b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, axi_m2s, data_rd_cfg_1);
5649b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, axi_m2s, data_rd_cfg_2);
5749b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, axi_m2s, desc_rd_cfg_1);
5849b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, axi_m2s, desc_rd_cfg_2);
5949b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, axi_m2s, data_rd_cfg);
6049b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, axi_m2s, desc_rd_cfg_3);
6149b49cdaSZbigniew Bodek
6249b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, axi_m2s, desc_wr_cfg_1);
6349b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG_FIELD(udma, " ", "\n", "%d", m2s, axi_m2s,
6449b49cdaSZbigniew Bodek desc_wr_cfg_1,
6549b49cdaSZbigniew Bodek max_axi_beats,
6649b49cdaSZbigniew Bodek UDMA_AXI_M2S_DESC_WR_CFG_1_MAX_AXI_BEATS);
6749b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG_FIELD(udma, " ", "\n", "%d", m2s, axi_m2s,
6849b49cdaSZbigniew Bodek desc_wr_cfg_1,
6949b49cdaSZbigniew Bodek min_axi_beats,
7049b49cdaSZbigniew Bodek UDMA_AXI_M2S_DESC_WR_CFG_1_MIN_AXI_BEATS);
7149b49cdaSZbigniew Bodek
7249b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, axi_m2s, ostand_cfg);
7349b49cdaSZbigniew Bodek }
7449b49cdaSZbigniew Bodek
al_udma_regs_m2s_general_print(struct al_udma * udma)7549b49cdaSZbigniew Bodek static void al_udma_regs_m2s_general_print(struct al_udma *udma)
7649b49cdaSZbigniew Bodek {
7749b49cdaSZbigniew Bodek al_dbg("M2S general regs:\n");
7849b49cdaSZbigniew Bodek
7949b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s, state);
8049b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG_FIELD(udma, " ", "\n", "%d", m2s, m2s, state,
8149b49cdaSZbigniew Bodek comp_ctrl,
8249b49cdaSZbigniew Bodek UDMA_M2S_STATE_COMP_CTRL);
8349b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG_FIELD(udma, " ", "\n", "%d", m2s, m2s, state,
8449b49cdaSZbigniew Bodek stream_if,
8549b49cdaSZbigniew Bodek UDMA_M2S_STATE_STREAM_IF);
8649b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG_FIELD(udma, " ", "\n", "%d", m2s, m2s, state,
8749b49cdaSZbigniew Bodek rd_ctrl,
8849b49cdaSZbigniew Bodek UDMA_M2S_STATE_DATA_RD_CTRL);
8949b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG_FIELD(udma, " ", "\n", "%d", m2s, m2s, state,
9049b49cdaSZbigniew Bodek desc_pref,
9149b49cdaSZbigniew Bodek UDMA_M2S_STATE_DESC_PREF);
9249b49cdaSZbigniew Bodek
9349b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s, err_log_mask);
9449b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s, log_0);
9549b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s, log_1);
9649b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s, log_2);
9749b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s, log_3);
9849b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s, data_fifo_status);
9949b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s, header_fifo_status);
10049b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s, unack_fifo_status);
10149b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s, check_en);
10249b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s, fifo_en);
10349b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s, cfg_len);
10449b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s, stream_cfg);
10549b49cdaSZbigniew Bodek }
10649b49cdaSZbigniew Bodek
al_udma_regs_m2s_rd_print(struct al_udma * udma)10749b49cdaSZbigniew Bodek static void al_udma_regs_m2s_rd_print(struct al_udma *udma)
10849b49cdaSZbigniew Bodek {
10949b49cdaSZbigniew Bodek al_dbg("M2S read regs:\n");
11049b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s_rd, desc_pref_cfg_1);
11149b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s_rd, desc_pref_cfg_2);
11249b49cdaSZbigniew Bodek
11349b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s_rd, desc_pref_cfg_3);
11449b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG_FIELD(udma, " ", "\n", "%d", m2s, m2s_rd,
11549b49cdaSZbigniew Bodek desc_pref_cfg_3,
11649b49cdaSZbigniew Bodek min_burst_below_thr,
11749b49cdaSZbigniew Bodek UDMA_M2S_RD_DESC_PREF_CFG_3_MIN_BURST_BELOW_THR);
11849b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG_FIELD(udma, " ", "\n", "%d", m2s, m2s_rd,
11949b49cdaSZbigniew Bodek desc_pref_cfg_3,
12049b49cdaSZbigniew Bodek min_burst_above_thr,
12149b49cdaSZbigniew Bodek UDMA_M2S_RD_DESC_PREF_CFG_3_MIN_BURST_ABOVE_THR);
12249b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG_FIELD(udma, " ", "\n", "%d", m2s, m2s_rd,
12349b49cdaSZbigniew Bodek desc_pref_cfg_3,
12449b49cdaSZbigniew Bodek pref_thr,
12549b49cdaSZbigniew Bodek UDMA_M2S_RD_DESC_PREF_CFG_3_PREF_THR);
12649b49cdaSZbigniew Bodek
12749b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s_rd, data_cfg);
12849b49cdaSZbigniew Bodek }
12949b49cdaSZbigniew Bodek
al_udma_regs_m2s_dwrr_print(struct al_udma * udma)13049b49cdaSZbigniew Bodek static void al_udma_regs_m2s_dwrr_print(struct al_udma *udma)
13149b49cdaSZbigniew Bodek {
13249b49cdaSZbigniew Bodek al_dbg("M2S DWRR regs:\n");
13349b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s_dwrr, cfg_sched);
13449b49cdaSZbigniew Bodek }
13549b49cdaSZbigniew Bodek
al_udma_regs_m2s_rate_limiter_print(struct al_udma * udma)13649b49cdaSZbigniew Bodek static void al_udma_regs_m2s_rate_limiter_print(struct al_udma *udma)
13749b49cdaSZbigniew Bodek {
13849b49cdaSZbigniew Bodek al_dbg("M2S rate limiter regs:\n");
13949b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s_rate_limiter, gen_cfg);
14049b49cdaSZbigniew Bodek }
14149b49cdaSZbigniew Bodek
al_udma_regs_m2s_stream_rate_limiter_print(struct al_udma * udma)14249b49cdaSZbigniew Bodek static void al_udma_regs_m2s_stream_rate_limiter_print(struct al_udma *udma)
14349b49cdaSZbigniew Bodek {
14449b49cdaSZbigniew Bodek al_dbg("M2S stream rate limiter regs:\n");
14549b49cdaSZbigniew Bodek
14649b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s_stream_rate_limiter,
14749b49cdaSZbigniew Bodek rlimit.cfg_1s);
14849b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s_stream_rate_limiter,
14949b49cdaSZbigniew Bodek rlimit.cfg_cycle);
15049b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s_stream_rate_limiter,
15149b49cdaSZbigniew Bodek rlimit.cfg_token_size_1);
15249b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s_stream_rate_limiter,
15349b49cdaSZbigniew Bodek rlimit.cfg_token_size_2);
15449b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s_stream_rate_limiter,
15549b49cdaSZbigniew Bodek rlimit.mask);
15649b49cdaSZbigniew Bodek }
15749b49cdaSZbigniew Bodek
al_udma_regs_m2s_comp_print(struct al_udma * udma)15849b49cdaSZbigniew Bodek static void al_udma_regs_m2s_comp_print(struct al_udma *udma)
15949b49cdaSZbigniew Bodek {
16049b49cdaSZbigniew Bodek al_dbg("M2S completion regs:\n");
16149b49cdaSZbigniew Bodek
16249b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s_comp, cfg_1c);
16349b49cdaSZbigniew Bodek
16449b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG_FIELD(udma, " ", "\n", "%d", m2s, m2s_comp, cfg_1c,
16549b49cdaSZbigniew Bodek comp_fifo_depth,
16649b49cdaSZbigniew Bodek UDMA_M2S_COMP_CFG_1C_COMP_FIFO_DEPTH);
16749b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG_FIELD(udma, " ", "\n", "%d", m2s, m2s_comp, cfg_1c,
16849b49cdaSZbigniew Bodek unack_fifo_depth,
16949b49cdaSZbigniew Bodek UDMA_M2S_COMP_CFG_1C_UNACK_FIFO_DEPTH);
17049b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG_BIT(udma, " ", "\n", m2s, m2s_comp, cfg_1c,
17149b49cdaSZbigniew Bodek q_promotion,
17249b49cdaSZbigniew Bodek UDMA_M2S_COMP_CFG_1C_Q_PROMOTION);
17349b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG_BIT(udma, " ", "\n", m2s, m2s_comp, cfg_1c,
17449b49cdaSZbigniew Bodek force_rr,
17549b49cdaSZbigniew Bodek UDMA_M2S_COMP_CFG_1C_FORCE_RR);
17649b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG_FIELD(udma, " ", "\n", "%d", m2s, m2s_comp, cfg_1c,
17749b49cdaSZbigniew Bodek q_free_min,
17849b49cdaSZbigniew Bodek UDMA_M2S_COMP_CFG_1C_Q_FREE_MIN);
17949b49cdaSZbigniew Bodek
18049b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s_comp, cfg_coal);
18149b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s_comp, cfg_application_ack);
18249b49cdaSZbigniew Bodek }
18349b49cdaSZbigniew Bodek
al_udma_regs_m2s_stat_print(struct al_udma * udma)18449b49cdaSZbigniew Bodek static void al_udma_regs_m2s_stat_print(struct al_udma *udma)
18549b49cdaSZbigniew Bodek {
18649b49cdaSZbigniew Bodek al_dbg("M2S statistics regs:\n");
18749b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s_stat, cfg_st);
18849b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s_stat, tx_pkt);
18949b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s_stat, tx_bytes_low);
19049b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s_stat, tx_bytes_high);
19149b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s_stat, prefed_desc);
19249b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s_stat, comp_pkt);
19349b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s_stat, comp_desc);
19449b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s_stat, ack_pkts);
19549b49cdaSZbigniew Bodek }
19649b49cdaSZbigniew Bodek
al_udma_regs_m2s_feature_print(struct al_udma * udma)19749b49cdaSZbigniew Bodek static void al_udma_regs_m2s_feature_print(struct al_udma *udma)
19849b49cdaSZbigniew Bodek {
19949b49cdaSZbigniew Bodek al_dbg("M2S feature regs:\n");
20049b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s_feature, reg_1);
20149b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s_feature, reg_3);
20249b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s_feature, reg_4);
20349b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s_feature, reg_5);
20449b49cdaSZbigniew Bodek }
20549b49cdaSZbigniew Bodek
al_udma_regs_m2s_q_print(struct al_udma * udma,uint32_t qid)20649b49cdaSZbigniew Bodek static void al_udma_regs_m2s_q_print(struct al_udma *udma, uint32_t qid)
20749b49cdaSZbigniew Bodek {
20849b49cdaSZbigniew Bodek al_dbg("M2S Q[%d] status regs:\n", qid);
20949b49cdaSZbigniew Bodek al_reg_write32(&udma->udma_regs->m2s.m2s.indirect_ctrl, qid);
21049b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s, sel_pref_fifo_status);
21149b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s, sel_comp_fifo_status);
21249b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s, sel_rate_limit_status);
21349b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s, sel_dwrr_status);
21449b49cdaSZbigniew Bodek
21549b49cdaSZbigniew Bodek al_dbg("M2S Q[%d] regs:\n", qid);
21649b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s_q[qid], cfg);
21749b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s_q[qid], status);
21849b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s_q[qid], tdrbp_low);
21949b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s_q[qid], tdrbp_high);
22049b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s_q[qid], tdrl);
22149b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s_q[qid], tdrhp);
22249b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s_q[qid], tdrtp);
22349b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s_q[qid], tdcp);
22449b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s_q[qid], tcrbp_low);
22549b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s_q[qid], tcrbp_high);
22649b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s_q[qid], tcrhp);
22749b49cdaSZbigniew Bodek
22849b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s_q[qid], rlimit.cfg_1s);
22949b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s_q[qid], rlimit.cfg_cycle);
23049b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s_q[qid],
23149b49cdaSZbigniew Bodek rlimit.cfg_token_size_1);
23249b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s_q[qid],
23349b49cdaSZbigniew Bodek rlimit.cfg_token_size_2);
23449b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s_q[qid], rlimit.mask);
23549b49cdaSZbigniew Bodek
23649b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s_q[qid], dwrr_cfg_1);
23749b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s_q[qid], dwrr_cfg_2);
23849b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s_q[qid], dwrr_cfg_3);
23949b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s_q[qid], comp_cfg);
24049b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", m2s, m2s_q[qid], q_tx_pkt);
24149b49cdaSZbigniew Bodek }
24249b49cdaSZbigniew Bodek
al_udma_regs_s2m_axi_print(struct al_udma * udma)24349b49cdaSZbigniew Bodek static void al_udma_regs_s2m_axi_print(struct al_udma *udma)
24449b49cdaSZbigniew Bodek {
24549b49cdaSZbigniew Bodek al_dbg("S2M AXI regs:\n");
24649b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, axi_s2m, data_wr_cfg_1);
24749b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, axi_s2m, data_wr_cfg_2);
24849b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, axi_s2m, desc_rd_cfg_4);
24949b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, axi_s2m, desc_rd_cfg_5);
25049b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, axi_s2m, comp_wr_cfg_1);
25149b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, axi_s2m, comp_wr_cfg_2);
25249b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, axi_s2m, data_wr_cfg);
25349b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, axi_s2m, desc_rd_cfg_3);
25449b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, axi_s2m, desc_wr_cfg_1);
25549b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, axi_s2m, ostand_cfg_rd);
25649b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, axi_s2m, ostand_cfg_wr);
25749b49cdaSZbigniew Bodek }
25849b49cdaSZbigniew Bodek
al_udma_regs_s2m_general_print(struct al_udma * udma)25949b49cdaSZbigniew Bodek static void al_udma_regs_s2m_general_print(struct al_udma *udma)
26049b49cdaSZbigniew Bodek {
26149b49cdaSZbigniew Bodek al_dbg("S2M general regs:\n");
26249b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m, state);
26349b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m, err_log_mask);
26449b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m, log_0);
26549b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m, log_1);
26649b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m, log_2);
26749b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m, log_3);
26849b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m, s_data_fifo_status);
26949b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m, s_header_fifo_status);
27049b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m, axi_data_fifo_status);
27149b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m, unack_fifo_status);
27249b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m, check_en);
27349b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m, fifo_en);
27449b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m, stream_cfg);
27549b49cdaSZbigniew Bodek }
27649b49cdaSZbigniew Bodek
al_udma_regs_s2m_rd_print(struct al_udma * udma)27749b49cdaSZbigniew Bodek static void al_udma_regs_s2m_rd_print(struct al_udma *udma)
27849b49cdaSZbigniew Bodek {
27949b49cdaSZbigniew Bodek al_dbg("S2M read regs:\n");
28049b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m_rd, desc_pref_cfg_1);
28149b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m_rd, desc_pref_cfg_2);
28249b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m_rd, desc_pref_cfg_3);
28349b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m_rd, desc_pref_cfg_4);
28449b49cdaSZbigniew Bodek }
28549b49cdaSZbigniew Bodek
al_udma_regs_s2m_wr_print(struct al_udma * udma)28649b49cdaSZbigniew Bodek static void al_udma_regs_s2m_wr_print(struct al_udma *udma)
28749b49cdaSZbigniew Bodek {
28849b49cdaSZbigniew Bodek al_dbg("S2M write regs:\n");
28949b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m_wr, data_cfg_1);
29049b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m_wr, data_cfg_1);
29149b49cdaSZbigniew Bodek }
29249b49cdaSZbigniew Bodek
al_udma_regs_s2m_comp_print(struct al_udma * udma)29349b49cdaSZbigniew Bodek static void al_udma_regs_s2m_comp_print(struct al_udma *udma)
29449b49cdaSZbigniew Bodek {
29549b49cdaSZbigniew Bodek al_dbg("S2M completion regs:\n");
29649b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m_comp, cfg_1c);
29749b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m_comp, cfg_2c);
29849b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m_comp, cfg_application_ack);
29949b49cdaSZbigniew Bodek }
30049b49cdaSZbigniew Bodek
al_udma_regs_s2m_stat_print(struct al_udma * udma)30149b49cdaSZbigniew Bodek static void al_udma_regs_s2m_stat_print(struct al_udma *udma)
30249b49cdaSZbigniew Bodek {
30349b49cdaSZbigniew Bodek al_dbg("S2M statistics regs:\n");
30449b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m_stat, drop_pkt);
30549b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m_stat, rx_bytes_low);
30649b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m_stat, rx_bytes_high);
30749b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m_stat, prefed_desc);
30849b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m_stat, comp_pkt);
30949b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m_stat, comp_desc);
31049b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m_stat, ack_pkts);
31149b49cdaSZbigniew Bodek }
31249b49cdaSZbigniew Bodek
al_udma_regs_s2m_feature_print(struct al_udma * udma)31349b49cdaSZbigniew Bodek static void al_udma_regs_s2m_feature_print(struct al_udma *udma)
31449b49cdaSZbigniew Bodek {
31549b49cdaSZbigniew Bodek al_dbg("S2M feature regs:\n");
31649b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m_feature, reg_1);
31749b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m_feature, reg_3);
31849b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m_feature, reg_4);
31949b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m_feature, reg_5);
32049b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m_feature, reg_6);
32149b49cdaSZbigniew Bodek }
32249b49cdaSZbigniew Bodek
al_udma_regs_s2m_q_print(struct al_udma * udma,uint32_t qid)32349b49cdaSZbigniew Bodek static void al_udma_regs_s2m_q_print(struct al_udma *udma, uint32_t qid)
32449b49cdaSZbigniew Bodek {
32549b49cdaSZbigniew Bodek al_dbg("S2M Q[%d] status regs:\n", qid);
32649b49cdaSZbigniew Bodek al_reg_write32(&udma->udma_regs->m2s.m2s.indirect_ctrl, qid);
32749b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m, sel_pref_fifo_status);
32849b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m, sel_comp_fifo_status);
32949b49cdaSZbigniew Bodek
33049b49cdaSZbigniew Bodek al_dbg("S2M Q[%d] regs:\n", qid);
33149b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m_q[qid], cfg);
33249b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m_q[qid], status);
33349b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m_q[qid], rdrbp_low);
33449b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m_q[qid], rdrbp_high);
33549b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m_q[qid], rdrl);
33649b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m_q[qid], rdrhp);
33749b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m_q[qid], rdrtp);
33849b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m_q[qid], rdcp);
33949b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m_q[qid], rcrbp_low);
34049b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m_q[qid], rcrbp_high);
34149b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m_q[qid], rcrhp);
34249b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m_q[qid], rcrhp_internal);
34349b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m_q[qid], comp_cfg);
34449b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m_q[qid], comp_cfg_2);
34549b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m_q[qid], pkt_cfg);
34649b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m_q[qid], qos_cfg);
34749b49cdaSZbigniew Bodek AL_UDMA_PRINT_REG(udma, " ", "\n", s2m, s2m_q[qid], q_rx_pkt);
34849b49cdaSZbigniew Bodek }
34949b49cdaSZbigniew Bodek
al_udma_regs_print(struct al_udma * udma,unsigned int mask)35049b49cdaSZbigniew Bodek void al_udma_regs_print(struct al_udma *udma, unsigned int mask)
35149b49cdaSZbigniew Bodek {
35249b49cdaSZbigniew Bodek uint32_t i;
35349b49cdaSZbigniew Bodek
35449b49cdaSZbigniew Bodek if (!udma)
35549b49cdaSZbigniew Bodek return;
35649b49cdaSZbigniew Bodek
35749b49cdaSZbigniew Bodek if (udma->type == UDMA_TX) {
35849b49cdaSZbigniew Bodek if (mask & AL_UDMA_DEBUG_AXI)
35949b49cdaSZbigniew Bodek al_udma_regs_m2s_axi_print(udma);
36049b49cdaSZbigniew Bodek if (mask & AL_UDMA_DEBUG_GENERAL)
36149b49cdaSZbigniew Bodek al_udma_regs_m2s_general_print(udma);
36249b49cdaSZbigniew Bodek if (mask & AL_UDMA_DEBUG_READ)
36349b49cdaSZbigniew Bodek al_udma_regs_m2s_rd_print(udma);
36449b49cdaSZbigniew Bodek if (mask & AL_UDMA_DEBUG_DWRR)
36549b49cdaSZbigniew Bodek al_udma_regs_m2s_dwrr_print(udma);
36649b49cdaSZbigniew Bodek if (mask & AL_UDMA_DEBUG_RATE_LIMITER)
36749b49cdaSZbigniew Bodek al_udma_regs_m2s_rate_limiter_print(udma);
36849b49cdaSZbigniew Bodek if (mask & AL_UDMA_DEBUG_STREAM_RATE_LIMITER)
36949b49cdaSZbigniew Bodek al_udma_regs_m2s_stream_rate_limiter_print(udma);
37049b49cdaSZbigniew Bodek if (mask & AL_UDMA_DEBUG_COMP)
37149b49cdaSZbigniew Bodek al_udma_regs_m2s_comp_print(udma);
37249b49cdaSZbigniew Bodek if (mask & AL_UDMA_DEBUG_STAT)
37349b49cdaSZbigniew Bodek al_udma_regs_m2s_stat_print(udma);
37449b49cdaSZbigniew Bodek if (mask & AL_UDMA_DEBUG_FEATURE)
37549b49cdaSZbigniew Bodek al_udma_regs_m2s_feature_print(udma);
37649b49cdaSZbigniew Bodek for (i = 0; i < DMA_MAX_Q; i++) {
37749b49cdaSZbigniew Bodek if (mask & AL_UDMA_DEBUG_QUEUE(i))
37849b49cdaSZbigniew Bodek al_udma_regs_m2s_q_print(udma, i);
37949b49cdaSZbigniew Bodek }
38049b49cdaSZbigniew Bodek } else {
38149b49cdaSZbigniew Bodek if (mask & AL_UDMA_DEBUG_AXI)
38249b49cdaSZbigniew Bodek al_udma_regs_s2m_axi_print(udma);
38349b49cdaSZbigniew Bodek if (mask & AL_UDMA_DEBUG_GENERAL)
38449b49cdaSZbigniew Bodek al_udma_regs_s2m_general_print(udma);
38549b49cdaSZbigniew Bodek if (mask & AL_UDMA_DEBUG_READ)
38649b49cdaSZbigniew Bodek al_udma_regs_s2m_rd_print(udma);
38749b49cdaSZbigniew Bodek if (mask & AL_UDMA_DEBUG_WRITE)
38849b49cdaSZbigniew Bodek al_udma_regs_s2m_wr_print(udma);
38949b49cdaSZbigniew Bodek if (mask & AL_UDMA_DEBUG_COMP)
39049b49cdaSZbigniew Bodek al_udma_regs_s2m_comp_print(udma);
39149b49cdaSZbigniew Bodek if (mask & AL_UDMA_DEBUG_STAT)
39249b49cdaSZbigniew Bodek al_udma_regs_s2m_stat_print(udma);
39349b49cdaSZbigniew Bodek if (mask & AL_UDMA_DEBUG_FEATURE)
39449b49cdaSZbigniew Bodek al_udma_regs_s2m_feature_print(udma);
39549b49cdaSZbigniew Bodek for (i = 0; i < DMA_MAX_Q; i++) {
39649b49cdaSZbigniew Bodek if (mask & AL_UDMA_DEBUG_QUEUE(i))
39749b49cdaSZbigniew Bodek al_udma_regs_s2m_q_print(udma, i);
39849b49cdaSZbigniew Bodek }
39949b49cdaSZbigniew Bodek }
40049b49cdaSZbigniew Bodek }
40149b49cdaSZbigniew Bodek
al_udma_q_struct_print(struct al_udma * udma,uint32_t qid)40249b49cdaSZbigniew Bodek void al_udma_q_struct_print(struct al_udma *udma, uint32_t qid)
40349b49cdaSZbigniew Bodek {
40449b49cdaSZbigniew Bodek struct al_udma_q *queue;
40549b49cdaSZbigniew Bodek
40649b49cdaSZbigniew Bodek if (!udma)
40749b49cdaSZbigniew Bodek return;
40849b49cdaSZbigniew Bodek
40949b49cdaSZbigniew Bodek if (qid >= DMA_MAX_Q)
41049b49cdaSZbigniew Bodek return;
41149b49cdaSZbigniew Bodek
41249b49cdaSZbigniew Bodek queue = &udma->udma_q[qid];
41349b49cdaSZbigniew Bodek
41449b49cdaSZbigniew Bodek al_dbg("Q[%d] struct:\n", qid);
41549b49cdaSZbigniew Bodek al_dbg(" size_mask = 0x%08x\n", (uint32_t)queue->size_mask);
41649b49cdaSZbigniew Bodek al_dbg(" q_regs = %p\n", queue->q_regs);
41749b49cdaSZbigniew Bodek al_dbg(" desc_base_ptr = %p\n", queue->desc_base_ptr);
41849b49cdaSZbigniew Bodek al_dbg(" next_desc_idx = %d\n", (uint16_t)queue->next_desc_idx);
41949b49cdaSZbigniew Bodek al_dbg(" desc_ring_id = %d\n", (uint32_t)queue->desc_ring_id);
42049b49cdaSZbigniew Bodek al_dbg(" cdesc_base_ptr = %p\n", queue->cdesc_base_ptr);
42149b49cdaSZbigniew Bodek al_dbg(" cdesc_size = %d\n", (uint32_t)queue->cdesc_size);
42249b49cdaSZbigniew Bodek al_dbg(" next_cdesc_idx = %d\n", (uint16_t)queue->next_cdesc_idx);
42349b49cdaSZbigniew Bodek al_dbg(" end_cdesc_ptr = %p\n", queue->end_cdesc_ptr);
42449b49cdaSZbigniew Bodek al_dbg(" comp_head_idx = %d\n", (uint16_t)queue->comp_head_idx);
42549b49cdaSZbigniew Bodek al_dbg(" comp_head_ptr = %p\n", queue->comp_head_ptr);
42649b49cdaSZbigniew Bodek al_dbg(" pkt_crnt_descs = %d\n", (uint32_t)queue->pkt_crnt_descs);
42749b49cdaSZbigniew Bodek al_dbg(" comp_ring_id = %d\n", (uint32_t)queue->comp_ring_id);
428*3fc36ee0SWojciech Macek al_dbg(" desc_phy_base = 0x%016jx\n", (uintmax_t)queue->desc_phy_base);
429*3fc36ee0SWojciech Macek al_dbg(" cdesc_phy_base = 0x%016jx\n",
430*3fc36ee0SWojciech Macek (uintmax_t)queue->cdesc_phy_base);
43149b49cdaSZbigniew Bodek al_dbg(" flags = 0x%08x\n", (uint32_t)queue->flags);
43249b49cdaSZbigniew Bodek al_dbg(" size = %d\n", (uint32_t)queue->size);
43349b49cdaSZbigniew Bodek al_dbg(" status = %d\n", (uint32_t)queue->status);
43449b49cdaSZbigniew Bodek al_dbg(" udma = %p\n", queue->udma);
43549b49cdaSZbigniew Bodek al_dbg(" qid = %d\n", (uint32_t)queue->qid);
43649b49cdaSZbigniew Bodek }
43749b49cdaSZbigniew Bodek
al_udma_ring_print(struct al_udma * udma,uint32_t qid,enum al_udma_ring_type rtype)43849b49cdaSZbigniew Bodek void al_udma_ring_print(struct al_udma *udma, uint32_t qid,
43949b49cdaSZbigniew Bodek enum al_udma_ring_type rtype)
44049b49cdaSZbigniew Bodek {
44149b49cdaSZbigniew Bodek struct al_udma_q *queue;
44249b49cdaSZbigniew Bodek uint32_t desc_size;
44349b49cdaSZbigniew Bodek void *base_ptr;
44449b49cdaSZbigniew Bodek uint32_t i;
44549b49cdaSZbigniew Bodek
44649b49cdaSZbigniew Bodek if (!udma)
44749b49cdaSZbigniew Bodek return;
44849b49cdaSZbigniew Bodek
44949b49cdaSZbigniew Bodek if (qid >= DMA_MAX_Q)
45049b49cdaSZbigniew Bodek return;
45149b49cdaSZbigniew Bodek
45249b49cdaSZbigniew Bodek queue = &udma->udma_q[qid];
45349b49cdaSZbigniew Bodek if (rtype == AL_RING_SUBMISSION) {
45449b49cdaSZbigniew Bodek base_ptr = queue->desc_base_ptr;
45549b49cdaSZbigniew Bodek desc_size = sizeof(union al_udma_desc);
45649b49cdaSZbigniew Bodek if (base_ptr)
45749b49cdaSZbigniew Bodek al_dbg("Q[%d] submission ring pointers:\n", qid);
45849b49cdaSZbigniew Bodek else {
45949b49cdaSZbigniew Bodek al_dbg("Q[%d] submission ring is not allocated\n", qid);
46049b49cdaSZbigniew Bodek return;
46149b49cdaSZbigniew Bodek }
46249b49cdaSZbigniew Bodek } else {
46349b49cdaSZbigniew Bodek base_ptr = queue->cdesc_base_ptr;
46449b49cdaSZbigniew Bodek desc_size = queue->cdesc_size;
46549b49cdaSZbigniew Bodek if (base_ptr)
46649b49cdaSZbigniew Bodek al_dbg("Q[%d] completion ring pointers:\n", qid);
46749b49cdaSZbigniew Bodek else {
46849b49cdaSZbigniew Bodek al_dbg("Q[%d] completion ring is not allocated\n", qid);
46949b49cdaSZbigniew Bodek return;
47049b49cdaSZbigniew Bodek }
47149b49cdaSZbigniew Bodek }
47249b49cdaSZbigniew Bodek
47349b49cdaSZbigniew Bodek for (i = 0; i < queue->size; i++) {
474*3fc36ee0SWojciech Macek uint32_t *curr_addr = (void*)((uintptr_t)base_ptr + i * desc_size);
47549b49cdaSZbigniew Bodek if (desc_size == 16)
47649b49cdaSZbigniew Bodek al_dbg("[%04d](%p): %08x %08x %08x %08x\n",
47749b49cdaSZbigniew Bodek i,
47849b49cdaSZbigniew Bodek curr_addr,
47949b49cdaSZbigniew Bodek (uint32_t)*curr_addr,
48049b49cdaSZbigniew Bodek (uint32_t)*(curr_addr+1),
48149b49cdaSZbigniew Bodek (uint32_t)*(curr_addr+2),
48249b49cdaSZbigniew Bodek (uint32_t)*(curr_addr+3));
48349b49cdaSZbigniew Bodek else if (desc_size == 8)
48449b49cdaSZbigniew Bodek al_dbg("[%04d](%p): %08x %08x\n",
48549b49cdaSZbigniew Bodek i,
48649b49cdaSZbigniew Bodek curr_addr,
48749b49cdaSZbigniew Bodek (uint32_t)*curr_addr,
48849b49cdaSZbigniew Bodek (uint32_t)*(curr_addr+1));
48949b49cdaSZbigniew Bodek else if (desc_size == 4)
49049b49cdaSZbigniew Bodek al_dbg("[%04d](%p): %08x\n",
49149b49cdaSZbigniew Bodek i,
49249b49cdaSZbigniew Bodek curr_addr,
49349b49cdaSZbigniew Bodek (uint32_t)*curr_addr);
49449b49cdaSZbigniew Bodek else
49549b49cdaSZbigniew Bodek break;
49649b49cdaSZbigniew Bodek }
49749b49cdaSZbigniew Bodek }
498