H A D | adma.c | 1456 * Caller must hold &ppc440spe_chan->lock while calling this function 1783 struct ppc440spe_adma_chan *ppc440spe_chan; ppc440spe_adma_alloc_chan_resources() local 1789 ppc440spe_chan = to_ppc440spe_adma_chan(chan); ppc440spe_adma_alloc_chan_resources() 1790 init = ppc440spe_chan->slots_allocated ? 0 : 1; ppc440spe_adma_alloc_chan_resources() 1791 chan->chan_id = ppc440spe_chan->device->id; ppc440spe_adma_alloc_chan_resources() 1794 i = ppc440spe_chan->slots_allocated; ppc440spe_adma_alloc_chan_resources() 1795 if (ppc440spe_chan->device->id != PPC440SPE_XOR_ID) ppc440spe_adma_alloc_chan_resources() 1800 for (; i < (ppc440spe_chan->device->pool_size / db_sz); i++) { ppc440spe_adma_alloc_chan_resources() 1809 hw_desc = (char *) ppc440spe_chan->device->dma_desc_pool_virt; ppc440spe_adma_alloc_chan_resources() 1816 slot->phys = ppc440spe_chan->device->dma_desc_pool + i * db_sz; ppc440spe_adma_alloc_chan_resources() 1819 spin_lock_bh(&ppc440spe_chan->lock); ppc440spe_adma_alloc_chan_resources() 1820 ppc440spe_chan->slots_allocated++; ppc440spe_adma_alloc_chan_resources() 1821 list_add_tail(&slot->slot_node, &ppc440spe_chan->all_slots); ppc440spe_adma_alloc_chan_resources() 1822 spin_unlock_bh(&ppc440spe_chan->lock); ppc440spe_adma_alloc_chan_resources() 1825 if (i && !ppc440spe_chan->last_used) { ppc440spe_adma_alloc_chan_resources() 1826 ppc440spe_chan->last_used = ppc440spe_adma_alloc_chan_resources() 1827 list_entry(ppc440spe_chan->all_slots.next, ppc440spe_adma_alloc_chan_resources() 1832 dev_dbg(ppc440spe_chan->device->common.dev, ppc440spe_adma_alloc_chan_resources() 1834 ppc440spe_chan->device->id, i); ppc440spe_adma_alloc_chan_resources() 1838 switch (ppc440spe_chan->device->id) { ppc440spe_adma_alloc_chan_resources() 1841 ppc440spe_chan->hw_chain_inited = 0; ppc440spe_adma_alloc_chan_resources() 1844 ppc440spe_r6_tchan = ppc440spe_chan; ppc440spe_adma_alloc_chan_resources() 1847 ppc440spe_chan_start_null_xor(ppc440spe_chan); ppc440spe_adma_alloc_chan_resources() 1852 ppc440spe_chan->needs_unmap = 1; ppc440spe_adma_alloc_chan_resources() 1964 struct ppc440spe_adma_chan *ppc440spe_chan; ppc440spe_adma_prep_dma_interrupt() local 1968 ppc440spe_chan = to_ppc440spe_adma_chan(chan); ppc440spe_adma_prep_dma_interrupt() 1970 dev_dbg(ppc440spe_chan->device->common.dev, ppc440spe_adma_prep_dma_interrupt() 1971 "ppc440spe adma%d: %s\n", ppc440spe_chan->device->id, ppc440spe_adma_prep_dma_interrupt() 1974 spin_lock_bh(&ppc440spe_chan->lock); ppc440spe_adma_prep_dma_interrupt() 1976 sw_desc = ppc440spe_adma_alloc_slots(ppc440spe_chan, slot_cnt, ppc440spe_adma_prep_dma_interrupt() 1980 ppc440spe_desc_init_interrupt(group_start, ppc440spe_chan); ppc440spe_adma_prep_dma_interrupt() 1984 spin_unlock_bh(&ppc440spe_chan->lock); ppc440spe_adma_prep_dma_interrupt() 1996 struct ppc440spe_adma_chan *ppc440spe_chan; ppc440spe_adma_prep_dma_memcpy() local 2000 ppc440spe_chan = to_ppc440spe_adma_chan(chan); ppc440spe_adma_prep_dma_memcpy() 2007 spin_lock_bh(&ppc440spe_chan->lock); ppc440spe_adma_prep_dma_memcpy() 2009 dev_dbg(ppc440spe_chan->device->common.dev, ppc440spe_adma_prep_dma_memcpy() 2011 ppc440spe_chan->device->id, __func__, len, ppc440spe_adma_prep_dma_memcpy() 2014 sw_desc = ppc440spe_adma_alloc_slots(ppc440spe_chan, slot_cnt, ppc440spe_adma_prep_dma_memcpy() 2021 ppc440spe_desc_set_byte_count(group_start, ppc440spe_chan, len); ppc440spe_adma_prep_dma_memcpy() 2025 spin_unlock_bh(&ppc440spe_chan->lock); ppc440spe_adma_prep_dma_memcpy() 2038 struct ppc440spe_adma_chan *ppc440spe_chan; ppc440spe_adma_prep_dma_xor() local 2042 ppc440spe_chan = to_ppc440spe_adma_chan(chan); ppc440spe_adma_prep_dma_xor() 2044 ADMA_LL_DBG(prep_dma_xor_dbg(ppc440spe_chan->device->id, ppc440spe_adma_prep_dma_xor() 2050 dev_dbg(ppc440spe_chan->device->common.dev, ppc440spe_adma_prep_dma_xor() 2052 ppc440spe_chan->device->id, __func__, src_cnt, len, ppc440spe_adma_prep_dma_xor() 2055 spin_lock_bh(&ppc440spe_chan->lock); ppc440spe_adma_prep_dma_xor() 2057 sw_desc = ppc440spe_adma_alloc_slots(ppc440spe_chan, slot_cnt, ppc440spe_adma_prep_dma_xor() 2066 ppc440spe_desc_set_byte_count(group_start, ppc440spe_chan, len); ppc440spe_adma_prep_dma_xor() 2070 spin_unlock_bh(&ppc440spe_chan->lock); ppc440spe_adma_prep_dma_xor() 2101 struct ppc440spe_adma_chan *ppc440spe_chan, ppc440spe_dma01_prep_mult() 2112 spin_lock_bh(&ppc440spe_chan->lock); ppc440spe_dma01_prep_mult() 2115 sw_desc = ppc440spe_adma_alloc_slots(ppc440spe_chan, slot_cnt, 1); ppc440spe_dma01_prep_mult() 2145 ppc440spe_desc_set_byte_count(iter, ppc440spe_chan, len); ppc440spe_dma01_prep_mult() 2171 ppc440spe_desc_set_byte_count(iter, ppc440spe_chan, len); ppc440spe_dma01_prep_mult() 2176 spin_unlock_bh(&ppc440spe_chan->lock); ppc440spe_dma01_prep_mult() 2187 struct ppc440spe_adma_chan *ppc440spe_chan, ppc440spe_dma01_prep_sum_product() 2198 spin_lock_bh(&ppc440spe_chan->lock); ppc440spe_dma01_prep_sum_product() 2201 sw_desc = ppc440spe_adma_alloc_slots(ppc440spe_chan, slot_cnt, 1); ppc440spe_dma01_prep_sum_product() 2226 ppc440spe_chan->qdest, 1); ppc440spe_dma01_prep_sum_product() 2229 ppc440spe_desc_set_byte_count(iter, ppc440spe_chan, len); ppc440spe_dma01_prep_sum_product() 2250 ppc440spe_chan->qdest); ppc440spe_dma01_prep_sum_product() 2255 ppc440spe_desc_set_byte_count(iter, ppc440spe_chan, len); ppc440spe_dma01_prep_sum_product() 2280 ppc440spe_desc_set_byte_count(iter, ppc440spe_chan, len); ppc440spe_dma01_prep_sum_product() 2285 spin_unlock_bh(&ppc440spe_chan->lock); ppc440spe_dma01_prep_sum_product() 2291 struct ppc440spe_adma_chan *ppc440spe_chan, ppc440spe_dma01_prep_pq() 2394 spin_lock_bh(&ppc440spe_chan->lock); ppc440spe_dma01_prep_pq() 2396 sw_desc = ppc440spe_adma_alloc_slots(ppc440spe_chan, slot_cnt, 1); ppc440spe_dma01_prep_pq() 2426 ppc440spe_chan, len); ppc440spe_dma01_prep_pq() 2430 spin_unlock_bh(&ppc440spe_chan->lock); ppc440spe_dma01_prep_pq() 2436 struct ppc440spe_adma_chan *ppc440spe_chan, ppc440spe_dma2_prep_pq() 2449 spin_lock_bh(&ppc440spe_chan->lock); ppc440spe_dma2_prep_pq() 2452 spin_unlock_bh(&ppc440spe_chan->lock); ppc440spe_dma2_prep_pq() 2459 sw_desc = ppc440spe_adma_alloc_slots(ppc440spe_chan, slot_cnt, 1); ppc440spe_dma2_prep_pq() 2466 ppc440spe_desc_set_byte_count(iter, ppc440spe_chan, ppc440spe_dma2_prep_pq() 2516 spin_unlock_bh(&ppc440spe_chan->lock); ppc440spe_dma2_prep_pq() 2529 struct ppc440spe_adma_chan *ppc440spe_chan; ppc440spe_adma_prep_dma_pq() local 2533 ppc440spe_chan = to_ppc440spe_adma_chan(chan); ppc440spe_adma_prep_dma_pq() 2535 ADMA_LL_DBG(prep_dma_pq_dbg(ppc440spe_chan->device->id, ppc440spe_adma_prep_dma_pq() 2547 dest[1] = ppc440spe_chan->qdest; ppc440spe_adma_prep_dma_pq() 2548 sw_desc = ppc440spe_dma01_prep_mult(ppc440spe_chan, ppc440spe_adma_prep_dma_pq() 2554 sw_desc = ppc440spe_dma01_prep_sum_product(ppc440spe_chan, ppc440spe_adma_prep_dma_pq() 2573 dev_dbg(ppc440spe_chan->device->common.dev, ppc440spe_adma_prep_dma_pq() 2575 ppc440spe_chan->device->id, __func__, src_cnt, len, ppc440spe_adma_prep_dma_pq() 2578 switch (ppc440spe_chan->device->id) { ppc440spe_adma_prep_dma_pq() 2581 sw_desc = ppc440spe_dma01_prep_pq(ppc440spe_chan, ppc440spe_adma_prep_dma_pq() 2587 sw_desc = ppc440spe_dma2_prep_pq(ppc440spe_chan, ppc440spe_adma_prep_dma_pq() 2605 struct ppc440spe_adma_chan *ppc440spe_chan; ppc440spe_adma_prep_dma_pqzero_sum() local 2610 ppc440spe_chan = to_ppc440spe_adma_chan(chan); ppc440spe_adma_prep_dma_pqzero_sum() 2622 ADMA_LL_DBG(prep_dma_pqzero_sum_dbg(ppc440spe_chan->device->id, ppc440spe_adma_prep_dma_pqzero_sum() 2636 spin_lock_bh(&ppc440spe_chan->lock); ppc440spe_adma_prep_dma_pqzero_sum() 2637 sw_desc = ppc440spe_adma_alloc_slots(ppc440spe_chan, slot_cnt, ppc440spe_adma_prep_dma_pqzero_sum() 2645 ppc440spe_desc_set_byte_count(iter, ppc440spe_chan, ppc440spe_adma_prep_dma_pqzero_sum() 2665 ppc440spe_chan->pdest, 0); ppc440spe_adma_prep_dma_pqzero_sum() 2667 ppc440spe_desc_set_byte_count(iter, ppc440spe_chan, ppc440spe_adma_prep_dma_pqzero_sum() 2671 pdest = ppc440spe_chan->pdest; ppc440spe_adma_prep_dma_pqzero_sum() 2697 ppc440spe_chan->qdest, 0); ppc440spe_adma_prep_dma_pqzero_sum() 2699 ppc440spe_desc_set_byte_count(iter, ppc440spe_chan, ppc440spe_adma_prep_dma_pqzero_sum() 2703 qdest = ppc440spe_chan->qdest; ppc440spe_adma_prep_dma_pqzero_sum() 2742 ppc440spe_desc_set_dcheck(iter, ppc440spe_chan, ppc440spe_adma_prep_dma_pqzero_sum() 2771 spin_unlock_bh(&ppc440spe_chan->lock); ppc440spe_adma_prep_dma_pqzero_sum() 3552 struct ppc440spe_adma_chan *ppc440spe_chan; ppc440spe_adma_free_chan_resources() local 3556 ppc440spe_chan = to_ppc440spe_adma_chan(chan); ppc440spe_adma_free_chan_resources() 3557 ppc440spe_adma_slot_cleanup(ppc440spe_chan); ppc440spe_adma_free_chan_resources() 3559 spin_lock_bh(&ppc440spe_chan->lock); ppc440spe_adma_free_chan_resources() 3560 list_for_each_entry_safe(iter, _iter, &ppc440spe_chan->chain, ppc440spe_adma_free_chan_resources() 3566 &ppc440spe_chan->all_slots, slot_node) { ppc440spe_adma_free_chan_resources() 3569 ppc440spe_chan->slots_allocated--; ppc440spe_adma_free_chan_resources() 3571 ppc440spe_chan->last_used = NULL; ppc440spe_adma_free_chan_resources() 3573 dev_dbg(ppc440spe_chan->device->common.dev, ppc440spe_adma_free_chan_resources() 3575 ppc440spe_chan->device->id, ppc440spe_adma_free_chan_resources() 3576 __func__, ppc440spe_chan->slots_allocated); ppc440spe_adma_free_chan_resources() 3577 spin_unlock_bh(&ppc440spe_chan->lock); ppc440spe_adma_free_chan_resources() 3594 struct ppc440spe_adma_chan *ppc440spe_chan; ppc440spe_adma_tx_status() local 3597 ppc440spe_chan = to_ppc440spe_adma_chan(chan); ppc440spe_adma_tx_status() 3602 ppc440spe_adma_slot_cleanup(ppc440spe_chan); ppc440spe_adma_tx_status() 3653 struct ppc440spe_adma_chan *ppc440spe_chan; ppc440spe_adma_issue_pending() local 3655 ppc440spe_chan = to_ppc440spe_adma_chan(chan); ppc440spe_adma_issue_pending() 3656 dev_dbg(ppc440spe_chan->device->common.dev, ppc440spe_adma_issue_pending() 3657 "ppc440spe adma%d: %s %d \n", ppc440spe_chan->device->id, ppc440spe_adma_issue_pending() 3658 __func__, ppc440spe_chan->pending); ppc440spe_adma_issue_pending() 3660 if (ppc440spe_chan->pending) { ppc440spe_adma_issue_pending() 3661 ppc440spe_chan->pending = 0; ppc440spe_adma_issue_pending() 3662 ppc440spe_chan_append(ppc440spe_chan); ppc440spe_adma_issue_pending() 4261 struct ppc440spe_adma_chan *ppc440spe_chan; ppc440spe_adma_remove() local 4270 ppc440spe_chan = to_ppc440spe_adma_chan(chan); ppc440spe_adma_remove() 4271 ppc440spe_adma_release_irqs(adev, ppc440spe_chan); ppc440spe_adma_remove() 4272 tasklet_kill(&ppc440spe_chan->irq_tasklet); ppc440spe_adma_remove() 4274 dma_unmap_page(&ofdev->dev, ppc440spe_chan->pdest, ppc440spe_adma_remove() 4276 dma_unmap_page(&ofdev->dev, ppc440spe_chan->qdest, ppc440spe_adma_remove() 4278 __free_page(ppc440spe_chan->pdest_page); ppc440spe_adma_remove() 4279 __free_page(ppc440spe_chan->qdest_page); ppc440spe_adma_remove() 4283 if (ppc440spe_chan == ppc440spe_adma_remove() 4290 kfree(ppc440spe_chan); ppc440spe_adma_remove() 2100 ppc440spe_dma01_prep_mult( struct ppc440spe_adma_chan *ppc440spe_chan, dma_addr_t *dst, int dst_cnt, dma_addr_t *src, int src_cnt, const unsigned char *scf, size_t len, unsigned long flags) ppc440spe_dma01_prep_mult() argument 2186 ppc440spe_dma01_prep_sum_product( struct ppc440spe_adma_chan *ppc440spe_chan, dma_addr_t *dst, dma_addr_t *src, int src_cnt, const unsigned char *scf, size_t len, unsigned long flags) ppc440spe_dma01_prep_sum_product() argument 2290 ppc440spe_dma01_prep_pq( struct ppc440spe_adma_chan *ppc440spe_chan, dma_addr_t *dst, int dst_cnt, dma_addr_t *src, int src_cnt, const unsigned char *scf, size_t len, unsigned long flags) ppc440spe_dma01_prep_pq() argument 2435 ppc440spe_dma2_prep_pq( struct ppc440spe_adma_chan *ppc440spe_chan, dma_addr_t *dst, int dst_cnt, dma_addr_t *src, int src_cnt, const unsigned char *scf, size_t len, unsigned long flags) ppc440spe_dma2_prep_pq() argument
|