sdmac 326 drivers/dma/imx-sdma.c struct sdma_channel *sdmac; sdmac 623 drivers/dma/imx-sdma.c static int sdma_config_ownership(struct sdma_channel *sdmac, sdmac 626 drivers/dma/imx-sdma.c struct sdma_engine *sdma = sdmac->sdma; sdmac 627 drivers/dma/imx-sdma.c int channel = sdmac->channel; sdmac 722 drivers/dma/imx-sdma.c static void sdma_event_enable(struct sdma_channel *sdmac, unsigned int event) sdmac 724 drivers/dma/imx-sdma.c struct sdma_engine *sdma = sdmac->sdma; sdmac 725 drivers/dma/imx-sdma.c int channel = sdmac->channel; sdmac 734 drivers/dma/imx-sdma.c static void sdma_event_disable(struct sdma_channel *sdmac, unsigned int event) sdmac 736 drivers/dma/imx-sdma.c struct sdma_engine *sdma = sdmac->sdma; sdmac 737 drivers/dma/imx-sdma.c int channel = sdmac->channel; sdmac 751 drivers/dma/imx-sdma.c static void sdma_start_desc(struct sdma_channel *sdmac) sdmac 753 drivers/dma/imx-sdma.c struct virt_dma_desc *vd = vchan_next_desc(&sdmac->vc); sdmac 755 drivers/dma/imx-sdma.c struct sdma_engine *sdma = sdmac->sdma; sdmac 756 drivers/dma/imx-sdma.c int channel = sdmac->channel; sdmac 759 drivers/dma/imx-sdma.c sdmac->desc = NULL; sdmac 762 drivers/dma/imx-sdma.c sdmac->desc = desc = to_sdma_desc(&vd->tx); sdmac 767 drivers/dma/imx-sdma.c if (!(sdmac->flags & IMX_DMA_SG_LOOP)) sdmac 772 drivers/dma/imx-sdma.c sdma_enable_channel(sdma, sdmac->channel); sdmac 775 drivers/dma/imx-sdma.c static void sdma_update_channel_loop(struct sdma_channel *sdmac) sdmac 779 drivers/dma/imx-sdma.c enum dma_status old_status = sdmac->status; sdmac 785 drivers/dma/imx-sdma.c while (sdmac->desc) { sdmac 786 drivers/dma/imx-sdma.c struct sdma_desc *desc = sdmac->desc; sdmac 795 drivers/dma/imx-sdma.c sdmac->status = DMA_ERROR; sdmac 816 drivers/dma/imx-sdma.c spin_unlock(&sdmac->vc.lock); sdmac 818 drivers/dma/imx-sdma.c spin_lock(&sdmac->vc.lock); sdmac 821 drivers/dma/imx-sdma.c sdmac->status = old_status; sdmac 827 drivers/dma/imx-sdma.c struct sdma_channel *sdmac = (struct sdma_channel *) data; sdmac 831 drivers/dma/imx-sdma.c sdmac->desc->chn_real_count = 0; sdmac 836 drivers/dma/imx-sdma.c for (i = 0; i < sdmac->desc->num_bd; i++) { sdmac 837 drivers/dma/imx-sdma.c bd = &sdmac->desc->bd[i]; sdmac 841 drivers/dma/imx-sdma.c sdmac->desc->chn_real_count += bd->mode.count; sdmac 845 drivers/dma/imx-sdma.c sdmac->status = DMA_ERROR; sdmac 847 drivers/dma/imx-sdma.c sdmac->status = DMA_COMPLETE; sdmac 862 drivers/dma/imx-sdma.c struct sdma_channel *sdmac = &sdma->channel[channel]; sdmac 865 drivers/dma/imx-sdma.c spin_lock(&sdmac->vc.lock); sdmac 866 drivers/dma/imx-sdma.c desc = sdmac->desc; sdmac 868 drivers/dma/imx-sdma.c if (sdmac->flags & IMX_DMA_SG_LOOP) { sdmac 869 drivers/dma/imx-sdma.c sdma_update_channel_loop(sdmac); sdmac 871 drivers/dma/imx-sdma.c mxc_sdma_handle_channel_normal(sdmac); sdmac 873 drivers/dma/imx-sdma.c sdma_start_desc(sdmac); sdmac 877 drivers/dma/imx-sdma.c spin_unlock(&sdmac->vc.lock); sdmac 887 drivers/dma/imx-sdma.c static void sdma_get_pc(struct sdma_channel *sdmac, sdmac 890 drivers/dma/imx-sdma.c struct sdma_engine *sdma = sdmac->sdma; sdmac 898 drivers/dma/imx-sdma.c sdmac->pc_from_device = 0; sdmac 899 drivers/dma/imx-sdma.c sdmac->pc_to_device = 0; sdmac 900 drivers/dma/imx-sdma.c sdmac->device_to_device = 0; sdmac 901 drivers/dma/imx-sdma.c sdmac->pc_to_pc = 0; sdmac 975 drivers/dma/imx-sdma.c sdmac->pc_from_device = per_2_emi; sdmac 976 drivers/dma/imx-sdma.c sdmac->pc_to_device = emi_2_per; sdmac 977 drivers/dma/imx-sdma.c sdmac->device_to_device = per_2_per; sdmac 978 drivers/dma/imx-sdma.c sdmac->pc_to_pc = emi_2_emi; sdmac 981 drivers/dma/imx-sdma.c static int sdma_load_context(struct sdma_channel *sdmac) sdmac 983 drivers/dma/imx-sdma.c struct sdma_engine *sdma = sdmac->sdma; sdmac 984 drivers/dma/imx-sdma.c int channel = sdmac->channel; sdmac 991 drivers/dma/imx-sdma.c if (sdmac->context_loaded) sdmac 994 drivers/dma/imx-sdma.c if (sdmac->direction == DMA_DEV_TO_MEM) sdmac 995 drivers/dma/imx-sdma.c load_address = sdmac->pc_from_device; sdmac 996 drivers/dma/imx-sdma.c else if (sdmac->direction == DMA_DEV_TO_DEV) sdmac 997 drivers/dma/imx-sdma.c load_address = sdmac->device_to_device; sdmac 998 drivers/dma/imx-sdma.c else if (sdmac->direction == DMA_MEM_TO_MEM) sdmac 999 drivers/dma/imx-sdma.c load_address = sdmac->pc_to_pc; sdmac 1001 drivers/dma/imx-sdma.c load_address = sdmac->pc_to_device; sdmac 1007 drivers/dma/imx-sdma.c dev_dbg(sdma->dev, "wml = 0x%08x\n", (u32)sdmac->watermark_level); sdmac 1008 drivers/dma/imx-sdma.c dev_dbg(sdma->dev, "shp_addr = 0x%08x\n", sdmac->shp_addr); sdmac 1009 drivers/dma/imx-sdma.c dev_dbg(sdma->dev, "per_addr = 0x%08x\n", sdmac->per_addr); sdmac 1010 drivers/dma/imx-sdma.c dev_dbg(sdma->dev, "event_mask0 = 0x%08x\n", (u32)sdmac->event_mask[0]); sdmac 1011 drivers/dma/imx-sdma.c dev_dbg(sdma->dev, "event_mask1 = 0x%08x\n", (u32)sdmac->event_mask[1]); sdmac 1021 drivers/dma/imx-sdma.c context->gReg[0] = sdmac->event_mask[1]; sdmac 1022 drivers/dma/imx-sdma.c context->gReg[1] = sdmac->event_mask[0]; sdmac 1023 drivers/dma/imx-sdma.c context->gReg[2] = sdmac->per_addr; sdmac 1024 drivers/dma/imx-sdma.c context->gReg[6] = sdmac->shp_addr; sdmac 1025 drivers/dma/imx-sdma.c context->gReg[7] = sdmac->watermark_level; sdmac 1036 drivers/dma/imx-sdma.c sdmac->context_loaded = true; sdmac 1048 drivers/dma/imx-sdma.c struct sdma_channel *sdmac = to_sdma_chan(chan); sdmac 1049 drivers/dma/imx-sdma.c struct sdma_engine *sdma = sdmac->sdma; sdmac 1050 drivers/dma/imx-sdma.c int channel = sdmac->channel; sdmac 1053 drivers/dma/imx-sdma.c sdmac->status = DMA_ERROR; sdmac 1059 drivers/dma/imx-sdma.c struct sdma_channel *sdmac = container_of(work, struct sdma_channel, sdmac 1072 drivers/dma/imx-sdma.c spin_lock_irqsave(&sdmac->vc.lock, flags); sdmac 1073 drivers/dma/imx-sdma.c vchan_get_all_descriptors(&sdmac->vc, &head); sdmac 1074 drivers/dma/imx-sdma.c sdmac->desc = NULL; sdmac 1075 drivers/dma/imx-sdma.c spin_unlock_irqrestore(&sdmac->vc.lock, flags); sdmac 1076 drivers/dma/imx-sdma.c vchan_dma_desc_free_list(&sdmac->vc, &head); sdmac 1077 drivers/dma/imx-sdma.c sdmac->context_loaded = false; sdmac 1082 drivers/dma/imx-sdma.c struct sdma_channel *sdmac = to_sdma_chan(chan); sdmac 1086 drivers/dma/imx-sdma.c if (sdmac->desc) sdmac 1087 drivers/dma/imx-sdma.c schedule_work(&sdmac->terminate_worker); sdmac 1094 drivers/dma/imx-sdma.c struct sdma_channel *sdmac = to_sdma_chan(chan); sdmac 1096 drivers/dma/imx-sdma.c vchan_synchronize(&sdmac->vc); sdmac 1098 drivers/dma/imx-sdma.c flush_work(&sdmac->terminate_worker); sdmac 1101 drivers/dma/imx-sdma.c static void sdma_set_watermarklevel_for_p2p(struct sdma_channel *sdmac) sdmac 1103 drivers/dma/imx-sdma.c struct sdma_engine *sdma = sdmac->sdma; sdmac 1105 drivers/dma/imx-sdma.c int lwml = sdmac->watermark_level & SDMA_WATERMARK_LEVEL_LWML; sdmac 1106 drivers/dma/imx-sdma.c int hwml = (sdmac->watermark_level & SDMA_WATERMARK_LEVEL_HWML) >> 16; sdmac 1108 drivers/dma/imx-sdma.c set_bit(sdmac->event_id0 % 32, &sdmac->event_mask[1]); sdmac 1109 drivers/dma/imx-sdma.c set_bit(sdmac->event_id1 % 32, &sdmac->event_mask[0]); sdmac 1111 drivers/dma/imx-sdma.c if (sdmac->event_id0 > 31) sdmac 1112 drivers/dma/imx-sdma.c sdmac->watermark_level |= SDMA_WATERMARK_LEVEL_LWE; sdmac 1114 drivers/dma/imx-sdma.c if (sdmac->event_id1 > 31) sdmac 1115 drivers/dma/imx-sdma.c sdmac->watermark_level |= SDMA_WATERMARK_LEVEL_HWE; sdmac 1123 drivers/dma/imx-sdma.c sdmac->watermark_level &= ~(SDMA_WATERMARK_LEVEL_LWML | sdmac 1125 drivers/dma/imx-sdma.c sdmac->watermark_level |= hwml; sdmac 1126 drivers/dma/imx-sdma.c sdmac->watermark_level |= lwml << 16; sdmac 1127 drivers/dma/imx-sdma.c swap(sdmac->event_mask[0], sdmac->event_mask[1]); sdmac 1130 drivers/dma/imx-sdma.c if (sdmac->per_address2 >= sdma->spba_start_addr && sdmac 1131 drivers/dma/imx-sdma.c sdmac->per_address2 <= sdma->spba_end_addr) sdmac 1132 drivers/dma/imx-sdma.c sdmac->watermark_level |= SDMA_WATERMARK_LEVEL_SP; sdmac 1134 drivers/dma/imx-sdma.c if (sdmac->per_address >= sdma->spba_start_addr && sdmac 1135 drivers/dma/imx-sdma.c sdmac->per_address <= sdma->spba_end_addr) sdmac 1136 drivers/dma/imx-sdma.c sdmac->watermark_level |= SDMA_WATERMARK_LEVEL_DP; sdmac 1138 drivers/dma/imx-sdma.c sdmac->watermark_level |= SDMA_WATERMARK_LEVEL_CONT; sdmac 1143 drivers/dma/imx-sdma.c struct sdma_channel *sdmac = to_sdma_chan(chan); sdmac 1148 drivers/dma/imx-sdma.c sdmac->event_mask[0] = 0; sdmac 1149 drivers/dma/imx-sdma.c sdmac->event_mask[1] = 0; sdmac 1150 drivers/dma/imx-sdma.c sdmac->shp_addr = 0; sdmac 1151 drivers/dma/imx-sdma.c sdmac->per_addr = 0; sdmac 1153 drivers/dma/imx-sdma.c switch (sdmac->peripheral_type) { sdmac 1155 drivers/dma/imx-sdma.c sdma_config_ownership(sdmac, false, true, true); sdmac 1158 drivers/dma/imx-sdma.c sdma_config_ownership(sdmac, false, true, false); sdmac 1161 drivers/dma/imx-sdma.c sdma_config_ownership(sdmac, true, true, false); sdmac 1165 drivers/dma/imx-sdma.c sdma_get_pc(sdmac, sdmac->peripheral_type); sdmac 1167 drivers/dma/imx-sdma.c if ((sdmac->peripheral_type != IMX_DMATYPE_MEMORY) && sdmac 1168 drivers/dma/imx-sdma.c (sdmac->peripheral_type != IMX_DMATYPE_DSP)) { sdmac 1170 drivers/dma/imx-sdma.c if (sdmac->event_id1) { sdmac 1171 drivers/dma/imx-sdma.c if (sdmac->peripheral_type == IMX_DMATYPE_ASRC_SP || sdmac 1172 drivers/dma/imx-sdma.c sdmac->peripheral_type == IMX_DMATYPE_ASRC) sdmac 1173 drivers/dma/imx-sdma.c sdma_set_watermarklevel_for_p2p(sdmac); sdmac 1175 drivers/dma/imx-sdma.c __set_bit(sdmac->event_id0, sdmac->event_mask); sdmac 1178 drivers/dma/imx-sdma.c sdmac->shp_addr = sdmac->per_address; sdmac 1179 drivers/dma/imx-sdma.c sdmac->per_addr = sdmac->per_address2; sdmac 1181 drivers/dma/imx-sdma.c sdmac->watermark_level = 0; /* FIXME: M3_BASE_ADDRESS */ sdmac 1184 drivers/dma/imx-sdma.c ret = sdma_load_context(sdmac); sdmac 1189 drivers/dma/imx-sdma.c static int sdma_set_channel_priority(struct sdma_channel *sdmac, sdmac 1192 drivers/dma/imx-sdma.c struct sdma_engine *sdma = sdmac->sdma; sdmac 1193 drivers/dma/imx-sdma.c int channel = sdmac->channel; sdmac 1232 drivers/dma/imx-sdma.c desc->bd = dma_alloc_coherent(desc->sdmac->sdma->dev, bd_size, sdmac 1246 drivers/dma/imx-sdma.c dma_free_coherent(desc->sdmac->sdma->dev, bd_size, desc->bd, sdmac 1260 drivers/dma/imx-sdma.c struct sdma_channel *sdmac = to_sdma_chan(chan); sdmac 1275 drivers/dma/imx-sdma.c dev_dbg(sdmac->sdma->dev, "MEMCPY in case?\n"); sdmac 1282 drivers/dma/imx-sdma.c sdma_get_pc(sdmac, IMX_DMATYPE_MEMORY); sdmac 1298 drivers/dma/imx-sdma.c sdmac->peripheral_type = data->peripheral_type; sdmac 1299 drivers/dma/imx-sdma.c sdmac->event_id0 = data->dma_request; sdmac 1300 drivers/dma/imx-sdma.c sdmac->event_id1 = data->dma_request2; sdmac 1302 drivers/dma/imx-sdma.c ret = clk_enable(sdmac->sdma->clk_ipg); sdmac 1305 drivers/dma/imx-sdma.c ret = clk_enable(sdmac->sdma->clk_ahb); sdmac 1309 drivers/dma/imx-sdma.c ret = sdma_set_channel_priority(sdmac, prio); sdmac 1316 drivers/dma/imx-sdma.c clk_disable(sdmac->sdma->clk_ahb); sdmac 1318 drivers/dma/imx-sdma.c clk_disable(sdmac->sdma->clk_ipg); sdmac 1324 drivers/dma/imx-sdma.c struct sdma_channel *sdmac = to_sdma_chan(chan); sdmac 1325 drivers/dma/imx-sdma.c struct sdma_engine *sdma = sdmac->sdma; sdmac 1331 drivers/dma/imx-sdma.c if (sdmac->event_id0 >= 0) sdmac 1332 drivers/dma/imx-sdma.c sdma_event_disable(sdmac, sdmac->event_id0); sdmac 1333 drivers/dma/imx-sdma.c if (sdmac->event_id1) sdmac 1334 drivers/dma/imx-sdma.c sdma_event_disable(sdmac, sdmac->event_id1); sdmac 1336 drivers/dma/imx-sdma.c sdmac->event_id0 = 0; sdmac 1337 drivers/dma/imx-sdma.c sdmac->event_id1 = 0; sdmac 1338 drivers/dma/imx-sdma.c sdmac->context_loaded = false; sdmac 1340 drivers/dma/imx-sdma.c sdma_set_channel_priority(sdmac, 0); sdmac 1346 drivers/dma/imx-sdma.c static struct sdma_desc *sdma_transfer_init(struct sdma_channel *sdmac, sdmac 1355 drivers/dma/imx-sdma.c sdmac->status = DMA_IN_PROGRESS; sdmac 1356 drivers/dma/imx-sdma.c sdmac->direction = direction; sdmac 1357 drivers/dma/imx-sdma.c sdmac->flags = 0; sdmac 1363 drivers/dma/imx-sdma.c desc->sdmac = sdmac; sdmac 1371 drivers/dma/imx-sdma.c sdma_config_ownership(sdmac, false, true, false); sdmac 1373 drivers/dma/imx-sdma.c if (sdma_load_context(sdmac)) sdmac 1388 drivers/dma/imx-sdma.c struct sdma_channel *sdmac = to_sdma_chan(chan); sdmac 1389 drivers/dma/imx-sdma.c struct sdma_engine *sdma = sdmac->sdma; sdmac 1390 drivers/dma/imx-sdma.c int channel = sdmac->channel; sdmac 1402 drivers/dma/imx-sdma.c desc = sdma_transfer_init(sdmac, DMA_MEM_TO_MEM, sdmac 1437 drivers/dma/imx-sdma.c return vchan_tx_prep(&sdmac->vc, &desc->vd, flags); sdmac 1445 drivers/dma/imx-sdma.c struct sdma_channel *sdmac = to_sdma_chan(chan); sdmac 1446 drivers/dma/imx-sdma.c struct sdma_engine *sdma = sdmac->sdma; sdmac 1448 drivers/dma/imx-sdma.c int channel = sdmac->channel; sdmac 1452 drivers/dma/imx-sdma.c sdma_config_write(chan, &sdmac->slave_config, direction); sdmac 1454 drivers/dma/imx-sdma.c desc = sdma_transfer_init(sdmac, direction, sg_len); sdmac 1478 drivers/dma/imx-sdma.c if (sdmac->word_size > DMA_SLAVE_BUSWIDTH_4_BYTES) sdmac 1481 drivers/dma/imx-sdma.c switch (sdmac->word_size) { sdmac 1515 drivers/dma/imx-sdma.c return vchan_tx_prep(&sdmac->vc, &desc->vd, flags); sdmac 1520 drivers/dma/imx-sdma.c sdmac->status = DMA_ERROR; sdmac 1529 drivers/dma/imx-sdma.c struct sdma_channel *sdmac = to_sdma_chan(chan); sdmac 1530 drivers/dma/imx-sdma.c struct sdma_engine *sdma = sdmac->sdma; sdmac 1532 drivers/dma/imx-sdma.c int channel = sdmac->channel; sdmac 1538 drivers/dma/imx-sdma.c sdma_config_write(chan, &sdmac->slave_config, direction); sdmac 1540 drivers/dma/imx-sdma.c desc = sdma_transfer_init(sdmac, direction, num_periods); sdmac 1546 drivers/dma/imx-sdma.c sdmac->flags |= IMX_DMA_SG_LOOP; sdmac 1562 drivers/dma/imx-sdma.c if (sdmac->word_size > DMA_SLAVE_BUSWIDTH_4_BYTES) sdmac 1564 drivers/dma/imx-sdma.c if (sdmac->word_size == DMA_SLAVE_BUSWIDTH_4_BYTES) sdmac 1567 drivers/dma/imx-sdma.c bd->mode.command = sdmac->word_size; sdmac 1586 drivers/dma/imx-sdma.c return vchan_tx_prep(&sdmac->vc, &desc->vd, flags); sdmac 1591 drivers/dma/imx-sdma.c sdmac->status = DMA_ERROR; sdmac 1599 drivers/dma/imx-sdma.c struct sdma_channel *sdmac = to_sdma_chan(chan); sdmac 1602 drivers/dma/imx-sdma.c sdmac->per_address = dmaengine_cfg->src_addr; sdmac 1603 drivers/dma/imx-sdma.c sdmac->watermark_level = dmaengine_cfg->src_maxburst * sdmac 1605 drivers/dma/imx-sdma.c sdmac->word_size = dmaengine_cfg->src_addr_width; sdmac 1607 drivers/dma/imx-sdma.c sdmac->per_address2 = dmaengine_cfg->src_addr; sdmac 1608 drivers/dma/imx-sdma.c sdmac->per_address = dmaengine_cfg->dst_addr; sdmac 1609 drivers/dma/imx-sdma.c sdmac->watermark_level = dmaengine_cfg->src_maxburst & sdmac 1611 drivers/dma/imx-sdma.c sdmac->watermark_level |= (dmaengine_cfg->dst_maxburst << 16) & sdmac 1613 drivers/dma/imx-sdma.c sdmac->word_size = dmaengine_cfg->dst_addr_width; sdmac 1615 drivers/dma/imx-sdma.c sdmac->per_address = dmaengine_cfg->dst_addr; sdmac 1616 drivers/dma/imx-sdma.c sdmac->watermark_level = dmaengine_cfg->dst_maxburst * sdmac 1618 drivers/dma/imx-sdma.c sdmac->word_size = dmaengine_cfg->dst_addr_width; sdmac 1620 drivers/dma/imx-sdma.c sdmac->direction = direction; sdmac 1627 drivers/dma/imx-sdma.c struct sdma_channel *sdmac = to_sdma_chan(chan); sdmac 1629 drivers/dma/imx-sdma.c memcpy(&sdmac->slave_config, dmaengine_cfg, sizeof(*dmaengine_cfg)); sdmac 1632 drivers/dma/imx-sdma.c if (sdmac->event_id0 >= 0) { sdmac 1633 drivers/dma/imx-sdma.c if (sdmac->event_id0 >= sdmac->sdma->drvdata->num_events) sdmac 1635 drivers/dma/imx-sdma.c sdma_event_enable(sdmac, sdmac->event_id0); sdmac 1638 drivers/dma/imx-sdma.c if (sdmac->event_id1) { sdmac 1639 drivers/dma/imx-sdma.c if (sdmac->event_id1 >= sdmac->sdma->drvdata->num_events) sdmac 1641 drivers/dma/imx-sdma.c sdma_event_enable(sdmac, sdmac->event_id1); sdmac 1651 drivers/dma/imx-sdma.c struct sdma_channel *sdmac = to_sdma_chan(chan); sdmac 1662 drivers/dma/imx-sdma.c spin_lock_irqsave(&sdmac->vc.lock, flags); sdmac 1663 drivers/dma/imx-sdma.c vd = vchan_find_desc(&sdmac->vc, cookie); sdmac 1666 drivers/dma/imx-sdma.c if (sdmac->flags & IMX_DMA_SG_LOOP) sdmac 1671 drivers/dma/imx-sdma.c } else if (sdmac->desc && sdmac->desc->vd.tx.cookie == cookie) { sdmac 1672 drivers/dma/imx-sdma.c residue = sdmac->desc->chn_count - sdmac->desc->chn_real_count; sdmac 1676 drivers/dma/imx-sdma.c spin_unlock_irqrestore(&sdmac->vc.lock, flags); sdmac 1681 drivers/dma/imx-sdma.c return sdmac->status; sdmac 1686 drivers/dma/imx-sdma.c struct sdma_channel *sdmac = to_sdma_chan(chan); sdmac 1689 drivers/dma/imx-sdma.c spin_lock_irqsave(&sdmac->vc.lock, flags); sdmac 1690 drivers/dma/imx-sdma.c if (vchan_issue_pending(&sdmac->vc) && !sdmac->desc) sdmac 1691 drivers/dma/imx-sdma.c sdma_start_desc(sdmac); sdmac 1692 drivers/dma/imx-sdma.c spin_unlock_irqrestore(&sdmac->vc.lock, flags); sdmac 1941 drivers/dma/imx-sdma.c struct sdma_channel *sdmac = to_sdma_chan(chan); sdmac 1947 drivers/dma/imx-sdma.c sdmac->data = *data; sdmac 1948 drivers/dma/imx-sdma.c chan->private = &sdmac->data; sdmac 2069 drivers/dma/imx-sdma.c struct sdma_channel *sdmac = &sdma->channel[i]; sdmac 2071 drivers/dma/imx-sdma.c sdmac->sdma = sdma; sdmac 2073 drivers/dma/imx-sdma.c sdmac->channel = i; sdmac 2074 drivers/dma/imx-sdma.c sdmac->vc.desc_free = sdma_desc_free; sdmac 2075 drivers/dma/imx-sdma.c INIT_WORK(&sdmac->terminate_worker, sdmac 2083 drivers/dma/imx-sdma.c vchan_init(&sdmac->vc, &sdma->dma_device); sdmac 2195 drivers/dma/imx-sdma.c struct sdma_channel *sdmac = &sdma->channel[i]; sdmac 2197 drivers/dma/imx-sdma.c tasklet_kill(&sdmac->vc.task); sdmac 2198 drivers/dma/imx-sdma.c sdma_free_chan_resources(&sdmac->vc.chan);