Lines Matching refs:hw_desc
300 desc->hw_desc = kcalloc(num, sizeof(*desc->hw_desc), GFP_NOWAIT); in axi_desc_alloc()
301 if (!desc->hw_desc) { in axi_desc_alloc()
333 struct axi_dma_hw_desc *hw_desc; in axi_desc_put() local
337 hw_desc = &desc->hw_desc[descs_put]; in axi_desc_put()
338 dma_pool_free(chan->desc_pool, hw_desc->lli, hw_desc->llp); in axi_desc_put()
341 kfree(desc->hw_desc); in axi_desc_put()
378 len = vd_to_axi_desc(vdesc)->hw_desc[0].len; in dma_chan_tx_status()
471 write_chan_llp(chan, first->hw_desc[0].llp | lms); in axi_chan_block_xfer_start()
634 static void set_desc_dest_master(struct axi_dma_hw_desc *hw_desc, in set_desc_dest_master() argument
640 val = le32_to_cpu(hw_desc->lli->ctl_lo); in set_desc_dest_master()
646 hw_desc->lli->ctl_lo = cpu_to_le32(val); in set_desc_dest_master()
650 struct axi_dma_hw_desc *hw_desc, in dw_axi_dma_set_hw_desc() argument
699 hw_desc->lli = axi_desc_get(chan, &hw_desc->llp); in dw_axi_dma_set_hw_desc()
700 if (unlikely(!hw_desc->lli)) in dw_axi_dma_set_hw_desc()
712 hw_desc->lli->ctl_hi = cpu_to_le32(ctlhi); in dw_axi_dma_set_hw_desc()
715 write_desc_sar(hw_desc, mem_addr); in dw_axi_dma_set_hw_desc()
716 write_desc_dar(hw_desc, device_addr); in dw_axi_dma_set_hw_desc()
718 write_desc_sar(hw_desc, device_addr); in dw_axi_dma_set_hw_desc()
719 write_desc_dar(hw_desc, mem_addr); in dw_axi_dma_set_hw_desc()
722 hw_desc->lli->block_ts_lo = cpu_to_le32(block_ts - 1); in dw_axi_dma_set_hw_desc()
726 hw_desc->lli->ctl_lo = cpu_to_le32(ctllo); in dw_axi_dma_set_hw_desc()
728 set_desc_src_master(hw_desc); in dw_axi_dma_set_hw_desc()
730 hw_desc->len = len; in dw_axi_dma_set_hw_desc()
770 struct axi_dma_hw_desc *hw_desc = NULL; in dw_axi_dma_chan_prep_cyclic() local
804 hw_desc = &desc->hw_desc[i]; in dw_axi_dma_chan_prep_cyclic()
806 status = dw_axi_dma_set_hw_desc(chan, hw_desc, src_addr, in dw_axi_dma_chan_prep_cyclic()
811 desc->length += hw_desc->len; in dw_axi_dma_chan_prep_cyclic()
815 set_desc_last(hw_desc); in dw_axi_dma_chan_prep_cyclic()
820 llp = desc->hw_desc[0].llp; in dw_axi_dma_chan_prep_cyclic()
824 hw_desc = &desc->hw_desc[--total_segments]; in dw_axi_dma_chan_prep_cyclic()
825 write_desc_llp(hw_desc, llp | lms); in dw_axi_dma_chan_prep_cyclic()
826 llp = hw_desc->llp; in dw_axi_dma_chan_prep_cyclic()
847 struct axi_dma_hw_desc *hw_desc = NULL; in dw_axi_dma_chan_prep_slave_sg() local
888 hw_desc = &desc->hw_desc[loop++]; in dw_axi_dma_chan_prep_slave_sg()
889 status = dw_axi_dma_set_hw_desc(chan, hw_desc, mem, segment_len); in dw_axi_dma_chan_prep_slave_sg()
893 desc->length += hw_desc->len; in dw_axi_dma_chan_prep_slave_sg()
900 set_desc_last(&desc->hw_desc[num_sgs - 1]); in dw_axi_dma_chan_prep_slave_sg()
904 hw_desc = &desc->hw_desc[--num_sgs]; in dw_axi_dma_chan_prep_slave_sg()
905 write_desc_llp(hw_desc, llp | lms); in dw_axi_dma_chan_prep_slave_sg()
906 llp = hw_desc->llp; in dw_axi_dma_chan_prep_slave_sg()
926 struct axi_dma_hw_desc *hw_desc = NULL; in dma_chan_prep_dma_memcpy() local
948 hw_desc = &desc->hw_desc[num]; in dma_chan_prep_dma_memcpy()
967 hw_desc->lli = axi_desc_get(chan, &hw_desc->llp); in dma_chan_prep_dma_memcpy()
968 if (unlikely(!hw_desc->lli)) in dma_chan_prep_dma_memcpy()
971 write_desc_sar(hw_desc, src_adr); in dma_chan_prep_dma_memcpy()
972 write_desc_dar(hw_desc, dst_adr); in dma_chan_prep_dma_memcpy()
973 hw_desc->lli->block_ts_lo = cpu_to_le32(block_ts - 1); in dma_chan_prep_dma_memcpy()
984 hw_desc->lli->ctl_hi = cpu_to_le32(reg); in dma_chan_prep_dma_memcpy()
992 hw_desc->lli->ctl_lo = cpu_to_le32(reg); in dma_chan_prep_dma_memcpy()
994 set_desc_src_master(hw_desc); in dma_chan_prep_dma_memcpy()
995 set_desc_dest_master(hw_desc, desc); in dma_chan_prep_dma_memcpy()
997 hw_desc->len = xfer_len; in dma_chan_prep_dma_memcpy()
998 desc->length += hw_desc->len; in dma_chan_prep_dma_memcpy()
1007 set_desc_last(&desc->hw_desc[num - 1]); in dma_chan_prep_dma_memcpy()
1010 hw_desc = &desc->hw_desc[--num]; in dma_chan_prep_dma_memcpy()
1011 write_desc_llp(hw_desc, llp | lms); in dma_chan_prep_dma_memcpy()
1012 llp = hw_desc->llp; in dma_chan_prep_dma_memcpy()
1058 axi_chan_dump_lli(chan, &desc_head->hw_desc[i]); in axi_chan_list_dump_lli()
1098 struct axi_dma_hw_desc *hw_desc; in axi_chan_block_xfer_complete() local
1125 hw_desc = &desc->hw_desc[i]; in axi_chan_block_xfer_complete()
1126 if (hw_desc->llp == llp) { in axi_chan_block_xfer_complete()
1127 axi_chan_irq_clear(chan, hw_desc->lli->status_lo); in axi_chan_block_xfer_complete()
1128 hw_desc->lli->ctl_hi |= CH_CTL_H_LLI_VALID; in axi_chan_block_xfer_complete()
1131 if (((hw_desc->len * (i + 1)) % desc->period_len) == 0) in axi_chan_block_xfer_complete()