iop_chan 53 drivers/dma/iop-adma.c struct iop_adma_chan *iop_chan, dma_cookie_t cookie) iop_chan 80 drivers/dma/iop-adma.c struct iop_adma_chan *iop_chan) iop_chan 91 drivers/dma/iop-adma.c if (desc->chain_node.next == &iop_chan->chain) iop_chan 94 drivers/dma/iop-adma.c dev_dbg(iop_chan->device->common.dev, iop_chan 104 drivers/dma/iop-adma.c static void __iop_adma_slot_cleanup(struct iop_adma_chan *iop_chan) iop_chan 108 drivers/dma/iop-adma.c u32 current_desc = iop_chan_get_current_descriptor(iop_chan); iop_chan 109 drivers/dma/iop-adma.c int busy = iop_chan_is_busy(iop_chan); iop_chan 112 drivers/dma/iop-adma.c dev_dbg(iop_chan->device->common.dev, "%s\n", __func__); iop_chan 116 drivers/dma/iop-adma.c list_for_each_entry_safe(iter, _iter, &iop_chan->chain, iop_chan 173 drivers/dma/iop-adma.c &iop_chan->chain, chain_node) { iop_chan 191 drivers/dma/iop-adma.c &iop_chan->chain, chain_node) { iop_chan 193 drivers/dma/iop-adma.c grp_iter, iop_chan, cookie); iop_chan 197 drivers/dma/iop-adma.c iop_chan); iop_chan 221 drivers/dma/iop-adma.c iter, iop_chan, cookie); iop_chan 223 drivers/dma/iop-adma.c if (iop_adma_clean_slot(iter, iop_chan)) iop_chan 228 drivers/dma/iop-adma.c iop_chan->common.completed_cookie = cookie; iop_chan 234 drivers/dma/iop-adma.c iop_adma_slot_cleanup(struct iop_adma_chan *iop_chan) iop_chan 236 drivers/dma/iop-adma.c spin_lock_bh(&iop_chan->lock); iop_chan 237 drivers/dma/iop-adma.c __iop_adma_slot_cleanup(iop_chan); iop_chan 238 drivers/dma/iop-adma.c spin_unlock_bh(&iop_chan->lock); iop_chan 243 drivers/dma/iop-adma.c struct iop_adma_chan *iop_chan = (struct iop_adma_chan *) data; iop_chan 250 drivers/dma/iop-adma.c spin_lock_nested(&iop_chan->lock, SINGLE_DEPTH_NESTING); iop_chan 251 drivers/dma/iop-adma.c __iop_adma_slot_cleanup(iop_chan); iop_chan 252 drivers/dma/iop-adma.c spin_unlock(&iop_chan->lock); iop_chan 256 drivers/dma/iop-adma.c iop_adma_alloc_slots(struct iop_adma_chan *iop_chan, int num_slots, iop_chan 270 drivers/dma/iop-adma.c iter = iop_chan->last_used; iop_chan 272 drivers/dma/iop-adma.c iter = list_entry(&iop_chan->all_slots, iop_chan 277 drivers/dma/iop-adma.c iter, _iter, &iop_chan->all_slots, slot_node) { iop_chan 307 drivers/dma/iop-adma.c dev_dbg(iop_chan->device->common.dev, iop_chan 334 drivers/dma/iop-adma.c iop_chan->last_used = last_used; iop_chan 344 drivers/dma/iop-adma.c __iop_adma_slot_cleanup(iop_chan); iop_chan 349 drivers/dma/iop-adma.c static void iop_adma_check_threshold(struct iop_adma_chan *iop_chan) iop_chan 351 drivers/dma/iop-adma.c dev_dbg(iop_chan->device->common.dev, "pending: %d\n", iop_chan 352 drivers/dma/iop-adma.c iop_chan->pending); iop_chan 354 drivers/dma/iop-adma.c if (iop_chan->pending >= IOP_ADMA_THRESHOLD) { iop_chan 355 drivers/dma/iop-adma.c iop_chan->pending = 0; iop_chan 356 drivers/dma/iop-adma.c iop_chan_append(iop_chan); iop_chan 364 drivers/dma/iop-adma.c struct iop_adma_chan *iop_chan = to_iop_adma_chan(tx->chan); iop_chan 373 drivers/dma/iop-adma.c spin_lock_bh(&iop_chan->lock); iop_chan 376 drivers/dma/iop-adma.c old_chain_tail = list_entry(iop_chan->chain.prev, iop_chan 394 drivers/dma/iop-adma.c iop_chan->pending += slot_cnt; iop_chan 395 drivers/dma/iop-adma.c iop_adma_check_threshold(iop_chan); iop_chan 396 drivers/dma/iop-adma.c spin_unlock_bh(&iop_chan->lock); iop_chan 398 drivers/dma/iop-adma.c dev_dbg(iop_chan->device->common.dev, "%s cookie: %d slot: %d\n", iop_chan 404 drivers/dma/iop-adma.c static void iop_chan_start_null_memcpy(struct iop_adma_chan *iop_chan); iop_chan 405 drivers/dma/iop-adma.c static void iop_chan_start_null_xor(struct iop_adma_chan *iop_chan); iop_chan 421 drivers/dma/iop-adma.c struct iop_adma_chan *iop_chan = to_iop_adma_chan(chan); iop_chan 423 drivers/dma/iop-adma.c int init = iop_chan->slots_allocated ? 0 : 1; iop_chan 425 drivers/dma/iop-adma.c dev_get_platdata(&iop_chan->device->pdev->dev); iop_chan 430 drivers/dma/iop-adma.c idx = iop_chan->slots_allocated; iop_chan 440 drivers/dma/iop-adma.c hw_desc = (char *) iop_chan->device->dma_desc_pool_virt; iop_chan 448 drivers/dma/iop-adma.c hw_desc = (char *) iop_chan->device->dma_desc_pool; iop_chan 453 drivers/dma/iop-adma.c spin_lock_bh(&iop_chan->lock); iop_chan 454 drivers/dma/iop-adma.c iop_chan->slots_allocated++; iop_chan 455 drivers/dma/iop-adma.c list_add_tail(&slot->slot_node, &iop_chan->all_slots); iop_chan 456 drivers/dma/iop-adma.c spin_unlock_bh(&iop_chan->lock); iop_chan 457 drivers/dma/iop-adma.c } while (iop_chan->slots_allocated < num_descs_in_pool); iop_chan 459 drivers/dma/iop-adma.c if (idx && !iop_chan->last_used) iop_chan 460 drivers/dma/iop-adma.c iop_chan->last_used = list_entry(iop_chan->all_slots.next, iop_chan 464 drivers/dma/iop-adma.c dev_dbg(iop_chan->device->common.dev, iop_chan 466 drivers/dma/iop-adma.c iop_chan->slots_allocated, iop_chan->last_used); iop_chan 471 drivers/dma/iop-adma.c iop_chan->device->common.cap_mask)) iop_chan 472 drivers/dma/iop-adma.c iop_chan_start_null_memcpy(iop_chan); iop_chan 474 drivers/dma/iop-adma.c iop_chan->device->common.cap_mask)) iop_chan 475 drivers/dma/iop-adma.c iop_chan_start_null_xor(iop_chan); iop_chan 486 drivers/dma/iop-adma.c struct iop_adma_chan *iop_chan = to_iop_adma_chan(chan); iop_chan 490 drivers/dma/iop-adma.c dev_dbg(iop_chan->device->common.dev, "%s\n", __func__); iop_chan 492 drivers/dma/iop-adma.c spin_lock_bh(&iop_chan->lock); iop_chan 493 drivers/dma/iop-adma.c slot_cnt = iop_chan_interrupt_slot_count(&slots_per_op, iop_chan); iop_chan 494 drivers/dma/iop-adma.c sw_desc = iop_adma_alloc_slots(iop_chan, slot_cnt, slots_per_op); iop_chan 497 drivers/dma/iop-adma.c iop_desc_init_interrupt(grp_start, iop_chan); iop_chan 500 drivers/dma/iop-adma.c spin_unlock_bh(&iop_chan->lock); iop_chan 509 drivers/dma/iop-adma.c struct iop_adma_chan *iop_chan = to_iop_adma_chan(chan); iop_chan 517 drivers/dma/iop-adma.c dev_dbg(iop_chan->device->common.dev, "%s len: %zu\n", iop_chan 520 drivers/dma/iop-adma.c spin_lock_bh(&iop_chan->lock); iop_chan 522 drivers/dma/iop-adma.c sw_desc = iop_adma_alloc_slots(iop_chan, slot_cnt, slots_per_op); iop_chan 526 drivers/dma/iop-adma.c iop_desc_set_byte_count(grp_start, iop_chan, len); iop_chan 527 drivers/dma/iop-adma.c iop_desc_set_dest_addr(grp_start, iop_chan, dma_dest); iop_chan 531 drivers/dma/iop-adma.c spin_unlock_bh(&iop_chan->lock); iop_chan 541 drivers/dma/iop-adma.c struct iop_adma_chan *iop_chan = to_iop_adma_chan(chan); iop_chan 549 drivers/dma/iop-adma.c dev_dbg(iop_chan->device->common.dev, iop_chan 553 drivers/dma/iop-adma.c spin_lock_bh(&iop_chan->lock); iop_chan 555 drivers/dma/iop-adma.c sw_desc = iop_adma_alloc_slots(iop_chan, slot_cnt, slots_per_op); iop_chan 559 drivers/dma/iop-adma.c iop_desc_set_byte_count(grp_start, iop_chan, len); iop_chan 560 drivers/dma/iop-adma.c iop_desc_set_dest_addr(grp_start, iop_chan, dma_dest); iop_chan 566 drivers/dma/iop-adma.c spin_unlock_bh(&iop_chan->lock); iop_chan 576 drivers/dma/iop-adma.c struct iop_adma_chan *iop_chan = to_iop_adma_chan(chan); iop_chan 583 drivers/dma/iop-adma.c dev_dbg(iop_chan->device->common.dev, "%s src_cnt: %d len: %zu\n", iop_chan 586 drivers/dma/iop-adma.c spin_lock_bh(&iop_chan->lock); iop_chan 588 drivers/dma/iop-adma.c sw_desc = iop_adma_alloc_slots(iop_chan, slot_cnt, slots_per_op); iop_chan 601 drivers/dma/iop-adma.c spin_unlock_bh(&iop_chan->lock); iop_chan 611 drivers/dma/iop-adma.c struct iop_adma_chan *iop_chan = to_iop_adma_chan(chan); iop_chan 620 drivers/dma/iop-adma.c dev_dbg(iop_chan->device->common.dev, iop_chan 631 drivers/dma/iop-adma.c spin_lock_bh(&iop_chan->lock); iop_chan 633 drivers/dma/iop-adma.c sw_desc = iop_adma_alloc_slots(iop_chan, slot_cnt, slots_per_op); iop_chan 638 drivers/dma/iop-adma.c iop_desc_set_byte_count(g, iop_chan, len); iop_chan 665 drivers/dma/iop-adma.c spin_unlock_bh(&iop_chan->lock); iop_chan 676 drivers/dma/iop-adma.c struct iop_adma_chan *iop_chan = to_iop_adma_chan(chan); iop_chan 684 drivers/dma/iop-adma.c dev_dbg(iop_chan->device->common.dev, "%s src_cnt: %d len: %zu\n", iop_chan 687 drivers/dma/iop-adma.c spin_lock_bh(&iop_chan->lock); iop_chan 689 drivers/dma/iop-adma.c sw_desc = iop_adma_alloc_slots(iop_chan, slot_cnt, slots_per_op); iop_chan 709 drivers/dma/iop-adma.c spin_unlock_bh(&iop_chan->lock); iop_chan 716 drivers/dma/iop-adma.c struct iop_adma_chan *iop_chan = to_iop_adma_chan(chan); iop_chan 720 drivers/dma/iop-adma.c iop_adma_slot_cleanup(iop_chan); iop_chan 722 drivers/dma/iop-adma.c spin_lock_bh(&iop_chan->lock); iop_chan 723 drivers/dma/iop-adma.c list_for_each_entry_safe(iter, _iter, &iop_chan->chain, iop_chan 729 drivers/dma/iop-adma.c iter, _iter, &iop_chan->all_slots, slot_node) { iop_chan 732 drivers/dma/iop-adma.c iop_chan->slots_allocated--; iop_chan 734 drivers/dma/iop-adma.c iop_chan->last_used = NULL; iop_chan 736 drivers/dma/iop-adma.c dev_dbg(iop_chan->device->common.dev, "%s slots_allocated %d\n", iop_chan 737 drivers/dma/iop-adma.c __func__, iop_chan->slots_allocated); iop_chan 738 drivers/dma/iop-adma.c spin_unlock_bh(&iop_chan->lock); iop_chan 756 drivers/dma/iop-adma.c struct iop_adma_chan *iop_chan = to_iop_adma_chan(chan); iop_chan 763 drivers/dma/iop-adma.c iop_adma_slot_cleanup(iop_chan); iop_chan 818 drivers/dma/iop-adma.c struct iop_adma_chan *iop_chan = to_iop_adma_chan(chan); iop_chan 820 drivers/dma/iop-adma.c if (iop_chan->pending) { iop_chan 821 drivers/dma/iop-adma.c iop_chan->pending = 0; iop_chan 822 drivers/dma/iop-adma.c iop_chan_append(iop_chan); iop_chan 840 drivers/dma/iop-adma.c struct iop_adma_chan *iop_chan; iop_chan 886 drivers/dma/iop-adma.c iop_chan = to_iop_adma_chan(dma_chan); iop_chan 887 drivers/dma/iop-adma.c dma_sync_single_for_cpu(&iop_chan->device->pdev->dev, dest_dma, iop_chan 921 drivers/dma/iop-adma.c struct iop_adma_chan *iop_chan; iop_chan 986 drivers/dma/iop-adma.c iop_chan = to_iop_adma_chan(dma_chan); iop_chan 987 drivers/dma/iop-adma.c dma_sync_single_for_cpu(&iop_chan->device->pdev->dev, dest_dma, iop_chan 998 drivers/dma/iop-adma.c dma_sync_single_for_device(&iop_chan->device->pdev->dev, dest_dma, iop_chan 1246 drivers/dma/iop-adma.c struct iop_adma_chan *iop_chan; iop_chan 1256 drivers/dma/iop-adma.c iop_chan = to_iop_adma_chan(chan); iop_chan 1258 drivers/dma/iop-adma.c kfree(iop_chan); iop_chan 1270 drivers/dma/iop-adma.c struct iop_adma_chan *iop_chan; iop_chan 1342 drivers/dma/iop-adma.c iop_chan = kzalloc(sizeof(*iop_chan), GFP_KERNEL); iop_chan 1343 drivers/dma/iop-adma.c if (!iop_chan) { iop_chan 1347 drivers/dma/iop-adma.c iop_chan->device = adev; iop_chan 1349 drivers/dma/iop-adma.c iop_chan->mmr_base = devm_ioremap(&pdev->dev, res->start, iop_chan 1351 drivers/dma/iop-adma.c if (!iop_chan->mmr_base) { iop_chan 1355 drivers/dma/iop-adma.c tasklet_init(&iop_chan->irq_tasklet, iop_adma_tasklet, (unsigned long) iop_chan 1356 drivers/dma/iop-adma.c iop_chan); iop_chan 1359 drivers/dma/iop-adma.c iop_adma_device_clear_err_status(iop_chan); iop_chan 1371 drivers/dma/iop-adma.c handler[i], 0, pdev->name, iop_chan); iop_chan 1377 drivers/dma/iop-adma.c spin_lock_init(&iop_chan->lock); iop_chan 1378 drivers/dma/iop-adma.c INIT_LIST_HEAD(&iop_chan->chain); iop_chan 1379 drivers/dma/iop-adma.c INIT_LIST_HEAD(&iop_chan->all_slots); iop_chan 1380 drivers/dma/iop-adma.c iop_chan->common.device = dma_dev; iop_chan 1381 drivers/dma/iop-adma.c dma_cookie_init(&iop_chan->common); iop_chan 1382 drivers/dma/iop-adma.c list_add_tail(&iop_chan->common.device_node, &dma_dev->channels); iop_chan 1425 drivers/dma/iop-adma.c kfree(iop_chan); iop_chan 1435 drivers/dma/iop-adma.c static void iop_chan_start_null_memcpy(struct iop_adma_chan *iop_chan) iop_chan 1441 drivers/dma/iop-adma.c dev_dbg(iop_chan->device->common.dev, "%s\n", __func__); iop_chan 1443 drivers/dma/iop-adma.c spin_lock_bh(&iop_chan->lock); iop_chan 1445 drivers/dma/iop-adma.c sw_desc = iop_adma_alloc_slots(iop_chan, slot_cnt, slots_per_op); iop_chan 1449 drivers/dma/iop-adma.c list_splice_init(&sw_desc->tx_list, &iop_chan->chain); iop_chan 1452 drivers/dma/iop-adma.c iop_desc_set_byte_count(grp_start, iop_chan, 0); iop_chan 1453 drivers/dma/iop-adma.c iop_desc_set_dest_addr(grp_start, iop_chan, 0); iop_chan 1461 drivers/dma/iop-adma.c iop_chan->common.completed_cookie = cookie - 1; iop_chan 1464 drivers/dma/iop-adma.c BUG_ON(iop_chan_is_busy(iop_chan)); iop_chan 1467 drivers/dma/iop-adma.c iop_adma_device_clear_err_status(iop_chan); iop_chan 1470 drivers/dma/iop-adma.c iop_chan_disable(iop_chan); iop_chan 1473 drivers/dma/iop-adma.c iop_chan_set_next_descriptor(iop_chan, sw_desc->async_tx.phys); iop_chan 1481 drivers/dma/iop-adma.c iop_chan_enable(iop_chan); iop_chan 1483 drivers/dma/iop-adma.c dev_err(iop_chan->device->common.dev, iop_chan 1485 drivers/dma/iop-adma.c spin_unlock_bh(&iop_chan->lock); iop_chan 1488 drivers/dma/iop-adma.c static void iop_chan_start_null_xor(struct iop_adma_chan *iop_chan) iop_chan 1494 drivers/dma/iop-adma.c dev_dbg(iop_chan->device->common.dev, "%s\n", __func__); iop_chan 1496 drivers/dma/iop-adma.c spin_lock_bh(&iop_chan->lock); iop_chan 1498 drivers/dma/iop-adma.c sw_desc = iop_adma_alloc_slots(iop_chan, slot_cnt, slots_per_op); iop_chan 1501 drivers/dma/iop-adma.c list_splice_init(&sw_desc->tx_list, &iop_chan->chain); iop_chan 1504 drivers/dma/iop-adma.c iop_desc_set_byte_count(grp_start, iop_chan, 0); iop_chan 1505 drivers/dma/iop-adma.c iop_desc_set_dest_addr(grp_start, iop_chan, 0); iop_chan 1514 drivers/dma/iop-adma.c iop_chan->common.completed_cookie = cookie - 1; iop_chan 1517 drivers/dma/iop-adma.c BUG_ON(iop_chan_is_busy(iop_chan)); iop_chan 1520 drivers/dma/iop-adma.c iop_adma_device_clear_err_status(iop_chan); iop_chan 1523 drivers/dma/iop-adma.c iop_chan_disable(iop_chan); iop_chan 1526 drivers/dma/iop-adma.c iop_chan_set_next_descriptor(iop_chan, sw_desc->async_tx.phys); iop_chan 1534 drivers/dma/iop-adma.c iop_chan_enable(iop_chan); iop_chan 1536 drivers/dma/iop-adma.c dev_err(iop_chan->device->common.dev, iop_chan 1538 drivers/dma/iop-adma.c spin_unlock_bh(&iop_chan->lock);