Lines Matching refs:ppc

49 #include <dev/ppc/ppcvar.h>
50 #include <dev/ppc/ppcreg.h>
95 ppc_isa_dmadone(struct ppc_data *ppc)
97 isa_dmadone(ppc->ppc_dmaflags, ppc->ppc_dmaddr, ppc->ppc_dmacnt,
98 ppc->ppc_dmachan);
104 struct ppc_data *ppc = device_get_softc(dev);
106 if ((ppc->ppc_avm & PPB_ECP) && (ppc->ppc_dmachan > 0)) {
108 isa_dma_acquire(ppc->ppc_dmachan);
109 isa_dmainit(ppc->ppc_dmachan, 1024); /* nlpt.BUFSIZE */
110 ppc->ppc_dmadone = ppc_isa_dmadone;
143 struct ppc_data *ppc = device_get_softc(dev);
148 PPC_ASSERT_LOCKED(ppc);
149 if (!(ppc->ppc_avm & PPB_ECP))
151 if (ppc->ppc_dmachan == 0)
158 ecr_sav = r_ecr(ppc);
159 ctr_sav = r_ctr(ppc);
167 w_ecr(ppc, ecr);
170 ctr = r_ctr(ppc);
172 w_ctr(ppc, ctr);
174 ppc->ppc_dmaflags = 0;
175 ppc->ppc_dmaddr = (caddr_t)buf;
176 ppc->ppc_dmacnt = (u_int)len;
178 switch (ppc->ppc_mode) {
191 w_ecr(ppc, ecr);
192 ecr = r_ecr(ppc);
194 ppc->ppc_dmastat = PPC_DMA_INIT;
198 ppc->ppc_irqstat = PPC_IRQ_DMA;
199 w_ecr(ppc, ecr);
201 isa_dmastart(ppc->ppc_dmaflags, ppc->ppc_dmaddr, ppc->ppc_dmacnt,
202 ppc->ppc_dmachan);
203 ppc->ppc_dmastat = PPC_DMA_STARTED;
206 printf("s%d", ppc->ppc_dmacnt);
215 error = mtx_sleep(ppc, &ppc->ppc_lock, PPBPRI | PCATCH,
224 isa_dmadone(ppc->ppc_dmaflags, ppc->ppc_dmaddr,
225 ppc->ppc_dmacnt, ppc->ppc_dmachan);
228 w_ecr(ppc, PPC_ECR_RESET);
230 ppc->ppc_dmastat = PPC_DMA_INTERRUPTED;
235 while (!(r_ecr(ppc) & PPC_FIFO_EMPTY)) {
237 if (r_ecr(ppc) & PPC_FIFO_EMPTY)
242 error = mtx_sleep(ppc, &ppc->ppc_lock, PPBPRI | PCATCH,
249 w_ecr(ppc, PPC_ECR_RESET);
251 ppc->ppc_dmastat = PPC_DMA_INTERRUPTED;
259 w_ecr(ppc, PPC_ECR_RESET);
269 w_ecr(ppc, ecr_sav);
270 w_ctr(ppc, ctr_sav);
274 DRIVER_MODULE(ppc, isa, ppc_isa_driver, ppc_devclass, 0, 0);