wdc
{"wdc", wdc, WDC_USAGE},
void wdc(int, char *[]) __dead;
struct wdc_softc *wdc;
wdc = CHAN_TO_WDC(&sc->sc_ports[chnum].chan);
wdc->regs[chnum] = sc->sc_ports[chnum].wdr[piomode];
efa_debug_print_regmapping(&wdc->regs[chnum]);
struct wdc_softc *wdc = CHAN_TO_WDC(chp);
struct wdc_regs *wdr = &wdc->regs[chp->ch_channel];
struct wdc_softc *wdc = CHAN_TO_WDC(chp);
struct wdc_regs *wdr = &wdc->regs[chp->ch_channel];
if (wdc->select)
wdc->select(chp,0);
if (wdc->irqack)
wdc->irqack(chp);
wdc.datain_pio = wdc_extio_datain;
wdc.dataout_pio = wdc_extio_dataout;
wdc.sc_atac.atac_cap |= cf->cf_flags &
wdc.cap |= cf->cf_flags &
if (wdc > 0)
sc->sc_port, wdc);
if (cnmac_send(sc, m, &wdc)) {
if (wdc > 0)
octpko_op_doorbell_write(sc->sc_port, sc->sc_port, wdc);
int wdc = 0;
octpko_op_doorbell_write(int pid, int qid, int wdc)
value = __SHIFTIN(wdc, PKO_DOORBELL_WRITE_WDC);
struct wdc_softc *wdc = &sc->sc_wdcdev;
wdc->sc_atac.atac_cap =
wdc->sc_atac.atac_pio_cap = 0;
wdc->sc_atac.atac_channels = sc->sc_chanlist;
wdc->sc_atac.atac_nchannels = 1;
struct wdc_softc *wdc = CHAN_TO_WDC(chp);
struct wdc_regs *wdr = &wdc->regs[chp->ch_channel];
aprint_normal_dev(wdc->sc_atac.atac_dev,
smg_getcursor(struct smg_screen *ss, struct wsdisplay_cursor *wdc)
if ((wdc->which & WSDISPLAY_CURSOR_DOCUR) != 0)
wdc->enable = ss->ss_curcmd & PCCCMD_ENPA ? 1 : 0;
if ((wdc->which & WSDISPLAY_CURSOR_DOPOS) != 0) {
wdc->pos.x = ss->ss_curpos.x;
wdc->pos.y = ss->ss_curpos.y;
if ((wdc->which & WSDISPLAY_CURSOR_DOHOT) != 0) {
wdc->hot.x = ss->ss_curhot.x;
wdc->hot.y = ss->ss_curhot.y;
if ((wdc->which & WSDISPLAY_CURSOR_DOCMAP) != 0) {
wdc->cmap.index = 0;
wdc->cmap.count = 0;
if ((wdc->which & WSDISPLAY_CURSOR_DOSHAPE) != 0) {
wdc->size.x = wdc->size.y = PCC_CURSOR_SIZE;
error = copyout(ss->ss_curimg, wdc->image,
error = copyout(ss->ss_curmask, wdc->mask,
smg_setcursor(struct smg_screen *ss, struct wsdisplay_cursor *wdc)
if ((wdc->which & WSDISPLAY_CURSOR_DOCMAP) != 0) {
if (wdc->cmap.count != 0)
if ((wdc->which & WSDISPLAY_CURSOR_DOSHAPE) != 0) {
if (wdc->size.x != PCC_CURSOR_SIZE ||
wdc->size.y != PCC_CURSOR_SIZE)
error = copyin(wdc->image, curfg, sizeof(curfg));
error = copyin(wdc->mask, curmask, sizeof(curmask));
if ((wdc->which & WSDISPLAY_CURSOR_DOCUR) != 0) {
if (wdc->enable)
if ((wdc->which & WSDISPLAY_CURSOR_DOPOS) != 0) {
ss->ss_curpos.x = wdc->pos.x;
ss->ss_curpos.y = wdc->pos.y;
if ((wdc->which & WSDISPLAY_CURSOR_DOHOT) != 0) {
ss->ss_curhot.x = wdc->hot.x;
ss->ss_curhot.y = wdc->hot.y;
if ((wdc->which & WSDISPLAY_CURSOR_DOSHAPE) != 0) {
smg_updatecursor(ss, wdc->which);
struct wdc_softc *wdc = CHAN_TO_WDC(chp);
(*wdc->piobm_done)(wdc->dma_arg,
struct wdc_softc *wdc = CHAN_TO_WDC(chp);
struct wdc_regs *wdr = &wdc->regs[chp->ch_channel];
if (! (wdc->cap & WDC_CAPABILITY_NO_AUXCTL))
if (wdc->select)
wdc->select(chp, xfer->c_drive);
if (! (wdc->cap & WDC_CAPABILITY_NO_AUXCTL))
if (! (wdc->cap & WDC_CAPABILITY_NO_AUXCTL))
struct wdc_softc *wdc = CHAN_TO_WDC(chp);
struct wdc_regs *wdr = &wdc->regs[chp->ch_channel];
error = (*wdc->dma_init)(wdc->dma_arg,
if (wdc->select)
wdc->select(chp, xfer->c_drive);
(*wdc->dma_start)(wdc->dma_arg,
(*wdc->dma_start)(wdc->dma_arg,
error = (*wdc->dma_init)(wdc->dma_arg,
if (wdc->select)
wdc->select(chp, xfer->c_drive);
(*wdc->piobm_start)(wdc->dma_arg,
wdc->dataout_pio(chp, drvp->drive_flags,
struct wdc_softc *wdc = CHAN_TO_WDC(chp);
if (wdc->irqack)
wdc->irqack(chp);
if (wdc->dma_status != 0) {
(*wdc->piobm_start)(wdc->dma_arg,
wdc->datain_pio(chp, drvp->drive_flags,
fop->df_reg[0] = wdc->sc_status;
fop->df_reg[1] = wdc->sc_error;
struct wdc_softc *wdc = CHAN_TO_WDC(chp);
wdc->dataout_pio(chp, drvp->drive_flags,
struct wdc_softc *wdc = CHAN_TO_WDC(chp);
wdc->datain_pio(chp, drvp->drive_flags,
struct wdc_softc *wdc = CHAN_TO_WDC(chp);
wdc->datain_pio(chp, drive_flags, data, bcount);
wdc->dataout_pio(chp, drive_flags, data, bcount);
struct wdc_softc *wdc = CHAN_TO_WDC(chp);
wdc->dataout_pio(chp, drvp->drive_flags, cmd, sc_xfer->cmdlen);
wdc->dataout_pio(chp, drvp->drive_flags,
wdc->datain_pio(chp, drvp->drive_flags,
struct wdc_softc *wdc = CHAN_TO_WDC(chp);
if (wdc->dma_status & (WDC_DMAST_NOIRQ | WDC_DMAST_ERR)) {
struct wdc_softc *wdc = CHAN_TO_WDC(chp);
(*wdc->dma_finish)(wdc->dma_arg,
struct wdc_softc *wdc = CHAN_TO_WDC(chp);
struct wdc_regs *wdr = &wdc->regs[chp->ch_channel];
wdc->reset(chp, poll);
if (! (wdc->cap & WDC_CAPABILITY_NO_AUXCTL))
struct wdc_softc *wdc = CHAN_TO_WDC(chp);
struct wdc_regs *wdr = &wdc->regs[chp->ch_channel];
if (wdc->select)
wdc->select(chp,0);
if (! (wdc->cap & WDC_CAPABILITY_NO_AUXCTL)) {
if (! (wdc->cap & WDC_CAPABILITY_NO_AUXCTL))
if (wdc->irqack)
wdc->irqack(chp);
struct wdc_softc *wdc = CHAN_TO_WDC(chp);
struct wdc_regs *wdr = &wdc->regs[chp->ch_channel];
if (wdc->select)
wdc->select(chp,0);
if (wdc->select)
wdc->select(chp,1);
struct wdc_softc *wdc = CHAN_TO_WDC(chp);
struct wdc_regs *wdr = &wdc->regs[chp->ch_channel];
struct wdc_softc *wdc = CHAN_TO_WDC(chp);
wdc->dma_status =
(*wdc->dma_finish)(wdc->dma_arg,
if ((wdc->dma_status & WDC_DMAST_NOIRQ) == 0)
wdc->dma_status = (*wdc->dma_finish)(wdc->dma_arg,
struct wdc_softc *wdc = CHAN_TO_WDC(chp);
wdc->dma_status =
(*wdc->dma_finish)(wdc->dma_arg, chp->ch_channel,
struct wdc_softc *wdc = CHAN_TO_WDC(chp);
struct wdc_regs *wdr = &wdc->regs[chp->ch_channel];
if (wdc->select)
wdc->select(chp,drive);
if (! (wdc->cap & WDC_CAPABILITY_NO_AUXCTL))
struct wdc_softc *wdc = CHAN_TO_WDC(chp);
struct wdc_regs *wdr = &wdc->regs[chp->ch_channel];
if (wdc->irqack)
wdc->irqack(chp);
wdc->datain_pio(chp, drive_flags, data, bcount);
wdc->dataout_pio(chp, drive_flags, data, bcount);
struct wdc_softc *wdc = CHAN_TO_WDC(chp);
struct wdc_regs *wdr = &wdc->regs[chp->ch_channel];
if (! (wdc->cap & WDC_CAPABILITY_NO_AUXCTL)) {
if (! (wdc->cap & WDC_CAPABILITY_NO_AUXCTL)) {
if (! (wdc->cap & WDC_CAPABILITY_NO_AUXCTL))
struct wdc_softc *wdc = CHAN_TO_WDC(chp);
struct wdc_regs *wdr = &wdc->regs[chp->ch_channel];
if (wdc->select)
wdc->select(chp,drive);
struct wdc_softc *wdc = CHAN_TO_WDC(chp);
struct wdc_regs *wdr = &wdc->regs[chp->ch_channel];
KASSERT(drive < wdc->wdc_maxdrives);
if (wdc->select)
wdc->select(chp,drive);
if (wdc->cap & WDC_CAPABILITY_WIDEREGS) {
wdc_allocate_regs(struct wdc_softc *wdc)
struct wdc_softc *wdc = CHAN_TO_WDC(chp);
struct wdc_regs *wdr = &wdc->regs[chp->ch_channel];
if (wdc->select)
wdc->select(chp,drive);
wdc->regs = malloc(wdc->sc_atac.atac_nchannels *
struct wdc_softc *wdc = CHAN_TO_WDC(chp);
if (atabus_alloc_drives(chp, wdc->wdc_maxdrives) != 0) {
struct wdc_softc *wdc = CHAN_TO_WDC(chp);
struct wdc_regs *wdr = &wdc->regs[chp->ch_channel];
if (atabus_alloc_drives(chp, wdc->wdc_maxdrives) != 0) {
if (wdc->select)
wdc->select(chp,1);
if (wdc->select)
wdc->select(chp,0);
(wdc->cap & WDC_CAPABILITY_PREATA) == 0) {
if (wdc->select)
wdc->select(chp,i);
struct wdc_softc *wdc;
wdc = kmem_zalloc(sizeof(*wdc), KM_SLEEP);
ch->ch_atac = &wdc->sc_atac;
wdc->regs = wdr;
wdc->reset = (do_reset != NULL) ? do_reset : wdc_do_reset;
kmem_free(wdc, sizeof(*wdc));
struct wdc_softc *wdc = CHAN_TO_WDC(chp);
struct wdc_regs *wdr = &wdc->regs[chp->ch_channel];
if ((wdc->cap & WDC_CAPABILITY_NO_EXTRA_RESETS) == 0) {
if (wdc->select)
wdc->select(chp,0);
if (wdc->select)
wdc->select(chp,1);
(wdc->cap & WDC_CAPABILITY_ZERO_ABSENT))
(wdc->cap & WDC_CAPABILITY_ZERO_ABSENT))
if (wdc->select)
wdc->select(chp,0);
if (wdc->select)
wdc->select(chp,1);
if (wdc->select)
wdc->select(chp,0);
if (wdc->select)
wdc->select(chp,0);
wdc->reset(chp, RESET_POLL);
if (! (wdc->cap & WDC_CAPABILITY_NO_AUXCTL))
for (drive = 0; drive < wdc->wdc_maxdrives; drive++) {
if (wdc->select)
wdc->select(chp,drive);
struct wdc_softc *wdc = CHAN_TO_WDC(chp);
KASSERT(wdc->wdc_maxdrives > 0 && wdc->wdc_maxdrives <= WDC_MAXDRIVES);
if (wdc->datain_pio == NULL)
wdc->datain_pio = wdc_datain_pio;
if (wdc->dataout_pio == NULL)
wdc->dataout_pio = wdc_dataout_pio;
if (wdc->reset == NULL)
wdc->reset = wdc_do_reset;
struct wdc_softc *wdc = CHAN_TO_WDC(chp);
struct wdc_regs *wdr = &wdc->regs[chp->ch_channel];
wdc->dma_status =
(*wdc->dma_finish)(wdc->dma_arg, chp->ch_channel,
if (wdc->dma_status & WDC_DMAST_NOIRQ) {
fop->df_reg[0] = wdc->sc_status;
fop->df_reg[1] = wdc->sc_error;
struct wdc_softc *wdc = &sc->sc_wdcdev;
if ((wdc->sc_atac.atac_cap & ATAC_CAP_UDMA) &&
struct wdc_softc *wdc = CHAN_TO_WDC(chp);
else if (wdc->dma_status &
struct wdc_softc *wdc = device_private(chan->chan_adapter->adapt_dev);
struct atac_softc *atac = &wdc->sc_atac;
struct wdc_regs *wdr = &wdc->regs[chan->chan_channel];
struct wdc_softc *wdc = device_private(chan->chan_adapter->adapt_dev);
struct atac_softc *atac = &wdc->sc_atac;
struct wdc_softc *wdc = device_private(adapt->adapt_dev);
struct atac_softc *atac = &wdc->sc_atac;
struct wdc_softc *wdc = CHAN_TO_WDC(chp);
struct wdc_regs *wdr = &wdc->regs[chp->ch_channel];
if (wdc->select)
wdc->select(chp, xfer->c_drive);
if (wdc->select)
wdc->select(chp, xfer->c_drive);
error = (*wdc->dma_init)(wdc->dma_arg,
struct wdc_softc *wdc = CHAN_TO_WDC(chp);
struct wdc_regs *wdr = &wdc->regs[chp->ch_channel];
if (wdc->select)
wdc->select(chp, xfer->c_drive);
if (wdc->irqack)
wdc->irqack(chp);
error = (*wdc->dma_init)(wdc->dma_arg,
wdc->dataout_pio(chp, drvp->drive_flags, cmd, sc_xfer->cmdlen);
(*wdc->dma_start)(wdc->dma_arg,
(*wdc->piobm_start)(wdc->dma_arg,
wdc->dataout_pio(chp, drvp->drive_flags,
(*wdc->piobm_start)(wdc->dma_arg,
wdc->datain_pio(chp, drvp->drive_flags,