Lines Matching refs:p

152 static void sa11x0_dma_start_desc(struct sa11x0_dma_phy *p, struct sa11x0_dma_desc *txd)  in sa11x0_dma_start_desc()  argument
155 p->txd_load = txd; in sa11x0_dma_start_desc()
156 p->sg_load = 0; in sa11x0_dma_start_desc()
158 dev_vdbg(p->dev->slave.dev, "pchan %u: txd %p[%x]: starting: DDAR:%x\n", in sa11x0_dma_start_desc()
159 p->num, &txd->vd, txd->vd.tx.cookie, txd->ddar); in sa11x0_dma_start_desc()
162 static void noinline sa11x0_dma_start_sg(struct sa11x0_dma_phy *p, in sa11x0_dma_start_sg() argument
165 struct sa11x0_dma_desc *txd = p->txd_load; in sa11x0_dma_start_sg()
167 void __iomem *base = p->base; in sa11x0_dma_start_sg()
180 if (p->sg_load == txd->sglen) { in sa11x0_dma_start_sg()
191 sa11x0_dma_start_desc(p, txn); in sa11x0_dma_start_sg()
193 p->txd_load = NULL; in sa11x0_dma_start_sg()
198 p->sg_load = 0; in sa11x0_dma_start_sg()
202 sg = &txd->sg[p->sg_load++]; in sa11x0_dma_start_sg()
220 dev_dbg(p->dev->slave.dev, "pchan %u: load: DCSR:%02x DBS%c:%08x DBT%c:%08x\n", in sa11x0_dma_start_sg()
221 p->num, dcsr, in sa11x0_dma_start_sg()
226 static void noinline sa11x0_dma_complete(struct sa11x0_dma_phy *p, in sa11x0_dma_complete() argument
229 struct sa11x0_dma_desc *txd = p->txd_done; in sa11x0_dma_complete()
231 if (++p->sg_done == txd->sglen) { in sa11x0_dma_complete()
235 p->sg_done = 0; in sa11x0_dma_complete()
236 p->txd_done = p->txd_load; in sa11x0_dma_complete()
238 if (!p->txd_done) in sa11x0_dma_complete()
239 tasklet_schedule(&p->dev->task); in sa11x0_dma_complete()
241 if ((p->sg_done % txd->period) == 0) in sa11x0_dma_complete()
245 p->sg_done = 0; in sa11x0_dma_complete()
249 sa11x0_dma_start_sg(p, c); in sa11x0_dma_complete()
254 struct sa11x0_dma_phy *p = dev_id; in sa11x0_dma_irq() local
255 struct sa11x0_dma_dev *d = p->dev; in sa11x0_dma_irq()
259 dcsr = readl_relaxed(p->base + DMA_DCSR_R); in sa11x0_dma_irq()
265 p->base + DMA_DCSR_C); in sa11x0_dma_irq()
267 dev_dbg(d->slave.dev, "pchan %u: irq: DCSR:%02x\n", p->num, dcsr); in sa11x0_dma_irq()
271 p->num, dcsr, in sa11x0_dma_irq()
272 readl_relaxed(p->base + DMA_DDAR), in sa11x0_dma_irq()
273 readl_relaxed(p->base + DMA_DBSA), in sa11x0_dma_irq()
274 readl_relaxed(p->base + DMA_DBTA), in sa11x0_dma_irq()
275 readl_relaxed(p->base + DMA_DBSB), in sa11x0_dma_irq()
276 readl_relaxed(p->base + DMA_DBTB)); in sa11x0_dma_irq()
279 c = p->vchan; in sa11x0_dma_irq()
291 if (c->phy == p) { in sa11x0_dma_irq()
293 sa11x0_dma_complete(p, c); in sa11x0_dma_irq()
295 sa11x0_dma_complete(p, c); in sa11x0_dma_irq()
309 struct sa11x0_dma_phy *p = c->phy; in sa11x0_dma_start_txd() local
311 sa11x0_dma_start_desc(p, txd); in sa11x0_dma_start_txd()
312 p->txd_done = txd; in sa11x0_dma_start_txd()
313 p->sg_done = 0; in sa11x0_dma_start_txd()
316 WARN_ON(readl_relaxed(p->base + DMA_DCSR_R) & in sa11x0_dma_start_txd()
321 p->base + DMA_DCSR_C); in sa11x0_dma_start_txd()
322 writel_relaxed(txd->ddar, p->base + DMA_DDAR); in sa11x0_dma_start_txd()
325 sa11x0_dma_start_sg(p, c); in sa11x0_dma_start_txd()
326 sa11x0_dma_start_sg(p, c); in sa11x0_dma_start_txd()
333 struct sa11x0_dma_phy *p; in sa11x0_dma_tasklet() local
341 p = c->phy; in sa11x0_dma_tasklet()
342 if (p && !p->txd_done) { in sa11x0_dma_tasklet()
344 if (!p->txd_done) { in sa11x0_dma_tasklet()
346 dev_dbg(d->slave.dev, "pchan %u: free\n", p->num); in sa11x0_dma_tasklet()
350 p->vchan = NULL; in sa11x0_dma_tasklet()
358 p = &d->phy[pch]; in sa11x0_dma_tasklet()
360 if (p->vchan == NULL && !list_empty(&d->chan_pending)) { in sa11x0_dma_tasklet()
368 p->vchan = c; in sa11x0_dma_tasklet()
377 p = &d->phy[pch]; in sa11x0_dma_tasklet()
378 c = p->vchan; in sa11x0_dma_tasklet()
381 c->phy = p; in sa11x0_dma_tasklet()
405 static dma_addr_t sa11x0_dma_pos(struct sa11x0_dma_phy *p) in sa11x0_dma_pos() argument
410 dcsr = readl_relaxed(p->base + DMA_DCSR_R); in sa11x0_dma_pos()
418 return readl_relaxed(p->base + reg); in sa11x0_dma_pos()
426 struct sa11x0_dma_phy *p; in sa11x0_dma_tx_status() local
439 p = c->phy; in sa11x0_dma_tx_status()
448 } else if (!p) { in sa11x0_dma_tx_status()
454 if (p->txd_done && p->txd_done->vd.tx.cookie == cookie) in sa11x0_dma_tx_status()
455 txd = p->txd_done; in sa11x0_dma_tx_status()
456 else if (p->txd_load && p->txd_load->vd.tx.cookie == cookie) in sa11x0_dma_tx_status()
457 txd = p->txd_load; in sa11x0_dma_tx_status()
463 dma_addr_t addr = sa11x0_dma_pos(p); in sa11x0_dma_tx_status()
708 struct sa11x0_dma_phy *p; in sa11x0_dma_device_pause() local
717 p = c->phy; in sa11x0_dma_device_pause()
718 if (p) { in sa11x0_dma_device_pause()
719 writel(DCSR_RUN | DCSR_IE, p->base + DMA_DCSR_C); in sa11x0_dma_device_pause()
735 struct sa11x0_dma_phy *p; in sa11x0_dma_device_resume() local
744 p = c->phy; in sa11x0_dma_device_resume()
745 if (p) { in sa11x0_dma_device_resume()
746 writel(DCSR_RUN | DCSR_IE, p->base + DMA_DCSR_S); in sa11x0_dma_device_resume()
762 struct sa11x0_dma_phy *p; in sa11x0_dma_device_terminate_all() local
771 p = c->phy; in sa11x0_dma_device_terminate_all()
772 if (p) { in sa11x0_dma_device_terminate_all()
773 dev_dbg(d->slave.dev, "pchan %u: terminating\n", p->num); in sa11x0_dma_device_terminate_all()
778 p->base + DMA_DCSR_C); in sa11x0_dma_device_terminate_all()
780 if (p->txd_load) { in sa11x0_dma_device_terminate_all()
781 if (p->txd_load != p->txd_done) in sa11x0_dma_device_terminate_all()
782 list_add_tail(&p->txd_load->vd.node, &head); in sa11x0_dma_device_terminate_all()
783 p->txd_load = NULL; in sa11x0_dma_device_terminate_all()
785 if (p->txd_done) { in sa11x0_dma_device_terminate_all()
786 list_add_tail(&p->txd_done->vd.node, &head); in sa11x0_dma_device_terminate_all()
787 p->txd_done = NULL; in sa11x0_dma_device_terminate_all()
791 p->vchan = NULL; in sa11x0_dma_device_terminate_all()
921 struct sa11x0_dma_phy *p = &d->phy[i]; in sa11x0_dma_probe() local
923 p->dev = d; in sa11x0_dma_probe()
924 p->num = i; in sa11x0_dma_probe()
925 p->base = d->base + i * DMA_SIZE; in sa11x0_dma_probe()
928 p->base + DMA_DCSR_C); in sa11x0_dma_probe()
929 writel_relaxed(0, p->base + DMA_DDAR); in sa11x0_dma_probe()
931 ret = sa11x0_dma_request_irq(pdev, i, p); in sa11x0_dma_probe()
997 struct sa11x0_dma_phy *p = &d->phy[pch]; in sa11x0_dma_suspend() local
1000 dcsr = saved_dcsr = readl_relaxed(p->base + DMA_DCSR_R); in sa11x0_dma_suspend()
1002 writel(DCSR_RUN | DCSR_IE, p->base + DMA_DCSR_C); in sa11x0_dma_suspend()
1003 dcsr = readl_relaxed(p->base + DMA_DCSR_R); in sa11x0_dma_suspend()
1008 p->dbs[0] = readl_relaxed(p->base + DMA_DBSB); in sa11x0_dma_suspend()
1009 p->dbt[0] = readl_relaxed(p->base + DMA_DBTB); in sa11x0_dma_suspend()
1010 p->dbs[1] = readl_relaxed(p->base + DMA_DBSA); in sa11x0_dma_suspend()
1011 p->dbt[1] = readl_relaxed(p->base + DMA_DBTA); in sa11x0_dma_suspend()
1015 p->dbs[0] = readl_relaxed(p->base + DMA_DBSA); in sa11x0_dma_suspend()
1016 p->dbt[0] = readl_relaxed(p->base + DMA_DBTA); in sa11x0_dma_suspend()
1017 p->dbs[1] = readl_relaxed(p->base + DMA_DBSB); in sa11x0_dma_suspend()
1018 p->dbt[1] = readl_relaxed(p->base + DMA_DBTB); in sa11x0_dma_suspend()
1021 p->dcsr = saved_dcsr; in sa11x0_dma_suspend()
1023 writel(DCSR_STRTA | DCSR_STRTB, p->base + DMA_DCSR_C); in sa11x0_dma_suspend()
1035 struct sa11x0_dma_phy *p = &d->phy[pch]; in sa11x0_dma_resume() local
1037 u32 dcsr = readl_relaxed(p->base + DMA_DCSR_R); in sa11x0_dma_resume()
1041 if (p->txd_done) in sa11x0_dma_resume()
1042 txd = p->txd_done; in sa11x0_dma_resume()
1043 else if (p->txd_load) in sa11x0_dma_resume()
1044 txd = p->txd_load; in sa11x0_dma_resume()
1049 writel_relaxed(txd->ddar, p->base + DMA_DDAR); in sa11x0_dma_resume()
1051 writel_relaxed(p->dbs[0], p->base + DMA_DBSA); in sa11x0_dma_resume()
1052 writel_relaxed(p->dbt[0], p->base + DMA_DBTA); in sa11x0_dma_resume()
1053 writel_relaxed(p->dbs[1], p->base + DMA_DBSB); in sa11x0_dma_resume()
1054 writel_relaxed(p->dbt[1], p->base + DMA_DBTB); in sa11x0_dma_resume()
1055 writel_relaxed(p->dcsr, p->base + DMA_DCSR_S); in sa11x0_dma_resume()
1083 const char *p = param; in sa11x0_dma_filter_fn() local
1085 return !strcmp(c->name, p); in sa11x0_dma_filter_fn()