shdma_chan
static struct shdma_desc *shdma_get_desc(struct shdma_chan *schan)
static int shdma_setup_slave(struct shdma_chan *schan, dma_addr_t slave_addr)
struct shdma_chan *schan = to_shdma_chan(chan);
struct shdma_chan *schan;
static dma_async_tx_callback __ld_cleanup(struct shdma_chan *schan, bool all)
#define to_shdma_chan(c) container_of(c, struct shdma_chan, dma_chan)
static void shdma_chan_ld_cleanup(struct shdma_chan *schan, bool all)
struct shdma_chan *schan = to_shdma_chan(chan);
static struct shdma_desc *shdma_add_desc(struct shdma_chan *schan,
static void shdma_chan_xfer_ld_queue(struct shdma_chan *schan)
static struct dma_async_tx_descriptor *shdma_prep_sg(struct shdma_chan *schan,
struct shdma_chan *schan = to_shdma_chan(chan);
struct shdma_chan *schan = to_shdma_chan(chan);
struct shdma_chan *schan = to_shdma_chan(chan);
struct shdma_chan *schan = to_shdma_chan(tx->chan);
struct shdma_chan *schan = to_shdma_chan(chan);
struct shdma_chan *schan = to_shdma_chan(chan);
struct shdma_chan *schan = to_shdma_chan(chan);
struct shdma_chan *schan = to_shdma_chan(chan);
struct shdma_chan *schan;
struct shdma_chan *schan = dev;
struct shdma_chan *schan = dev;
int shdma_request_irq(struct shdma_chan *schan, int irq,
struct shdma_chan *schan, int id)
void shdma_chan_remove(struct shdma_chan *schan)
struct shdma_chan shdma_chan;
#define to_sh_chan(chan) container_of(chan, struct sh_dmae_chan, shdma_chan)
#define to_sh_dev(chan) container_of(chan->shdma_chan.dma_chan.device,\
const struct sh_dmae_channel *chan_pdata = &pdata->channel[sh_chan->shdma_chan.id];
static void sh_dmae_start_xfer(struct shdma_chan *schan,
shdma_chan);
dev_dbg(sh_chan->shdma_chan.dev, "Queue #%d to %d: %u@%x -> %x\n",
sdesc->async_tx.cookie, sh_chan->shdma_chan.id,
static bool sh_dmae_channel_busy(struct shdma_chan *schan)
shdma_chan);
static int sh_dmae_setup_xfer(struct shdma_chan *schan, int slave_id)
shdma_chan);
if (!sh_chan->shdma_chan.dev->of_node) {
sh_chan->shdma_chan.slave_id = i;
static int sh_dmae_set_slave(struct shdma_chan *schan,
shdma_chan);
static int sh_dmae_desc_setup(struct shdma_chan *schan,
static void sh_dmae_halt(struct shdma_chan *schan)
shdma_chan);
static bool sh_dmae_chan_irq(struct shdma_chan *schan, int irq)
shdma_chan);
static size_t sh_dmae_get_partial(struct shdma_chan *schan,
shdma_chan);
static bool sh_dmae_desc_completed(struct shdma_chan *schan,
struct sh_dmae_chan, shdma_chan);
struct shdma_chan *schan;
schan = &sh_chan->shdma_chan;
struct shdma_chan *schan;
if (!sh_chan->shdma_chan.desc_num)
if (sh_chan->shdma_chan.slave_id >= 0) {
static dma_addr_t sh_dmae_slave_addr(struct shdma_chan *schan)
struct sh_dmae_chan, shdma_chan);
sh_dc->shdma_chan.id;
void (*start_xfer)(struct shdma_chan *, struct shdma_desc *);
bool (*chan_irq)(struct shdma_chan *, int);
size_t (*get_partial)(struct shdma_chan *, struct shdma_desc *);
struct shdma_chan **schan;
int shdma_request_irq(struct shdma_chan *, int,
struct shdma_chan *schan, int id);
void shdma_chan_remove(struct shdma_chan *schan);
bool (*desc_completed)(struct shdma_chan *, struct shdma_desc *);
void (*halt_channel)(struct shdma_chan *);
bool (*channel_busy)(struct shdma_chan *);
dma_addr_t (*slave_addr)(struct shdma_chan *);
int (*desc_setup)(struct shdma_chan *, struct shdma_desc *,
int (*set_slave)(struct shdma_chan *, int, dma_addr_t, bool);
int (*setup_xfer)(struct shdma_chan *, int);