Lines Matching refs:fdc
243 struct fdc_data *fdc; /* pointer to controller structure */ member
273 static SYSCTL_NODE(_debug, OID_AUTO, fdc, CTLFLAG_RW | CTLFLAG_MPSAFE, 0,
322 fdregwr(struct fdc_data *fdc, int reg, uint8_t v) in fdregwr() argument
325 bus_space_write_1(fdc->iot, fdc->ioh[reg], fdc->ioff[reg], v); in fdregwr()
329 fdregrd(struct fdc_data *fdc, int reg) in fdregrd() argument
332 return bus_space_read_1(fdc->iot, fdc->ioh[reg], fdc->ioff[reg]); in fdregrd()
336 fdctl_wr(struct fdc_data *fdc, u_int8_t v) in fdctl_wr() argument
339 fdregwr(fdc, FDCTL, v); in fdctl_wr()
343 fdout_wr(struct fdc_data *fdc, u_int8_t v) in fdout_wr() argument
346 fdregwr(fdc, FDOUT, v); in fdout_wr()
350 fdsts_rd(struct fdc_data *fdc) in fdsts_rd() argument
353 return fdregrd(fdc, FDSTS); in fdsts_rd()
357 fddsr_wr(struct fdc_data *fdc, u_int8_t v) in fddsr_wr() argument
360 fdregwr(fdc, FDDSR, v); in fddsr_wr()
364 fddata_wr(struct fdc_data *fdc, u_int8_t v) in fddata_wr() argument
367 fdregwr(fdc, FDDATA, v); in fddata_wr()
371 fddata_rd(struct fdc_data *fdc) in fddata_rd() argument
374 return fdregrd(fdc, FDDATA); in fddata_rd()
378 fdin_rd(struct fdc_data *fdc) in fdin_rd() argument
381 return fdregrd(fdc, FDCTL); in fdin_rd()
389 fdbcdr_wr(struct fdc_data *fdc, int iswrite, uint16_t count) in fdbcdr_wr() argument
391 fdregwr(fdc, FDBCDR, (count - 1) & 0xff); in fdbcdr_wr()
392 fdregwr(fdc, FDBCDR + 1, in fdbcdr_wr()
397 fdc_err(struct fdc_data *fdc, const char *s) in fdc_err() argument
399 fdc->fdc_errs++; in fdc_err()
401 if (fdc->fdc_errs < FDC_ERRMAX) in fdc_err()
402 device_printf(fdc->fdc_dev, "%s", s); in fdc_err()
403 else if (fdc->fdc_errs == FDC_ERRMAX) in fdc_err()
404 device_printf(fdc->fdc_dev, "too many errors, not " in fdc_err()
420 fdc_in(struct fdc_data *fdc, int *ptr) in fdc_in() argument
426 i = fdsts_rd(fdc) & (NE7_DIO | NE7_RQM); in fdc_in()
428 i = fddata_rd(fdc); in fdc_in()
434 return (fdc_err(fdc, "ready for output in input\n")); in fdc_in()
438 return (fdc_err(fdc, bootverbose? "input ready timeout\n": 0)); in fdc_in()
442 fdc_out(struct fdc_data *fdc, int x) in fdc_out() argument
448 i = fdsts_rd(fdc) & (NE7_DIO | NE7_RQM); in fdc_out()
450 fddata_wr(fdc, x); in fdc_out()
454 return (fdc_err(fdc, "ready for input in output\n")); in fdc_out()
458 return (fdc_err(fdc, bootverbose? "output ready timeout\n": 0)); in fdc_out()
470 fdc_cmd(struct fdc_data *fdc, int n_out, ...) in fdc_cmd() argument
482 if (fdc_out(fdc, i) < 0) { in fdc_cmd()
487 fdc->flags |= FDC_NEEDS_RESET; in fdc_cmd()
489 return fdc_err(fdc, msg); in fdc_cmd()
495 if (fdc_in(fdc, ptr) != 0) { in fdc_cmd()
500 fdc->flags |= FDC_NEEDS_RESET; in fdc_cmd()
502 return fdc_err(fdc, msg); in fdc_cmd()
510 fdc_reset(struct fdc_data *fdc) in fdc_reset() argument
514 if (fdc->fdct == FDC_ENHANCED) { in fdc_reset()
516 fddsr_wr(fdc, I8207X_DSR_SR); in fdc_reset()
519 fdout_wr(fdc, fdc->fdout & ~(FDO_FRST|FDO_FDMAEN)); in fdc_reset()
522 fdout_wr(fdc, fdc->fdout & ~FDO_FDMAEN); in fdc_reset()
525 fdout_wr(fdc, fdc->fdout); in fdc_reset()
528 if (fdc_cmd(fdc, 3, NE7CMD_SPECIFY, spec1, spec2, 0)) in fdc_reset()
529 device_printf(fdc->fdc_dev, " SPECIFY failed in reset\n"); in fdc_reset()
531 if (fdc->fdct == FDC_ENHANCED) { in fdc_reset()
532 if (fdc_cmd(fdc, 4, in fdc_reset()
541 device_printf(fdc->fdc_dev, in fdc_reset()
544 if (fdc_cmd(fdc, 1, in fdc_reset()
548 device_printf(fdc->fdc_dev, in fdc_reset()
558 fdc_sense_drive(struct fdc_data *fdc, int *st3p) in fdc_sense_drive() argument
562 if (fdc_cmd(fdc, 2, NE7CMD_SENSED, fdc->fd->fdsu, 1, &st3)) in fdc_sense_drive()
563 return (fdc_err(fdc, "Sense Drive Status failed\n")); in fdc_sense_drive()
570 fdc_sense_int(struct fdc_data *fdc, int *st0p, int *cylp) in fdc_sense_int() argument
574 ret = fdc_cmd(fdc, 1, NE7CMD_SENSEI, 1, &st0); in fdc_sense_int()
576 (void)fdc_err(fdc, "sense intr err reading stat reg 0\n"); in fdc_sense_int()
590 if (fdc_in(fdc, &cyl) != 0) in fdc_sense_int()
591 return fdc_err(fdc, "can't get cyl num\n"); in fdc_sense_int()
600 fdc_read_status(struct fdc_data *fdc) in fdc_read_status() argument
605 ret = fdc_in(fdc, &status); in fdc_read_status()
606 fdc->status[i] = status; in fdc_read_status()
612 fdc->flags |= FDC_STAT_VALID; in fdc_read_status()
614 fdc->flags &= ~FDC_STAT_VALID; in fdc_read_status()
625 struct fdc_data *fdc; in fd_select() local
628 fdc = fd->fdc; in fd_select()
629 fdc->fdout &= ~FDO_FDSEL; in fd_select()
630 fdc->fdout |= FDO_FDMAEN | FDO_FRST | fd->fdsu; in fd_select()
631 fdout_wr(fdc, fdc->fdout); in fd_select()
642 mtx_assert(&fd->fdc->fdc_mtx, MA_OWNED); in fd_turnon()
650 bioq_disksort(&fd->fdc->head, bp); in fd_turnon()
654 wakeup(&fd->fdc->head); in fd_turnon()
660 struct fdc_data *fdc; in fd_motor() local
662 fdc = fd->fdc; in fd_motor()
668 fdc->fdout |= (FDO_MOEN0 << fd->fdsu); in fd_motor()
673 fdc->fdout &= ~(FDO_MOEN0 << fd->fdsu); in fd_motor()
675 fdout_wr(fdc, fdc->fdout); in fd_motor()
683 mtx_assert(&fd->fdc->fdc_mtx, MA_OWNED); in fd_turnoff()
710 fdc_pio(struct fdc_data *fdc) in fdc_pio() argument
716 bp = fdc->bp; in fdc_pio()
717 cptr = fdc->fd->fd_ioptr; in fdc_pio()
718 count = fdc->fd->fd_iosize; in fdc_pio()
721 fdbcdr_wr(fdc, 0, count); in fdc_pio()
722 bus_space_read_multi_1(fdc->iot, fdc->ioh[FD_YE_DATAPORT], in fdc_pio()
723 fdc->ioff[FD_YE_DATAPORT], cptr, count); in fdc_pio()
725 bus_space_write_multi_1(fdc->iot, fdc->ioh[FD_YE_DATAPORT], in fdc_pio()
726 fdc->ioff[FD_YE_DATAPORT], cptr, count); in fdc_pio()
727 fdbcdr_wr(fdc, 0, count); /* needed? */ in fdc_pio()
732 fdc_biodone(struct fdc_data *fdc, int error) in fdc_biodone() argument
737 fd = fdc->fd; in fdc_biodone()
738 bp = fdc->bp; in fdc_biodone()
740 mtx_lock(&fdc->fdc_mtx); in fdc_biodone()
743 fdc->bp = NULL; in fdc_biodone()
744 fdc->fd = NULL; in fdc_biodone()
745 mtx_unlock(&fdc->fdc_mtx); in fdc_biodone()
747 if ((debugflags & 2) && fd->fdc->retry > 0) in fdc_biodone()
748 printf("retries: %d\n", fd->fdc->retry); in fdc_biodone()
761 fdc_worker(struct fdc_data *fdc) in fdc_worker() argument
776 bp = fdc->bp; in fdc_worker()
777 fd = fdc->fd; in fdc_worker()
779 (fdc->retry >= retries || (fd->options & FDOPT_NORETRY))) { in fdc_worker()
782 if (fdc->flags & FDC_NEEDS_RESET) { in fdc_worker()
783 mtx_lock(&fdc->fdc_mtx); in fdc_worker()
785 mtx_unlock(&fdc->fdc_mtx); in fdc_worker()
787 return (fdc_biodone(fdc, EIO)); in fdc_worker()
794 fd->fd_ioptr, fd->fd_iosize, fdc->dmachan); in fdc_worker()
795 mtx_lock(&fdc->fdc_mtx); in fdc_worker()
797 mtx_unlock(&fdc->fdc_mtx); in fdc_worker()
801 if (fdc->flags & FDC_NEEDS_RESET) { in fdc_worker()
802 fdc->flags &= ~FDC_NEEDS_RESET; in fdc_worker()
803 fdc_reset(fdc); in fdc_worker()
807 tsleep(fdc, PRIBIO, "fdcrst", hz); in fdc_worker()
810 fdc_sense_int(fdc, &st0, &cyl); in fdc_worker()
816 if (fdc->bp == NULL) { in fdc_worker()
817 mtx_lock(&fdc->fdc_mtx); in fdc_worker()
819 fdc->bp = bioq_takefirst(&fdc->head); in fdc_worker()
820 if (fdc->bp == NULL) in fdc_worker()
821 msleep(&fdc->head, &fdc->fdc_mtx, in fdc_worker()
823 } while (fdc->bp == NULL && in fdc_worker()
824 (fdc->flags & FDC_KTHREAD_EXIT) == 0); in fdc_worker()
825 mtx_unlock(&fdc->fdc_mtx); in fdc_worker()
827 if (fdc->bp == NULL) in fdc_worker()
834 bp = fdc->bp; in fdc_worker()
835 fd = fdc->fd = bp->bio_driver1; in fdc_worker()
836 fdc->retry = 0; in fdc_worker()
847 if (fdc->fdct == FDC_ENHANCED) in fdc_worker()
848 fddsr_wr(fdc, fd->ft->trans); in fdc_worker()
850 fdctl_wr(fdc, fd->ft->trans); in fdc_worker()
854 !(fdin_rd(fdc) & FDI_DCHG) && in fdc_worker()
857 return (fdc_biodone(fdc, 0)); in fdc_worker()
865 return (fdc_biodone(fdc, ENXIO)); in fdc_worker()
868 if (fdin_rd(fdc) & FDI_DCHG) { in fdc_worker()
871 mtx_lock(&fdc->fdc_mtx); in fdc_worker()
874 mtx_unlock(&fdc->fdc_mtx); in fdc_worker()
882 return (fdc_biodone(fdc, ENXIO)); in fdc_worker()
888 if(fdc_sense_drive(fdc, &st3) != 0) in fdc_worker()
891 return (fdc_biodone(fdc, EROFS)); in fdc_worker()
905 if (fdc->retry == 0 && in fdc_worker()
917 fdc->retry > 2) { in fdc_worker()
919 if (fdc_cmd(fdc, 2, NE7CMD_RECAL, fd->fdsu, 0)) in fdc_worker()
921 tsleep(fdc, PRIBIO, "fdrecal", hz); in fdc_worker()
923 if (fdc_sense_int(fdc, &st0, &cyl) == FD_NOT_VALID) in fdc_worker()
932 tsleep(fdc->fd, PRIBIO, "fdhdstl", settle); in fdc_worker()
940 if (fdc_cmd(fdc, 3, NE7CMD_SEEK, fd->fdsu, descyl, 0)) in fdc_worker()
942 tsleep(fdc, PRIBIO, "fdseek", hz); in fdc_worker()
944 if (fdc_sense_int(fdc, &st0, &cyl) == FD_NOT_VALID) in fdc_worker()
953 tsleep(fdc->fd, PRIBIO, "fdhdstl", settle); in fdc_worker()
960 fd->fd_ioptr, fdc->retry); in fdc_worker()
966 && !(fdc->flags & FDC_NODMA)) { in fdc_worker()
969 fd->fd_ioptr, fd->fd_iosize, fdc->dmachan); in fdc_worker()
970 mtx_lock(&fdc->fdc_mtx); in fdc_worker()
972 mtx_unlock(&fdc->fdc_mtx); in fdc_worker()
976 if (fdc->flags & FDC_NODMA) { in fdc_worker()
980 fdbcdr_wr(fdc, 1, fd->fd_iosize); in fdc_worker()
983 fdc_pio(fdc); in fdc_worker()
991 if (fdc_cmd(fdc, 6, in fdc_worker()
1002 if (fdc_cmd(fdc, 2, in fdc_worker()
1009 if (fdc_cmd(fdc, 9, in fdc_worker()
1024 if (fdc_cmd(fdc, 9, in fdc_worker()
1042 i = tsleep(fdc, PRIBIO, "fddata", hz); in fdc_worker()
1045 if (i == 0 && (fdc->flags & FDC_NODMA) && (bp->bio_cmd == BIO_READ)) in fdc_worker()
1046 fdc_pio(fdc); in fdc_worker()
1052 fd->fd_ioptr, fd->fd_iosize, fdc->dmachan); in fdc_worker()
1053 mtx_lock(&fdc->fdc_mtx); in fdc_worker()
1055 mtx_unlock(&fdc->fdc_mtx); in fdc_worker()
1069 fdc->flags |= FDC_NEEDS_RESET; in fdc_worker()
1074 if (fdc_read_status(fdc)) in fdc_worker()
1079 fdc->status[0], fdc->status[1], in fdc_worker()
1080 fdc->status[2], fdc->status[3]); in fdc_worker()
1082 st0 = fdc->status[0] & NE7_ST0_IC; in fdc_worker()
1085 if (st0 == NE7_ST0_IC_AT && fdc->status[1] & NE7_ST1_OR) { in fdc_worker()
1095 fdc->flags |= FDC_NEEDS_RESET; in fdc_worker()
1099 if(st0 == NE7_ST0_IC_AT && fdc->status[2] & NE7_ST2_WC) { in fdc_worker()
1105 fdc->status[0], fdc->status[1], fdc->status[2], in fdc_worker()
1106 fdc->status[3], fdc->status[4], fdc->status[5]); in fdc_worker()
1119 idp->cyl = fdc->status[3]; in fdc_worker()
1120 idp->head = fdc->status[4]; in fdc_worker()
1121 idp->sec = fdc->status[5]; in fdc_worker()
1122 idp->secshift = fdc->status[6]; in fdc_worker()
1139 fdc->retry = 0; in fdc_worker()
1147 return (fdc_biodone(fdc, 0)); in fdc_worker()
1153 struct fdc_data *fdc; in fdc_thread() local
1155 fdc = arg; in fdc_thread()
1158 mtx_lock(&fdc->fdc_mtx); in fdc_thread()
1159 fdc->flags |= FDC_KTHREAD_ALIVE; in fdc_thread()
1160 while ((fdc->flags & FDC_KTHREAD_EXIT) == 0) { in fdc_thread()
1161 mtx_unlock(&fdc->fdc_mtx); in fdc_thread()
1162 i = fdc_worker(fdc); in fdc_thread()
1164 if (fdc->bp != NULL) in fdc_thread()
1165 g_print_bio("", fdc->bp, ""); in fdc_thread()
1168 fdc->retry += i; in fdc_thread()
1169 mtx_lock(&fdc->fdc_mtx); in fdc_thread()
1171 fdc->flags &= ~(FDC_KTHREAD_EXIT | FDC_KTHREAD_ALIVE); in fdc_thread()
1172 mtx_unlock(&fdc->fdc_mtx); in fdc_thread()
1183 struct fdc_data *fdc; in fd_enqueue() local
1187 fdc = fd->fdc; in fd_enqueue()
1188 mtx_lock(&fdc->fdc_mtx); in fd_enqueue()
1194 bioq_disksort(&fdc->head, bp); in fd_enqueue()
1195 wakeup(&fdc->head); in fd_enqueue()
1202 mtx_unlock(&fdc->fdc_mtx); in fd_enqueue()
1211 struct fdc_data *fdc; in fd_probe_disk() local
1215 fdc = fd->fdc; in fd_probe_disk()
1226 mtx_lock(&fdc->fdc_mtx); in fd_probe_disk()
1228 mtx_unlock(&fdc->fdc_mtx); in fd_probe_disk()
1229 if (fdc_cmd(fdc, 2, NE7CMD_RECAL, fd->fdsu, 0)) in fd_probe_disk()
1231 tsleep(fdc, PRIBIO, "fdrecal", hz); in fd_probe_disk()
1232 if (fdc_sense_int(fdc, &st0, &cyl) == FD_NOT_VALID) in fd_probe_disk()
1238 if (fdc_cmd(fdc, 3, NE7CMD_SEEK, fd->fdsu, 1, 0)) in fd_probe_disk()
1240 tsleep(fdc, PRIBIO, "fdseek", hz); in fd_probe_disk()
1241 if (fdc_sense_int(fdc, &st0, &cyl) == FD_NOT_VALID) in fd_probe_disk()
1244 if (fdin_rd(fdc) & FDI_DCHG) { in fd_probe_disk()
1247 mtx_lock(&fdc->fdc_mtx); in fd_probe_disk()
1249 mtx_unlock(&fdc->fdc_mtx); in fd_probe_disk()
1251 if (fdc_sense_drive(fdc, &st3) != 0) in fd_probe_disk()
1255 mtx_lock(&fdc->fdc_mtx); in fd_probe_disk()
1261 mtx_unlock(&fdc->fdc_mtx); in fd_probe_disk()
1414 struct fdc_data *fdc; in fd_access() local
1419 fdc = fd->fdc; in fd_access()
1447 mtx_lock(&fdc->fdc_mtx); in fd_access()
1449 mtx_unlock(&fdc->fdc_mtx); in fd_access()
1452 mtx_lock(&fdc->fdc_mtx); in fd_access()
1454 mtx_unlock(&fdc->fdc_mtx); in fd_access()
1475 struct fdc_data * fdc; in fd_start() local
1479 fdc = fd->fdc; in fd_start()
1543 fd->fdc->fdc_errs = 0; in fd_ioctl()
1548 if ((fd->fdc->flags & FDC_STAT_VALID) == 0) in fd_ioctl()
1550 memcpy(fsp->status, fd->fdc->status, 7 * sizeof(u_int)); in fd_ioctl()
1564 mtx_lock(&fd->fdc->fdc_mtx); in fd_ioctl()
1566 mtx_unlock(&fd->fdc->fdc_mtx); in fd_ioctl()
1606 fdc_release_resources(struct fdc_data *fdc) in fdc_release_resources() argument
1612 dev = fdc->fdc_dev; in fdc_release_resources()
1613 if (fdc->fdc_intr) in fdc_release_resources()
1614 bus_teardown_intr(dev, fdc->res_irq, fdc->fdc_intr); in fdc_release_resources()
1615 fdc->fdc_intr = NULL; in fdc_release_resources()
1616 if (fdc->res_irq != NULL) in fdc_release_resources()
1617 bus_release_resource(dev, SYS_RES_IRQ, fdc->rid_irq, in fdc_release_resources()
1618 fdc->res_irq); in fdc_release_resources()
1619 fdc->res_irq = NULL; in fdc_release_resources()
1622 if (fdc->resio[i] != NULL && fdc->resio[i] != last) { in fdc_release_resources()
1624 fdc->ridio[i], fdc->resio[i]); in fdc_release_resources()
1625 last = fdc->resio[i]; in fdc_release_resources()
1626 fdc->resio[i] = NULL; in fdc_release_resources()
1629 if (fdc->res_drq != NULL) in fdc_release_resources()
1630 bus_release_resource(dev, SYS_RES_DRQ, fdc->rid_drq, in fdc_release_resources()
1631 fdc->res_drq); in fdc_release_resources()
1632 fdc->res_drq = NULL; in fdc_release_resources()
1672 fdc_initial_reset(device_t dev, struct fdc_data *fdc) in fdc_initial_reset() argument
1680 if (fdsts_rd(fdc) == 0xff) in fdc_initial_reset()
1687 fdout_wr(fdc, 0); in fdc_initial_reset()
1688 fdout_wr(fdc, 0); in fdc_initial_reset()
1689 if (fdsts_rd(fdc) != 0) in fdc_initial_reset()
1695 fdout_wr(fdc, FDO_FRST); in fdc_initial_reset()
1697 if (fdsts_rd(fdc) != 0x80) in fdc_initial_reset()
1701 if (fdc_cmd(fdc, 3, NE7CMD_SPECIFY, NE7_SPEC_1(6, 240), in fdc_initial_reset()
1714 if (fdc_cmd(fdc, 1, NE7CMD_VERSION, 1, &ic_type)) in fdc_initial_reset()
1716 if (fdc_cmd(fdc, 1, 0x18, 1, &part_id)) in fdc_initial_reset()
1724 fdc->fdct = FDC_NE765; in fdc_initial_reset()
1730 fdc->fdct = FDC_ENHANCED; in fdc_initial_reset()
1734 fdc->fdct = FDC_UNKNOWN; in fdc_initial_reset()
1743 struct fdc_data *fdc; in fdc_detach() local
1746 fdc = device_get_softc(dev); in fdc_detach()
1752 if (fdc->fdc_intr) in fdc_detach()
1753 bus_teardown_intr(dev, fdc->res_irq, fdc->fdc_intr); in fdc_detach()
1754 fdc->fdc_intr = NULL; in fdc_detach()
1757 mtx_lock(&fdc->fdc_mtx); in fdc_detach()
1758 fdc->flags |= FDC_KTHREAD_EXIT; in fdc_detach()
1759 wakeup(&fdc->head); in fdc_detach()
1760 while ((fdc->flags & FDC_KTHREAD_ALIVE) != 0) in fdc_detach()
1761 msleep(fdc->fdc_thread, &fdc->fdc_mtx, PRIBIO, "fdcdet", 0); in fdc_detach()
1762 mtx_unlock(&fdc->fdc_mtx); in fdc_detach()
1765 fdout_wr(fdc, 0); in fdc_detach()
1767 if (!(fdc->flags & FDC_NODMA)) in fdc_detach()
1768 isa_dma_release(fdc->dmachan); in fdc_detach()
1769 fdc_release_resources(fdc); in fdc_detach()
1770 mtx_destroy(&fdc->fdc_mtx); in fdc_detach()
1802 struct fdc_data *fdc; in fdc_attach() local
1805 fdc = device_get_softc(dev); in fdc_attach()
1806 fdc->fdc_dev = dev; in fdc_attach()
1807 error = fdc_initial_reset(dev, fdc); in fdc_attach()
1812 error = bus_setup_intr(dev, fdc->res_irq, in fdc_attach()
1814 ((fdc->flags & FDC_NOFAST) ? INTR_MPSAFE : 0), in fdc_attach()
1815 ((fdc->flags & FDC_NOFAST) ? NULL : fdc_intr_fast), in fdc_attach()
1816 ((fdc->flags & FDC_NOFAST) ? fdc_intr : NULL), in fdc_attach()
1817 fdc, &fdc->fdc_intr); in fdc_attach()
1822 if (!(fdc->flags & FDC_NODMA)) { in fdc_attach()
1823 error = isa_dma_acquire(fdc->dmachan); in fdc_attach()
1825 error = isa_dma_init(fdc->dmachan, in fdc_attach()
1828 isa_dma_release(fdc->dmachan); in fdc_attach()
1833 fdc->fdcu = device_get_unit(dev); in fdc_attach()
1834 fdc->flags |= FDC_NEEDS_RESET; in fdc_attach()
1836 mtx_init(&fdc->fdc_mtx, "fdc lock", NULL, MTX_DEF); in fdc_attach()
1839 fdout_wr(fdc, fdc->fdout = 0); in fdc_attach()
1840 bioq_init(&fdc->head); in fdc_attach()
1850 struct fdc_data *fdc; in fdc_start_worker() local
1852 fdc = device_get_softc(dev); in fdc_start_worker()
1853 kproc_create(fdc_thread, fdc, &fdc->fdc_thread, 0, 0, in fdc_start_worker()
1904 struct fdc_data *fdc; in fd_probe() local
1910 fdc = device_get_softc(device_get_parent(dev)); in fd_probe()
1914 fd->fdc = fdc; in fd_probe()
1944 mtx_lock(&fdc->fdc_mtx); in fd_probe()
1949 fdc->fd = fd; in fd_probe()
1950 fdc_reset(fdc); /* XXX reset, then unreset, etc. */ in fd_probe()
1955 if ((fdc_sense_drive(fdc, &st3) == 0) && in fd_probe()
1958 if (fdc_cmd(fdc, 3, NE7CMD_SEEK, fdsu, 10, 0) == 0) { in fd_probe()
1962 fdc_sense_int(fdc, NULL, NULL); in fd_probe()
1974 if (fdc_cmd(fdc, 2, NE7CMD_RECAL, fdsu, 0) == 0) { in fd_probe()
1979 if (fdc_sense_int(fdc, &st0, NULL) == 0 && in fd_probe()
1987 fdc->fd = NULL; in fd_probe()
1988 mtx_unlock(&fdc->fdc_mtx); in fd_probe()
2016 fd->fdc = fdc; in fd_probe()
2019 callout_init_mtx(&fd->toffhandle, &fd->fdc->fdc_mtx, 0); in fd_probe()
2105 DRIVER_MODULE(fd, fdc, fd_driver, fd_devclass, fdc_modevent, 0);