plchan            333 drivers/dma/amba-pl08x.c static int pl08x_request_mux(struct pl08x_dma_chan *plchan)
plchan            335 drivers/dma/amba-pl08x.c 	const struct pl08x_platform_data *pd = plchan->host->pd;
plchan            338 drivers/dma/amba-pl08x.c 	if (plchan->mux_use++ == 0 && pd->get_xfer_signal) {
plchan            339 drivers/dma/amba-pl08x.c 		ret = pd->get_xfer_signal(plchan->cd);
plchan            341 drivers/dma/amba-pl08x.c 			plchan->mux_use = 0;
plchan            345 drivers/dma/amba-pl08x.c 		plchan->signal = ret;
plchan            350 drivers/dma/amba-pl08x.c static void pl08x_release_mux(struct pl08x_dma_chan *plchan)
plchan            352 drivers/dma/amba-pl08x.c 	const struct pl08x_platform_data *pd = plchan->host->pd;
plchan            354 drivers/dma/amba-pl08x.c 	if (plchan->signal >= 0) {
plchan            355 drivers/dma/amba-pl08x.c 		WARN_ON(plchan->mux_use == 0);
plchan            357 drivers/dma/amba-pl08x.c 		if (--plchan->mux_use == 0 && pd->put_xfer_signal) {
plchan            358 drivers/dma/amba-pl08x.c 			pd->put_xfer_signal(plchan->cd, plchan->signal);
plchan            359 drivers/dma/amba-pl08x.c 			plchan->signal = -1;
plchan            527 drivers/dma/amba-pl08x.c static void pl08x_start_next_txd(struct pl08x_dma_chan *plchan)
plchan            529 drivers/dma/amba-pl08x.c 	struct pl08x_driver_data *pl08x = plchan->host;
plchan            530 drivers/dma/amba-pl08x.c 	struct pl08x_phy_chan *phychan = plchan->phychan;
plchan            531 drivers/dma/amba-pl08x.c 	struct virt_dma_desc *vd = vchan_next_desc(&plchan->vc);
plchan            537 drivers/dma/amba-pl08x.c 	plchan->at = txd;
plchan            753 drivers/dma/amba-pl08x.c static u32 pl08x_getbytes_chan(struct pl08x_dma_chan *plchan)
plchan            755 drivers/dma/amba-pl08x.c 	struct pl08x_driver_data *pl08x = plchan->host;
plchan            764 drivers/dma/amba-pl08x.c 	ch = plchan->phychan;
plchan            765 drivers/dma/amba-pl08x.c 	txd = plchan->at;
plchan            859 drivers/dma/amba-pl08x.c static void pl08x_phy_alloc_and_start(struct pl08x_dma_chan *plchan)
plchan            861 drivers/dma/amba-pl08x.c 	struct pl08x_driver_data *pl08x = plchan->host;
plchan            864 drivers/dma/amba-pl08x.c 	ch = pl08x_get_phy_channel(pl08x, plchan);
plchan            866 drivers/dma/amba-pl08x.c 		dev_dbg(&pl08x->adev->dev, "no physical channel available for xfer on %s\n", plchan->name);
plchan            867 drivers/dma/amba-pl08x.c 		plchan->state = PL08X_CHAN_WAITING;
plchan            868 drivers/dma/amba-pl08x.c 		plchan->waiting_at = jiffies;
plchan            873 drivers/dma/amba-pl08x.c 		ch->id, plchan->name);
plchan            875 drivers/dma/amba-pl08x.c 	plchan->phychan = ch;
plchan            876 drivers/dma/amba-pl08x.c 	plchan->state = PL08X_CHAN_RUNNING;
plchan            877 drivers/dma/amba-pl08x.c 	pl08x_start_next_txd(plchan);
plchan            881 drivers/dma/amba-pl08x.c 	struct pl08x_dma_chan *plchan)
plchan            883 drivers/dma/amba-pl08x.c 	struct pl08x_driver_data *pl08x = plchan->host;
plchan            886 drivers/dma/amba-pl08x.c 		ch->id, plchan->name);
plchan            893 drivers/dma/amba-pl08x.c 	ch->serving = plchan;
plchan            894 drivers/dma/amba-pl08x.c 	plchan->phychan = ch;
plchan            895 drivers/dma/amba-pl08x.c 	plchan->state = PL08X_CHAN_RUNNING;
plchan            896 drivers/dma/amba-pl08x.c 	pl08x_start_next_txd(plchan);
plchan            903 drivers/dma/amba-pl08x.c static void pl08x_phy_free(struct pl08x_dma_chan *plchan)
plchan            905 drivers/dma/amba-pl08x.c 	struct pl08x_driver_data *pl08x = plchan->host;
plchan            934 drivers/dma/amba-pl08x.c 	pl08x_terminate_phy_chan(pl08x, plchan->phychan);
plchan            947 drivers/dma/amba-pl08x.c 			pl08x_phy_reassign_start(plchan->phychan, next);
plchan            955 drivers/dma/amba-pl08x.c 		pl08x_put_phy_channel(pl08x, plchan->phychan);
plchan            958 drivers/dma/amba-pl08x.c 	plchan->phychan = NULL;
plchan            959 drivers/dma/amba-pl08x.c 	plchan->state = PL08X_CHAN_IDLE;
plchan           1511 drivers/dma/amba-pl08x.c 	struct pl08x_dma_chan *plchan = to_pl08x_chan(vd->tx.chan);
plchan           1515 drivers/dma/amba-pl08x.c 		pl08x_release_mux(plchan);
plchan           1517 drivers/dma/amba-pl08x.c 	pl08x_free_txd(plchan->host, txd);
plchan           1521 drivers/dma/amba-pl08x.c 				struct pl08x_dma_chan *plchan)
plchan           1525 drivers/dma/amba-pl08x.c 	vchan_get_all_descriptors(&plchan->vc, &head);
plchan           1526 drivers/dma/amba-pl08x.c 	vchan_dma_desc_free_list(&plchan->vc, &head);
plchan           1554 drivers/dma/amba-pl08x.c 	struct pl08x_dma_chan *plchan = to_pl08x_chan(chan);
plchan           1569 drivers/dma/amba-pl08x.c 		if (plchan->state == PL08X_CHAN_PAUSED)
plchan           1574 drivers/dma/amba-pl08x.c 	spin_lock_irqsave(&plchan->vc.lock, flags);
plchan           1577 drivers/dma/amba-pl08x.c 		vd = vchan_find_desc(&plchan->vc, cookie);
plchan           1586 drivers/dma/amba-pl08x.c 			bytes = pl08x_getbytes_chan(plchan);
plchan           1589 drivers/dma/amba-pl08x.c 	spin_unlock_irqrestore(&plchan->vc.lock, flags);
plchan           1597 drivers/dma/amba-pl08x.c 	if (plchan->state == PL08X_CHAN_PAUSED && ret == DMA_IN_PROGRESS)
plchan           1708 drivers/dma/amba-pl08x.c static u32 pl08x_get_cctl(struct pl08x_dma_chan *plchan,
plchan           1725 drivers/dma/amba-pl08x.c 	if (plchan->cd->single)
plchan           1741 drivers/dma/amba-pl08x.c 	struct pl08x_dma_chan *plchan = to_pl08x_chan(chan);
plchan           1744 drivers/dma/amba-pl08x.c 	spin_lock_irqsave(&plchan->vc.lock, flags);
plchan           1745 drivers/dma/amba-pl08x.c 	if (vchan_issue_pending(&plchan->vc)) {
plchan           1746 drivers/dma/amba-pl08x.c 		if (!plchan->phychan && plchan->state != PL08X_CHAN_WAITING)
plchan           1747 drivers/dma/amba-pl08x.c 			pl08x_phy_alloc_and_start(plchan);
plchan           1749 drivers/dma/amba-pl08x.c 	spin_unlock_irqrestore(&plchan->vc.lock, flags);
plchan           1752 drivers/dma/amba-pl08x.c static struct pl08x_txd *pl08x_get_txd(struct pl08x_dma_chan *plchan)
plchan           1893 drivers/dma/amba-pl08x.c 	struct pl08x_dma_chan *plchan = to_pl08x_chan(chan);
plchan           1894 drivers/dma/amba-pl08x.c 	struct pl08x_driver_data *pl08x = plchan->host;
plchan           1899 drivers/dma/amba-pl08x.c 	txd = pl08x_get_txd(plchan);
plchan           1927 drivers/dma/amba-pl08x.c 	ret = pl08x_fill_llis_for_desc(plchan->host, txd);
plchan           1933 drivers/dma/amba-pl08x.c 	return vchan_tx_prep(&plchan->vc, &txd->vd, flags);
plchan           1941 drivers/dma/amba-pl08x.c 	struct pl08x_dma_chan *plchan = to_pl08x_chan(chan);
plchan           1942 drivers/dma/amba-pl08x.c 	struct pl08x_driver_data *pl08x = plchan->host;
plchan           1949 drivers/dma/amba-pl08x.c 	txd = pl08x_get_txd(plchan);
plchan           1962 drivers/dma/amba-pl08x.c 		*slave_addr = plchan->cfg.dst_addr;
plchan           1963 drivers/dma/amba-pl08x.c 		addr_width = plchan->cfg.dst_addr_width;
plchan           1964 drivers/dma/amba-pl08x.c 		maxburst = plchan->cfg.dst_maxburst;
plchan           1966 drivers/dma/amba-pl08x.c 		dst_buses = plchan->cd->periph_buses;
plchan           1969 drivers/dma/amba-pl08x.c 		*slave_addr = plchan->cfg.src_addr;
plchan           1970 drivers/dma/amba-pl08x.c 		addr_width = plchan->cfg.src_addr_width;
plchan           1971 drivers/dma/amba-pl08x.c 		maxburst = plchan->cfg.src_maxburst;
plchan           1972 drivers/dma/amba-pl08x.c 		src_buses = plchan->cd->periph_buses;
plchan           1981 drivers/dma/amba-pl08x.c 	cctl |= pl08x_get_cctl(plchan, addr_width, maxburst);
plchan           1991 drivers/dma/amba-pl08x.c 	if (plchan->cfg.device_fc)
plchan           2002 drivers/dma/amba-pl08x.c 	ret = pl08x_request_mux(plchan);
plchan           2007 drivers/dma/amba-pl08x.c 			plchan->name);
plchan           2012 drivers/dma/amba-pl08x.c 		 plchan->signal, plchan->name);
plchan           2016 drivers/dma/amba-pl08x.c 		txd->ccfg |= plchan->signal << PL080_CONFIG_DST_SEL_SHIFT;
plchan           2018 drivers/dma/amba-pl08x.c 		txd->ccfg |= plchan->signal << PL080_CONFIG_SRC_SEL_SHIFT;
plchan           2054 drivers/dma/amba-pl08x.c 	struct pl08x_dma_chan *plchan = to_pl08x_chan(chan);
plchan           2055 drivers/dma/amba-pl08x.c 	struct pl08x_driver_data *pl08x = plchan->host;
plchan           2062 drivers/dma/amba-pl08x.c 			__func__, sg_dma_len(sgl), plchan->name);
plchan           2073 drivers/dma/amba-pl08x.c 			pl08x_release_mux(plchan);
plchan           2081 drivers/dma/amba-pl08x.c 	ret = pl08x_fill_llis_for_desc(plchan->host, txd);
plchan           2083 drivers/dma/amba-pl08x.c 		pl08x_release_mux(plchan);
plchan           2088 drivers/dma/amba-pl08x.c 	return vchan_tx_prep(&plchan->vc, &txd->vd, flags);
plchan           2096 drivers/dma/amba-pl08x.c 	struct pl08x_dma_chan *plchan = to_pl08x_chan(chan);
plchan           2097 drivers/dma/amba-pl08x.c 	struct pl08x_driver_data *pl08x = plchan->host;
plchan           2106 drivers/dma/amba-pl08x.c 		plchan->name);
plchan           2118 drivers/dma/amba-pl08x.c 			pl08x_release_mux(plchan);
plchan           2124 drivers/dma/amba-pl08x.c 	ret = pl08x_fill_llis_for_desc(plchan->host, txd);
plchan           2126 drivers/dma/amba-pl08x.c 		pl08x_release_mux(plchan);
plchan           2131 drivers/dma/amba-pl08x.c 	return vchan_tx_prep(&plchan->vc, &txd->vd, flags);
plchan           2137 drivers/dma/amba-pl08x.c 	struct pl08x_dma_chan *plchan = to_pl08x_chan(chan);
plchan           2138 drivers/dma/amba-pl08x.c 	struct pl08x_driver_data *pl08x = plchan->host;
plchan           2140 drivers/dma/amba-pl08x.c 	if (!plchan->slave)
plchan           2155 drivers/dma/amba-pl08x.c 	plchan->cfg = *config;
plchan           2162 drivers/dma/amba-pl08x.c 	struct pl08x_dma_chan *plchan = to_pl08x_chan(chan);
plchan           2163 drivers/dma/amba-pl08x.c 	struct pl08x_driver_data *pl08x = plchan->host;
plchan           2166 drivers/dma/amba-pl08x.c 	spin_lock_irqsave(&plchan->vc.lock, flags);
plchan           2167 drivers/dma/amba-pl08x.c 	if (!plchan->phychan && !plchan->at) {
plchan           2168 drivers/dma/amba-pl08x.c 		spin_unlock_irqrestore(&plchan->vc.lock, flags);
plchan           2172 drivers/dma/amba-pl08x.c 	plchan->state = PL08X_CHAN_IDLE;
plchan           2174 drivers/dma/amba-pl08x.c 	if (plchan->phychan) {
plchan           2179 drivers/dma/amba-pl08x.c 		pl08x_phy_free(plchan);
plchan           2182 drivers/dma/amba-pl08x.c 	if (plchan->at) {
plchan           2183 drivers/dma/amba-pl08x.c 		vchan_terminate_vdesc(&plchan->at->vd);
plchan           2184 drivers/dma/amba-pl08x.c 		plchan->at = NULL;
plchan           2187 drivers/dma/amba-pl08x.c 	pl08x_free_txd_list(pl08x, plchan);
plchan           2189 drivers/dma/amba-pl08x.c 	spin_unlock_irqrestore(&plchan->vc.lock, flags);
plchan           2196 drivers/dma/amba-pl08x.c 	struct pl08x_dma_chan *plchan = to_pl08x_chan(chan);
plchan           2198 drivers/dma/amba-pl08x.c 	vchan_synchronize(&plchan->vc);
plchan           2203 drivers/dma/amba-pl08x.c 	struct pl08x_dma_chan *plchan = to_pl08x_chan(chan);
plchan           2210 drivers/dma/amba-pl08x.c 	spin_lock_irqsave(&plchan->vc.lock, flags);
plchan           2211 drivers/dma/amba-pl08x.c 	if (!plchan->phychan && !plchan->at) {
plchan           2212 drivers/dma/amba-pl08x.c 		spin_unlock_irqrestore(&plchan->vc.lock, flags);
plchan           2216 drivers/dma/amba-pl08x.c 	pl08x_pause_phy_chan(plchan->phychan);
plchan           2217 drivers/dma/amba-pl08x.c 	plchan->state = PL08X_CHAN_PAUSED;
plchan           2219 drivers/dma/amba-pl08x.c 	spin_unlock_irqrestore(&plchan->vc.lock, flags);
plchan           2226 drivers/dma/amba-pl08x.c 	struct pl08x_dma_chan *plchan = to_pl08x_chan(chan);
plchan           2233 drivers/dma/amba-pl08x.c 	spin_lock_irqsave(&plchan->vc.lock, flags);
plchan           2234 drivers/dma/amba-pl08x.c 	if (!plchan->phychan && !plchan->at) {
plchan           2235 drivers/dma/amba-pl08x.c 		spin_unlock_irqrestore(&plchan->vc.lock, flags);
plchan           2239 drivers/dma/amba-pl08x.c 	pl08x_resume_phy_chan(plchan->phychan);
plchan           2240 drivers/dma/amba-pl08x.c 	plchan->state = PL08X_CHAN_RUNNING;
plchan           2242 drivers/dma/amba-pl08x.c 	spin_unlock_irqrestore(&plchan->vc.lock, flags);
plchan           2249 drivers/dma/amba-pl08x.c 	struct pl08x_dma_chan *plchan;
plchan           2256 drivers/dma/amba-pl08x.c 	plchan = to_pl08x_chan(chan);
plchan           2259 drivers/dma/amba-pl08x.c 	if (!strcmp(plchan->name, name))
plchan           2268 drivers/dma/amba-pl08x.c 	struct pl08x_dma_chan *plchan = to_pl08x_chan(chan);
plchan           2270 drivers/dma/amba-pl08x.c 	return plchan->cd == chan_id;
plchan           2315 drivers/dma/amba-pl08x.c 			struct pl08x_dma_chan *plchan = phychan->serving;
plchan           2318 drivers/dma/amba-pl08x.c 			if (!plchan) {
plchan           2325 drivers/dma/amba-pl08x.c 			spin_lock(&plchan->vc.lock);
plchan           2326 drivers/dma/amba-pl08x.c 			tx = plchan->at;
plchan           2330 drivers/dma/amba-pl08x.c 				plchan->at = NULL;
plchan           2335 drivers/dma/amba-pl08x.c 				pl08x_release_mux(plchan);
plchan           2343 drivers/dma/amba-pl08x.c 				if (vchan_next_desc(&plchan->vc))
plchan           2344 drivers/dma/amba-pl08x.c 					pl08x_start_next_txd(plchan);
plchan           2346 drivers/dma/amba-pl08x.c 					pl08x_phy_free(plchan);
plchan           2348 drivers/dma/amba-pl08x.c 			spin_unlock(&plchan->vc.lock);
plchan           2544 drivers/dma/amba-pl08x.c 	struct pl08x_dma_chan *plchan;
plchan           2562 drivers/dma/amba-pl08x.c 	plchan = to_pl08x_chan(dma_chan);
plchan           2568 drivers/dma/amba-pl08x.c 	plchan->cd->periph_buses = dma_spec->args[1];