schan 52 drivers/dma/sh/shdma-base.c static void shdma_chan_xfer_ld_queue(struct shdma_chan *schan) schan 54 drivers/dma/sh/shdma-base.c struct shdma_dev *sdev = to_shdma_dev(schan->dma_chan.device); schan 59 drivers/dma/sh/shdma-base.c if (ops->channel_busy(schan)) schan 63 drivers/dma/sh/shdma-base.c list_for_each_entry(sdesc, &schan->ld_queue, node) schan 65 drivers/dma/sh/shdma-base.c ops->start_xfer(schan, sdesc); schan 74 drivers/dma/sh/shdma-base.c struct shdma_chan *schan = to_shdma_chan(tx->chan); schan 79 drivers/dma/sh/shdma-base.c spin_lock_irq(&schan->chan_lock); schan 81 drivers/dma/sh/shdma-base.c power_up = list_empty(&schan->ld_queue); schan 94 drivers/dma/sh/shdma-base.c &chunk->node == &schan->ld_free)) schan 105 drivers/dma/sh/shdma-base.c list_move_tail(&chunk->node, &schan->ld_queue); schan 107 drivers/dma/sh/shdma-base.c dev_dbg(schan->dev, "submit #%d@%p on %d\n", schan 108 drivers/dma/sh/shdma-base.c tx->cookie, &chunk->async_tx, schan->id); schan 113 drivers/dma/sh/shdma-base.c schan->pm_state = SHDMA_PM_BUSY; schan 115 drivers/dma/sh/shdma-base.c ret = pm_runtime_get(schan->dev); schan 117 drivers/dma/sh/shdma-base.c spin_unlock_irq(&schan->chan_lock); schan 119 drivers/dma/sh/shdma-base.c dev_err(schan->dev, "%s(): GET = %d\n", __func__, ret); schan 121 drivers/dma/sh/shdma-base.c pm_runtime_barrier(schan->dev); schan 123 drivers/dma/sh/shdma-base.c spin_lock_irq(&schan->chan_lock); schan 126 drivers/dma/sh/shdma-base.c if (schan->pm_state != SHDMA_PM_ESTABLISHED) { schan 128 drivers/dma/sh/shdma-base.c to_shdma_dev(schan->dma_chan.device); schan 130 drivers/dma/sh/shdma-base.c dev_dbg(schan->dev, "Bring up channel %d\n", schan 131 drivers/dma/sh/shdma-base.c schan->id); schan 137 drivers/dma/sh/shdma-base.c ops->setup_xfer(schan, schan->slave_id); schan 139 drivers/dma/sh/shdma-base.c if (schan->pm_state == SHDMA_PM_PENDING) schan 140 drivers/dma/sh/shdma-base.c shdma_chan_xfer_ld_queue(schan); schan 141 drivers/dma/sh/shdma-base.c schan->pm_state = SHDMA_PM_ESTABLISHED; schan 148 drivers/dma/sh/shdma-base.c schan->pm_state = SHDMA_PM_PENDING; schan 151 drivers/dma/sh/shdma-base.c spin_unlock_irq(&schan->chan_lock); schan 157 drivers/dma/sh/shdma-base.c static struct shdma_desc *shdma_get_desc(struct shdma_chan *schan) schan 161 drivers/dma/sh/shdma-base.c list_for_each_entry(sdesc, &schan->ld_free, node) schan 171 drivers/dma/sh/shdma-base.c static int shdma_setup_slave(struct shdma_chan *schan, dma_addr_t slave_addr) schan 173 drivers/dma/sh/shdma-base.c struct shdma_dev *sdev = to_shdma_dev(schan->dma_chan.device); schan 177 drivers/dma/sh/shdma-base.c if (schan->dev->of_node) { schan 178 drivers/dma/sh/shdma-base.c match = schan->hw_req; schan 179 drivers/dma/sh/shdma-base.c ret = ops->set_slave(schan, match, slave_addr, true); schan 183 drivers/dma/sh/shdma-base.c match = schan->real_slave_id; schan 186 drivers/dma/sh/shdma-base.c if (schan->real_slave_id < 0 || schan->real_slave_id >= slave_num) schan 189 drivers/dma/sh/shdma-base.c if (test_and_set_bit(schan->real_slave_id, shdma_slave_used)) schan 192 drivers/dma/sh/shdma-base.c ret = ops->set_slave(schan, match, slave_addr, false); schan 194 drivers/dma/sh/shdma-base.c clear_bit(schan->real_slave_id, shdma_slave_used); schan 198 drivers/dma/sh/shdma-base.c schan->slave_id = schan->real_slave_id; schan 205 drivers/dma/sh/shdma-base.c struct shdma_chan *schan = to_shdma_chan(chan); schan 206 drivers/dma/sh/shdma-base.c struct shdma_dev *sdev = to_shdma_dev(schan->dma_chan.device); schan 218 drivers/dma/sh/shdma-base.c schan->real_slave_id = slave->slave_id; schan 219 drivers/dma/sh/shdma-base.c ret = shdma_setup_slave(schan, 0); schan 224 drivers/dma/sh/shdma-base.c schan->slave_id = -EINVAL; schan 227 drivers/dma/sh/shdma-base.c schan->desc = kcalloc(NR_DESCS_PER_CHANNEL, schan 229 drivers/dma/sh/shdma-base.c if (!schan->desc) { schan 233 drivers/dma/sh/shdma-base.c schan->desc_num = NR_DESCS_PER_CHANNEL; schan 236 drivers/dma/sh/shdma-base.c desc = ops->embedded_desc(schan->desc, i); schan 238 drivers/dma/sh/shdma-base.c &schan->dma_chan); schan 242 drivers/dma/sh/shdma-base.c list_add(&desc->node, &schan->ld_free); schan 276 drivers/dma/sh/shdma-base.c struct shdma_chan *schan; schan 286 drivers/dma/sh/shdma-base.c schan = to_shdma_chan(chan); schan 295 drivers/dma/sh/shdma-base.c if (schan->dev->of_node) { schan 296 drivers/dma/sh/shdma-base.c ret = sdev->ops->set_slave(schan, slave_id, 0, true); schan 300 drivers/dma/sh/shdma-base.c schan->real_slave_id = schan->slave_id; schan 313 drivers/dma/sh/shdma-base.c ret = sdev->ops->set_slave(schan, slave_id, 0, true); schan 317 drivers/dma/sh/shdma-base.c schan->real_slave_id = slave_id; schan 323 drivers/dma/sh/shdma-base.c static dma_async_tx_callback __ld_cleanup(struct shdma_chan *schan, bool all) schan 335 drivers/dma/sh/shdma-base.c spin_lock_irqsave(&schan->chan_lock, flags); schan 336 drivers/dma/sh/shdma-base.c list_for_each_entry_safe(desc, _desc, &schan->ld_queue, node) { schan 357 drivers/dma/sh/shdma-base.c if (schan->dma_chan.completed_cookie != desc->cookie - 1) schan 358 drivers/dma/sh/shdma-base.c dev_dbg(schan->dev, schan 361 drivers/dma/sh/shdma-base.c schan->dma_chan.completed_cookie + 1); schan 362 drivers/dma/sh/shdma-base.c schan->dma_chan.completed_cookie = desc->cookie; schan 370 drivers/dma/sh/shdma-base.c dev_dbg(schan->dev, "descriptor #%d@%p on %d callback\n", schan 371 drivers/dma/sh/shdma-base.c tx->cookie, tx, schan->id); schan 393 drivers/dma/sh/shdma-base.c dev_dbg(schan->dev, "descriptor %p #%d completed.\n", schan 403 drivers/dma/sh/shdma-base.c list_move(&desc->node, &schan->ld_free); schan 410 drivers/dma/sh/shdma-base.c if (list_empty(&schan->ld_queue)) { schan 411 drivers/dma/sh/shdma-base.c dev_dbg(schan->dev, "Bring down channel %d\n", schan->id); schan 412 drivers/dma/sh/shdma-base.c pm_runtime_put(schan->dev); schan 413 drivers/dma/sh/shdma-base.c schan->pm_state = SHDMA_PM_ESTABLISHED; schan 414 drivers/dma/sh/shdma-base.c } else if (schan->pm_state == SHDMA_PM_PENDING) { schan 415 drivers/dma/sh/shdma-base.c shdma_chan_xfer_ld_queue(schan); schan 425 drivers/dma/sh/shdma-base.c schan->dma_chan.completed_cookie = schan->dma_chan.cookie; schan 427 drivers/dma/sh/shdma-base.c list_splice_tail(&cyclic_list, &schan->ld_queue); schan 429 drivers/dma/sh/shdma-base.c spin_unlock_irqrestore(&schan->chan_lock, flags); schan 441 drivers/dma/sh/shdma-base.c static void shdma_chan_ld_cleanup(struct shdma_chan *schan, bool all) schan 443 drivers/dma/sh/shdma-base.c while (__ld_cleanup(schan, all)) schan 452 drivers/dma/sh/shdma-base.c struct shdma_chan *schan = to_shdma_chan(chan); schan 458 drivers/dma/sh/shdma-base.c spin_lock_irq(&schan->chan_lock); schan 459 drivers/dma/sh/shdma-base.c ops->halt_channel(schan); schan 460 drivers/dma/sh/shdma-base.c spin_unlock_irq(&schan->chan_lock); schan 465 drivers/dma/sh/shdma-base.c if (!list_empty(&schan->ld_queue)) schan 466 drivers/dma/sh/shdma-base.c shdma_chan_ld_cleanup(schan, true); schan 468 drivers/dma/sh/shdma-base.c if (schan->slave_id >= 0) { schan 470 drivers/dma/sh/shdma-base.c clear_bit(schan->slave_id, shdma_slave_used); schan 474 drivers/dma/sh/shdma-base.c schan->real_slave_id = 0; schan 476 drivers/dma/sh/shdma-base.c spin_lock_irq(&schan->chan_lock); schan 478 drivers/dma/sh/shdma-base.c list_splice_init(&schan->ld_free, &list); schan 479 drivers/dma/sh/shdma-base.c schan->desc_num = 0; schan 481 drivers/dma/sh/shdma-base.c spin_unlock_irq(&schan->chan_lock); schan 483 drivers/dma/sh/shdma-base.c kfree(schan->desc); schan 501 drivers/dma/sh/shdma-base.c static struct shdma_desc *shdma_add_desc(struct shdma_chan *schan, schan 505 drivers/dma/sh/shdma-base.c struct shdma_dev *sdev = to_shdma_dev(schan->dma_chan.device); schan 514 drivers/dma/sh/shdma-base.c new = shdma_get_desc(schan); schan 516 drivers/dma/sh/shdma-base.c dev_err(schan->dev, "No free link descriptor available\n"); schan 520 drivers/dma/sh/shdma-base.c ops->desc_setup(schan, new, *src, *dst, ©_size); schan 531 drivers/dma/sh/shdma-base.c dev_dbg(schan->dev, schan 560 drivers/dma/sh/shdma-base.c static struct dma_async_tx_descriptor *shdma_prep_sg(struct shdma_chan *schan, schan 572 drivers/dma/sh/shdma-base.c chunks += DIV_ROUND_UP(sg_dma_len(sg), schan->max_xfer_len); schan 575 drivers/dma/sh/shdma-base.c spin_lock_irqsave(&schan->chan_lock, irq_flags); schan 596 drivers/dma/sh/shdma-base.c dev_dbg(schan->dev, "Add SG #%d@%p[%zu], dma %pad\n", schan 600 drivers/dma/sh/shdma-base.c new = shdma_add_desc(schan, flags, schan 604 drivers/dma/sh/shdma-base.c new = shdma_add_desc(schan, flags, schan 623 drivers/dma/sh/shdma-base.c list_splice_tail(&tx_list, &schan->ld_free); schan 625 drivers/dma/sh/shdma-base.c spin_unlock_irqrestore(&schan->chan_lock, irq_flags); schan 632 drivers/dma/sh/shdma-base.c list_splice(&tx_list, &schan->ld_free); schan 634 drivers/dma/sh/shdma-base.c spin_unlock_irqrestore(&schan->chan_lock, irq_flags); schan 643 drivers/dma/sh/shdma-base.c struct shdma_chan *schan = to_shdma_chan(chan); schan 649 drivers/dma/sh/shdma-base.c BUG_ON(!schan->desc_num); schan 657 drivers/dma/sh/shdma-base.c return shdma_prep_sg(schan, &sg, 1, &dma_dest, DMA_MEM_TO_MEM, schan 665 drivers/dma/sh/shdma-base.c struct shdma_chan *schan = to_shdma_chan(chan); schan 666 drivers/dma/sh/shdma-base.c struct shdma_dev *sdev = to_shdma_dev(schan->dma_chan.device); schan 668 drivers/dma/sh/shdma-base.c int slave_id = schan->slave_id; schan 674 drivers/dma/sh/shdma-base.c BUG_ON(!schan->desc_num); schan 678 drivers/dma/sh/shdma-base.c dev_warn(schan->dev, "%s: bad parameter: len=%d, id=%d\n", schan 683 drivers/dma/sh/shdma-base.c slave_addr = ops->slave_addr(schan); schan 685 drivers/dma/sh/shdma-base.c return shdma_prep_sg(schan, sgl, sg_len, &slave_addr, schan 696 drivers/dma/sh/shdma-base.c struct shdma_chan *schan = to_shdma_chan(chan); schan 697 drivers/dma/sh/shdma-base.c struct shdma_dev *sdev = to_shdma_dev(schan->dma_chan.device); schan 701 drivers/dma/sh/shdma-base.c int slave_id = schan->slave_id; schan 709 drivers/dma/sh/shdma-base.c BUG_ON(!schan->desc_num); schan 712 drivers/dma/sh/shdma-base.c dev_err(schan->dev, "sg length %d exceds limit %d", schan 719 drivers/dma/sh/shdma-base.c dev_warn(schan->dev, schan 725 drivers/dma/sh/shdma-base.c slave_addr = ops->slave_addr(schan); schan 746 drivers/dma/sh/shdma-base.c desc = shdma_prep_sg(schan, sgl, sg_len, &slave_addr, schan 755 drivers/dma/sh/shdma-base.c struct shdma_chan *schan = to_shdma_chan(chan); schan 760 drivers/dma/sh/shdma-base.c spin_lock_irqsave(&schan->chan_lock, flags); schan 761 drivers/dma/sh/shdma-base.c ops->halt_channel(schan); schan 763 drivers/dma/sh/shdma-base.c if (ops->get_partial && !list_empty(&schan->ld_queue)) { schan 765 drivers/dma/sh/shdma-base.c struct shdma_desc *desc = list_first_entry(&schan->ld_queue, schan 767 drivers/dma/sh/shdma-base.c desc->partial = ops->get_partial(schan, desc); schan 770 drivers/dma/sh/shdma-base.c spin_unlock_irqrestore(&schan->chan_lock, flags); schan 772 drivers/dma/sh/shdma-base.c shdma_chan_ld_cleanup(schan, true); schan 780 drivers/dma/sh/shdma-base.c struct shdma_chan *schan = to_shdma_chan(chan); schan 794 drivers/dma/sh/shdma-base.c config->slave_id != schan->real_slave_id)) schan 795 drivers/dma/sh/shdma-base.c schan->real_slave_id = config->slave_id; schan 801 drivers/dma/sh/shdma-base.c return shdma_setup_slave(schan, schan 808 drivers/dma/sh/shdma-base.c struct shdma_chan *schan = to_shdma_chan(chan); schan 810 drivers/dma/sh/shdma-base.c spin_lock_irq(&schan->chan_lock); schan 811 drivers/dma/sh/shdma-base.c if (schan->pm_state == SHDMA_PM_ESTABLISHED) schan 812 drivers/dma/sh/shdma-base.c shdma_chan_xfer_ld_queue(schan); schan 814 drivers/dma/sh/shdma-base.c schan->pm_state = SHDMA_PM_PENDING; schan 815 drivers/dma/sh/shdma-base.c spin_unlock_irq(&schan->chan_lock); schan 822 drivers/dma/sh/shdma-base.c struct shdma_chan *schan = to_shdma_chan(chan); schan 826 drivers/dma/sh/shdma-base.c shdma_chan_ld_cleanup(schan, false); schan 828 drivers/dma/sh/shdma-base.c spin_lock_irqsave(&schan->chan_lock, flags); schan 839 drivers/dma/sh/shdma-base.c list_for_each_entry(sdesc, &schan->ld_queue, node) schan 846 drivers/dma/sh/shdma-base.c spin_unlock_irqrestore(&schan->chan_lock, flags); schan 855 drivers/dma/sh/shdma-base.c struct shdma_chan *schan; schan 860 drivers/dma/sh/shdma-base.c shdma_for_each_chan(schan, sdev, i) { schan 864 drivers/dma/sh/shdma-base.c if (!schan) schan 867 drivers/dma/sh/shdma-base.c spin_lock(&schan->chan_lock); schan 870 drivers/dma/sh/shdma-base.c ops->halt_channel(schan); schan 872 drivers/dma/sh/shdma-base.c list_splice_init(&schan->ld_queue, &dl); schan 875 drivers/dma/sh/shdma-base.c dev_dbg(schan->dev, "Bring down channel %d\n", schan->id); schan 876 drivers/dma/sh/shdma-base.c pm_runtime_put(schan->dev); schan 878 drivers/dma/sh/shdma-base.c schan->pm_state = SHDMA_PM_ESTABLISHED; schan 880 drivers/dma/sh/shdma-base.c spin_unlock(&schan->chan_lock); schan 890 drivers/dma/sh/shdma-base.c spin_lock(&schan->chan_lock); schan 891 drivers/dma/sh/shdma-base.c list_splice(&dl, &schan->ld_free); schan 892 drivers/dma/sh/shdma-base.c spin_unlock(&schan->chan_lock); schan 903 drivers/dma/sh/shdma-base.c struct shdma_chan *schan = dev; schan 905 drivers/dma/sh/shdma-base.c to_shdma_dev(schan->dma_chan.device)->ops; schan 908 drivers/dma/sh/shdma-base.c spin_lock(&schan->chan_lock); schan 910 drivers/dma/sh/shdma-base.c ret = ops->chan_irq(schan, irq) ? IRQ_WAKE_THREAD : IRQ_NONE; schan 912 drivers/dma/sh/shdma-base.c spin_unlock(&schan->chan_lock); schan 919 drivers/dma/sh/shdma-base.c struct shdma_chan *schan = dev; schan 921 drivers/dma/sh/shdma-base.c to_shdma_dev(schan->dma_chan.device)->ops; schan 924 drivers/dma/sh/shdma-base.c spin_lock_irq(&schan->chan_lock); schan 925 drivers/dma/sh/shdma-base.c list_for_each_entry(sdesc, &schan->ld_queue, node) { schan 927 drivers/dma/sh/shdma-base.c ops->desc_completed(schan, sdesc)) { schan 928 drivers/dma/sh/shdma-base.c dev_dbg(schan->dev, "done #%d@%p\n", schan 935 drivers/dma/sh/shdma-base.c shdma_chan_xfer_ld_queue(schan); schan 936 drivers/dma/sh/shdma-base.c spin_unlock_irq(&schan->chan_lock); schan 938 drivers/dma/sh/shdma-base.c shdma_chan_ld_cleanup(schan, false); schan 943 drivers/dma/sh/shdma-base.c int shdma_request_irq(struct shdma_chan *schan, int irq, schan 946 drivers/dma/sh/shdma-base.c int ret = devm_request_threaded_irq(schan->dev, irq, chan_irq, schan 947 drivers/dma/sh/shdma-base.c chan_irqt, flags, name, schan); schan 949 drivers/dma/sh/shdma-base.c schan->irq = ret < 0 ? ret : irq; schan 956 drivers/dma/sh/shdma-base.c struct shdma_chan *schan, int id) schan 958 drivers/dma/sh/shdma-base.c schan->pm_state = SHDMA_PM_ESTABLISHED; schan 961 drivers/dma/sh/shdma-base.c schan->dma_chan.device = &sdev->dma_dev; schan 962 drivers/dma/sh/shdma-base.c dma_cookie_init(&schan->dma_chan); schan 964 drivers/dma/sh/shdma-base.c schan->dev = sdev->dma_dev.dev; schan 965 drivers/dma/sh/shdma-base.c schan->id = id; schan 967 drivers/dma/sh/shdma-base.c if (!schan->max_xfer_len) schan 968 drivers/dma/sh/shdma-base.c schan->max_xfer_len = PAGE_SIZE; schan 970 drivers/dma/sh/shdma-base.c spin_lock_init(&schan->chan_lock); schan 973 drivers/dma/sh/shdma-base.c INIT_LIST_HEAD(&schan->ld_queue); schan 974 drivers/dma/sh/shdma-base.c INIT_LIST_HEAD(&schan->ld_free); schan 977 drivers/dma/sh/shdma-base.c list_add_tail(&schan->dma_chan.device_node, schan 979 drivers/dma/sh/shdma-base.c sdev->schan[id] = schan; schan 983 drivers/dma/sh/shdma-base.c void shdma_chan_remove(struct shdma_chan *schan) schan 985 drivers/dma/sh/shdma-base.c list_del(&schan->dma_chan.device_node); schan 1011 drivers/dma/sh/shdma-base.c sdev->schan = kcalloc(chan_num, sizeof(*sdev->schan), GFP_KERNEL); schan 1012 drivers/dma/sh/shdma-base.c if (!sdev->schan) schan 1039 drivers/dma/sh/shdma-base.c kfree(sdev->schan); schan 282 drivers/dma/sh/shdmac.c static void sh_dmae_start_xfer(struct shdma_chan *schan, schan 285 drivers/dma/sh/shdmac.c struct sh_dmae_chan *sh_chan = container_of(schan, struct sh_dmae_chan, schan 297 drivers/dma/sh/shdmac.c static bool sh_dmae_channel_busy(struct shdma_chan *schan) schan 299 drivers/dma/sh/shdmac.c struct sh_dmae_chan *sh_chan = container_of(schan, struct sh_dmae_chan, schan 304 drivers/dma/sh/shdmac.c static void sh_dmae_setup_xfer(struct shdma_chan *schan, schan 307 drivers/dma/sh/shdmac.c struct sh_dmae_chan *sh_chan = container_of(schan, struct sh_dmae_chan, schan 351 drivers/dma/sh/shdmac.c static int sh_dmae_set_slave(struct shdma_chan *schan, schan 354 drivers/dma/sh/shdmac.c struct sh_dmae_chan *sh_chan = container_of(schan, struct sh_dmae_chan, schan 377 drivers/dma/sh/shdmac.c static int sh_dmae_desc_setup(struct shdma_chan *schan, schan 384 drivers/dma/sh/shdmac.c if (*len > schan->max_xfer_len) schan 385 drivers/dma/sh/shdmac.c *len = schan->max_xfer_len; schan 394 drivers/dma/sh/shdmac.c static void sh_dmae_halt(struct shdma_chan *schan) schan 396 drivers/dma/sh/shdmac.c struct sh_dmae_chan *sh_chan = container_of(schan, struct sh_dmae_chan, schan 401 drivers/dma/sh/shdmac.c static bool sh_dmae_chan_irq(struct shdma_chan *schan, int irq) schan 403 drivers/dma/sh/shdmac.c struct sh_dmae_chan *sh_chan = container_of(schan, struct sh_dmae_chan, schan 415 drivers/dma/sh/shdmac.c static size_t sh_dmae_get_partial(struct shdma_chan *schan, schan 418 drivers/dma/sh/shdmac.c struct sh_dmae_chan *sh_chan = container_of(schan, struct sh_dmae_chan, schan 453 drivers/dma/sh/shdmac.c static bool sh_dmae_desc_completed(struct shdma_chan *schan, schan 456 drivers/dma/sh/shdmac.c struct sh_dmae_chan *sh_chan = container_of(schan, schan 524 drivers/dma/sh/shdmac.c struct shdma_chan *schan; schan 532 drivers/dma/sh/shdmac.c schan = &sh_chan->shdma_chan; schan 533 drivers/dma/sh/shdmac.c schan->max_xfer_len = SH_DMA_TCR_MAX + 1; schan 535 drivers/dma/sh/shdmac.c shdma_chan_probe(sdev, schan, id); schan 547 drivers/dma/sh/shdmac.c err = shdma_request_irq(schan, irq, flags, sh_chan->dev_id); schan 560 drivers/dma/sh/shdmac.c shdma_chan_remove(schan); schan 566 drivers/dma/sh/shdmac.c struct shdma_chan *schan; schan 569 drivers/dma/sh/shdmac.c shdma_for_each_chan(schan, &shdev->shdma_dev, i) { schan 570 drivers/dma/sh/shdmac.c BUG_ON(!schan); schan 572 drivers/dma/sh/shdmac.c shdma_chan_remove(schan); schan 636 drivers/dma/sh/shdmac.c static dma_addr_t sh_dmae_slave_addr(struct shdma_chan *schan) schan 638 drivers/dma/sh/shdmac.c struct sh_dmae_chan *sh_chan = container_of(schan, schan 158 drivers/dma/sirf-dma.c struct sirfsoc_dma_chan *schan = dma_chan_to_sirfsoc_dma_chan(c); schan 159 drivers/dma/sirf-dma.c return container_of(schan, struct sirfsoc_dma, channels[c->chan_id]); schan 236 drivers/dma/sirf-dma.c static void sirfsoc_dma_execute(struct sirfsoc_dma_chan *schan) schan 238 drivers/dma/sirf-dma.c struct sirfsoc_dma *sdma = dma_chan_to_sirfsoc_dma(&schan->chan); schan 239 drivers/dma/sirf-dma.c int cid = schan->chan.chan_id; schan 248 drivers/dma/sirf-dma.c sdesc = list_first_entry(&schan->queued, struct sirfsoc_dma_desc, schan 251 drivers/dma/sirf-dma.c list_move_tail(&sdesc->node, &schan->active); schan 257 drivers/dma/sirf-dma.c sdma->exec_desc(sdesc, cid, schan->mode, base); schan 260 drivers/dma/sirf-dma.c schan->happened_cyclic = schan->completed_cyclic = 0; schan 267 drivers/dma/sirf-dma.c struct sirfsoc_dma_chan *schan; schan 282 drivers/dma/sirf-dma.c schan = &sdma->channels[ch]; schan 283 drivers/dma/sirf-dma.c spin_lock(&schan->lock); schan 284 drivers/dma/sirf-dma.c sdesc = list_first_entry(&schan->active, schan 288 drivers/dma/sirf-dma.c list_splice_tail_init(&schan->active, schan 289 drivers/dma/sirf-dma.c &schan->completed); schan 291 drivers/dma/sirf-dma.c if (!list_empty(&schan->queued)) schan 292 drivers/dma/sirf-dma.c sirfsoc_dma_execute(schan); schan 294 drivers/dma/sirf-dma.c schan->happened_cyclic++; schan 295 drivers/dma/sirf-dma.c spin_unlock(&schan->lock); schan 304 drivers/dma/sirf-dma.c schan = &sdma->channels[0]; schan 305 drivers/dma/sirf-dma.c spin_lock(&schan->lock); schan 306 drivers/dma/sirf-dma.c sdesc = list_first_entry(&schan->active, schan 314 drivers/dma/sirf-dma.c list_splice_tail_init(&schan->active, schan 315 drivers/dma/sirf-dma.c &schan->completed); schan 317 drivers/dma/sirf-dma.c if (!list_empty(&schan->queued)) schan 318 drivers/dma/sirf-dma.c sirfsoc_dma_execute(schan); schan 322 drivers/dma/sirf-dma.c schan->happened_cyclic++; schan 324 drivers/dma/sirf-dma.c spin_unlock(&schan->lock); schan 341 drivers/dma/sirf-dma.c struct sirfsoc_dma_chan *schan; schan 350 drivers/dma/sirf-dma.c schan = &sdma->channels[i]; schan 353 drivers/dma/sirf-dma.c spin_lock_irqsave(&schan->lock, flags); schan 354 drivers/dma/sirf-dma.c if (!list_empty(&schan->completed)) { schan 355 drivers/dma/sirf-dma.c list_splice_tail_init(&schan->completed, &list); schan 356 drivers/dma/sirf-dma.c spin_unlock_irqrestore(&schan->lock, flags); schan 368 drivers/dma/sirf-dma.c spin_lock_irqsave(&schan->lock, flags); schan 369 drivers/dma/sirf-dma.c list_splice_tail_init(&list, &schan->free); schan 370 drivers/dma/sirf-dma.c schan->chan.completed_cookie = last_cookie; schan 371 drivers/dma/sirf-dma.c spin_unlock_irqrestore(&schan->lock, flags); schan 373 drivers/dma/sirf-dma.c if (list_empty(&schan->active)) { schan 374 drivers/dma/sirf-dma.c spin_unlock_irqrestore(&schan->lock, flags); schan 379 drivers/dma/sirf-dma.c sdesc = list_first_entry(&schan->active, schan 383 drivers/dma/sirf-dma.c happened_cyclic = schan->happened_cyclic; schan 384 drivers/dma/sirf-dma.c spin_unlock_irqrestore(&schan->lock, flags); schan 387 drivers/dma/sirf-dma.c while (happened_cyclic != schan->completed_cyclic) { schan 389 drivers/dma/sirf-dma.c schan->completed_cyclic++; schan 406 drivers/dma/sirf-dma.c struct sirfsoc_dma_chan *schan = dma_chan_to_sirfsoc_dma_chan(txd->chan); schan 413 drivers/dma/sirf-dma.c spin_lock_irqsave(&schan->lock, flags); schan 416 drivers/dma/sirf-dma.c list_move_tail(&sdesc->node, &schan->queued); schan 420 drivers/dma/sirf-dma.c spin_unlock_irqrestore(&schan->lock, flags); schan 428 drivers/dma/sirf-dma.c struct sirfsoc_dma_chan *schan = dma_chan_to_sirfsoc_dma_chan(chan); schan 435 drivers/dma/sirf-dma.c spin_lock_irqsave(&schan->lock, flags); schan 436 drivers/dma/sirf-dma.c schan->mode = (config->src_maxburst == 4 ? 1 : 0); schan 437 drivers/dma/sirf-dma.c spin_unlock_irqrestore(&schan->lock, flags); schan 444 drivers/dma/sirf-dma.c struct sirfsoc_dma_chan *schan = dma_chan_to_sirfsoc_dma_chan(chan); schan 445 drivers/dma/sirf-dma.c struct sirfsoc_dma *sdma = dma_chan_to_sirfsoc_dma(&schan->chan); schan 446 drivers/dma/sirf-dma.c int cid = schan->chan.chan_id; schan 449 drivers/dma/sirf-dma.c spin_lock_irqsave(&schan->lock, flags); schan 480 drivers/dma/sirf-dma.c list_splice_tail_init(&schan->active, &schan->free); schan 481 drivers/dma/sirf-dma.c list_splice_tail_init(&schan->queued, &schan->free); schan 483 drivers/dma/sirf-dma.c spin_unlock_irqrestore(&schan->lock, flags); schan 490 drivers/dma/sirf-dma.c struct sirfsoc_dma_chan *schan = dma_chan_to_sirfsoc_dma_chan(chan); schan 491 drivers/dma/sirf-dma.c struct sirfsoc_dma *sdma = dma_chan_to_sirfsoc_dma(&schan->chan); schan 492 drivers/dma/sirf-dma.c int cid = schan->chan.chan_id; schan 495 drivers/dma/sirf-dma.c spin_lock_irqsave(&schan->lock, flags); schan 517 drivers/dma/sirf-dma.c spin_unlock_irqrestore(&schan->lock, flags); schan 524 drivers/dma/sirf-dma.c struct sirfsoc_dma_chan *schan = dma_chan_to_sirfsoc_dma_chan(chan); schan 525 drivers/dma/sirf-dma.c struct sirfsoc_dma *sdma = dma_chan_to_sirfsoc_dma(&schan->chan); schan 526 drivers/dma/sirf-dma.c int cid = schan->chan.chan_id; schan 529 drivers/dma/sirf-dma.c spin_lock_irqsave(&schan->lock, flags); schan 550 drivers/dma/sirf-dma.c spin_unlock_irqrestore(&schan->lock, flags); schan 559 drivers/dma/sirf-dma.c struct sirfsoc_dma_chan *schan = dma_chan_to_sirfsoc_dma_chan(chan); schan 587 drivers/dma/sirf-dma.c spin_lock_irqsave(&schan->lock, flags); schan 589 drivers/dma/sirf-dma.c list_splice_tail_init(&descs, &schan->free); schan 590 drivers/dma/sirf-dma.c spin_unlock_irqrestore(&schan->lock, flags); schan 598 drivers/dma/sirf-dma.c struct sirfsoc_dma_chan *schan = dma_chan_to_sirfsoc_dma_chan(chan); schan 604 drivers/dma/sirf-dma.c spin_lock_irqsave(&schan->lock, flags); schan 607 drivers/dma/sirf-dma.c BUG_ON(!list_empty(&schan->prepared)); schan 608 drivers/dma/sirf-dma.c BUG_ON(!list_empty(&schan->queued)); schan 609 drivers/dma/sirf-dma.c BUG_ON(!list_empty(&schan->active)); schan 610 drivers/dma/sirf-dma.c BUG_ON(!list_empty(&schan->completed)); schan 613 drivers/dma/sirf-dma.c list_splice_tail_init(&schan->free, &descs); schan 615 drivers/dma/sirf-dma.c spin_unlock_irqrestore(&schan->lock, flags); schan 627 drivers/dma/sirf-dma.c struct sirfsoc_dma_chan *schan = dma_chan_to_sirfsoc_dma_chan(chan); schan 630 drivers/dma/sirf-dma.c spin_lock_irqsave(&schan->lock, flags); schan 632 drivers/dma/sirf-dma.c if (list_empty(&schan->active) && !list_empty(&schan->queued)) schan 633 drivers/dma/sirf-dma.c sirfsoc_dma_execute(schan); schan 635 drivers/dma/sirf-dma.c spin_unlock_irqrestore(&schan->lock, flags); schan 644 drivers/dma/sirf-dma.c struct sirfsoc_dma_chan *schan = dma_chan_to_sirfsoc_dma_chan(chan); schan 648 drivers/dma/sirf-dma.c int cid = schan->chan.chan_id; schan 653 drivers/dma/sirf-dma.c spin_lock_irqsave(&schan->lock, flags); schan 655 drivers/dma/sirf-dma.c if (list_empty(&schan->active)) { schan 658 drivers/dma/sirf-dma.c spin_unlock_irqrestore(&schan->lock, flags); schan 661 drivers/dma/sirf-dma.c sdesc = list_first_entry(&schan->active, struct sirfsoc_dma_desc, node); schan 683 drivers/dma/sirf-dma.c spin_unlock_irqrestore(&schan->lock, flags); schan 693 drivers/dma/sirf-dma.c struct sirfsoc_dma_chan *schan = dma_chan_to_sirfsoc_dma_chan(chan); schan 704 drivers/dma/sirf-dma.c spin_lock_irqsave(&schan->lock, iflags); schan 705 drivers/dma/sirf-dma.c if (!list_empty(&schan->free)) { schan 706 drivers/dma/sirf-dma.c sdesc = list_first_entry(&schan->free, struct sirfsoc_dma_desc, schan 710 drivers/dma/sirf-dma.c spin_unlock_irqrestore(&schan->lock, iflags); schan 720 drivers/dma/sirf-dma.c spin_lock_irqsave(&schan->lock, iflags); schan 740 drivers/dma/sirf-dma.c list_add_tail(&sdesc->node, &schan->prepared); schan 746 drivers/dma/sirf-dma.c spin_unlock_irqrestore(&schan->lock, iflags); schan 750 drivers/dma/sirf-dma.c spin_unlock_irqrestore(&schan->lock, iflags); schan 761 drivers/dma/sirf-dma.c struct sirfsoc_dma_chan *schan = dma_chan_to_sirfsoc_dma_chan(chan); schan 780 drivers/dma/sirf-dma.c spin_lock_irqsave(&schan->lock, iflags); schan 781 drivers/dma/sirf-dma.c if (!list_empty(&schan->free)) { schan 782 drivers/dma/sirf-dma.c sdesc = list_first_entry(&schan->free, struct sirfsoc_dma_desc, schan 786 drivers/dma/sirf-dma.c spin_unlock_irqrestore(&schan->lock, iflags); schan 792 drivers/dma/sirf-dma.c spin_lock_irqsave(&schan->lock, iflags); schan 798 drivers/dma/sirf-dma.c list_add_tail(&sdesc->node, &schan->prepared); schan 799 drivers/dma/sirf-dma.c spin_unlock_irqrestore(&schan->lock, iflags); schan 845 drivers/dma/sirf-dma.c struct sirfsoc_dma_chan *schan; schan 926 drivers/dma/sirf-dma.c schan = &sdma->channels[i]; schan 928 drivers/dma/sirf-dma.c schan->chan.device = dma; schan 929 drivers/dma/sirf-dma.c dma_cookie_init(&schan->chan); schan 931 drivers/dma/sirf-dma.c INIT_LIST_HEAD(&schan->free); schan 932 drivers/dma/sirf-dma.c INIT_LIST_HEAD(&schan->prepared); schan 933 drivers/dma/sirf-dma.c INIT_LIST_HEAD(&schan->queued); schan 934 drivers/dma/sirf-dma.c INIT_LIST_HEAD(&schan->active); schan 935 drivers/dma/sirf-dma.c INIT_LIST_HEAD(&schan->completed); schan 937 drivers/dma/sirf-dma.c spin_lock_init(&schan->lock); schan 938 drivers/dma/sirf-dma.c list_add_tail(&schan->chan.device_node, &dma->channels); schan 1013 drivers/dma/sirf-dma.c struct sirfsoc_dma_chan *schan; schan 1042 drivers/dma/sirf-dma.c schan = &sdma->channels[ch]; schan 1043 drivers/dma/sirf-dma.c if (list_empty(&schan->active)) schan 1061 drivers/dma/sirf-dma.c struct sirfsoc_dma_chan *schan; schan 1085 drivers/dma/sirf-dma.c schan = &sdma->channels[ch]; schan 1086 drivers/dma/sirf-dma.c if (list_empty(&schan->active)) schan 1088 drivers/dma/sirf-dma.c sdesc = list_first_entry(&schan->active, schan 228 drivers/dma/sprd-dma.c struct sprd_dma_chn *schan = to_sprd_dma_chan(c); schan 230 drivers/dma/sprd-dma.c return container_of(schan, struct sprd_dma_dev, channels[c->chan_id]); schan 248 drivers/dma/sprd-dma.c static void sprd_dma_chn_update(struct sprd_dma_chn *schan, u32 reg, schan 251 drivers/dma/sprd-dma.c u32 orig = readl(schan->chn_base + reg); schan 255 drivers/dma/sprd-dma.c writel(tmp, schan->chn_base + reg); schan 287 drivers/dma/sprd-dma.c static void sprd_dma_set_uid(struct sprd_dma_chn *schan) schan 289 drivers/dma/sprd-dma.c struct sprd_dma_dev *sdev = to_sprd_dma_dev(&schan->vc.chan); schan 290 drivers/dma/sprd-dma.c u32 dev_id = schan->dev_id; schan 296 drivers/dma/sprd-dma.c writel(schan->chn_num + 1, sdev->glb_base + uid_offset); schan 300 drivers/dma/sprd-dma.c static void sprd_dma_unset_uid(struct sprd_dma_chn *schan) schan 302 drivers/dma/sprd-dma.c struct sprd_dma_dev *sdev = to_sprd_dma_dev(&schan->vc.chan); schan 303 drivers/dma/sprd-dma.c u32 dev_id = schan->dev_id; schan 313 drivers/dma/sprd-dma.c static void sprd_dma_clear_int(struct sprd_dma_chn *schan) schan 315 drivers/dma/sprd-dma.c sprd_dma_chn_update(schan, SPRD_DMA_CHN_INTC, schan 320 drivers/dma/sprd-dma.c static void sprd_dma_enable_chn(struct sprd_dma_chn *schan) schan 322 drivers/dma/sprd-dma.c sprd_dma_chn_update(schan, SPRD_DMA_CHN_CFG, SPRD_DMA_CHN_EN, schan 326 drivers/dma/sprd-dma.c static void sprd_dma_disable_chn(struct sprd_dma_chn *schan) schan 328 drivers/dma/sprd-dma.c sprd_dma_chn_update(schan, SPRD_DMA_CHN_CFG, SPRD_DMA_CHN_EN, 0); schan 331 drivers/dma/sprd-dma.c static void sprd_dma_soft_request(struct sprd_dma_chn *schan) schan 333 drivers/dma/sprd-dma.c sprd_dma_chn_update(schan, SPRD_DMA_CHN_REQ, SPRD_DMA_REQ_EN, schan 337 drivers/dma/sprd-dma.c static void sprd_dma_pause_resume(struct sprd_dma_chn *schan, bool enable) schan 339 drivers/dma/sprd-dma.c struct sprd_dma_dev *sdev = to_sprd_dma_dev(&schan->vc.chan); schan 343 drivers/dma/sprd-dma.c sprd_dma_chn_update(schan, SPRD_DMA_CHN_PAUSE, schan 347 drivers/dma/sprd-dma.c pause = readl(schan->chn_base + SPRD_DMA_CHN_PAUSE); schan 358 drivers/dma/sprd-dma.c sprd_dma_chn_update(schan, SPRD_DMA_CHN_PAUSE, schan 363 drivers/dma/sprd-dma.c static void sprd_dma_stop_and_disable(struct sprd_dma_chn *schan) schan 365 drivers/dma/sprd-dma.c u32 cfg = readl(schan->chn_base + SPRD_DMA_CHN_CFG); schan 370 drivers/dma/sprd-dma.c sprd_dma_pause_resume(schan, true); schan 371 drivers/dma/sprd-dma.c sprd_dma_disable_chn(schan); schan 374 drivers/dma/sprd-dma.c static unsigned long sprd_dma_get_src_addr(struct sprd_dma_chn *schan) schan 378 drivers/dma/sprd-dma.c addr = readl(schan->chn_base + SPRD_DMA_CHN_SRC_ADDR); schan 379 drivers/dma/sprd-dma.c addr_high = readl(schan->chn_base + SPRD_DMA_CHN_WARP_PTR) & schan 385 drivers/dma/sprd-dma.c static unsigned long sprd_dma_get_dst_addr(struct sprd_dma_chn *schan) schan 389 drivers/dma/sprd-dma.c addr = readl(schan->chn_base + SPRD_DMA_CHN_DES_ADDR); schan 390 drivers/dma/sprd-dma.c addr_high = readl(schan->chn_base + SPRD_DMA_CHN_WARP_TO) & schan 396 drivers/dma/sprd-dma.c static enum sprd_dma_int_type sprd_dma_get_int_type(struct sprd_dma_chn *schan) schan 398 drivers/dma/sprd-dma.c struct sprd_dma_dev *sdev = to_sprd_dma_dev(&schan->vc.chan); schan 399 drivers/dma/sprd-dma.c u32 intc_sts = readl(schan->chn_base + SPRD_DMA_CHN_INTC) & schan 424 drivers/dma/sprd-dma.c static enum sprd_dma_req_mode sprd_dma_get_req_type(struct sprd_dma_chn *schan) schan 426 drivers/dma/sprd-dma.c u32 frag_reg = readl(schan->chn_base + SPRD_DMA_CHN_FRG_LEN); schan 431 drivers/dma/sprd-dma.c static int sprd_dma_set_2stage_config(struct sprd_dma_chn *schan) schan 433 drivers/dma/sprd-dma.c struct sprd_dma_dev *sdev = to_sprd_dma_dev(&schan->vc.chan); schan 434 drivers/dma/sprd-dma.c u32 val, chn = schan->chn_num + 1; schan 436 drivers/dma/sprd-dma.c switch (schan->chn_mode) { schan 439 drivers/dma/sprd-dma.c val |= BIT(schan->trg_mode - 1) << SPRD_DMA_GLB_TRG_OFFSET; schan 441 drivers/dma/sprd-dma.c if (schan->int_type != SPRD_DMA_NO_INT) schan 449 drivers/dma/sprd-dma.c val |= BIT(schan->trg_mode - 1) << SPRD_DMA_GLB_TRG_OFFSET; schan 451 drivers/dma/sprd-dma.c if (schan->int_type != SPRD_DMA_NO_INT) schan 461 drivers/dma/sprd-dma.c if (schan->int_type != SPRD_DMA_NO_INT) schan 471 drivers/dma/sprd-dma.c if (schan->int_type != SPRD_DMA_NO_INT) schan 479 drivers/dma/sprd-dma.c schan->chn_mode); schan 486 drivers/dma/sprd-dma.c static void sprd_dma_set_chn_config(struct sprd_dma_chn *schan, schan 491 drivers/dma/sprd-dma.c writel(cfg->pause, schan->chn_base + SPRD_DMA_CHN_PAUSE); schan 492 drivers/dma/sprd-dma.c writel(cfg->cfg, schan->chn_base + SPRD_DMA_CHN_CFG); schan 493 drivers/dma/sprd-dma.c writel(cfg->intc, schan->chn_base + SPRD_DMA_CHN_INTC); schan 494 drivers/dma/sprd-dma.c writel(cfg->src_addr, schan->chn_base + SPRD_DMA_CHN_SRC_ADDR); schan 495 drivers/dma/sprd-dma.c writel(cfg->des_addr, schan->chn_base + SPRD_DMA_CHN_DES_ADDR); schan 496 drivers/dma/sprd-dma.c writel(cfg->frg_len, schan->chn_base + SPRD_DMA_CHN_FRG_LEN); schan 497 drivers/dma/sprd-dma.c writel(cfg->blk_len, schan->chn_base + SPRD_DMA_CHN_BLK_LEN); schan 498 drivers/dma/sprd-dma.c writel(cfg->trsc_len, schan->chn_base + SPRD_DMA_CHN_TRSC_LEN); schan 499 drivers/dma/sprd-dma.c writel(cfg->trsf_step, schan->chn_base + SPRD_DMA_CHN_TRSF_STEP); schan 500 drivers/dma/sprd-dma.c writel(cfg->wrap_ptr, schan->chn_base + SPRD_DMA_CHN_WARP_PTR); schan 501 drivers/dma/sprd-dma.c writel(cfg->wrap_to, schan->chn_base + SPRD_DMA_CHN_WARP_TO); schan 502 drivers/dma/sprd-dma.c writel(cfg->llist_ptr, schan->chn_base + SPRD_DMA_CHN_LLIST_PTR); schan 503 drivers/dma/sprd-dma.c writel(cfg->frg_step, schan->chn_base + SPRD_DMA_CHN_FRAG_STEP); schan 504 drivers/dma/sprd-dma.c writel(cfg->src_blk_step, schan->chn_base + SPRD_DMA_CHN_SRC_BLK_STEP); schan 505 drivers/dma/sprd-dma.c writel(cfg->des_blk_step, schan->chn_base + SPRD_DMA_CHN_DES_BLK_STEP); schan 506 drivers/dma/sprd-dma.c writel(cfg->req, schan->chn_base + SPRD_DMA_CHN_REQ); schan 509 drivers/dma/sprd-dma.c static void sprd_dma_start(struct sprd_dma_chn *schan) schan 511 drivers/dma/sprd-dma.c struct virt_dma_desc *vd = vchan_next_desc(&schan->vc); schan 517 drivers/dma/sprd-dma.c schan->cur_desc = to_sprd_dma_desc(vd); schan 523 drivers/dma/sprd-dma.c if (schan->chn_mode && sprd_dma_set_2stage_config(schan)) schan 530 drivers/dma/sprd-dma.c sprd_dma_set_chn_config(schan, schan->cur_desc); schan 531 drivers/dma/sprd-dma.c sprd_dma_set_uid(schan); schan 532 drivers/dma/sprd-dma.c sprd_dma_enable_chn(schan); schan 534 drivers/dma/sprd-dma.c if (schan->dev_id == SPRD_DMA_SOFTWARE_UID && schan 535 drivers/dma/sprd-dma.c schan->chn_mode != SPRD_DMA_DST_CHN0 && schan 536 drivers/dma/sprd-dma.c schan->chn_mode != SPRD_DMA_DST_CHN1) schan 537 drivers/dma/sprd-dma.c sprd_dma_soft_request(schan); schan 540 drivers/dma/sprd-dma.c static void sprd_dma_stop(struct sprd_dma_chn *schan) schan 542 drivers/dma/sprd-dma.c sprd_dma_stop_and_disable(schan); schan 543 drivers/dma/sprd-dma.c sprd_dma_unset_uid(schan); schan 544 drivers/dma/sprd-dma.c sprd_dma_clear_int(schan); schan 545 drivers/dma/sprd-dma.c schan->cur_desc = NULL; schan 565 drivers/dma/sprd-dma.c struct sprd_dma_chn *schan; schan 575 drivers/dma/sprd-dma.c schan = &sdev->channels[i]; schan 577 drivers/dma/sprd-dma.c spin_lock(&schan->vc.lock); schan 579 drivers/dma/sprd-dma.c sdesc = schan->cur_desc; schan 581 drivers/dma/sprd-dma.c spin_unlock(&schan->vc.lock); schan 585 drivers/dma/sprd-dma.c int_type = sprd_dma_get_int_type(schan); schan 586 drivers/dma/sprd-dma.c req_type = sprd_dma_get_req_type(schan); schan 587 drivers/dma/sprd-dma.c sprd_dma_clear_int(schan); schan 590 drivers/dma/sprd-dma.c cyclic = schan->linklist.phy_addr ? true : false; schan 599 drivers/dma/sprd-dma.c schan->cur_desc = NULL; schan 600 drivers/dma/sprd-dma.c sprd_dma_start(schan); schan 603 drivers/dma/sprd-dma.c spin_unlock(&schan->vc.lock); schan 616 drivers/dma/sprd-dma.c struct sprd_dma_chn *schan = to_sprd_dma_chan(chan); schan 620 drivers/dma/sprd-dma.c spin_lock_irqsave(&schan->vc.lock, flags); schan 621 drivers/dma/sprd-dma.c if (schan->cur_desc) schan 622 drivers/dma/sprd-dma.c cur_vd = &schan->cur_desc->vd; schan 624 drivers/dma/sprd-dma.c sprd_dma_stop(schan); schan 625 drivers/dma/sprd-dma.c spin_unlock_irqrestore(&schan->vc.lock, flags); schan 630 drivers/dma/sprd-dma.c vchan_free_chan_resources(&schan->vc); schan 638 drivers/dma/sprd-dma.c struct sprd_dma_chn *schan = to_sprd_dma_chan(chan); schan 648 drivers/dma/sprd-dma.c spin_lock_irqsave(&schan->vc.lock, flags); schan 649 drivers/dma/sprd-dma.c vd = vchan_find_desc(&schan->vc, cookie); schan 662 drivers/dma/sprd-dma.c } else if (schan->cur_desc && schan->cur_desc->vd.tx.cookie == cookie) { schan 663 drivers/dma/sprd-dma.c struct sprd_dma_desc *sdesc = schan->cur_desc; schan 666 drivers/dma/sprd-dma.c pos = sprd_dma_get_dst_addr(schan); schan 668 drivers/dma/sprd-dma.c pos = sprd_dma_get_src_addr(schan); schan 672 drivers/dma/sprd-dma.c spin_unlock_irqrestore(&schan->vc.lock, flags); schan 680 drivers/dma/sprd-dma.c struct sprd_dma_chn *schan = to_sprd_dma_chan(chan); schan 683 drivers/dma/sprd-dma.c spin_lock_irqsave(&schan->vc.lock, flags); schan 684 drivers/dma/sprd-dma.c if (vchan_issue_pending(&schan->vc) && !schan->cur_desc) schan 685 drivers/dma/sprd-dma.c sprd_dma_start(schan); schan 686 drivers/dma/sprd-dma.c spin_unlock_irqrestore(&schan->vc.lock, flags); schan 726 drivers/dma/sprd-dma.c struct sprd_dma_chn *schan = to_sprd_dma_chan(chan); schan 727 drivers/dma/sprd-dma.c enum sprd_dma_chn_mode chn_mode = schan->chn_mode; schan 772 drivers/dma/sprd-dma.c schan->dev_id = slave_cfg->slave_id; schan 818 drivers/dma/sprd-dma.c if (schan->linklist.phy_addr) { schan 830 drivers/dma/sprd-dma.c llist_ptr = schan->linklist.phy_addr + temp; schan 851 drivers/dma/sprd-dma.c struct sprd_dma_chn *schan = to_sprd_dma_chan(chan); schan 854 drivers/dma/sprd-dma.c if (!schan->linklist.virt_addr) schan 857 drivers/dma/sprd-dma.c hw = (struct sprd_dma_chn_hw *)(schan->linklist.virt_addr + schan 868 drivers/dma/sprd-dma.c struct sprd_dma_chn *schan = to_sprd_dma_chan(chan); schan 916 drivers/dma/sprd-dma.c return vchan_tx_prep(&schan->vc, &sdesc->vd, flags); schan 924 drivers/dma/sprd-dma.c struct sprd_dma_chn *schan = to_sprd_dma_chan(chan); schan 925 drivers/dma/sprd-dma.c struct dma_slave_config *slave_cfg = &schan->slave_cfg; schan 940 drivers/dma/sprd-dma.c schan->linklist.phy_addr = ll_cfg->phy_addr; schan 941 drivers/dma/sprd-dma.c schan->linklist.virt_addr = ll_cfg->virt_addr; schan 943 drivers/dma/sprd-dma.c schan->linklist.phy_addr = 0; schan 944 drivers/dma/sprd-dma.c schan->linklist.virt_addr = 0; schan 951 drivers/dma/sprd-dma.c schan->chn_mode = schan 953 drivers/dma/sprd-dma.c schan->trg_mode = schan 955 drivers/dma/sprd-dma.c schan->int_type = flags & SPRD_DMA_INT_TYPE_MASK; schan 1002 drivers/dma/sprd-dma.c return vchan_tx_prep(&schan->vc, &sdesc->vd, flags); schan 1008 drivers/dma/sprd-dma.c struct sprd_dma_chn *schan = to_sprd_dma_chan(chan); schan 1009 drivers/dma/sprd-dma.c struct dma_slave_config *slave_cfg = &schan->slave_cfg; schan 1017 drivers/dma/sprd-dma.c struct sprd_dma_chn *schan = to_sprd_dma_chan(chan); schan 1020 drivers/dma/sprd-dma.c spin_lock_irqsave(&schan->vc.lock, flags); schan 1021 drivers/dma/sprd-dma.c sprd_dma_pause_resume(schan, true); schan 1022 drivers/dma/sprd-dma.c spin_unlock_irqrestore(&schan->vc.lock, flags); schan 1029 drivers/dma/sprd-dma.c struct sprd_dma_chn *schan = to_sprd_dma_chan(chan); schan 1032 drivers/dma/sprd-dma.c spin_lock_irqsave(&schan->vc.lock, flags); schan 1033 drivers/dma/sprd-dma.c sprd_dma_pause_resume(schan, false); schan 1034 drivers/dma/sprd-dma.c spin_unlock_irqrestore(&schan->vc.lock, flags); schan 1041 drivers/dma/sprd-dma.c struct sprd_dma_chn *schan = to_sprd_dma_chan(chan); schan 1046 drivers/dma/sprd-dma.c spin_lock_irqsave(&schan->vc.lock, flags); schan 1047 drivers/dma/sprd-dma.c if (schan->cur_desc) schan 1048 drivers/dma/sprd-dma.c cur_vd = &schan->cur_desc->vd; schan 1050 drivers/dma/sprd-dma.c sprd_dma_stop(schan); schan 1052 drivers/dma/sprd-dma.c vchan_get_all_descriptors(&schan->vc, &head); schan 1053 drivers/dma/sprd-dma.c spin_unlock_irqrestore(&schan->vc.lock, flags); schan 1058 drivers/dma/sprd-dma.c vchan_dma_desc_free_list(&schan->vc, &head); schan 1071 drivers/dma/sprd-dma.c struct sprd_dma_chn *schan = to_sprd_dma_chan(chan); schan 1074 drivers/dma/sprd-dma.c schan->dev_id = slave_id; schan 126 drivers/iio/afe/iio-rescale.c struct iio_chan_spec const *schan = rescale->source->channel; schan 129 drivers/iio/afe/iio-rescale.c chan->output = schan->output; schan 133 drivers/iio/afe/iio-rescale.c if (!iio_channel_has_info(schan, IIO_CHAN_INFO_RAW) || schan 134 drivers/iio/afe/iio-rescale.c !iio_channel_has_info(schan, IIO_CHAN_INFO_SCALE)) { schan 142 drivers/iio/afe/iio-rescale.c if (iio_channel_has_available(schan, IIO_CHAN_INFO_RAW)) schan 590 drivers/media/dvb-frontends/dib3000mc.c struct dtv_frontend_properties schan; schan 592 drivers/media/dvb-frontends/dib3000mc.c schan = *chan; schan 597 drivers/media/dvb-frontends/dib3000mc.c schan.transmission_mode = TRANSMISSION_MODE_8K; schan 598 drivers/media/dvb-frontends/dib3000mc.c schan.guard_interval = GUARD_INTERVAL_1_32; schan 599 drivers/media/dvb-frontends/dib3000mc.c schan.modulation = QAM_64; schan 600 drivers/media/dvb-frontends/dib3000mc.c schan.code_rate_HP = FEC_2_3; schan 601 drivers/media/dvb-frontends/dib3000mc.c schan.code_rate_LP = FEC_2_3; schan 602 drivers/media/dvb-frontends/dib3000mc.c schan.hierarchy = 0; schan 604 drivers/media/dvb-frontends/dib3000mc.c dib3000mc_set_channel_cfg(state, &schan, 11); schan 968 drivers/media/dvb-frontends/dib7000m.c struct dtv_frontend_properties schan; schan 972 drivers/media/dvb-frontends/dib7000m.c schan = *ch; schan 974 drivers/media/dvb-frontends/dib7000m.c schan.modulation = QAM_64; schan 975 drivers/media/dvb-frontends/dib7000m.c schan.guard_interval = GUARD_INTERVAL_1_32; schan 976 drivers/media/dvb-frontends/dib7000m.c schan.transmission_mode = TRANSMISSION_MODE_8K; schan 977 drivers/media/dvb-frontends/dib7000m.c schan.code_rate_HP = FEC_2_3; schan 978 drivers/media/dvb-frontends/dib7000m.c schan.code_rate_LP = FEC_3_4; schan 979 drivers/media/dvb-frontends/dib7000m.c schan.hierarchy = 0; schan 981 drivers/media/dvb-frontends/dib7000m.c dib7000m_set_channel(state, &schan, 7); schan 983 drivers/media/dvb-frontends/dib7000m.c factor = BANDWIDTH_TO_KHZ(schan.bandwidth_hz); schan 1134 drivers/media/dvb-frontends/dib7000p.c struct dtv_frontend_properties schan; schan 1138 drivers/media/dvb-frontends/dib7000p.c schan = *ch; schan 1139 drivers/media/dvb-frontends/dib7000p.c schan.modulation = QAM_64; schan 1140 drivers/media/dvb-frontends/dib7000p.c schan.guard_interval = GUARD_INTERVAL_1_32; schan 1141 drivers/media/dvb-frontends/dib7000p.c schan.transmission_mode = TRANSMISSION_MODE_8K; schan 1142 drivers/media/dvb-frontends/dib7000p.c schan.code_rate_HP = FEC_2_3; schan 1143 drivers/media/dvb-frontends/dib7000p.c schan.code_rate_LP = FEC_3_4; schan 1144 drivers/media/dvb-frontends/dib7000p.c schan.hierarchy = 0; schan 1146 drivers/media/dvb-frontends/dib7000p.c dib7000p_set_channel(state, &schan, 7); schan 108 include/linux/shdma-base.h struct shdma_chan **schan; schan 113 include/linux/shdma-base.h #define shdma_for_each_chan(c, d, i) for (i = 0, c = (d)->schan[0]; \ schan 114 include/linux/shdma-base.h i < (d)->dma_dev.chancnt; c = (d)->schan[++i]) schan 120 include/linux/shdma-base.h struct shdma_chan *schan, int id); schan 121 include/linux/shdma-base.h void shdma_chan_remove(struct shdma_chan *schan);