ichan 30 drivers/dma/ipu/ipu_idmac.c static int ipu_disable_channel(struct idmac *idmac, struct idmac_channel *ichan, ichan 602 drivers/dma/ipu/ipu_idmac.c static int ipu_enable_channel(struct idmac *idmac, struct idmac_channel *ichan) ichan 605 drivers/dma/ipu/ipu_idmac.c enum ipu_channel channel = ichan->dma_chan.chan_id; ichan 613 drivers/dma/ipu/ipu_idmac.c ichan->active_buffer = 0; ichan 614 drivers/dma/ipu/ipu_idmac.c ichan->status = IPU_CHANNEL_ENABLED; ichan 650 drivers/dma/ipu/ipu_idmac.c static int ipu_init_channel_buffer(struct idmac_channel *ichan, ichan 657 drivers/dma/ipu/ipu_idmac.c enum ipu_channel channel = ichan->dma_chan.chan_id; ichan 658 drivers/dma/ipu/ipu_idmac.c struct idmac *idmac = to_idmac(ichan->dma_chan.device); ichan 698 drivers/dma/ipu/ipu_idmac.c ichan->status = IPU_CHANNEL_READY; ichan 729 drivers/dma/ipu/ipu_idmac.c static void ipu_update_channel_buffer(struct idmac_channel *ichan, ichan 732 drivers/dma/ipu/ipu_idmac.c enum ipu_channel channel = ichan->dma_chan.chan_id; ichan 742 drivers/dma/ipu/ipu_idmac.c ichan->status = IPU_CHANNEL_READY; ichan 753 drivers/dma/ipu/ipu_idmac.c ichan->status = IPU_CHANNEL_READY; ichan 773 drivers/dma/ipu/ipu_idmac.c static int ipu_submit_buffer(struct idmac_channel *ichan, ichan 776 drivers/dma/ipu/ipu_idmac.c unsigned int chan_id = ichan->dma_chan.chan_id; ichan 777 drivers/dma/ipu/ipu_idmac.c struct device *dev = &ichan->dma_chan.dev->device; ichan 788 drivers/dma/ipu/ipu_idmac.c ipu_update_channel_buffer(ichan, buf_idx, sg_dma_address(sg)); ichan 798 drivers/dma/ipu/ipu_idmac.c static int ipu_submit_channel_buffers(struct idmac_channel *ichan, ichan 805 drivers/dma/ipu/ipu_idmac.c if (!ichan->sg[i]) { ichan 806 drivers/dma/ipu/ipu_idmac.c ichan->sg[i] = sg; ichan 808 drivers/dma/ipu/ipu_idmac.c ret = ipu_submit_buffer(ichan, desc, sg, i); ichan 822 drivers/dma/ipu/ipu_idmac.c struct idmac_channel *ichan = to_idmac_chan(tx->chan); ichan 825 drivers/dma/ipu/ipu_idmac.c struct device *dev = &ichan->dma_chan.dev->device; ichan 837 drivers/dma/ipu/ipu_idmac.c mutex_lock(&ichan->chan_mutex); ichan 841 drivers/dma/ipu/ipu_idmac.c if (ichan->status < IPU_CHANNEL_READY) { ichan 842 drivers/dma/ipu/ipu_idmac.c struct idmac_video_param *video = &ichan->params.video; ichan 850 drivers/dma/ipu/ipu_idmac.c WARN_ON(ichan->sg[0] || ichan->sg[1]); ichan 852 drivers/dma/ipu/ipu_idmac.c cookie = ipu_init_channel_buffer(ichan, ichan 869 drivers/dma/ipu/ipu_idmac.c spin_lock_irqsave(&ichan->lock, flags); ichan 871 drivers/dma/ipu/ipu_idmac.c list_add_tail(&desc->list, &ichan->queue); ichan 873 drivers/dma/ipu/ipu_idmac.c ret = ipu_submit_channel_buffers(ichan, desc); ichan 875 drivers/dma/ipu/ipu_idmac.c spin_unlock_irqrestore(&ichan->lock, flags); ichan 882 drivers/dma/ipu/ipu_idmac.c if (ichan->status < IPU_CHANNEL_ENABLED) { ichan 883 drivers/dma/ipu/ipu_idmac.c ret = ipu_enable_channel(idmac, ichan); ichan 894 drivers/dma/ipu/ipu_idmac.c spin_lock_irqsave(&ichan->lock, flags); ichan 896 drivers/dma/ipu/ipu_idmac.c spin_unlock_irqrestore(&ichan->lock, flags); ichan 898 drivers/dma/ipu/ipu_idmac.c ichan->dma_chan.cookie = cookie; ichan 902 drivers/dma/ipu/ipu_idmac.c mutex_unlock(&ichan->chan_mutex); ichan 908 drivers/dma/ipu/ipu_idmac.c static int idmac_desc_alloc(struct idmac_channel *ichan, int n) ichan 912 drivers/dma/ipu/ipu_idmac.c struct idmac *idmac = to_idmac(ichan->dma_chan.device); ichan 920 drivers/dma/ipu/ipu_idmac.c ichan->n_tx_desc = n; ichan 921 drivers/dma/ipu/ipu_idmac.c ichan->desc = desc; ichan 922 drivers/dma/ipu/ipu_idmac.c INIT_LIST_HEAD(&ichan->queue); ichan 923 drivers/dma/ipu/ipu_idmac.c INIT_LIST_HEAD(&ichan->free_list); ichan 929 drivers/dma/ipu/ipu_idmac.c dma_async_tx_descriptor_init(txd, &ichan->dma_chan); ichan 932 drivers/dma/ipu/ipu_idmac.c list_add(&desc->list, &ichan->free_list); ichan 948 drivers/dma/ipu/ipu_idmac.c static int ipu_init_channel(struct idmac *idmac, struct idmac_channel *ichan) ichan 950 drivers/dma/ipu/ipu_idmac.c union ipu_channel_param *params = &ichan->params; ichan 952 drivers/dma/ipu/ipu_idmac.c enum ipu_channel channel = ichan->dma_chan.chan_id; ichan 994 drivers/dma/ipu/ipu_idmac.c if (n_desc && !ichan->desc) ichan 995 drivers/dma/ipu/ipu_idmac.c ret = idmac_desc_alloc(ichan, n_desc); ichan 1007 drivers/dma/ipu/ipu_idmac.c static void ipu_uninit_channel(struct idmac *idmac, struct idmac_channel *ichan) ichan 1009 drivers/dma/ipu/ipu_idmac.c enum ipu_channel channel = ichan->dma_chan.chan_id; ichan 1029 drivers/dma/ipu/ipu_idmac.c ichan->sec_chan_en = false; ichan 1056 drivers/dma/ipu/ipu_idmac.c ichan->n_tx_desc = 0; ichan 1057 drivers/dma/ipu/ipu_idmac.c vfree(ichan->desc); ichan 1058 drivers/dma/ipu/ipu_idmac.c ichan->desc = NULL; ichan 1069 drivers/dma/ipu/ipu_idmac.c static int ipu_disable_channel(struct idmac *idmac, struct idmac_channel *ichan, ichan 1072 drivers/dma/ipu/ipu_idmac.c enum ipu_channel channel = ichan->dma_chan.chan_id; ichan 1105 drivers/dma/ipu/ipu_idmac.c timeout && !ipu_irq_status(ichan->eof_irq); timeout--) ichan 1123 drivers/dma/ipu/ipu_idmac.c static struct scatterlist *idmac_sg_next(struct idmac_channel *ichan, ichan 1132 drivers/dma/ipu/ipu_idmac.c if ((*desc)->list.next == &ichan->queue) ichan 1155 drivers/dma/ipu/ipu_idmac.c struct idmac_channel *ichan = dev_id; ichan 1156 drivers/dma/ipu/ipu_idmac.c struct device *dev = &ichan->dma_chan.dev->device; ichan 1157 drivers/dma/ipu/ipu_idmac.c unsigned int chan_id = ichan->dma_chan.chan_id; ichan 1168 drivers/dma/ipu/ipu_idmac.c dev_dbg(dev, "IDMAC irq %d, buf %d\n", irq, ichan->active_buffer); ichan 1194 drivers/dma/ipu/ipu_idmac.c spin_lock(&ichan->lock); ichan 1195 drivers/dma/ipu/ipu_idmac.c if (unlikely((ichan->active_buffer && (ready1 >> chan_id) & 1) || ichan 1196 drivers/dma/ipu/ipu_idmac.c (!ichan->active_buffer && (ready0 >> chan_id) & 1) ichan 1198 drivers/dma/ipu/ipu_idmac.c spin_unlock(&ichan->lock); ichan 1202 drivers/dma/ipu/ipu_idmac.c ichan->active_buffer, ready0, ready1); ichan 1206 drivers/dma/ipu/ipu_idmac.c if (unlikely(list_empty(&ichan->queue))) { ichan 1207 drivers/dma/ipu/ipu_idmac.c ichan->sg[ichan->active_buffer] = NULL; ichan 1208 drivers/dma/ipu/ipu_idmac.c spin_unlock(&ichan->lock); ichan 1212 drivers/dma/ipu/ipu_idmac.c ichan->active_buffer, ready0, ready1); ichan 1221 drivers/dma/ipu/ipu_idmac.c sg = &ichan->sg[ichan->active_buffer]; ichan 1222 drivers/dma/ipu/ipu_idmac.c sgnext = ichan->sg[!ichan->active_buffer]; ichan 1225 drivers/dma/ipu/ipu_idmac.c spin_unlock(&ichan->lock); ichan 1229 drivers/dma/ipu/ipu_idmac.c desc = list_entry(ichan->queue.next, struct idmac_tx_desc, list); ichan 1235 drivers/dma/ipu/ipu_idmac.c ichan->active_buffer, curbuf); ichan 1238 drivers/dma/ipu/ipu_idmac.c sgnew = idmac_sg_next(ichan, &descnew, *sg); ichan 1249 drivers/dma/ipu/ipu_idmac.c ichan->sg[!ichan->active_buffer] = sgnew; ichan 1252 drivers/dma/ipu/ipu_idmac.c ipu_submit_buffer(ichan, descnew, sgnew, !ichan->active_buffer); ichan 1257 drivers/dma/ipu/ipu_idmac.c ichan->status = IPU_CHANNEL_READY; ichan 1263 drivers/dma/ipu/ipu_idmac.c sgnew = idmac_sg_next(ichan, &descnew, sgnew); ichan 1277 drivers/dma/ipu/ipu_idmac.c ipu_submit_buffer(ichan, descnew, sgnew, ichan->active_buffer) < 0) { ichan 1281 drivers/dma/ipu/ipu_idmac.c spin_unlock(&ichan->lock); ichan 1284 drivers/dma/ipu/ipu_idmac.c spin_lock(&ichan->lock); ichan 1288 drivers/dma/ipu/ipu_idmac.c ichan->active_buffer = !ichan->active_buffer; ichan 1294 drivers/dma/ipu/ipu_idmac.c spin_unlock(&ichan->lock); ichan 1308 drivers/dma/ipu/ipu_idmac.c struct idmac_channel *ichan = ipu->channel + i; ichan 1314 drivers/dma/ipu/ipu_idmac.c for (j = 0; j < ichan->n_tx_desc; j++) { ichan 1315 drivers/dma/ipu/ipu_idmac.c desc = ichan->desc + j; ichan 1316 drivers/dma/ipu/ipu_idmac.c spin_lock_irqsave(&ichan->lock, flags); ichan 1318 drivers/dma/ipu/ipu_idmac.c list_move(&desc->list, &ichan->free_list); ichan 1320 drivers/dma/ipu/ipu_idmac.c if (ichan->sg[0] == sg) ichan 1321 drivers/dma/ipu/ipu_idmac.c ichan->sg[0] = NULL; ichan 1322 drivers/dma/ipu/ipu_idmac.c else if (ichan->sg[1] == sg) ichan 1323 drivers/dma/ipu/ipu_idmac.c ichan->sg[1] = NULL; ichan 1327 drivers/dma/ipu/ipu_idmac.c spin_unlock_irqrestore(&ichan->lock, flags); ichan 1338 drivers/dma/ipu/ipu_idmac.c struct idmac_channel *ichan = to_idmac_chan(chan); ichan 1353 drivers/dma/ipu/ipu_idmac.c mutex_lock(&ichan->chan_mutex); ichan 1355 drivers/dma/ipu/ipu_idmac.c spin_lock_irqsave(&ichan->lock, flags); ichan 1356 drivers/dma/ipu/ipu_idmac.c if (!list_empty(&ichan->free_list)) { ichan 1357 drivers/dma/ipu/ipu_idmac.c desc = list_entry(ichan->free_list.next, ichan 1367 drivers/dma/ipu/ipu_idmac.c spin_unlock_irqrestore(&ichan->lock, flags); ichan 1369 drivers/dma/ipu/ipu_idmac.c mutex_unlock(&ichan->chan_mutex); ichan 1379 drivers/dma/ipu/ipu_idmac.c struct idmac_channel *ichan = to_idmac_chan(chan); ichan 1386 drivers/dma/ipu/ipu_idmac.c ipu_select_buffer(chan->chan_id, ichan->active_buffer); ichan 1399 drivers/dma/ipu/ipu_idmac.c struct idmac_channel *ichan = to_idmac_chan(chan); ichan 1405 drivers/dma/ipu/ipu_idmac.c mutex_lock(&ichan->chan_mutex); ichan 1411 drivers/dma/ipu/ipu_idmac.c list_for_each_safe(list, tmp, &ichan->queue) ichan 1414 drivers/dma/ipu/ipu_idmac.c ichan->sg[0] = NULL; ichan 1415 drivers/dma/ipu/ipu_idmac.c ichan->sg[1] = NULL; ichan 1419 drivers/dma/ipu/ipu_idmac.c ichan->status = IPU_CHANNEL_INITIALIZED; ichan 1421 drivers/dma/ipu/ipu_idmac.c mutex_unlock(&ichan->chan_mutex); ichan 1428 drivers/dma/ipu/ipu_idmac.c struct idmac_channel *ichan = to_idmac_chan(chan); ichan 1434 drivers/dma/ipu/ipu_idmac.c ipu_disable_channel(idmac, ichan, ichan 1435 drivers/dma/ipu/ipu_idmac.c ichan->status >= IPU_CHANNEL_ENABLED); ichan 1440 drivers/dma/ipu/ipu_idmac.c spin_lock_irqsave(&ichan->lock, flags); ichan 1441 drivers/dma/ipu/ipu_idmac.c list_splice_init(&ichan->queue, &ichan->free_list); ichan 1443 drivers/dma/ipu/ipu_idmac.c if (ichan->desc) ichan 1444 drivers/dma/ipu/ipu_idmac.c for (i = 0; i < ichan->n_tx_desc; i++) { ichan 1445 drivers/dma/ipu/ipu_idmac.c struct idmac_tx_desc *desc = ichan->desc + i; ichan 1448 drivers/dma/ipu/ipu_idmac.c list_add(&desc->list, &ichan->free_list); ichan 1453 drivers/dma/ipu/ipu_idmac.c ichan->sg[0] = NULL; ichan 1454 drivers/dma/ipu/ipu_idmac.c ichan->sg[1] = NULL; ichan 1455 drivers/dma/ipu/ipu_idmac.c spin_unlock_irqrestore(&ichan->lock, flags); ichan 1459 drivers/dma/ipu/ipu_idmac.c ichan->status = IPU_CHANNEL_INITIALIZED; ichan 1466 drivers/dma/ipu/ipu_idmac.c struct idmac_channel *ichan = to_idmac_chan(chan); ichan 1469 drivers/dma/ipu/ipu_idmac.c mutex_lock(&ichan->chan_mutex); ichan 1473 drivers/dma/ipu/ipu_idmac.c mutex_unlock(&ichan->chan_mutex); ichan 1481 drivers/dma/ipu/ipu_idmac.c struct idmac_channel *ichan = dev_id; ichan 1483 drivers/dma/ipu/ipu_idmac.c irq, ichan->dma_chan.chan_id); ichan 1490 drivers/dma/ipu/ipu_idmac.c struct idmac_channel *ichan = dev_id; ichan 1492 drivers/dma/ipu/ipu_idmac.c irq, ichan->dma_chan.chan_id); ichan 1502 drivers/dma/ipu/ipu_idmac.c struct idmac_channel *ichan = to_idmac_chan(chan); ichan 1508 drivers/dma/ipu/ipu_idmac.c WARN_ON(ichan->status != IPU_CHANNEL_FREE); ichan 1516 drivers/dma/ipu/ipu_idmac.c ichan->eof_irq = ret; ichan 1522 drivers/dma/ipu/ipu_idmac.c ipu_disable_channel(idmac, ichan, true); ichan 1524 drivers/dma/ipu/ipu_idmac.c ret = ipu_init_channel(idmac, ichan); ichan 1528 drivers/dma/ipu/ipu_idmac.c ret = request_irq(ichan->eof_irq, idmac_interrupt, 0, ichan 1529 drivers/dma/ipu/ipu_idmac.c ichan->eof_name, ichan); ichan 1537 drivers/dma/ipu/ipu_idmac.c ret = request_irq(ic_sof, ic_sof_irq, 0, "IC SOF", ichan); ichan 1543 drivers/dma/ipu/ipu_idmac.c ret = request_irq(ic_eof, ic_eof_irq, 0, "IC EOF", ichan); ichan 1550 drivers/dma/ipu/ipu_idmac.c ichan->status = IPU_CHANNEL_INITIALIZED; ichan 1553 drivers/dma/ipu/ipu_idmac.c chan->chan_id, ichan->eof_irq); ichan 1558 drivers/dma/ipu/ipu_idmac.c ipu_uninit_channel(idmac, ichan); ichan 1567 drivers/dma/ipu/ipu_idmac.c struct idmac_channel *ichan = to_idmac_chan(chan); ichan 1570 drivers/dma/ipu/ipu_idmac.c mutex_lock(&ichan->chan_mutex); ichan 1574 drivers/dma/ipu/ipu_idmac.c if (ichan->status > IPU_CHANNEL_FREE) { ichan 1578 drivers/dma/ipu/ipu_idmac.c free_irq(ic_sof, ichan); ichan 1583 drivers/dma/ipu/ipu_idmac.c free_irq(ic_eof, ichan); ichan 1589 drivers/dma/ipu/ipu_idmac.c free_irq(ichan->eof_irq, ichan); ichan 1593 drivers/dma/ipu/ipu_idmac.c ichan->status = IPU_CHANNEL_FREE; ichan 1595 drivers/dma/ipu/ipu_idmac.c ipu_uninit_channel(idmac, ichan); ichan 1597 drivers/dma/ipu/ipu_idmac.c mutex_unlock(&ichan->chan_mutex); ichan 1631 drivers/dma/ipu/ipu_idmac.c struct idmac_channel *ichan = ipu->channel + i; ichan 1632 drivers/dma/ipu/ipu_idmac.c struct dma_chan *dma_chan = &ichan->dma_chan; ichan 1634 drivers/dma/ipu/ipu_idmac.c spin_lock_init(&ichan->lock); ichan 1635 drivers/dma/ipu/ipu_idmac.c mutex_init(&ichan->chan_mutex); ichan 1637 drivers/dma/ipu/ipu_idmac.c ichan->status = IPU_CHANNEL_FREE; ichan 1638 drivers/dma/ipu/ipu_idmac.c ichan->sec_chan_en = false; ichan 1639 drivers/dma/ipu/ipu_idmac.c snprintf(ichan->eof_name, sizeof(ichan->eof_name), "IDMAC EOF %d", i); ichan 1658 drivers/dma/ipu/ipu_idmac.c struct idmac_channel *ichan = ipu->channel + i; ichan 1660 drivers/dma/ipu/ipu_idmac.c idmac_terminate_all(&ichan->dma_chan); ichan 79 drivers/net/wireless/ath/ath9k/ar9002_calib.c struct ath9k_channel *ichan, ichan 73 drivers/net/wireless/ath/ath9k/ar9003_calib.c struct ath9k_channel *ichan, ichan 300 drivers/net/wireless/ath/ath9k/common.c static void ath9k_cmn_update_ichannel(struct ath9k_channel *ichan, ichan 306 drivers/net/wireless/ath/ath9k/common.c ichan->channel = chan->center_freq; ichan 307 drivers/net/wireless/ath/ath9k/common.c ichan->chan = chan; ichan 334 drivers/net/wireless/ath/ath9k/common.c ichan->channelFlags = flags; ichan 25 drivers/net/wireless/ath/ath9k/htc_drv_main.c struct ath9k_channel *ichan) ichan 27 drivers/net/wireless/ath/ath9k/htc_drv_main.c if (IS_CHAN_5GHZ(ichan)) ichan 389 drivers/video/fbdev/mx3fb.c struct idmac_channel *ichan = mx3_fbi->idmac_channel; ichan 390 drivers/video/fbdev/mx3fb.c struct dma_chan *dma_chan = &ichan->dma_chan; ichan 415 drivers/video/fbdev/mx3fb.c mx3_fbi->txd, cookie, list_empty(&ichan->queue) ? '-' : '+'); ichan 427 drivers/video/fbdev/mx3fb.c mx3_fbi->txd, cookie, list_empty(&ichan->queue) ? '-' : '+'); ichan 799 drivers/video/fbdev/mx3fb.c struct idmac_channel *ichan = mx3_fbi->idmac_channel; ichan 800 drivers/video/fbdev/mx3fb.c struct idmac_video_param *video = &ichan->params.video; ichan 906 drivers/video/fbdev/mx3fb.c struct idmac_channel *ichan = mx3_fbi->idmac_channel; ichan 909 drivers/video/fbdev/mx3fb.c dev_dbg(mx3fb->dev, "%s [%c]\n", __func__, list_empty(&ichan->queue) ? '-' : '+'); ichan 1425 drivers/video/fbdev/mx3fb.c static int init_fb_chan(struct mx3fb_data *mx3fb, struct idmac_channel *ichan) ichan 1442 drivers/video/fbdev/mx3fb.c ichan->client = mx3fb; ichan 1443 drivers/video/fbdev/mx3fb.c irq = ichan->eof_irq; ichan 1445 drivers/video/fbdev/mx3fb.c if (ichan->dma_chan.chan_id != IDMAC_SDC_0) ichan 1490 drivers/video/fbdev/mx3fb.c mx3fbi->idmac_channel = ichan; ichan 1491 drivers/video/fbdev/mx3fb.c mx3fbi->ipu_ch = ichan->dma_chan.chan_id; ichan 1498 drivers/video/fbdev/mx3fb.c disable_irq(ichan->eof_irq); ichan 1499 drivers/video/fbdev/mx3fb.c dev_dbg(mx3fb->dev, "disabling irq %d\n", ichan->eof_irq);