Lines Matching defs:csc
158 struct cbsc_softc *csc = device_private(self);
159 struct ncr53c9x_softc *sc = &csc->sc_ncr53c9x;
175 csc->sc_reg = &((volatile uint8_t *)zap->va)[0xf400];
176 csc->sc_dmabase = &csc->sc_reg[0x400];
180 aprint_normal(": address %p", csc->sc_reg);
229 csc->sc_isr.isr_intr = ncr53c9x_intr;
230 csc->sc_isr.isr_arg = sc;
231 csc->sc_isr.isr_ipl = 2;
232 add_isr(&csc->sc_isr);
249 struct cbsc_softc *csc = (struct cbsc_softc *)sc;
251 return csc->sc_reg[reg * 4];
257 struct cbsc_softc *csc = (struct cbsc_softc *)sc;
260 csc->sc_reg[reg * 4] = v;
263 reg == NCR_CMD/* && csc->sc_active*/) {
273 struct cbsc_softc *csc = (struct cbsc_softc *)sc;
275 if ((csc->sc_reg[NCR_STAT * 4] & NCRSTAT_INT) == 0)
279 csc->sc_portbits |= CBSC_PB_LED;
281 csc->sc_portbits &= ~CBSC_PB_LED;
282 csc->sc_reg[0x802] = csc->sc_portbits;
284 if ((csc->sc_reg[0x802] & CBSC_HB_CREQ) == 0)
288 cbsc_trace[cbsc_trace_ptr].status = csc->sc_reg[NCR_STAT * 4];
289 cbsc_trace[cbsc_trace_ptr].xx = csc->sc_reg[NCR_CMD * 4];
290 cbsc_trace[cbsc_trace_ptr].yy = csc->sc_active;
300 struct cbsc_softc *csc = (struct cbsc_softc *)sc;
302 csc->sc_active = 0;
308 register struct cbsc_softc *csc = (struct cbsc_softc *)sc;
312 csc->sc_dmasize, sc->sc_espintr, sc->sc_espstat,
313 csc->sc_reg[NCR_FFLAG * 4] & NCRFIFO_FF));
314 if (csc->sc_active == 0) {
320 cnt = csc->sc_reg[NCR_TCL * 4];
321 cnt += csc->sc_reg[NCR_TCM * 4] << 8;
322 cnt += csc->sc_reg[NCR_TCH * 4] << 16;
323 if (!csc->sc_datain) {
324 cnt += csc->sc_reg[NCR_FFLAG * 4] & NCRFIFO_FF;
325 csc->sc_reg[NCR_CMD * 4] = NCRCMD_FLUSH;
327 cnt = csc->sc_dmasize - cnt; /* number of bytes transferred */
329 if (csc->sc_xfr_align) {
330 memcpy(*csc->sc_dmaaddr, csc->sc_alignbuf, cnt);
331 csc->sc_xfr_align = 0;
333 *csc->sc_dmaaddr += cnt;
334 *csc->sc_pdmalen -= cnt;
335 csc->sc_active = 0;
343 struct cbsc_softc *csc = (struct cbsc_softc *)sc;
348 csc->sc_dmaaddr = addr;
349 csc->sc_pdmalen = len;
350 csc->sc_datain = datain;
351 csc->sc_dmasize = *dmasize;
360 csc->sc_dmasize > cbsc_max_dma)
361 csc->sc_dmasize = cbsc_max_dma;
364 xfer = uimin(csc->sc_dmasize, PAGE_SIZE - (pa & (PAGE_SIZE - 1)));
365 csc->sc_xfr_align = 0;
373 csc->sc_reg[NCR_FIFO * 4] = *ptr++;
379 pa = kvtop((void *)&csc->sc_alignbuf);
380 xfer = csc->sc_dmasize = uimin(xfer, sizeof(csc->sc_alignbuf));
382 csc->sc_xfr_align = 1;
386 while (xfer < csc->sc_dmasize) {
389 if ((csc->sc_dmasize - xfer) < PAGE_SIZE)
390 xfer = csc->sc_dmasize;
398 csc->sc_dmasize = xfer;
399 *dmasize = csc->sc_dmasize;
400 csc->sc_pa = pa;
403 if (csc->sc_xfr_align) {
404 dma_cachectl(csc->sc_alignbuf,
405 sizeof(csc->sc_alignbuf));
408 dma_cachectl(*csc->sc_dmaaddr, csc->sc_dmasize);
412 if (csc->sc_datain)
416 csc->sc_dmabase[0] = (uint8_t)(pa >> 24);
417 csc->sc_dmabase[2] = (uint8_t)(pa >> 16);
418 csc->sc_dmabase[4] = (uint8_t)(pa >> 8);
419 csc->sc_dmabase[6] = (uint8_t)(pa);
420 if (csc->sc_datain)
421 csc->sc_portbits &= ~CBSC_PB_WRITE;
423 csc->sc_portbits |= CBSC_PB_WRITE;
424 csc->sc_reg[0x802] = csc->sc_portbits;
425 csc->sc_active = 1;
442 struct cbsc_softc *csc = (struct cbsc_softc *)sc;
444 return csc->sc_active;