Lines Matching refs:fd

877           struct    fd_data *fd;  in fd_probe()  local
883 fd = device_get_softc(dev); in fd_probe()
886 bzero(fd, sizeof *fd); in fd_probe()
887 fd->dev = dev; in fd_probe()
888 fd->fdc = fdc; in fd_probe()
889 fd->fdsu = fdsu; in fd_probe()
890 fd->fdu = device_get_unit(dev); in fd_probe()
894 switch (fd->fdu) { in fd_probe()
975 fd->track = FD_NO_TRACK; in fd_probe()
976 fd->fdc = fdc; in fd_probe()
977 fd->fdsu = fdsu; in fd_probe()
978 fd->options = 0; in fd_probe()
979 callout_init(&fd->toffhandle); in fd_probe()
980 callout_init(&fd->tohandle); in fd_probe()
981 callout_init(&fd->motor); in fd_probe()
986 fd->type = FD_1200; in fd_probe()
990 fd->type = FD_1440; in fd_probe()
994 fd->type = FD_1440; in fd_probe()
999 fd->type = FD_1440; in fd_probe()
1003 fd->type = FD_360; in fd_probe()
1007 fd->type = FD_720; in fd_probe()
1012 fd->ft = fd_types[fd->type - 1]; in fd_probe()
1020 struct fd_data *fd; in fd_attach() local
1023 fd = device_get_softc(dev); in fd_attach()
1025 disk_create(fd->fdu, &fd->disk, &fd_ops); in fd_attach()
1026 disk_setdisktype(&fd->disk, "floppy"); in fd_attach()
1036 make_dev(&fd_ops, dkmakeminor(fd->fdu, WHOLE_DISK_SLICE, 128 + 1), in fd_attach()
1037 UID_ROOT, GID_WHEEL, 0600, "fd%d.1720", fd->fdu); in fd_attach()
1038 make_dev(&fd_ops, dkmakeminor(fd->fdu, WHOLE_DISK_SLICE, 128 + 2), in fd_attach()
1039 UID_ROOT, GID_WHEEL, 0600, "fd%d.1480", fd->fdu); in fd_attach()
1040 make_dev(&fd_ops, dkmakeminor(fd->fdu, WHOLE_DISK_SLICE, 128 + 3), in fd_attach()
1041 UID_ROOT, GID_WHEEL, 0600, "fd%d.1440", fd->fdu); in fd_attach()
1042 make_dev(&fd_ops, dkmakeminor(fd->fdu, WHOLE_DISK_SLICE, 128 + 4), in fd_attach()
1043 UID_ROOT, GID_WHEEL, 0600, "fd%d.1200", fd->fdu); in fd_attach()
1044 make_dev(&fd_ops, dkmakeminor(fd->fdu, WHOLE_DISK_SLICE, 128 + 5), in fd_attach()
1045 UID_ROOT, GID_WHEEL, 0600, "fd%d.820", fd->fdu); in fd_attach()
1046 make_dev(&fd_ops, dkmakeminor(fd->fdu, WHOLE_DISK_SLICE, 128 + 6), in fd_attach()
1047 UID_ROOT, GID_WHEEL, 0600, "fd%d.800", fd->fdu); in fd_attach()
1048 make_dev(&fd_ops, dkmakeminor(fd->fdu, WHOLE_DISK_SLICE, 128 + 7), in fd_attach()
1049 UID_ROOT, GID_WHEEL, 0600, "fd%d.720", fd->fdu); in fd_attach()
1050 make_dev(&fd_ops, dkmakeminor(fd->fdu, WHOLE_DISK_SLICE, 128 + 8), in fd_attach()
1051 UID_ROOT, GID_WHEEL, 0600, "fd%d.360", fd->fdu); in fd_attach()
1052 make_dev(&fd_ops, dkmakeminor(fd->fdu, WHOLE_DISK_SLICE, 128 + 9), in fd_attach()
1053 UID_ROOT, GID_WHEEL, 0600, "fd%d.640", fd->fdu); in fd_attach()
1054 make_dev(&fd_ops, dkmakeminor(fd->fdu, WHOLE_DISK_SLICE, 128 + 10), in fd_attach()
1055 UID_ROOT, GID_WHEEL, 0600, "fd%d.1232", fd->fdu); in fd_attach()
1057 devstat_add_entry(&fd->device_stats, device_get_name(dev), in fd_attach()
1062 if (fd->type != NO_TYPE) { in fd_attach()
1064 ft = &fd_types[fd->type - 1]; in fd_attach()
1072 disk_setdiskinfo(&fd->disk, &info); in fd_attach()
1080 struct fd_data *fd; in fd_detach() local
1082 fd = device_get_softc(dev); in fd_detach()
1086 dkmakeminor(fd->fdu, WHOLE_DISK_SLICE, 128)); in fd_detach()
1087 disk_invalidate(&fd->disk); in fd_detach()
1088 disk_destroy(&fd->disk); in fd_detach()
1089 devstat_remove_entry(&fd->device_stats); in fd_detach()
1090 callout_stop(&fd->toffhandle); in fd_detach()
1091 callout_stop(&fd->motor); in fd_detach()
1114 DRIVER_MODULE(fd, fdc, fd_driver, fd_devclass, NULL, NULL);
1165 fd_p fd = xfd; in fd_turnoff() local
1167 TRACE1("[fd%d: turnoff]", fd->fdu); in fd_turnoff()
1178 if (fd->fdc->state != DEVIDLE && fd->fdc->fdu == fd->fdu) { in fd_turnoff()
1179 fdc_intr(fd->fdc); in fd_turnoff()
1184 fd->flags &= ~FD_MOTOR; in fd_turnoff()
1185 set_motor(fd->fdc, fd->fdsu, TURNOFF); in fd_turnoff()
1192 fd_p fd = xfd; in fd_motor_on() local
1195 fd->flags &= ~FD_MOTOR_WAIT; in fd_motor_on()
1196 if((fd->fdc->fd == fd) && (fd->fdc->state == MOTORWAIT)) in fd_motor_on()
1198 fdc_intr(fd->fdc); in fd_motor_on()
1204 fd_turnon(fd_p fd) in fd_turnon() argument
1206 if(!(fd->flags & FD_MOTOR)) in fd_turnon()
1208 fd->flags |= (FD_MOTOR + FD_MOTOR_WAIT); in fd_turnon()
1209 set_motor(fd->fdc, fd->fdsu, TURNON); in fd_turnon()
1210 callout_reset(&fd->motor, hz, fd_motor_on, fd); in fd_turnon()
1315 fd_p fd; in Fdopen() local
1319 if ((fd = devclass_get_softc(fd_devclass, fdu)) == NULL) in Fdopen()
1321 fdc = fd->fdc; in Fdopen()
1322 if ((fdc == NULL) || (fd->type == NO_TYPE)) in Fdopen()
1331 type = fd->type; /* do not change selected type data */ in Fdopen()
1337 type = fd->type; /* reset to default */ in Fdopen()
1342 if (type != fd->type) { in Fdopen()
1347 switch (fd->type) { in Fdopen()
1406 fd->ft = fd_types[type - 1]; in Fdopen()
1407 fd->flags |= FD_OPEN; in Fdopen()
1430 ft = &fd->ft; in Fdopen()
1438 disk_setdiskinfo(&fd->disk, &info); in Fdopen()
1448 struct fd_data *fd; in fdclose() local
1450 fd = devclass_get_softc(fd_devclass, fdu); in fdclose()
1451 fd->flags &= ~FD_OPEN; in fdclose()
1452 fd->options &= ~(FDOPT_NORETRY | FDOPT_NOERRLOG); in fdclose()
1469 fd_p fd; in fdstrategy() local
1473 fd = devclass_get_softc(fd_devclass, fdu); in fdstrategy()
1474 if (fd == NULL) in fdstrategy()
1477 fdc = fd->fdc; in fdstrategy()
1478 if (fd->type == NO_TYPE) { in fdstrategy()
1484 fdblk = 128 << (fd->ft.secsize); in fdstrategy()
1514 nblocks = fd->ft.size; in fdstrategy()
1531 callout_stop(&fd->toffhandle); in fdstrategy()
1534 devstat_start_transaction(&fd->device_stats); in fdstrategy()
1536 device_busy(fd->dev); in fdstrategy()
1659 fd_p fd; in fdstate() local
1680 if (fdc->fd) { in fdstate()
1683 fdc->fd = (fd_p) 0; in fdstate()
1693 fd = devclass_get_softc(fd_devclass, fdu); in fdstate()
1694 fdblk = 128 << fd->ft.secsize; in fdstate()
1695 if (fdc->fd && (fd != fdc->fd)) in fdstate()
1696 device_printf(fd->dev, "confused fd pointers\n"); in fdstate()
1701 fd->skip = (char *)&(finfo->fd_formb_cylno(0)) in fdstate()
1706 fd->skip /fdblk; in fdstate()
1707 b_cylinder = blknum / (fd->ft.sectrac * fd->ft.heads); in fdstate()
1711 TRACE1("(0x%x)", fd->flags); in fdstate()
1712 callout_reset(&fd->toffhandle, 4 * hz, fd_turnoff, fd); in fdstate()
1718 fd->skip = 0; in fdstate()
1719 fdc->fd = fd; in fdstate()
1721 fdc->fdctl_wr(fdc, fd->ft.trans); in fdstate()
1722 TRACE1("[0x%x->FDCTL]", fd->ft.trans); in fdstate()
1727 if(fd->flags & FD_MOTOR_WAIT) { in fdstate()
1734 if (!(fd->flags & FD_MOTOR)) in fdstate()
1737 fd_turnon(fd); in fdstate()
1742 set_motor(fdc, fd->fdsu, TURNON); in fdstate()
1751 if (b_cylinder == (unsigned)fd->track) in fdstate()
1757 fd->fdsu, b_cylinder * fd->ft.steptrac, in fdstate()
1767 fd->track = FD_NO_TRACK; in fdstate()
1778 if(fd->track == FD_NO_TRACK) { in fdstate()
1779 int descyl = b_cylinder * fd->ft.steptrac; in fdstate()
1842 fd->track = b_cylinder; in fdstate()
1845 bp->b_data+fd->skip, in fdstate()
1848 sectrac = fd->ft.sectrac; in fdstate()
1849 sec = blknum % (sectrac * fd->ft.heads); in fdstate()
1852 fd->hddrv = ((head&1)<<2)+fdu; in fdstate()
1862 bp->b_data + fd->skip, in fdstate()
1880 fdc->status[3] = fd->track; in fdstate()
1906 bp->b_data+fd->skip, in fdstate()
1919 bp->b_data + fd->skip, in fdstate()
1939 bp->b_data+fd->skip, in fdstate()
1945 fd->track, /* track */ in fdstate()
1948 fd->ft.secsize, /* sector size */ in fdstate()
1950 fd->ft.gap, /* gap size */ in fdstate()
1951 fd->ft.datalen, /* data length */ in fdstate()
1956 bp->b_data + fd->skip, in fdstate()
1969 bp->b_data+fd->skip,fdblk)) { in fdstate()
1970 callout_reset(&fd->tohandle, hz, in fdstate()
1980 callout_reset(&fd->tohandle, hz, fd_iotimeout, fdc); in fdstate()
1987 (void)fdcpio(fdc,bp->b_cmd,bp->b_data+fd->skip,fdblk); in fdstate()
1991 callout_stop(&fd->tohandle); in fdstate()
1993 if (fd_read_status(fdc, fd->fdsu)) { in fdstate()
1996 bp->b_data + fd->skip, in fdstate()
2012 bp->b_data + fd->skip, in fdstate()
2047 fd->skip += fdblk; in fdstate()
2048 if (!format && fd->skip < bp->b_bcount - bp->b_resid) { in fdstate()
2053 fd->skip = 0; in fdstate()
2056 device_unbusy(fd->dev); in fdstate()
2058 devstat_end_transaction_buf(&fd->device_stats, bp); in fdstate()
2060 fdc->fd = (fd_p) 0; in fdstate()
2119 fd->track = 0; in fdstate()
2124 if(fd->flags & FD_MOTOR_WAIT) in fdstate()
2143 if (fd_read_status(fdc, fd->fdsu) == 0) in fdstate()
2171 struct fd_data *fd; in retrier() local
2181 fd = devclass_get_softc(fd_devclass, fdu); in retrier()
2182 if (fd->options & FDOPT_NORETRY) in retrier()
2200 int printerror = (fd->options & FDOPT_NOERRLOG) == 0; in retrier()
2209 fdc->fd->skip); in retrier()
2226 bp->b_resid += bp->b_bcount - fdc->fd->skip; in retrier()
2228 fdc->fd->skip = 0; in retrier()
2230 device_unbusy(fd->dev); in retrier()
2232 devstat_end_transaction_buf(&fdc->fd->device_stats, bp); in retrier()
2236 fdc->fd = (fd_p) 0; in retrier()
2248 fd_p fd; in fdformat() local
2254 fd = devclass_get_softc(fd_devclass, fdu); in fdformat()
2255 fdblk = 128 << fd->ft.secsize; in fdformat()
2266 (fd->ft.sectrac * fd->ft.heads) in fdformat()
2267 + finfo->head * fd->ft.sectrac) * fdblk; in fdformat()
2284 device_unbusy(fd->dev); in fdformat()
2306 fd_p fd = devclass_get_softc(fd_devclass, fdu); in fdioctl() local
2322 *(struct fd_type *)ap->a_data = fd->ft; in fdioctl()
2329 fd->ft = *(struct fd_type *)ap->a_data; in fdioctl()
2333 *(int *)ap->a_data = fd->options; in fdioctl()
2337 fd->options = *(int *)ap->a_data; in fdioctl()
2342 if ((fd->fdc->flags & FDC_STAT_VALID) == 0) in fdioctl()
2344 memcpy(fsp->status, fd->fdc->status, 7 * sizeof(u_int)); in fdioctl()