Lines Matching refs:asc
125 static uint8_t asc_attached; /* can't have more than one asc */
177 struct asc_vsbus_softc * const asc = device_private(self);
178 struct ncr53c9x_softc * const sc = &asc->sc_ncr53c9x;
188 asc->sc_bst = va->va_memt;
189 asc->sc_dmat = va->va_dmat;
191 error = bus_space_map(asc->sc_bst, va->va_paddr - ASC_REG_NCR,
192 ASC_REG_END, 0, &asc->sc_bsh);
197 error = bus_space_subregion(asc->sc_bst, asc->sc_bsh, ASC_REG_NCR,
198 ASC_REG_END - ASC_REG_NCR, &asc->sc_ncrh);
205 error = bus_space_subregion(asc->sc_bst, asc->sc_bsh,
206 ASC_REG_KA46_ADR, sizeof(uint32_t), &asc->sc_adrh);
212 error = bus_space_subregion(asc->sc_bst, asc->sc_bsh,
213 ASC_REG_KA46_DIR, sizeof(uint32_t), &asc->sc_dirh);
229 asc->sc_adrh =
231 asc->sc_dirh =
235 asc->sc_adrh, asc->sc_dirh);
240 error = bus_dmamap_create(asc->sc_dmat, ASC_MAXXFERSIZE, 1,
241 ASC_MAXXFERSIZE, 0, BUS_DMA_NOWAIT, &asc->sc_dmamap);
256 &asc->sc_ncr53c9x, SCB_ISTACK, &asc->sc_intrcnt);
257 evcnt_attach_dynamic(&asc->sc_intrcnt, EVCNT_TYPE_INTR, NULL,
307 struct asc_vsbus_softc * const asc = (struct asc_vsbus_softc *)sc;
309 return bus_space_read_1(asc->sc_bst, asc->sc_ncrh,
316 struct asc_vsbus_softc * const asc = (struct asc_vsbus_softc *)sc;
318 bus_space_write_1(asc->sc_bst, asc->sc_ncrh,
325 struct asc_vsbus_softc * const asc = (struct asc_vsbus_softc *)sc;
327 return bus_space_read_1(asc->sc_bst, asc->sc_ncrh,
334 struct asc_vsbus_softc * const asc = (struct asc_vsbus_softc *)sc;
336 if (asc->sc_flags & ASC_MAPLOADED)
337 bus_dmamap_unload(asc->sc_dmat, asc->sc_dmamap);
338 asc->sc_flags &= ~(ASC_DMAACTIVE|ASC_MAPLOADED);
344 struct asc_vsbus_softc * const asc = (struct asc_vsbus_softc *)sc;
348 if ((asc->sc_flags & ASC_DMAACTIVE) == 0)
351 asc->sc_flags &= ~ASC_DMAACTIVE;
353 if (asc->sc_dmasize == 0) {
367 if (asc->sc_flags & ASC_MAPLOADED) {
368 bus_dmamap_sync(asc->sc_dmat, asc->sc_dmamap,
369 0, asc->sc_dmasize,
370 asc->sc_flags & ASC_FROMMEMORY
373 bus_dmamap_unload(asc->sc_dmat, asc->sc_dmamap);
375 asc->sc_flags &= ~ASC_MAPLOADED;
380 trans = asc->sc_dmasize - resid;
383 trans, (u_long) asc->sc_dmasize);
384 trans = asc->sc_dmasize;
389 *asc->sc_dmalen -= trans;
390 *asc->sc_dmaaddr += trans;
392 asc->sc_xfers++;
400 struct asc_vsbus_softc * const asc = (struct asc_vsbus_softc *)sc;
402 asc->sc_dmaaddr = addr;
403 asc->sc_dmalen = len;
405 asc->sc_flags &= ~ASC_FROMMEMORY;
407 asc->sc_flags |= ASC_FROMMEMORY;
409 if ((vaddr_t)*asc->sc_dmaaddr < VM_MIN_KERNEL_ADDRESS)
411 __func__, *asc->sc_dmaaddr);
414 (int)*asc->sc_dmalen, *asc->sc_dmaaddr,
415 (asc->sc_flags & ASC_FROMMEMORY)));
416 *dmasize = asc->sc_dmasize = uimin(*dmasize, ASC_MAXXFERSIZE);
418 if (asc->sc_dmasize) {
419 if (bus_dmamap_load(asc->sc_dmat, asc->sc_dmamap,
420 *asc->sc_dmaaddr, asc->sc_dmasize,
425 bus_dmamap_sync(asc->sc_dmat, asc->sc_dmamap,
426 0, asc->sc_dmasize,
427 asc->sc_flags & ASC_FROMMEMORY
430 bus_space_write_4(asc->sc_bst, asc->sc_adrh, 0,
431 asc->sc_dmamap->dm_segs[0].ds_addr);
432 bus_space_write_4(asc->sc_bst, asc->sc_dirh, 0,
433 asc->sc_flags & ASC_FROMMEMORY);
436 asc->sc_dmamap->dm_segs[0].ds_len,
437 asc->sc_dmamap->dm_segs[0].ds_addr));
438 asc->sc_flags |= ASC_MAPLOADED;
447 struct asc_vsbus_softc * const asc = (struct asc_vsbus_softc *)sc;
449 asc->sc_flags |= ASC_DMAACTIVE;
455 struct asc_vsbus_softc * const asc = (struct asc_vsbus_softc *)sc;
457 if (asc->sc_flags & ASC_MAPLOADED) {
458 bus_dmamap_sync(asc->sc_dmat, asc->sc_dmamap,
459 0, asc->sc_dmasize,
460 asc->sc_flags & ASC_FROMMEMORY
463 bus_dmamap_unload(asc->sc_dmat, asc->sc_dmamap);
466 asc->sc_flags &= ~(ASC_DMAACTIVE|ASC_MAPLOADED);
472 struct asc_vsbus_softc * const asc = (struct asc_vsbus_softc *)sc;
474 return (asc->sc_flags & ASC_DMAACTIVE) != 0;