lib/libc/gen/getpass.c
109
fd = fdc;
lib/libc/gen/getpass.c
93
int fdc[3];
libexec/ld.elf_so/arch/hppa/hppa_reloc.c
407
fdc(&got[-2]);
libexec/ld.elf_so/arch/hppa/hppa_reloc.c
408
fdc(&got[-1]);
libexec/ld.elf_so/arch/hppa/hppa_reloc.c
409
fdc(&got[1]);
libexec/ld.elf_so/arch/hppa/hppa_reloc.c
422
fdc(&got[-7]);
libexec/ld.elf_so/arch/hppa/hppa_reloc.c
423
fdc(&got[-6]);
sys/arch/acorn32/mainbus/fd.c
1000
callout_reset(&fdc->sc_timo_ch, 4 * hz, fdctimeout, fdc);
sys/arch/acorn32/mainbus/fd.c
1031
fdc->sc_fh.fh_func = floppy_read_fiq;
sys/arch/acorn32/mainbus/fd.c
1032
fdc->sc_fh.fh_size = floppy_read_fiq_end -
sys/arch/acorn32/mainbus/fd.c
1035
fdc->sc_fh.fh_func = floppy_write_fiq;
sys/arch/acorn32/mainbus/fd.c
1036
fdc->sc_fh.fh_size = floppy_read_fiq_end -
sys/arch/acorn32/mainbus/fd.c
1039
fdc->sc_fh.fh_flags = 0;
sys/arch/acorn32/mainbus/fd.c
1040
fdc->sc_fh.fh_regs = &fdc->sc_fr;
sys/arch/acorn32/mainbus/fd.c
1041
fdc->sc_fr.fr_r9 = IOMD_BASE + (IOMD_FIQRQ << 2);
sys/arch/acorn32/mainbus/fd.c
1042
fdc->sc_fr.fr_r10 = fd->sc_nbytes;
sys/arch/acorn32/mainbus/fd.c
1043
fdc->sc_fr.fr_r11 =
sys/arch/acorn32/mainbus/fd.c
1045
fdc->sc_fr.fr_r12 = fdc->sc_drq;
sys/arch/acorn32/mainbus/fd.c
1048
fdc->sc_fr.fr_r9, fdc->sc_fr.fr_r10, fdc->sc_fr.fr_r11,
sys/arch/acorn32/mainbus/fd.c
1049
fdc->sc_fr.fr_r12, (u_int)bp->b_data, fd->sc_skip);
sys/arch/acorn32/mainbus/fd.c
1051
if (fiq_claim(&fdc->sc_fh) == -1)
sys/arch/acorn32/mainbus/fd.c
1053
device_xname(fdc->sc_dev));
sys/arch/acorn32/mainbus/fd.c
1064
fdc->sc_errors = 4;
sys/arch/acorn32/mainbus/fd.c
1065
fdcretry(fdc);
sys/arch/acorn32/mainbus/fd.c
1087
fdc->sc_state = IOCOMPLETE;
sys/arch/acorn32/mainbus/fd.c
1092
callout_reset(&fdc->sc_timo_ch, 2 * hz, fdctimeout, fdc);
sys/arch/acorn32/mainbus/fd.c
1096
callout_stop(&fdc->sc_timo_ch);
sys/arch/acorn32/mainbus/fd.c
1097
fdc->sc_state = SEEKCOMPLETE;
sys/arch/acorn32/mainbus/fd.c
1100
callout_reset(&fdc->sc_intr_ch, hz / 50, fdcpseudointr, fdc);
sys/arch/acorn32/mainbus/fd.c
1110
if (fdcresult(fdc) != 2 || (st0 & 0xf8) != 0x20 ||
sys/arch/acorn32/mainbus/fd.c
1115
fdcretry(fdc);
sys/arch/acorn32/mainbus/fd.c
1122
fiq_release(&fdc->sc_fh);
sys/arch/acorn32/mainbus/fd.c
1127
fdcretry(fdc);
sys/arch/acorn32/mainbus/fd.c
1131
callout_stop(&fdc->sc_timo_ch);
sys/arch/acorn32/mainbus/fd.c
1136
if (fdcresult(fdc) != 7 || (st0 & 0xf8) != 0) {
sys/arch/acorn32/mainbus/fd.c
1137
fiq_release(&fdc->sc_fh);
sys/arch/acorn32/mainbus/fd.c
1145
fdcretry(fdc);
sys/arch/acorn32/mainbus/fd.c
1148
fiq_release(&fdc->sc_fh);
sys/arch/acorn32/mainbus/fd.c
1150
if (fdc->sc_errors) {
sys/arch/acorn32/mainbus/fd.c
1156
fdc->sc_errors = 0;
sys/arch/acorn32/mainbus/fd.c
1170
fd_set_motor(fdc, 1);
sys/arch/acorn32/mainbus/fd.c
1172
fd_set_motor(fdc, 0);
sys/arch/acorn32/mainbus/fd.c
1173
fdc->sc_state = RESETCOMPLETE;
sys/arch/acorn32/mainbus/fd.c
1174
callout_reset(&fdc->sc_timo_ch, hz / 2, fdctimeout, fdc);
sys/arch/acorn32/mainbus/fd.c
1178
callout_stop(&fdc->sc_timo_ch);
sys/arch/acorn32/mainbus/fd.c
1182
(void) fdcresult(fdc);
sys/arch/acorn32/mainbus/fd.c
1189
fdc->sc_state = RECALWAIT;
sys/arch/acorn32/mainbus/fd.c
1190
callout_reset(&fdc->sc_timo_ch, 5 * hz, fdctimeout, fdc);
sys/arch/acorn32/mainbus/fd.c
1194
callout_stop(&fdc->sc_timo_ch);
sys/arch/acorn32/mainbus/fd.c
1195
fdc->sc_state = RECALCOMPLETE;
sys/arch/acorn32/mainbus/fd.c
1198
callout_reset(&fdc->sc_intr_ch, hz / 30, fdcpseudointr, fdc);
sys/arch/acorn32/mainbus/fd.c
1204
if (fdcresult(fdc) != 2 || (st0 & 0xf8) != 0x20 || cyl != 0) {
sys/arch/acorn32/mainbus/fd.c
1208
fdcretry(fdc);
sys/arch/acorn32/mainbus/fd.c
1231
fdcretry(struct fdc_softc *fdc)
sys/arch/acorn32/mainbus/fd.c
1236
fd = fdc->sc_drives.tqh_first;
sys/arch/acorn32/mainbus/fd.c
1241
switch (fdc->sc_errors) {
sys/arch/acorn32/mainbus/fd.c
1244
fdc->sc_state = DOSEEK;
sys/arch/acorn32/mainbus/fd.c
1249
fdc->sc_state = DORECAL;
sys/arch/acorn32/mainbus/fd.c
1254
fdc->sc_state = DORESET;
sys/arch/acorn32/mainbus/fd.c
1263
fdcpstatus(7, fdc);
sys/arch/acorn32/mainbus/fd.c
1269
fdc->sc_errors++;
sys/arch/acorn32/mainbus/fd.c
180
CFATTACH_DECL_NEW(fdc, sizeof(struct fdc_softc),
sys/arch/acorn32/mainbus/fd.c
304
void fd_set_motor(struct fdc_softc *fdc, int reset);
sys/arch/acorn32/mainbus/fd.c
307
int fdcresult(struct fdc_softc *fdc);
sys/arch/acorn32/mainbus/fd.c
309
void fdcstart(struct fdc_softc *fdc);
sys/arch/acorn32/mainbus/fd.c
314
void fdcretry(struct fdc_softc *fdc);
sys/arch/acorn32/mainbus/fd.c
372
fdprint(void *aux, const char *fdc)
sys/arch/acorn32/mainbus/fd.c
376
if (!fdc)
sys/arch/acorn32/mainbus/fd.c
384
struct fdc_softc *fdc = device_private(self);
sys/arch/acorn32/mainbus/fd.c
397
fdc->sc_dev = self;
sys/arch/acorn32/mainbus/fd.c
398
fdc->sc_iot = iot;
sys/arch/acorn32/mainbus/fd.c
399
fdc->sc_ioh = ioh;
sys/arch/acorn32/mainbus/fd.c
401
fdc->sc_drq = pa->pa_iobase + pa->pa_offset + pa->pa_drq;
sys/arch/acorn32/mainbus/fd.c
402
fdc->sc_state = DEVIDLE;
sys/arch/acorn32/mainbus/fd.c
403
TAILQ_INIT(&fdc->sc_drives);
sys/arch/acorn32/mainbus/fd.c
407
callout_init(&fdc->sc_timo_ch, 0);
sys/arch/acorn32/mainbus/fd.c
408
callout_init(&fdc->sc_intr_ch, 0);
sys/arch/acorn32/mainbus/fd.c
410
fdc->sc_ih = intr_claim(pa->pa_irq, IPL_BIO, "fdc", fdcintr, fdc);
sys/arch/acorn32/mainbus/fd.c
411
if (!fdc->sc_ih)
sys/arch/acorn32/mainbus/fd.c
420
if (device_unit(fdc->sc_dev) == 0)
sys/arch/acorn32/mainbus/fd.c
430
fa.fa_deftype = fd_nvtotype(device_xname(fdc->sc_dev),
sys/arch/acorn32/mainbus/fd.c
441
struct fdc_softc *fdc = device_private(parent);
sys/arch/acorn32/mainbus/fd.c
444
bus_space_tag_t iot = fdc->sc_iot;
sys/arch/acorn32/mainbus/fd.c
445
bus_space_handle_t ioh = fdc->sc_ioh;
sys/arch/acorn32/mainbus/fd.c
471
n = fdcresult(fdc);
sys/arch/acorn32/mainbus/fd.c
477
printf(" %x", fdc->sc_status[i]);
sys/arch/acorn32/mainbus/fd.c
484
if (n != 2 || (fdc->sc_status[0] & 0xf8) != 0x20)
sys/arch/acorn32/mainbus/fd.c
496
struct fdc_softc *fdc = device_private(parent);
sys/arch/acorn32/mainbus/fd.c
519
fdc->sc_fd[drive] = fd;
sys/arch/acorn32/mainbus/fd.c
536
fd_nvtotype(const char *fdc, int nvraminfo, int drive)
sys/arch/acorn32/mainbus/fd.c
552
fdc, drive, type);
sys/arch/acorn32/mainbus/fd.c
619
struct fdc_softc *fdc =
sys/arch/acorn32/mainbus/fd.c
621
if (fdc->sc_state == DEVIDLE) {
sys/arch/acorn32/mainbus/fd.c
623
fdcstart(fdc);
sys/arch/acorn32/mainbus/fd.c
639
struct fdc_softc *fdc = device_private(device_parent(fd->sc_dev));
sys/arch/acorn32/mainbus/fd.c
640
int active = fdc->sc_drives.tqh_first != 0;
sys/arch/acorn32/mainbus/fd.c
644
TAILQ_INSERT_TAIL(&fdc->sc_drives, fd, sc_drivechain);
sys/arch/acorn32/mainbus/fd.c
648
fdcstart(fdc);
sys/arch/acorn32/mainbus/fd.c
654
struct fdc_softc *fdc = device_private(device_parent(fd->sc_dev));
sys/arch/acorn32/mainbus/fd.c
665
TAILQ_REMOVE(&fdc->sc_drives, fd, sc_drivechain);
sys/arch/acorn32/mainbus/fd.c
667
TAILQ_INSERT_TAIL(&fdc->sc_drives, fd, sc_drivechain);
sys/arch/acorn32/mainbus/fd.c
677
fdc->sc_state = DEVIDLE;
sys/arch/acorn32/mainbus/fd.c
695
fd_set_motor(struct fdc_softc *fdc, int reset)
sys/arch/acorn32/mainbus/fd.c
701
if ((fd = fdc->sc_drives.tqh_first) != NULL)
sys/arch/acorn32/mainbus/fd.c
708
if ((fd = fdc->sc_fd[n]) && (fd->sc_flags & FD_MOTOR))
sys/arch/acorn32/mainbus/fd.c
710
bus_space_write_2(fdc->sc_iot, fdc->sc_ioh, fdout, status);
sys/arch/acorn32/mainbus/fd.c
729
struct fdc_softc *fdc = device_private(device_parent(fd->sc_dev));
sys/arch/acorn32/mainbus/fd.c
734
if ((fdc->sc_drives.tqh_first == fd) && (fdc->sc_state == MOTORWAIT))
sys/arch/acorn32/mainbus/fd.c
735
(void) fdcintr(fdc);
sys/arch/acorn32/mainbus/fd.c
740
fdcresult(struct fdc_softc *fdc)
sys/arch/acorn32/mainbus/fd.c
742
bus_space_tag_t iot = fdc->sc_iot;
sys/arch/acorn32/mainbus/fd.c
743
bus_space_handle_t ioh = fdc->sc_ioh;
sys/arch/acorn32/mainbus/fd.c
754
if (n >= sizeof(fdc->sc_status)) {
sys/arch/acorn32/mainbus/fd.c
758
fdc->sc_status[n++] =
sys/arch/acorn32/mainbus/fd.c
818
fdcstart(struct fdc_softc *fdc)
sys/arch/acorn32/mainbus/fd.c
824
if (fdc->sc_state != DEVIDLE) {
sys/arch/acorn32/mainbus/fd.c
829
(void) fdcintr(fdc);
sys/arch/acorn32/mainbus/fd.c
833
fdcpstatus(int n, struct fdc_softc *fdc)
sys/arch/acorn32/mainbus/fd.c
842
snprintb(bits, sizeof(bits), NE7_ST0BITS, fdc->sc_status[0]);
sys/arch/acorn32/mainbus/fd.c
843
printf(" (st0 %s cyl %d)\n", bits, fdc->sc_status[1]);
sys/arch/acorn32/mainbus/fd.c
846
snprintb(bits, sizeof(bits), NE7_ST0BITS, fdc->sc_status[0]);
sys/arch/acorn32/mainbus/fd.c
848
snprintb(bits, sizeof(bits), NE7_ST1BITS, fdc->sc_status[1]);
sys/arch/acorn32/mainbus/fd.c
850
snprintb(bits, sizeof(bits), NE7_ST2BITS, fdc->sc_status[2]);
sys/arch/acorn32/mainbus/fd.c
853
fdc->sc_status[3], fdc->sc_status[4], fdc->sc_status[5]);
sys/arch/acorn32/mainbus/fd.c
866
struct fdc_softc *fdc = device_private(device_parent(dv));
sys/arch/acorn32/mainbus/fd.c
869
out_fdc(fdc->sc_iot, fdc->sc_ioh, NE7CMD_SENSEI);
sys/arch/acorn32/mainbus/fd.c
870
(void) fdcresult(fdc);
sys/arch/acorn32/mainbus/fd.c
875
fdcpstatus(n, fdc);
sys/arch/acorn32/mainbus/fd.c
881
struct fdc_softc *fdc = arg;
sys/arch/acorn32/mainbus/fd.c
882
struct fd_softc *fd = fdc->sc_drives.tqh_first;
sys/arch/acorn32/mainbus/fd.c
887
log(LOG_ERR,"fdctimeout: state %d\n", fdc->sc_state);
sys/arch/acorn32/mainbus/fd.c
892
fdc->sc_state++;
sys/arch/acorn32/mainbus/fd.c
894
fdc->sc_state = DEVIDLE;
sys/arch/acorn32/mainbus/fd.c
896
(void) fdcintr(fdc);
sys/arch/acorn32/mainbus/fd.c
914
struct fdc_softc *fdc = arg;
sys/arch/acorn32/mainbus/fd.c
915
#define st0 fdc->sc_status[0]
sys/arch/acorn32/mainbus/fd.c
916
#define cyl fdc->sc_status[1]
sys/arch/acorn32/mainbus/fd.c
919
bus_space_tag_t iot = fdc->sc_iot;
sys/arch/acorn32/mainbus/fd.c
920
bus_space_handle_t ioh = fdc->sc_ioh;
sys/arch/acorn32/mainbus/fd.c
927
fd = fdc->sc_drives.tqh_first;
sys/arch/acorn32/mainbus/fd.c
929
fdc->sc_state = DEVIDLE;
sys/arch/acorn32/mainbus/fd.c
937
TAILQ_REMOVE(&fdc->sc_drives, fd, sc_drivechain);
sys/arch/acorn32/mainbus/fd.c
945
switch (fdc->sc_state) {
sys/arch/acorn32/mainbus/fd.c
947
fdc->sc_errors = 0;
sys/arch/acorn32/mainbus/fd.c
953
fdc->sc_state = MOTORWAIT;
sys/arch/acorn32/mainbus/fd.c
958
struct fd_softc *ofd = fdc->sc_fd[fd->sc_drive ^ 1];
sys/arch/acorn32/mainbus/fd.c
964
fd_set_motor(fdc, 0);
sys/arch/acorn32/mainbus/fd.c
965
fdc->sc_state = MOTORWAIT;
sys/arch/acorn32/mainbus/fd.c
972
fd_set_motor(fdc, 0);
sys/arch/acorn32/mainbus/fd.c
995
fdc->sc_state = SEEKWAIT;
sys/arch/alpha/sableio/fdc_sableio.c
102
if (bus_space_subregion(fdc->sc_iot, sfdc->sc_baseioh, 2, 4,
sys/arch/alpha/sableio/fdc_sableio.c
103
&fdc->sc_ioh)) {
sys/arch/alpha/sableio/fdc_sableio.c
108
if (bus_space_map(fdc->sc_iot, sa->sa_ioaddr + fdctl + 2, 1, 0,
sys/arch/alpha/sableio/fdc_sableio.c
109
&fdc->sc_fdctlioh)) {
sys/arch/alpha/sableio/fdc_sableio.c
117
fdc->sc_ih = pci_intr_establish(sa->sa_pc, ih, IPL_BIO,
sys/arch/alpha/sableio/fdc_sableio.c
118
fdcintr, fdc);
sys/arch/alpha/sableio/fdc_sableio.c
119
if (fdc->sc_ih == NULL) {
sys/arch/alpha/sableio/fdc_sableio.c
128
fdcattach(fdc);
sys/arch/alpha/sableio/fdc_sableio.c
83
struct fdc_softc *fdc = &sfdc->sc_fdc;
sys/arch/alpha/sableio/fdc_sableio.c
91
fdc->sc_dev = self;
sys/arch/alpha/sableio/fdc_sableio.c
92
fdc->sc_iot = sa->sa_iot;
sys/arch/alpha/sableio/fdc_sableio.c
93
fdc->sc_ic = sa->sa_ic;
sys/arch/alpha/sableio/fdc_sableio.c
94
fdc->sc_drq = sa->sa_drq;
sys/arch/alpha/sableio/fdc_sableio.c
96
if (bus_space_map(fdc->sc_iot, sa->sa_ioaddr, 6 /* FDC_NPORT */, 0,
sys/arch/amiga/dev/fd.c
285
CFATTACH_DECL_NEW(fdc, 0,
sys/arch/arc/jazz/fd.c
1002
fdc->sc_state = RECALWAIT;
sys/arch/arc/jazz/fd.c
1003
callout_reset(&fdc->sc_timo_ch, 5 * hz, fdctimeout, fdc);
sys/arch/arc/jazz/fd.c
1007
callout_stop(&fdc->sc_timo_ch);
sys/arch/arc/jazz/fd.c
1008
fdc->sc_state = RECALCOMPLETE;
sys/arch/arc/jazz/fd.c
1010
callout_reset(&fdc->sc_intr_ch, hz / 30, fdcpseudointr, fdc);
sys/arch/arc/jazz/fd.c
1015
if (fdcresult(fdc) != 2 || (st0 & 0xf8) != 0x20 || cyl != 0) {
sys/arch/arc/jazz/fd.c
1019
fdcretry(fdc);
sys/arch/arc/jazz/fd.c
1042
fdcretry(struct fdc_softc *fdc)
sys/arch/arc/jazz/fd.c
1047
fd = TAILQ_FIRST(&fdc->sc_drives);
sys/arch/arc/jazz/fd.c
1050
switch (fdc->sc_errors) {
sys/arch/arc/jazz/fd.c
1053
fdc->sc_state = DOSEEK;
sys/arch/arc/jazz/fd.c
1060
fdc->sc_state = DORECAL;
sys/arch/arc/jazz/fd.c
1065
fdc->sc_state = DORESET;
sys/arch/arc/jazz/fd.c
1072
fdcpstatus(7, fdc);
sys/arch/arc/jazz/fd.c
1076
fdc->sc_errors++;
sys/arch/arc/jazz/fd.c
254
fdprint(void *aux, const char *fdc)
sys/arch/arc/jazz/fd.c
258
if (fdc == NULL)
sys/arch/arc/jazz/fd.c
264
fdcattach(struct fdc_softc *fdc)
sys/arch/arc/jazz/fd.c
269
callout_init(&fdc->sc_timo_ch, 0);
sys/arch/arc/jazz/fd.c
270
callout_init(&fdc->sc_intr_ch, 0);
sys/arch/arc/jazz/fd.c
272
fdc->sc_state = DEVIDLE;
sys/arch/arc/jazz/fd.c
273
TAILQ_INIT(&fdc->sc_drives);
sys/arch/arc/jazz/fd.c
284
(void)config_found(fdc->sc_dev, (void *)&fa, fdprint,
sys/arch/arc/jazz/fd.c
292
struct fdc_softc *fdc = device_private(parent);
sys/arch/arc/jazz/fd.c
295
bus_space_tag_t iot = fdc->sc_iot;
sys/arch/arc/jazz/fd.c
296
bus_space_handle_t ioh = fdc->sc_ioh;
sys/arch/arc/jazz/fd.c
312
n = fdcresult(fdc);
sys/arch/arc/jazz/fd.c
318
aprint_debug(" %x", fdc->sc_status[i]);
sys/arch/arc/jazz/fd.c
322
if (n != 2 || (fdc->sc_status[0] & 0xf8) != 0x20)
sys/arch/arc/jazz/fd.c
336
struct fdc_softc *fdc = device_private(parent);
sys/arch/arc/jazz/fd.c
359
fdc->sc_fd[drive] = fd;
sys/arch/arc/jazz/fd.c
392
fd_nvtotype(char *fdc, int nvraminfo, int drive)
sys/arch/arc/jazz/fd.c
414
fdc, drive, type);
sys/arch/arc/jazz/fd.c
486
struct fdc_softc *fdc =
sys/arch/arc/jazz/fd.c
488
if (fdc->sc_state == DEVIDLE) {
sys/arch/arc/jazz/fd.c
490
fdcstart(fdc);
sys/arch/arc/jazz/fd.c
506
struct fdc_softc *fdc = device_private(device_parent(fd->sc_dev));
sys/arch/arc/jazz/fd.c
507
int active = TAILQ_FIRST(&fdc->sc_drives) != 0;
sys/arch/arc/jazz/fd.c
511
TAILQ_INSERT_TAIL(&fdc->sc_drives, fd, sc_drivechain);
sys/arch/arc/jazz/fd.c
515
fdcstart(fdc);
sys/arch/arc/jazz/fd.c
521
struct fdc_softc *fdc = device_private(device_parent(fd->sc_dev));
sys/arch/arc/jazz/fd.c
532
TAILQ_REMOVE(&fdc->sc_drives, fd, sc_drivechain);
sys/arch/arc/jazz/fd.c
534
TAILQ_INSERT_TAIL(&fdc->sc_drives, fd, sc_drivechain);
sys/arch/arc/jazz/fd.c
543
fdc->sc_state = DEVIDLE;
sys/arch/arc/jazz/fd.c
561
fd_set_motor(struct fdc_softc *fdc, int reset)
sys/arch/arc/jazz/fd.c
567
if ((fd = TAILQ_FIRST(&fdc->sc_drives)) != NULL)
sys/arch/arc/jazz/fd.c
574
if ((fd = fdc->sc_fd[n]) && (fd->sc_flags & FD_MOTOR))
sys/arch/arc/jazz/fd.c
576
bus_space_write_1(fdc->sc_iot, fdc->sc_ioh, FDOUT, status);
sys/arch/arc/jazz/fd.c
583
struct fdc_softc *fdc = device_private(device_parent(fd->sc_dev));
sys/arch/arc/jazz/fd.c
588
fd_set_motor(fdc, 0);
sys/arch/arc/jazz/fd.c
596
struct fdc_softc *fdc = device_private(device_parent(fd->sc_dev));
sys/arch/arc/jazz/fd.c
601
if ((TAILQ_FIRST(&fdc->sc_drives) == fd) &&
sys/arch/arc/jazz/fd.c
602
(fdc->sc_state == MOTORWAIT))
sys/arch/arc/jazz/fd.c
603
(void)fdcintr(fdc);
sys/arch/arc/jazz/fd.c
608
fdcresult(struct fdc_softc *fdc)
sys/arch/arc/jazz/fd.c
610
bus_space_tag_t iot = fdc->sc_iot;
sys/arch/arc/jazz/fd.c
611
bus_space_handle_t ioh = fdc->sc_ioh;
sys/arch/arc/jazz/fd.c
621
if (n >= sizeof(fdc->sc_status)) {
sys/arch/arc/jazz/fd.c
625
fdc->sc_status[n++] =
sys/arch/arc/jazz/fd.c
685
fdcstart(struct fdc_softc *fdc)
sys/arch/arc/jazz/fd.c
691
if (fdc->sc_state != DEVIDLE) {
sys/arch/arc/jazz/fd.c
696
(void)fdcintr(fdc);
sys/arch/arc/jazz/fd.c
700
fdcpstatus(int n, struct fdc_softc *fdc)
sys/arch/arc/jazz/fd.c
709
snprintb(bits, sizeof(bits), NE7_ST0BITS, fdc->sc_status[0]);
sys/arch/arc/jazz/fd.c
710
printf(" (st0 %s cyl %d)\n", bits, fdc->sc_status[1]);
sys/arch/arc/jazz/fd.c
713
snprintb(bits, sizeof(bits), NE7_ST0BITS, fdc->sc_status[0]);
sys/arch/arc/jazz/fd.c
715
snprintb(bits, sizeof(bits), NE7_ST1BITS, fdc->sc_status[1]);
sys/arch/arc/jazz/fd.c
717
snprintb(bits, sizeof(bits), NE7_ST2BITS, fdc->sc_status[2]);
sys/arch/arc/jazz/fd.c
720
fdc->sc_status[3], fdc->sc_status[4], fdc->sc_status[5]);
sys/arch/arc/jazz/fd.c
733
struct fdc_softc *fdc = device_private(device_parent(dev));
sys/arch/arc/jazz/fd.c
736
out_fdc(fdc->sc_iot, fdc->sc_ioh, NE7CMD_SENSEI);
sys/arch/arc/jazz/fd.c
737
(void)fdcresult(fdc);
sys/arch/arc/jazz/fd.c
742
fdcpstatus(n, fdc);
sys/arch/arc/jazz/fd.c
748
struct fdc_softc *fdc = arg;
sys/arch/arc/jazz/fd.c
749
struct fd_softc *fd = TAILQ_FIRST(&fdc->sc_drives);
sys/arch/arc/jazz/fd.c
754
log(LOG_ERR, "%s: state %d\n", __func__, fdc->sc_state);
sys/arch/arc/jazz/fd.c
759
fdc->sc_state++;
sys/arch/arc/jazz/fd.c
761
fdc->sc_state = DEVIDLE;
sys/arch/arc/jazz/fd.c
763
(void)fdcintr(fdc);
sys/arch/arc/jazz/fd.c
781
struct fdc_softc *fdc = arg;
sys/arch/arc/jazz/fd.c
782
#define st0 fdc->sc_status[0]
sys/arch/arc/jazz/fd.c
783
#define cyl fdc->sc_status[1]
sys/arch/arc/jazz/fd.c
786
bus_space_tag_t iot = fdc->sc_iot;
sys/arch/arc/jazz/fd.c
787
bus_space_handle_t ioh = fdc->sc_ioh;
sys/arch/arc/jazz/fd.c
793
fd = TAILQ_FIRST(&fdc->sc_drives);
sys/arch/arc/jazz/fd.c
795
fdc->sc_state = DEVIDLE;
sys/arch/arc/jazz/fd.c
803
TAILQ_REMOVE(&fdc->sc_drives, fd, sc_drivechain);
sys/arch/arc/jazz/fd.c
808
switch (fdc->sc_state) {
sys/arch/arc/jazz/fd.c
810
fdc->sc_errors = 0;
sys/arch/arc/jazz/fd.c
816
fdc->sc_state = MOTORWAIT;
sys/arch/arc/jazz/fd.c
821
struct fd_softc *ofd = fdc->sc_fd[fd->sc_drive ^ 1];
sys/arch/arc/jazz/fd.c
827
fd_set_motor(fdc, 0);
sys/arch/arc/jazz/fd.c
828
fdc->sc_state = MOTORWAIT;
sys/arch/arc/jazz/fd.c
835
fd_set_motor(fdc, 0);
sys/arch/arc/jazz/fd.c
852
fdc->sc_state = SEEKWAIT;
sys/arch/arc/jazz/fd.c
857
callout_reset(&fdc->sc_timo_ch, 4 * hz, fdctimeout, fdc);
sys/arch/arc/jazz/fd.c
866
nblks = uimin(nblks, fdc->sc_maxiosize / FDC_BSIZE);
sys/arch/arc/jazz/fd.c
886
FDCDMA_START(fdc, (uint8_t *)bp->b_data + fd->sc_skip,
sys/arch/arc/jazz/fd.c
906
fdc->sc_state = IOCOMPLETE;
sys/arch/arc/jazz/fd.c
911
callout_reset(&fdc->sc_timo_ch, 2 * hz, fdctimeout, fdc);
sys/arch/arc/jazz/fd.c
915
callout_stop(&fdc->sc_timo_ch);
sys/arch/arc/jazz/fd.c
916
fdc->sc_state = SEEKCOMPLETE;
sys/arch/arc/jazz/fd.c
918
callout_reset(&fdc->sc_intr_ch, hz / 50, fdcpseudointr, fdc);
sys/arch/arc/jazz/fd.c
926
if (fdcresult(fdc) != 2 || (st0 & 0xf8) != 0x20 ||
sys/arch/arc/jazz/fd.c
931
fdcretry(fdc);
sys/arch/arc/jazz/fd.c
938
FDCDMA_ABORT(fdc);
sys/arch/arc/jazz/fd.c
943
fdcretry(fdc);
sys/arch/arc/jazz/fd.c
947
callout_stop(&fdc->sc_timo_ch);
sys/arch/arc/jazz/fd.c
952
i = fdcresult(fdc);
sys/arch/arc/jazz/fd.c
954
FDCDMA_ABORT(fdc);
sys/arch/arc/jazz/fd.c
961
fdcretry(fdc);
sys/arch/arc/jazz/fd.c
964
FDCDMA_DONE(fdc);
sys/arch/arc/jazz/fd.c
965
if (fdc->sc_errors) {
sys/arch/arc/jazz/fd.c
969
fdc->sc_errors = 0;
sys/arch/arc/jazz/fd.c
983
fd_set_motor(fdc, 1);
sys/arch/arc/jazz/fd.c
985
fd_set_motor(fdc, 0);
sys/arch/arc/jazz/fd.c
986
fdc->sc_state = RESETCOMPLETE;
sys/arch/arc/jazz/fd.c
987
callout_reset(&fdc->sc_timo_ch, hz / 2, fdctimeout, fdc);
sys/arch/arc/jazz/fd.c
991
callout_stop(&fdc->sc_timo_ch);
sys/arch/arc/jazz/fd.c
995
(void)fdcresult(fdc);
sys/arch/arc/jazz/fdc_jazzio.c
156
struct fdc_softc *fdc = &jsc->sc_fdc;
sys/arch/arc/jazz/fdc_jazzio.c
159
fdc->sc_dev = self;
sys/arch/arc/jazz/fdc_jazzio.c
160
fdc->sc_iot = ja->ja_bust;
sys/arch/arc/jazz/fdc_jazzio.c
162
fdc->sc_maxiosize = MAXPHYS;
sys/arch/arc/jazz/fdc_jazzio.c
163
fdc->sc_dma_start = fdc_jazzio_dma_start;
sys/arch/arc/jazz/fdc_jazzio.c
164
fdc->sc_dma_abort = fdc_jazzio_dma_abort;
sys/arch/arc/jazz/fdc_jazzio.c
165
fdc->sc_dma_done = fdc_jazzio_dma_done;
sys/arch/arc/jazz/fdc_jazzio.c
169
if (bus_space_map(fdc->sc_iot, ja->ja_addr,
sys/arch/arc/jazz/fdc_jazzio.c
175
if (bus_space_subregion(fdc->sc_iot, jsc->sc_baseioh,
sys/arch/arc/jazz/fdc_jazzio.c
176
FDC_OFFSET, FDC_NPORT, &fdc->sc_ioh)) {
sys/arch/arc/jazz/fdc_jazzio.c
181
if (bus_space_map(fdc->sc_iot, jazzio_conf->jc_fdcdmareg,
sys/arch/arc/jazz/fdc_jazzio.c
195
jazzio_intr_establish(ja->ja_intr, fdcintr, fdc);
sys/arch/arc/jazz/fdc_jazzio.c
197
fdcattach(fdc);
sys/arch/arc/jazz/fdc_jazzio.c
201
bus_space_unmap(fdc->sc_iot, jsc->sc_dmaioh, R4030_DMA_RANGE);
sys/arch/arc/jazz/fdc_jazzio.c
203
bus_space_unmap(fdc->sc_iot, jsc->sc_baseioh, FDC_OFFSET + FDC_NPORT);
sys/arch/arc/jazz/fdc_jazzio.c
207
fdc_jazzio_dma_start(struct fdc_softc *fdc, void *addr, size_t size,
sys/arch/arc/jazz/fdc_jazzio.c
210
struct fdc_jazzio_softc *jsc = (struct fdc_jazzio_softc *)fdc;
sys/arch/arc/jazz/fdc_jazzio.c
213
bus_space_write_4(fdc->sc_iot, jsc->sc_dmaioh, R4030_DMA_ENAB, 0);
sys/arch/arc/jazz/fdc_jazzio.c
214
bus_space_write_4(fdc->sc_iot, jsc->sc_dmaioh, R4030_DMA_MODE, 0);
sys/arch/arc/jazz/fdc_jazzio.c
226
bus_space_write_4(fdc->sc_iot, jsc->sc_dmaioh,
sys/arch/arc/jazz/fdc_jazzio.c
228
bus_space_write_4(fdc->sc_iot, jsc->sc_dmaioh,
sys/arch/arc/jazz/fdc_jazzio.c
230
bus_space_write_4(fdc->sc_iot, jsc->sc_dmaioh,
sys/arch/arc/jazz/fdc_jazzio.c
234
bus_space_write_4(fdc->sc_iot, jsc->sc_dmaioh,
sys/arch/arc/jazz/fdc_jazzio.c
240
fdc_jazzio_dma_abort(struct fdc_softc *fdc)
sys/arch/arc/jazz/fdc_jazzio.c
242
struct fdc_jazzio_softc *jsc = (struct fdc_jazzio_softc *)fdc;
sys/arch/arc/jazz/fdc_jazzio.c
245
bus_space_write_4(fdc->sc_iot, jsc->sc_dmaioh, R4030_DMA_ENAB, 0);
sys/arch/arc/jazz/fdc_jazzio.c
246
bus_space_write_4(fdc->sc_iot, jsc->sc_dmaioh, R4030_DMA_MODE, 0);
sys/arch/arc/jazz/fdc_jazzio.c
250
fdc_jazzio_dma_done(struct fdc_softc *fdc)
sys/arch/arc/jazz/fdc_jazzio.c
252
struct fdc_jazzio_softc *jsc = (struct fdc_jazzio_softc *)fdc;
sys/arch/arc/jazz/fdc_jazzio.c
255
bus_space_write_4(fdc->sc_iot, jsc->sc_dmaioh, R4030_DMA_COUNT, 0);
sys/arch/arc/jazz/fdc_jazzio.c
256
bus_space_write_4(fdc->sc_iot, jsc->sc_dmaioh, R4030_DMA_ENAB, 0);
sys/arch/arc/jazz/fdc_jazzio.c
257
bus_space_write_4(fdc->sc_iot, jsc->sc_dmaioh, R4030_DMA_MODE, 0);
sys/arch/arc/jazz/fdcvar.h
127
#define FDCDMA_START(fdc, addr, len, datain) \
sys/arch/arc/jazz/fdcvar.h
128
(*(fdc)->sc_dma_start)(fdc, addr, len, datain)
sys/arch/arc/jazz/fdcvar.h
129
#define FDCDMA_ABORT(fdc) (*(fdc)->sc_dma_abort)(fdc)
sys/arch/arc/jazz/fdcvar.h
130
#define FDCDMA_DONE(fdc) (*(fdc)->sc_dma_done)(fdc)
sys/arch/atari/dev/fd.c
277
CFATTACH_DECL_NEW(fdc, 0,
sys/arch/atari/dev/hdfd.c
1000
fd_set_motor(fdc, 0);
sys/arch/atari/dev/hdfd.c
1001
fdc->sc_state = MOTORWAIT;
sys/arch/atari/dev/hdfd.c
1008
fd_set_motor(fdc, 0);
sys/arch/atari/dev/hdfd.c
1027
fdc->sc_state = SEEKWAIT;
sys/arch/atari/dev/hdfd.c
1032
callout_reset(&fdc->sc_timo_ch, 4 * hz, fdctimeout, fdc);
sys/arch/atari/dev/hdfd.c
1084
fdc->sc_errors = 4;
sys/arch/atari/dev/hdfd.c
1085
fdcretry(fdc);
sys/arch/atari/dev/hdfd.c
1107
fdc->sc_state = IOCOMPLETE;
sys/arch/atari/dev/hdfd.c
1112
callout_reset(&fdc->sc_timo_ch, 2 * hz, fdctimeout, fdc);
sys/arch/atari/dev/hdfd.c
1116
callout_stop(&fdc->sc_timo_ch);
sys/arch/atari/dev/hdfd.c
1117
fdc->sc_state = SEEKCOMPLETE;
sys/arch/atari/dev/hdfd.c
1119
callout_reset(&fdc->sc_intr_ch, hz / 50, fdcpseudointr, fdc);
sys/arch/atari/dev/hdfd.c
1128
if (fdcresult(fdc) != 2 || (st0 & 0xf8) != 0x20 ||
sys/arch/atari/dev/hdfd.c
1133
fdcretry(fdc);
sys/arch/atari/dev/hdfd.c
1143
fdcretry(fdc);
sys/arch/atari/dev/hdfd.c
1147
callout_stop(&fdc->sc_timo_ch);
sys/arch/atari/dev/hdfd.c
1152
if (fdcresult(fdc) != 7 || (st1 & 0x37) != 0) {
sys/arch/atari/dev/hdfd.c
1157
if ((st1 & 0x10) && (++fdc->sc_overruns < 4)) {
sys/arch/atari/dev/hdfd.c
1158
fdc->sc_state = DOSEEK;
sys/arch/atari/dev/hdfd.c
1167
fdcretry(fdc);
sys/arch/atari/dev/hdfd.c
1170
if (fdc->sc_errors) {
sys/arch/atari/dev/hdfd.c
1174
fdc->sc_errors = 0;
sys/arch/atari/dev/hdfd.c
1176
fdc->sc_overruns = 0;
sys/arch/atari/dev/hdfd.c
1189
fd_set_motor(fdc, 1);
sys/arch/atari/dev/hdfd.c
1191
fd_set_motor(fdc, 0);
sys/arch/atari/dev/hdfd.c
1192
fdc->sc_state = RESETCOMPLETE;
sys/arch/atari/dev/hdfd.c
1193
callout_reset(&fdc->sc_timo_ch, hz / 2, fdctimeout, fdc);
sys/arch/atari/dev/hdfd.c
1197
callout_stop(&fdc->sc_timo_ch);
sys/arch/atari/dev/hdfd.c
1201
(void) fdcresult(fdc);
sys/arch/atari/dev/hdfd.c
1210
fdc->sc_state = RECALWAIT;
sys/arch/atari/dev/hdfd.c
1211
callout_reset(&fdc->sc_timo_ch, 5 * hz, fdctimeout, fdc);
sys/arch/atari/dev/hdfd.c
1215
callout_stop(&fdc->sc_timo_ch);
sys/arch/atari/dev/hdfd.c
1216
fdc->sc_state = RECALCOMPLETE;
sys/arch/atari/dev/hdfd.c
1218
callout_reset(&fdc->sc_intr_ch, hz / 30, fdcpseudointr, fdc);
sys/arch/atari/dev/hdfd.c
1223
if (fdcresult(fdc) != 2 || (st0 & 0xf8) != 0x20 || cyl != 0) {
sys/arch/atari/dev/hdfd.c
1227
fdcretry(fdc);
sys/arch/atari/dev/hdfd.c
1251
fdcretry(struct fdc_softc *fdc)
sys/arch/atari/dev/hdfd.c
1256
fd = fdc->sc_drives.tqh_first;
sys/arch/atari/dev/hdfd.c
1262
switch (fdc->sc_errors) {
sys/arch/atari/dev/hdfd.c
1265
fdc->sc_state = DOSEEK;
sys/arch/atari/dev/hdfd.c
1270
fdc->sc_state = DORECAL;
sys/arch/atari/dev/hdfd.c
1275
fdc->sc_state = DORESET;
sys/arch/atari/dev/hdfd.c
1284
fdcpstatus(fdc);
sys/arch/atari/dev/hdfd.c
1289
fdc->sc_errors++;
sys/arch/atari/dev/hdfd.c
209
CFATTACH_DECL_NEW(fdc, sizeof(struct fdc_softc),
sys/arch/atari/dev/hdfd.c
406
fdprint(void *aux, const char *fdc)
sys/arch/atari/dev/hdfd.c
410
if (!fdc)
sys/arch/atari/dev/hdfd.c
418
struct fdc_softc *fdc = device_private(self);
sys/arch/atari/dev/hdfd.c
424
fdc->sc_dev = self;
sys/arch/atari/dev/hdfd.c
425
fdc->sc_state = DEVIDLE;
sys/arch/atari/dev/hdfd.c
426
TAILQ_INIT(&fdc->sc_drives);
sys/arch/atari/dev/hdfd.c
435
(void)fdcresult(fdc);
sys/arch/atari/dev/hdfd.c
444
callout_init(&fdc->sc_timo_ch, 0);
sys/arch/atari/dev/hdfd.c
445
callout_init(&fdc->sc_intr_ch, 0);
sys/arch/atari/dev/hdfd.c
474
struct fdc_softc *fdc = device_private(parent);
sys/arch/atari/dev/hdfd.c
501
n = fdcresult(fdc);
sys/arch/atari/dev/hdfd.c
508
printf(" %x", fdc->sc_status[i]);
sys/arch/atari/dev/hdfd.c
512
intr_arg = (void*)fdc;
sys/arch/atari/dev/hdfd.c
513
if (n != 2 || (fdc->sc_status[0] & 0xf8) != 0x20)
sys/arch/atari/dev/hdfd.c
527
struct fdc_softc *fdc = device_private(parent);
sys/arch/atari/dev/hdfd.c
549
fdc->sc_fd[drive] = fd;
sys/arch/atari/dev/hdfd.c
658
struct fdc_softc *fdc;
sys/arch/atari/dev/hdfd.c
660
fdc = device_private(device_parent(fd->sc_dev));
sys/arch/atari/dev/hdfd.c
661
if (fdc->sc_state == DEVIDLE) {
sys/arch/atari/dev/hdfd.c
663
fdcstart(fdc);
sys/arch/atari/dev/hdfd.c
679
struct fdc_softc *fdc = device_private(device_parent(fd->sc_dev));
sys/arch/atari/dev/hdfd.c
680
int active = fdc->sc_drives.tqh_first != 0;
sys/arch/atari/dev/hdfd.c
684
TAILQ_INSERT_TAIL(&fdc->sc_drives, fd, sc_drivechain);
sys/arch/atari/dev/hdfd.c
688
fdcstart(fdc);
sys/arch/atari/dev/hdfd.c
694
struct fdc_softc *fdc = device_private(device_parent(fd->sc_dev));
sys/arch/atari/dev/hdfd.c
705
TAILQ_REMOVE(&fdc->sc_drives, fd, sc_drivechain);
sys/arch/atari/dev/hdfd.c
707
TAILQ_INSERT_TAIL(&fdc->sc_drives, fd, sc_drivechain);
sys/arch/atari/dev/hdfd.c
717
fdc->sc_state = DEVIDLE;
sys/arch/atari/dev/hdfd.c
735
fd_set_motor(struct fdc_softc *fdc, int reset)
sys/arch/atari/dev/hdfd.c
741
if ((fd = fdc->sc_drives.tqh_first) != NULL)
sys/arch/atari/dev/hdfd.c
748
if ((fd = fdc->sc_fd[n]) && (fd->sc_flags & FD_MOTOR))
sys/arch/atari/dev/hdfd.c
757
struct fdc_softc *fdc = device_private(device_parent(fd->sc_dev));
sys/arch/atari/dev/hdfd.c
762
fd_set_motor(fdc, 0);
sys/arch/atari/dev/hdfd.c
770
struct fdc_softc *fdc = device_private(device_parent(fd->sc_dev));
sys/arch/atari/dev/hdfd.c
775
if ((fdc->sc_drives.tqh_first == fd) && (fdc->sc_state == MOTORWAIT))
sys/arch/atari/dev/hdfd.c
776
(void) fdcintr(fdc);
sys/arch/atari/dev/hdfd.c
781
fdcresult(struct fdc_softc *fdc)
sys/arch/atari/dev/hdfd.c
792
if (n >= sizeof(fdc->sc_status)) {
sys/arch/atari/dev/hdfd.c
796
fdc->sc_status[n++] = rd_fdc_reg(fddata);
sys/arch/atari/dev/hdfd.c
854
fdcstart(struct fdc_softc *fdc)
sys/arch/atari/dev/hdfd.c
860
if (fdc->sc_state != DEVIDLE) {
sys/arch/atari/dev/hdfd.c
865
(void) fdcintr(fdc);
sys/arch/atari/dev/hdfd.c
869
fdcpstatus(struct fdc_softc *fdc)
sys/arch/atari/dev/hdfd.c
873
snprintb(bits, sizeof(bits), NE7_ST0BITS, fdc->sc_status[0]);
sys/arch/atari/dev/hdfd.c
875
snprintb(bits, sizeof(bits), NE7_ST1BITS, fdc->sc_status[1]);
sys/arch/atari/dev/hdfd.c
877
snprintb(bits, sizeof(bits), NE7_ST2BITS, fdc->sc_status[2]);
sys/arch/atari/dev/hdfd.c
880
fdc->sc_status[3], fdc->sc_status[4], fdc->sc_status[5]);
sys/arch/atari/dev/hdfd.c
886
struct fdc_softc *fdc = device_private(device_parent(self));
sys/arch/atari/dev/hdfd.c
891
(void) fdcresult(fdc);
sys/arch/atari/dev/hdfd.c
902
snprintb(bits, sizeof(bits), NE7_ST0BITS, fdc->sc_status[0]);
sys/arch/atari/dev/hdfd.c
903
printf(" (st0 %s cyl %d)\n", bits, fdc->sc_status[1]);
sys/arch/atari/dev/hdfd.c
906
fdcpstatus(fdc);
sys/arch/atari/dev/hdfd.c
919
struct fdc_softc *fdc = arg;
sys/arch/atari/dev/hdfd.c
920
struct fd_softc *fd = fdc->sc_drives.tqh_first;
sys/arch/atari/dev/hdfd.c
927
fdc->sc_state++;
sys/arch/atari/dev/hdfd.c
929
fdc->sc_state = DEVIDLE;
sys/arch/atari/dev/hdfd.c
931
(void) fdcintr(fdc);
sys/arch/atari/dev/hdfd.c
949
struct fdc_softc *fdc = arg;
sys/arch/atari/dev/hdfd.c
950
#define st0 fdc->sc_status[0]
sys/arch/atari/dev/hdfd.c
951
#define st1 fdc->sc_status[1]
sys/arch/atari/dev/hdfd.c
952
#define cyl fdc->sc_status[1]
sys/arch/atari/dev/hdfd.c
962
fd = fdc->sc_drives.tqh_first;
sys/arch/atari/dev/hdfd.c
964
fdc->sc_state = DEVIDLE;
sys/arch/atari/dev/hdfd.c
972
TAILQ_REMOVE(&fdc->sc_drives, fd, sc_drivechain);
sys/arch/atari/dev/hdfd.c
980
switch (fdc->sc_state) {
sys/arch/atari/dev/hdfd.c
982
fdc->sc_errors = 0;
sys/arch/atari/dev/hdfd.c
983
fdc->sc_overruns = 0;
sys/arch/atari/dev/hdfd.c
989
fdc->sc_state = MOTORWAIT;
sys/arch/atari/dev/hdfd.c
994
struct fd_softc *ofd = fdc->sc_fd[fd->sc_drive ^ 1];
sys/arch/atari/isa/fdcisa.c
184
struct fdc_softc *fdc = &isc->sc_fdc;
sys/arch/atari/isa/fdcisa.c
189
fdc->sc_dev = self;
sys/arch/atari/isa/fdcisa.c
190
fdc->sc_iot = ia->ia_iot;
sys/arch/atari/isa/fdcisa.c
191
fdc->sc_ic = ia->ia_ic;
sys/arch/atari/isa/fdcisa.c
192
fdc->sc_drq = ia->ia_drq[0].ir_drq;
sys/arch/atari/isa/fdcisa.c
194
if (bus_space_map(fdc->sc_iot, ia->ia_io[0].ir_addr,
sys/arch/atari/isa/fdcisa.c
200
if (bus_space_subregion(fdc->sc_iot, isc->sc_baseioh, 2, 4,
sys/arch/atari/isa/fdcisa.c
201
&fdc->sc_ioh)) {
sys/arch/atari/isa/fdcisa.c
206
if (bus_space_map(fdc->sc_iot, ia->ia_io[0].ir_addr + fdctl + 2, 1, 0,
sys/arch/atari/isa/fdcisa.c
207
&fdc->sc_fdctlioh)) {
sys/arch/atari/isa/fdcisa.c
212
fdc->sc_ih = isa_intr_establish(ia->ia_ic, ia->ia_irq[0].ir_irq,
sys/arch/atari/isa/fdcisa.c
213
IST_EDGE, IPL_BIO, fdcintr, fdc);
sys/arch/atari/isa/fdcisa.c
215
fdcattach(fdc);
sys/arch/i386/pnpbios/fdc_pnpbios.c
115
fdc->sc_ioh = pdc->sc_baseioh;
sys/arch/i386/pnpbios/fdc_pnpbios.c
120
if (bus_space_subregion(fdc->sc_iot, pdc->sc_baseioh, 2, 4,
sys/arch/i386/pnpbios/fdc_pnpbios.c
121
&fdc->sc_ioh)) {
sys/arch/i386/pnpbios/fdc_pnpbios.c
145
if (bus_space_map(fdc->sc_iot, base + size + 1, 1, 0,
sys/arch/i386/pnpbios/fdc_pnpbios.c
146
&fdc->sc_fdctlioh)) {
sys/arch/i386/pnpbios/fdc_pnpbios.c
151
} else if (pnpbios_io_map(aa->pbt, aa->resc, 1, &fdc->sc_iot,
sys/arch/i386/pnpbios/fdc_pnpbios.c
152
&fdc->sc_fdctlioh)) {
sys/arch/i386/pnpbios/fdc_pnpbios.c
157
if (pnpbios_getdmachan(aa->pbt, aa->resc, 0, &fdc->sc_drq)) {
sys/arch/i386/pnpbios/fdc_pnpbios.c
168
fdc->sc_ih = pnpbios_intr_establish(aa->pbt, aa->resc, 0, IPL_BIO,
sys/arch/i386/pnpbios/fdc_pnpbios.c
169
fdcintr, fdc);
sys/arch/i386/pnpbios/fdc_pnpbios.c
171
fdcattach(fdc);
sys/arch/i386/pnpbios/fdc_pnpbios.c
86
struct fdc_softc *fdc = &pdc->sc_fdc;
sys/arch/i386/pnpbios/fdc_pnpbios.c
92
fdc->sc_dev = self;
sys/arch/i386/pnpbios/fdc_pnpbios.c
93
fdc->sc_ic = aa->ic;
sys/arch/i386/pnpbios/fdc_pnpbios.c
95
if (pnpbios_io_map(aa->pbt, aa->resc, 0, &fdc->sc_iot,
sys/arch/prep/pnpbus/fdc_pnpbus.c
114
fdc->sc_ioh = pdc->sc_baseioh;
sys/arch/prep/pnpbus/fdc_pnpbus.c
119
if (bus_space_subregion(fdc->sc_iot, pdc->sc_baseioh, 2, 4,
sys/arch/prep/pnpbus/fdc_pnpbus.c
120
&fdc->sc_ioh)) {
sys/arch/prep/pnpbus/fdc_pnpbus.c
138
if (bus_space_map(fdc->sc_iot, base + size + 1, 1, 0,
sys/arch/prep/pnpbus/fdc_pnpbus.c
139
&fdc->sc_fdctlioh)) {
sys/arch/prep/pnpbus/fdc_pnpbus.c
144
} else if (pnpbus_io_map(&pna->pna_res, 1, &fdc->sc_iot,
sys/arch/prep/pnpbus/fdc_pnpbus.c
145
&fdc->sc_fdctlioh)) {
sys/arch/prep/pnpbus/fdc_pnpbus.c
150
if (pnpbus_getdmachan(&pna->pna_res, 0, &fdc->sc_drq)) {
sys/arch/prep/pnpbus/fdc_pnpbus.c
162
fdc->sc_ih = pnpbus_intr_establish(0, IPL_BIO, IST_EDGE, fdcintr, fdc,
sys/arch/prep/pnpbus/fdc_pnpbus.c
165
fdcattach(fdc);
sys/arch/prep/pnpbus/fdc_pnpbus.c
88
struct fdc_softc *fdc = &pdc->sc_fdc;
sys/arch/prep/pnpbus/fdc_pnpbus.c
92
fdc->sc_dev = self;
sys/arch/prep/pnpbus/fdc_pnpbus.c
93
fdc->sc_ic = pna->pna_ic;
sys/arch/prep/pnpbus/fdc_pnpbus.c
95
if (pnpbus_io_map(&pna->pna_res, 0, &fdc->sc_iot, &pdc->sc_baseioh)) {
sys/arch/sparc/dev/fd.c
1004
if ((fdc->sc_flags & FDC_82077) != 0) {
sys/arch/sparc/dev/fd.c
1006
if ((fd = fdc->sc_drives.tqh_first) != NULL)
sys/arch/sparc/dev/fd.c
1010
if ((fd = fdc->sc_fd[n]) && (fd->sc_flags & FD_MOTOR))
sys/arch/sparc/dev/fd.c
1012
bus_space_write_1(fdc->sc_bustag, fdc->sc_handle,
sys/arch/sparc/dev/fd.c
1013
fdc->sc_reg_dor, status);
sys/arch/sparc/dev/fd.c
1017
if ((fd = fdc->sc_fd[n]) != NULL &&
sys/arch/sparc/dev/fd.c
1043
struct fdc_softc *fdc = device_private(device_parent(fd->sc_dv));
sys/arch/sparc/dev/fd.c
1048
if ((fdc->sc_drives.tqh_first == fd) && (fdc->sc_state == MOTORWAIT))
sys/arch/sparc/dev/fd.c
1049
(void) fdcstate(fdc);
sys/arch/sparc/dev/fd.c
1059
fdcresult(struct fdc_softc *fdc)
sys/arch/sparc/dev/fd.c
1061
bus_space_tag_t t = fdc->sc_bustag;
sys/arch/sparc/dev/fd.c
1062
bus_space_handle_t h = fdc->sc_handle;
sys/arch/sparc/dev/fd.c
1066
uint8_t v = bus_space_read_1(t, h, fdc->sc_reg_msr);
sys/arch/sparc/dev/fd.c
1069
return (fdc->sc_nstat = n);
sys/arch/sparc/dev/fd.c
1071
if (n >= sizeof(fdc->sc_status)) {
sys/arch/sparc/dev/fd.c
1075
fdc->sc_status[n++] =
sys/arch/sparc/dev/fd.c
1076
bus_space_read_1(t, h, fdc->sc_reg_fifo);
sys/arch/sparc/dev/fd.c
1082
return (fdc->sc_nstat = -1);
sys/arch/sparc/dev/fd.c
1090
fdc_wrfifo(struct fdc_softc *fdc, uint8_t x)
sys/arch/sparc/dev/fd.c
1092
bus_space_tag_t t = fdc->sc_bustag;
sys/arch/sparc/dev/fd.c
1093
bus_space_handle_t h = fdc->sc_handle;
sys/arch/sparc/dev/fd.c
1097
uint8_t v = bus_space_read_1(t, h, fdc->sc_reg_msr);
sys/arch/sparc/dev/fd.c
1100
bus_space_write_1(t, h, fdc->sc_reg_fifo, x);
sys/arch/sparc/dev/fd.c
1109
fdc_diskchange(struct fdc_softc *fdc)
sys/arch/sparc/dev/fd.c
1112
if (CPU_ISSUN4M && (fdc->sc_flags & FDC_82077) != 0) {
sys/arch/sparc/dev/fd.c
1113
bus_space_tag_t t = fdc->sc_bustag;
sys/arch/sparc/dev/fd.c
1114
bus_space_handle_t h = fdc->sc_handle;
sys/arch/sparc/dev/fd.c
1115
uint8_t v = bus_space_read_1(t, h, fdc->sc_reg_dir);
sys/arch/sparc/dev/fd.c
1208
fdcstart(struct fdc_softc *fdc)
sys/arch/sparc/dev/fd.c
1214
if (fdc->sc_state != DEVIDLE) {
sys/arch/sparc/dev/fd.c
1219
(void) fdcstate(fdc);
sys/arch/sparc/dev/fd.c
1223
fdcpstatus(int n, struct fdc_softc *fdc)
sys/arch/sparc/dev/fd.c
1232
snprintb(bits, sizeof(bits), NE7_ST0BITS, fdc->sc_status[0]);
sys/arch/sparc/dev/fd.c
1233
printf(" (st0 %s cyl %d)\n", bits, fdc->sc_status[1]);
sys/arch/sparc/dev/fd.c
1236
snprintb(bits, sizeof(bits), NE7_ST0BITS, fdc->sc_status[0]);
sys/arch/sparc/dev/fd.c
1238
snprintb(bits, sizeof(bits), NE7_ST1BITS, fdc->sc_status[1]);
sys/arch/sparc/dev/fd.c
1240
snprintb(bits, sizeof(bits), NE7_ST2BITS, fdc->sc_status[2]);
sys/arch/sparc/dev/fd.c
1243
fdc->sc_status[3], fdc->sc_status[4], fdc->sc_status[5]);
sys/arch/sparc/dev/fd.c
1254
fdcstatus(struct fdc_softc *fdc, const char *s)
sys/arch/sparc/dev/fd.c
1256
struct fd_softc *fd = fdc->sc_drives.tqh_first;
sys/arch/sparc/dev/fd.c
1260
n = fdc->sc_nstat;
sys/arch/sparc/dev/fd.c
1267
if (n == 0 && (fdc->sc_flags & FDC_82077) != 0) {
sys/arch/sparc/dev/fd.c
1268
fdc_wrfifo(fdc, NE7CMD_SENSEI);
sys/arch/sparc/dev/fd.c
1269
(void) fdcresult(fdc);
sys/arch/sparc/dev/fd.c
1275
fd ? device_xname(fd->sc_dv) : "fdc", s, fdc->sc_state);
sys/arch/sparc/dev/fd.c
1277
fdcpstatus(n, fdc);
sys/arch/sparc/dev/fd.c
1283
struct fdc_softc *fdc = arg;
sys/arch/sparc/dev/fd.c
1288
fd = fdc->sc_drives.tqh_first;
sys/arch/sparc/dev/fd.c
1291
device_xname(fdc->sc_dev),
sys/arch/sparc/dev/fd.c
1292
fdc->sc_state, fdc->sc_istatus);
sys/arch/sparc/dev/fd.c
1293
fdc->sc_state = DEVIDLE;
sys/arch/sparc/dev/fd.c
1298
fdc->sc_state++;
sys/arch/sparc/dev/fd.c
1300
fdc->sc_state = DEVIDLE;
sys/arch/sparc/dev/fd.c
1302
(void) fdcstate(fdc);
sys/arch/sparc/dev/fd.c
1311
struct fdc_softc *fdc = arg;
sys/arch/sparc/dev/fd.c
1316
(void) fdcstate(fdc);
sys/arch/sparc/dev/fd.c
1331
struct fdc_softc *fdc = arg;
sys/arch/sparc/dev/fd.c
1332
bus_space_tag_t t = fdc->sc_bustag;
sys/arch/sparc/dev/fd.c
1333
bus_space_handle_t h = fdc->sc_handle;
sys/arch/sparc/dev/fd.c
1335
switch (fdc->sc_itask) {
sys/arch/sparc/dev/fd.c
1339
if (fdc_wrfifo(fdc, NE7CMD_SENSEI) != 0 || fdcresult(fdc) == -1)
sys/arch/sparc/dev/fd.c
1340
fdc->sc_istatus = FDC_ISTATUS_ERROR;
sys/arch/sparc/dev/fd.c
1342
fdc->sc_istatus = FDC_ISTATUS_DONE;
sys/arch/sparc/dev/fd.c
1343
softint_schedule(fdc->sc_sicookie);
sys/arch/sparc/dev/fd.c
1346
if (fdcresult(fdc) == -1)
sys/arch/sparc/dev/fd.c
1347
fdc->sc_istatus = FDC_ISTATUS_ERROR;
sys/arch/sparc/dev/fd.c
1349
fdc->sc_istatus = FDC_ISTATUS_DONE;
sys/arch/sparc/dev/fd.c
1350
softint_schedule(fdc->sc_sicookie);
sys/arch/sparc/dev/fd.c
1356
printf("fdc: stray hard interrupt: itask=%d\n", fdc->sc_itask);
sys/arch/sparc/dev/fd.c
1357
fdc->sc_istatus = FDC_ISTATUS_SPURIOUS;
sys/arch/sparc/dev/fd.c
1358
softint_schedule(fdc->sc_sicookie);
sys/arch/sparc/dev/fd.c
1368
msr = bus_space_read_1(t, h, fdc->sc_reg_msr);
sys/arch/sparc/dev/fd.c
1376
fdcresult(fdc);
sys/arch/sparc/dev/fd.c
1377
fdc->sc_istatus = FDC_ISTATUS_DONE;
sys/arch/sparc/dev/fd.c
1378
softint_schedule(fdc->sc_sicookie);
sys/arch/sparc/dev/fd.c
1382
if (fdc->sc_tc == 0)
sys/arch/sparc/dev/fd.c
1389
*fdc->sc_data =
sys/arch/sparc/dev/fd.c
1390
bus_space_read_1(t, h, fdc->sc_reg_fifo);
sys/arch/sparc/dev/fd.c
1392
bus_space_write_1(t, h, fdc->sc_reg_fifo,
sys/arch/sparc/dev/fd.c
1393
*fdc->sc_data);
sys/arch/sparc/dev/fd.c
1395
fdc->sc_data++;
sys/arch/sparc/dev/fd.c
1396
if (--fdc->sc_tc == 0) {
sys/arch/sparc/dev/fd.c
1407
struct fdc_softc *fdc = arg;
sys/arch/sparc/dev/fd.c
1409
if (fdc->sc_istatus == FDC_ISTATUS_NONE)
sys/arch/sparc/dev/fd.c
1413
switch (fdc->sc_istatus) {
sys/arch/sparc/dev/fd.c
1415
printf("fdc: ierror status: state %d\n", fdc->sc_state);
sys/arch/sparc/dev/fd.c
1418
printf("fdc: spurious interrupt: state %d\n", fdc->sc_state);
sys/arch/sparc/dev/fd.c
1422
fdcstate(fdc);
sys/arch/sparc/dev/fd.c
1427
fdcstate(struct fdc_softc *fdc)
sys/arch/sparc/dev/fd.c
1430
#define st0 fdc->sc_status[0]
sys/arch/sparc/dev/fd.c
1431
#define st1 fdc->sc_status[1]
sys/arch/sparc/dev/fd.c
1432
#define cyl fdc->sc_status[1]
sys/arch/sparc/dev/fd.c
1433
#define FDC_WRFIFO(fdc, c) do { \
sys/arch/sparc/dev/fd.c
1434
if (fdc_wrfifo(fdc, (c))) { \
sys/arch/sparc/dev/fd.c
1445
if (fdc->sc_istatus == FDC_ISTATUS_ERROR) {
sys/arch/sparc/dev/fd.c
1447
if (fdc->sc_state != RESETCOMPLETE &&
sys/arch/sparc/dev/fd.c
1448
fdc->sc_state != RECALWAIT &&
sys/arch/sparc/dev/fd.c
1449
fdc->sc_state != RECALCOMPLETE)
sys/arch/sparc/dev/fd.c
1450
fdc->sc_state = DORESET;
sys/arch/sparc/dev/fd.c
1454
fdc->sc_istatus = FDC_ISTATUS_NONE;
sys/arch/sparc/dev/fd.c
1455
fdc->sc_itask = FDC_ITASK_NONE;
sys/arch/sparc/dev/fd.c
1459
fd = fdc->sc_drives.tqh_first;
sys/arch/sparc/dev/fd.c
1461
fdc->sc_state = DEVIDLE;
sys/arch/sparc/dev/fd.c
1469
TAILQ_REMOVE(&fdc->sc_drives, fd, sc_drivechain);
sys/arch/sparc/dev/fd.c
1477
switch (fdc->sc_state) {
sys/arch/sparc/dev/fd.c
1479
fdc->sc_errors = 0;
sys/arch/sparc/dev/fd.c
1485
fdc->sc_state = MOTORWAIT;
sys/arch/sparc/dev/fd.c
1490
struct fd_softc *ofd = fdc->sc_fd[fd->sc_drive ^ 1];
sys/arch/sparc/dev/fd.c
1496
fd_set_motor(fdc);
sys/arch/sparc/dev/fd.c
1497
fdc->sc_state = MOTORWAIT;
sys/arch/sparc/dev/fd.c
1498
if ((fdc->sc_flags & FDC_NEEDMOTORWAIT) != 0) { /*XXX*/
sys/arch/sparc/dev/fd.c
1509
fd_set_motor(fdc);
sys/arch/sparc/dev/fd.c
1511
if (fdc_diskchange(fdc))
sys/arch/sparc/dev/fd.c
1517
if ((fdc->sc_flags & FDC_EIS) &&
sys/arch/sparc/dev/fd.c
1528
fdc->sc_state = SEEKWAIT;
sys/arch/sparc/dev/fd.c
1529
fdc->sc_nstat = 0;
sys/arch/sparc/dev/fd.c
1534
callout_reset(&fdc->sc_timo_ch, 4 * hz, fdctimeout, fdc);
sys/arch/sparc/dev/fd.c
1537
FDC_WRFIFO(fdc, NE7CMD_SPECIFY);
sys/arch/sparc/dev/fd.c
1538
FDC_WRFIFO(fdc, fd->sc_type->steprate);
sys/arch/sparc/dev/fd.c
1540
FDC_WRFIFO(fdc, 6 | NE7_SPECIFY_NODMA);
sys/arch/sparc/dev/fd.c
1542
fdc->sc_itask = FDC_ITASK_SENSEI;
sys/arch/sparc/dev/fd.c
1544
FDC_WRFIFO(fdc, NE7CMD_SEEK);
sys/arch/sparc/dev/fd.c
1545
FDC_WRFIFO(fdc, fd->sc_drive); /* drive number */
sys/arch/sparc/dev/fd.c
1546
FDC_WRFIFO(fdc, bp->b_cylinder * fd->sc_type->step);
sys/arch/sparc/dev/fd.c
1556
callout_reset(&fdc->sc_timo_ch, 4 * hz, fdctimeout, fdc);
sys/arch/sparc/dev/fd.c
1558
fdc->sc_nstat = 0;
sys/arch/sparc/dev/fd.c
1559
fdc->sc_state = DSKCHGWAIT;
sys/arch/sparc/dev/fd.c
1561
fdc->sc_itask = FDC_ITASK_SENSEI;
sys/arch/sparc/dev/fd.c
1563
FDC_WRFIFO(fdc, NE7CMD_SEEK);
sys/arch/sparc/dev/fd.c
1564
FDC_WRFIFO(fdc, fd->sc_drive); /* drive number */
sys/arch/sparc/dev/fd.c
1565
FDC_WRFIFO(fdc, 1 * fd->sc_type->step);
sys/arch/sparc/dev/fd.c
1569
callout_stop(&fdc->sc_timo_ch);
sys/arch/sparc/dev/fd.c
1571
if (fdc->sc_nstat != 2 || (st0 & 0xf8) != 0x20 ||
sys/arch/sparc/dev/fd.c
1573
fdcstatus(fdc, "dskchg seek failed");
sys/arch/sparc/dev/fd.c
1574
fdc->sc_state = DORESET;
sys/arch/sparc/dev/fd.c
1576
fdc->sc_state = DORECAL;
sys/arch/sparc/dev/fd.c
1578
if (fdc_diskchange(fdc)) {
sys/arch/sparc/dev/fd.c
1580
device_xname(fdc->sc_dev));
sys/arch/sparc/dev/fd.c
1581
fdc->sc_state = DORESET;
sys/arch/sparc/dev/fd.c
1612
fdc->sc_data = (char *)bp->b_data + fd->sc_skip;
sys/arch/sparc/dev/fd.c
1613
fdc->sc_tc = fd->sc_nbytes;
sys/arch/sparc/dev/fd.c
1615
bus_space_write_1(fdc->sc_bustag, fdc->sc_handle,
sys/arch/sparc/dev/fd.c
1616
fdc->sc_reg_drs, type->rate);
sys/arch/sparc/dev/fd.c
1625
fdc->sc_state = IOCOMPLETE;
sys/arch/sparc/dev/fd.c
1626
fdc->sc_itask = FDC_ITASK_DMA;
sys/arch/sparc/dev/fd.c
1627
fdc->sc_nstat = 0;
sys/arch/sparc/dev/fd.c
1632
callout_reset(&fdc->sc_timo_ch, 3 * hz, fdctimeout, fdc);
sys/arch/sparc/dev/fd.c
1636
FDC_WRFIFO(fdc, NE7CMD_FORMAT);
sys/arch/sparc/dev/fd.c
1637
FDC_WRFIFO(fdc, (head << 2) | fd->sc_drive);
sys/arch/sparc/dev/fd.c
1638
FDC_WRFIFO(fdc, finfo->fd_formb_secshift);
sys/arch/sparc/dev/fd.c
1639
FDC_WRFIFO(fdc, finfo->fd_formb_nsecs);
sys/arch/sparc/dev/fd.c
1640
FDC_WRFIFO(fdc, finfo->fd_formb_gaplen);
sys/arch/sparc/dev/fd.c
1641
FDC_WRFIFO(fdc, finfo->fd_formb_fillbyte);
sys/arch/sparc/dev/fd.c
1644
FDC_WRFIFO(fdc, NE7CMD_READ);
sys/arch/sparc/dev/fd.c
1646
FDC_WRFIFO(fdc, NE7CMD_WRITE);
sys/arch/sparc/dev/fd.c
1647
FDC_WRFIFO(fdc, (head << 2) | fd->sc_drive);
sys/arch/sparc/dev/fd.c
1648
FDC_WRFIFO(fdc, fd->sc_cylin); /*track*/
sys/arch/sparc/dev/fd.c
1649
FDC_WRFIFO(fdc, head);
sys/arch/sparc/dev/fd.c
1650
FDC_WRFIFO(fdc, sec + 1); /*sector+1*/
sys/arch/sparc/dev/fd.c
1651
FDC_WRFIFO(fdc, type->secsize);/*sector size*/
sys/arch/sparc/dev/fd.c
1652
FDC_WRFIFO(fdc, type->sectrac);/*secs/track*/
sys/arch/sparc/dev/fd.c
1653
FDC_WRFIFO(fdc, type->gap1); /*gap1 size*/
sys/arch/sparc/dev/fd.c
1654
FDC_WRFIFO(fdc, type->datalen);/*data length*/
sys/arch/sparc/dev/fd.c
1660
callout_stop(&fdc->sc_timo_ch);
sys/arch/sparc/dev/fd.c
1661
fdc->sc_state = SEEKCOMPLETE;
sys/arch/sparc/dev/fd.c
1662
if (fdc->sc_flags & FDC_NEEDHEADSETTLE) {
sys/arch/sparc/dev/fd.c
1664
callout_reset(&fdc->sc_intr_ch, hz / 50,
sys/arch/sparc/dev/fd.c
1665
fdcpseudointr, fdc);
sys/arch/sparc/dev/fd.c
1674
if (fdc->sc_nstat != 2 || (st0 & 0xf8) != 0x20 ||
sys/arch/sparc/dev/fd.c
1678
fdcstatus(fdc, "seek failed");
sys/arch/sparc/dev/fd.c
1680
fdcretry(fdc);
sys/arch/sparc/dev/fd.c
1692
fdc->sc_itask = FDC_ITASK_RESULT;
sys/arch/sparc/dev/fd.c
1693
fdc->sc_state = IOCLEANUPWAIT;
sys/arch/sparc/dev/fd.c
1694
fdc->sc_nstat = 0;
sys/arch/sparc/dev/fd.c
1696
callout_reset(&fdc->sc_timo_ch, hz / 10, fdctimeout, fdc);
sys/arch/sparc/dev/fd.c
1705
fdcstatus(fdc, "timeout");
sys/arch/sparc/dev/fd.c
1708
fdcretry(fdc);
sys/arch/sparc/dev/fd.c
1711
fdc->sc_state = DORESET;
sys/arch/sparc/dev/fd.c
1715
callout_stop(&fdc->sc_timo_ch);
sys/arch/sparc/dev/fd.c
1718
fdcretry(fdc);
sys/arch/sparc/dev/fd.c
1722
callout_stop(&fdc->sc_timo_ch);
sys/arch/sparc/dev/fd.c
1727
if (fdc->sc_nstat != 7 || st1 != 0 ||
sys/arch/sparc/dev/fd.c
1729
((st0 & 0xf8) != 0x20 || (fdc->sc_cfg & CFG_EIS) == 0))) {
sys/arch/sparc/dev/fd.c
1732
fdcstatus(fdc,
sys/arch/sparc/dev/fd.c
1737
fdc->sc_nstat, fdc->sc_tc);
sys/arch/sparc/dev/fd.c
1740
if (fdc->sc_nstat == 7 &&
sys/arch/sparc/dev/fd.c
1747
int thr = fdc->sc_cfg & CFG_THRHLD_MASK;
sys/arch/sparc/dev/fd.c
1750
fdc->sc_cfg &= ~CFG_THRHLD_MASK;
sys/arch/sparc/dev/fd.c
1751
fdc->sc_cfg |= (thr & CFG_THRHLD_MASK);
sys/arch/sparc/dev/fd.c
1756
fdconf(fdc);
sys/arch/sparc/dev/fd.c
1757
fdc->sc_overruns = 0;
sys/arch/sparc/dev/fd.c
1759
if (++fdc->sc_overruns < 3) {
sys/arch/sparc/dev/fd.c
1760
fdc->sc_state = DOIO;
sys/arch/sparc/dev/fd.c
1764
fdcretry(fdc);
sys/arch/sparc/dev/fd.c
1767
if (fdc->sc_errors) {
sys/arch/sparc/dev/fd.c
1772
fdc->sc_errors = 0;
sys/arch/sparc/dev/fd.c
1774
if (--fdc->sc_overruns < -20) {
sys/arch/sparc/dev/fd.c
1775
int thr = fdc->sc_cfg & CFG_THRHLD_MASK;
sys/arch/sparc/dev/fd.c
1778
fdc->sc_cfg &= ~CFG_THRHLD_MASK;
sys/arch/sparc/dev/fd.c
1779
fdc->sc_cfg |= (thr & CFG_THRHLD_MASK);
sys/arch/sparc/dev/fd.c
1784
fdconf(fdc);
sys/arch/sparc/dev/fd.c
1786
fdc->sc_overruns = 0;
sys/arch/sparc/dev/fd.c
1801
fd_set_motor(fdc);
sys/arch/sparc/dev/fd.c
1803
fdc->sc_nstat = 0;
sys/arch/sparc/dev/fd.c
1804
fdc->sc_itask = FDC_ITASK_SENSEI;
sys/arch/sparc/dev/fd.c
1805
fdc->sc_state = RESETCOMPLETE;
sys/arch/sparc/dev/fd.c
1806
callout_reset(&fdc->sc_timo_ch, hz / 2, fdctimeout, fdc);
sys/arch/sparc/dev/fd.c
1807
fdc_reset(fdc);
sys/arch/sparc/dev/fd.c
1811
callout_stop(&fdc->sc_timo_ch);
sys/arch/sparc/dev/fd.c
1812
fdconf(fdc);
sys/arch/sparc/dev/fd.c
1816
fdc->sc_state = RECALWAIT;
sys/arch/sparc/dev/fd.c
1817
fdc->sc_itask = FDC_ITASK_SENSEI;
sys/arch/sparc/dev/fd.c
1818
fdc->sc_nstat = 0;
sys/arch/sparc/dev/fd.c
1819
callout_reset(&fdc->sc_timo_ch, 5 * hz, fdctimeout, fdc);
sys/arch/sparc/dev/fd.c
1821
FDC_WRFIFO(fdc, NE7CMD_RECAL);
sys/arch/sparc/dev/fd.c
1822
FDC_WRFIFO(fdc, fd->sc_drive);
sys/arch/sparc/dev/fd.c
1826
callout_stop(&fdc->sc_timo_ch);
sys/arch/sparc/dev/fd.c
1827
fdc->sc_state = RECALCOMPLETE;
sys/arch/sparc/dev/fd.c
1828
if (fdc->sc_flags & FDC_NEEDHEADSETTLE) {
sys/arch/sparc/dev/fd.c
1830
callout_reset(&fdc->sc_intr_ch, hz / 30,
sys/arch/sparc/dev/fd.c
1831
fdcpseudointr, fdc);
sys/arch/sparc/dev/fd.c
1836
if (fdc->sc_nstat != 2 || (st0 & 0xf8) != 0x20 || cyl != 0) {
sys/arch/sparc/dev/fd.c
1839
fdcstatus(fdc, "recalibrate failed");
sys/arch/sparc/dev/fd.c
1841
fdcretry(fdc);
sys/arch/sparc/dev/fd.c
1853
fdcstatus(fdc, "stray interrupt");
sys/arch/sparc/dev/fd.c
1865
callout_stop(&fdc->sc_timo_ch);
sys/arch/sparc/dev/fd.c
1866
fdcretry(fdc);
sys/arch/sparc/dev/fd.c
1867
(fdc)->sc_state = DORESET;
sys/arch/sparc/dev/fd.c
1876
fdcretry(struct fdc_softc *fdc)
sys/arch/sparc/dev/fd.c
1882
fd = fdc->sc_drives.tqh_first;
sys/arch/sparc/dev/fd.c
1885
fdc->sc_overruns = 0;
sys/arch/sparc/dev/fd.c
1889
switch (fdc->sc_errors) {
sys/arch/sparc/dev/fd.c
1891
if (fdc->sc_nstat == 7 &&
sys/arch/sparc/dev/fd.c
1892
(fdc->sc_status[0] & 0xd8) == 0x40 &&
sys/arch/sparc/dev/fd.c
1893
(fdc->sc_status[1] & 0x2) == 0x2) {
sys/arch/sparc/dev/fd.c
1900
fdc->sc_state =
sys/arch/sparc/dev/fd.c
1901
(fdc->sc_flags & FDC_EIS) ? DOIO : DOSEEK;
sys/arch/sparc/dev/fd.c
1906
fdc->sc_state = DORECAL;
sys/arch/sparc/dev/fd.c
1910
if (fdc->sc_nstat == 7 &&
sys/arch/sparc/dev/fd.c
1911
fdc->sc_status[0] == 0 &&
sys/arch/sparc/dev/fd.c
1912
fdc->sc_status[1] == 0 &&
sys/arch/sparc/dev/fd.c
1913
fdc->sc_status[2] == 0) {
sys/arch/sparc/dev/fd.c
1927
fdc->sc_state = DORESET;
sys/arch/sparc/dev/fd.c
1937
fdcstatus(fdc, "controller status");
sys/arch/sparc/dev/fd.c
1944
fdc->sc_errors++;
sys/arch/sparc/dev/fd.c
1952
struct fdc_softc *fdc;
sys/arch/sparc/dev/fd.c
1968
fdc = device_private(device_parent(fd->sc_dv));
sys/arch/sparc/dev/fd.c
2145
fdc_wrfifo(fdc, NE7CMD_DUMPREG);
sys/arch/sparc/dev/fd.c
2146
fdcresult(fdc);
sys/arch/sparc/dev/fd.c
2147
printf("fdc: dumpreg(%d regs): <", fdc->sc_nstat);
sys/arch/sparc/dev/fd.c
2148
for (i = 0; i < fdc->sc_nstat; i++)
sys/arch/sparc/dev/fd.c
2149
printf(" 0x%x", fdc->sc_status[i]);
sys/arch/sparc/dev/fd.c
2154
fdc->sc_cfg &= ~CFG_THRHLD_MASK;
sys/arch/sparc/dev/fd.c
2155
fdc->sc_cfg |= (*(int *)addr & CFG_THRHLD_MASK);
sys/arch/sparc/dev/fd.c
2156
fdconf(fdc);
sys/arch/sparc/dev/fd.c
2160
fdc_wrfifo(fdc, NE7CMD_SENSEI);
sys/arch/sparc/dev/fd.c
2161
fdcresult(fdc);
sys/arch/sparc/dev/fd.c
2162
printf("fdc: sensei(%d regs): <", fdc->sc_nstat);
sys/arch/sparc/dev/fd.c
2163
for (i=0; i< fdc->sc_nstat; i++)
sys/arch/sparc/dev/fd.c
2164
printf(" 0x%x", fdc->sc_status[i]);
sys/arch/sparc/dev/fd.c
2306
struct fdc_softc *fdc = device_private(device_parent(fd->sc_dv));
sys/arch/sparc/dev/fd.c
2314
if (CPU_ISSUN4M && (fdc->sc_flags & FDC_82077) != 0) {
sys/arch/sparc/dev/fd.c
2315
bus_space_tag_t t = fdc->sc_bustag;
sys/arch/sparc/dev/fd.c
2316
bus_space_handle_t h = fdc->sc_handle;
sys/arch/sparc/dev/fd.c
2319
bus_space_write_1(t, h, fdc->sc_reg_dor, dor | FDO_EJ);
sys/arch/sparc/dev/fd.c
2321
bus_space_write_1(t, h, fdc->sc_reg_dor, FDO_FRST | FDO_DS);
sys/arch/sparc/dev/fd.c
430
establish_chip_type(struct fdc_softc *fdc,
sys/arch/sparc/dev/fd.c
475
fdc->sc_flags |= FDC_82077;
sys/arch/sparc/dev/fd.c
494
fdprint(void *aux, const char *fdc)
sys/arch/sparc/dev/fd.c
498
if (!fdc)
sys/arch/sparc/dev/fd.c
508
fdconf(struct fdc_softc *fdc)
sys/arch/sparc/dev/fd.c
512
if (fdc_wrfifo(fdc, NE7CMD_DUMPREG) || fdcresult(fdc) != 10)
sys/arch/sparc/dev/fd.c
519
if ((vroom = fdc->sc_status[7]) == 0)
sys/arch/sparc/dev/fd.c
523
if (fdc_wrfifo(fdc, NE7CMD_CFG) != 0)
sys/arch/sparc/dev/fd.c
525
if (fdc_wrfifo(fdc, vroom) != 0)
sys/arch/sparc/dev/fd.c
527
if (fdc_wrfifo(fdc, fdc->sc_cfg) != 0)
sys/arch/sparc/dev/fd.c
529
if (fdc_wrfifo(fdc, 0) != 0) /* PRETRK */
sys/arch/sparc/dev/fd.c
533
if ((fdc->sc_flags & FDC_82077) != 0) {
sys/arch/sparc/dev/fd.c
535
if (fdc_wrfifo(fdc, NE7CMD_LOCK | CFG_LOCK) != 0 ||
sys/arch/sparc/dev/fd.c
536
fdcresult(fdc) != 1) {
sys/arch/sparc/dev/fd.c
546
if (fdc_wrfifo(fdc, NE7CMD_VERSION) == 0 &&
sys/arch/sparc/dev/fd.c
547
fdcresult(fdc) == 1 && fdc->sc_status[0] == 0x90) {
sys/arch/sparc/dev/fd.c
557
struct fdc_softc *fdc = device_private(self);
sys/arch/sparc/dev/fd.c
560
fdc->sc_dev = self;
sys/arch/sparc/dev/fd.c
561
fdc->sc_bustag = ma->ma_bustag;
sys/arch/sparc/dev/fd.c
568
&fdc->sc_handle) != 0) {
sys/arch/sparc/dev/fd.c
573
establish_chip_type(fdc,
sys/arch/sparc/dev/fd.c
577
fdc->sc_handle);
sys/arch/sparc/dev/fd.c
579
if (fdcattach(fdc, ma->ma_pri) != 0)
sys/arch/sparc/dev/fd.c
580
bus_space_unmap(ma->ma_bustag, fdc->sc_handle, ma->ma_size);
sys/arch/sparc/dev/fd.c
586
struct fdc_softc *fdc = device_private(self);
sys/arch/sparc/dev/fd.c
595
fdc->sc_dev = self;
sys/arch/sparc/dev/fd.c
596
fdc->sc_bustag = sa->sa_bustag;
sys/arch/sparc/dev/fd.c
600
BUS_SPACE_MAP_LINEAR, &fdc->sc_handle) != 0) {
sys/arch/sparc/dev/fd.c
606
establish_chip_type(fdc,
sys/arch/sparc/dev/fd.c
610
fdc->sc_handle);
sys/arch/sparc/dev/fd.c
617
if (fdcattach(fdc, sa->sa_pri) != 0)
sys/arch/sparc/dev/fd.c
618
bus_space_unmap(sa->sa_bustag, fdc->sc_handle, sa->sa_size);
sys/arch/sparc/dev/fd.c
622
fdcattach(struct fdc_softc *fdc, int pri)
sys/arch/sparc/dev/fd.c
628
callout_init(&fdc->sc_timo_ch, 0);
sys/arch/sparc/dev/fd.c
629
callout_init(&fdc->sc_intr_ch, 0);
sys/arch/sparc/dev/fd.c
631
fdc->sc_state = DEVIDLE;
sys/arch/sparc/dev/fd.c
632
fdc->sc_itask = FDC_ITASK_NONE;
sys/arch/sparc/dev/fd.c
633
fdc->sc_istatus = FDC_ISTATUS_NONE;
sys/arch/sparc/dev/fd.c
634
fdc->sc_flags |= FDC_EIS;
sys/arch/sparc/dev/fd.c
635
TAILQ_INIT(&fdc->sc_drives);
sys/arch/sparc/dev/fd.c
637
if ((fdc->sc_flags & FDC_82077) != 0) {
sys/arch/sparc/dev/fd.c
638
fdc->sc_reg_msr = FDREG77_MSR;
sys/arch/sparc/dev/fd.c
639
fdc->sc_reg_fifo = FDREG77_FIFO;
sys/arch/sparc/dev/fd.c
640
fdc->sc_reg_dor = FDREG77_DOR;
sys/arch/sparc/dev/fd.c
641
fdc->sc_reg_dir = FDREG77_DIR;
sys/arch/sparc/dev/fd.c
643
fdc->sc_flags |= FDC_NEEDMOTORWAIT;
sys/arch/sparc/dev/fd.c
645
fdc->sc_reg_msr = FDREG72_MSR;
sys/arch/sparc/dev/fd.c
646
fdc->sc_reg_fifo = FDREG72_FIFO;
sys/arch/sparc/dev/fd.c
647
fdc->sc_reg_dor = 0;
sys/arch/sparc/dev/fd.c
655
fdc->sc_cfg = CFG_EIS|/*CFG_EFIFO|*/CFG_POLL|(8 & CFG_THRHLD_MASK);
sys/arch/sparc/dev/fd.c
656
if (fdconf(fdc) != 0) {
sys/arch/sparc/dev/fd.c
661
fdciop = &fdc->sc_io;
sys/arch/sparc/dev/fd.c
662
if (bus_intr_establish2(fdc->sc_bustag, pri, 0,
sys/arch/sparc/dev/fd.c
663
fdc_c_hwintr, fdc,
sys/arch/sparc/dev/fd.c
671
device_xname(fdc->sc_dev));
sys/arch/sparc/dev/fd.c
675
fdc->sc_sicookie = softint_establish(SOFTINT_BIO, fdcswintr, fdc);
sys/arch/sparc/dev/fd.c
676
if (fdc->sc_sicookie == NULL) {
sys/arch/sparc/dev/fd.c
678
device_xname(fdc->sc_dev));
sys/arch/sparc/dev/fd.c
683
evcnt_attach_dynamic(&fdc->sc_intrcnt, EVCNT_TYPE_INTR, NULL,
sys/arch/sparc/dev/fd.c
684
device_xname(fdc->sc_dev), "intr");
sys/arch/sparc/dev/fd.c
691
if (config_found(fdc->sc_dev, (void *)&fa, fdprint,
sys/arch/sparc/dev/fd.c
707
struct fdc_softc *fdc = device_private(parent);
sys/arch/sparc/dev/fd.c
708
bus_space_tag_t t = fdc->sc_bustag;
sys/arch/sparc/dev/fd.c
709
bus_space_handle_t h = fdc->sc_handle;
sys/arch/sparc/dev/fd.c
718
if ((fdc->sc_flags & FDC_82077) != 0) {
sys/arch/sparc/dev/fd.c
720
bus_space_write_1(t, h, fdc->sc_reg_dor,
sys/arch/sparc/dev/fd.c
727
fdc->sc_nstat = 0;
sys/arch/sparc/dev/fd.c
728
fdc_wrfifo(fdc, NE7CMD_RECAL);
sys/arch/sparc/dev/fd.c
729
fdc_wrfifo(fdc, drive);
sys/arch/sparc/dev/fd.c
736
v = bus_space_read_1(t, h, fdc->sc_reg_msr);
sys/arch/sparc/dev/fd.c
740
if (fdc_wrfifo(fdc, NE7CMD_SENSEI))
sys/arch/sparc/dev/fd.c
742
if (fdcresult(fdc) == 1 && fdc->sc_status[0] == 0x80)
sys/arch/sparc/dev/fd.c
752
n = fdc->sc_nstat;
sys/arch/sparc/dev/fd.c
758
printf(" 0x%x", fdc->sc_status[i]);
sys/arch/sparc/dev/fd.c
762
ok = (n == 2 && (fdc->sc_status[0] & 0xf8) == 0x20) ? 1 : 0;
sys/arch/sparc/dev/fd.c
765
if ((fdc->sc_flags & FDC_82077) != 0) {
sys/arch/sparc/dev/fd.c
767
bus_space_write_1(t, h, fdc->sc_reg_dor, FDO_FRST | FDO_DS);
sys/arch/sparc/dev/fd.c
781
struct fdc_softc *fdc = device_private(parent);
sys/arch/sparc/dev/fd.c
804
fdc->sc_fd[drive] = fd;
sys/arch/sparc/dev/fd.c
806
fdc_wrfifo(fdc, NE7CMD_SPECIFY);
sys/arch/sparc/dev/fd.c
807
fdc_wrfifo(fdc, type->steprate);
sys/arch/sparc/dev/fd.c
809
fdc_wrfifo(fdc, 6 | NE7_SPECIFY_NODMA);
sys/arch/sparc/dev/fd.c
913
struct fdc_softc *fdc = device_private(device_parent(fd->sc_dv));
sys/arch/sparc/dev/fd.c
914
if (fdc->sc_state == DEVIDLE) {
sys/arch/sparc/dev/fd.c
916
fdcstart(fdc);
sys/arch/sparc/dev/fd.c
931
struct fdc_softc *fdc = device_private(device_parent(fd->sc_dv));
sys/arch/sparc/dev/fd.c
932
int active = fdc->sc_drives.tqh_first != 0;
sys/arch/sparc/dev/fd.c
936
TAILQ_INSERT_TAIL(&fdc->sc_drives, fd, sc_drivechain);
sys/arch/sparc/dev/fd.c
940
fdcstart(fdc);
sys/arch/sparc/dev/fd.c
946
struct fdc_softc *fdc = device_private(device_parent(fd->sc_dv));
sys/arch/sparc/dev/fd.c
957
TAILQ_REMOVE(&fdc->sc_drives, fd, sc_drivechain);
sys/arch/sparc/dev/fd.c
959
TAILQ_INSERT_TAIL(&fdc->sc_drives, fd, sc_drivechain);
sys/arch/sparc/dev/fd.c
969
fdc->sc_state = DEVIDLE;
sys/arch/sparc/dev/fd.c
973
fdc_reset(struct fdc_softc *fdc)
sys/arch/sparc/dev/fd.c
975
bus_space_tag_t t = fdc->sc_bustag;
sys/arch/sparc/dev/fd.c
976
bus_space_handle_t h = fdc->sc_handle;
sys/arch/sparc/dev/fd.c
978
if ((fdc->sc_flags & FDC_82077) != 0) {
sys/arch/sparc/dev/fd.c
979
bus_space_write_1(t, h, fdc->sc_reg_dor,
sys/arch/sparc/dev/fd.c
983
bus_space_write_1(t, h, fdc->sc_reg_drs, DRS_RESET);
sys/arch/sparc/dev/fd.c
985
bus_space_write_1(t, h, fdc->sc_reg_drs, 0);
sys/arch/sparc/dev/fd.c
987
if ((fdc->sc_flags & FDC_82077) != 0) {
sys/arch/sparc/dev/fd.c
988
bus_space_write_1(t, h, fdc->sc_reg_dor,
sys/arch/sparc/dev/fd.c
998
fd_set_motor(struct fdc_softc *fdc)
sys/arch/sparc64/dev/fdc.c
1090
struct fdc_softc *fdc = device_private(
sys/arch/sparc64/dev/fdc.c
1092
if (fdc->sc_state == DEVIDLE) {
sys/arch/sparc64/dev/fdc.c
1094
fdcstart(fdc);
sys/arch/sparc64/dev/fdc.c
1109
struct fdc_softc *fdc = device_private(device_parent(fd->sc_dev));
sys/arch/sparc64/dev/fdc.c
1110
int active = fdc->sc_drives.tqh_first != 0;
sys/arch/sparc64/dev/fdc.c
1114
TAILQ_INSERT_TAIL(&fdc->sc_drives, fd, sc_drivechain);
sys/arch/sparc64/dev/fdc.c
1118
fdcstart(fdc);
sys/arch/sparc64/dev/fdc.c
1124
struct fdc_softc *fdc = device_private(device_parent(fd->sc_dev));
sys/arch/sparc64/dev/fdc.c
1135
TAILQ_REMOVE(&fdc->sc_drives, fd, sc_drivechain);
sys/arch/sparc64/dev/fdc.c
1137
TAILQ_INSERT_TAIL(&fdc->sc_drives, fd, sc_drivechain);
sys/arch/sparc64/dev/fdc.c
1147
fdc->sc_state = DEVIDLE;
sys/arch/sparc64/dev/fdc.c
1151
fdc_reset(struct fdc_softc *fdc)
sys/arch/sparc64/dev/fdc.c
1153
bus_space_tag_t t = fdc->sc_bustag;
sys/arch/sparc64/dev/fdc.c
1154
bus_space_handle_t h = fdc->sc_handle;
sys/arch/sparc64/dev/fdc.c
1156
if ((fdc->sc_flags & FDC_82077) != 0) {
sys/arch/sparc64/dev/fdc.c
1157
bus_space_write_1(t, h, fdc->sc_reg_dor,
sys/arch/sparc64/dev/fdc.c
1161
bus_space_write_1(t, h, fdc->sc_reg_drs, DRS_RESET);
sys/arch/sparc64/dev/fdc.c
1163
bus_space_write_1(t, h, fdc->sc_reg_drs, 0);
sys/arch/sparc64/dev/fdc.c
1165
if ((fdc->sc_flags & FDC_82077) != 0) {
sys/arch/sparc64/dev/fdc.c
1166
bus_space_write_1(t, h, fdc->sc_reg_dor,
sys/arch/sparc64/dev/fdc.c
1176
fd_set_motor(struct fdc_softc *fdc)
sys/arch/sparc64/dev/fdc.c
1182
if ((fdc->sc_flags & FDC_82077) != 0) {
sys/arch/sparc64/dev/fdc.c
1184
if ((fd = fdc->sc_drives.tqh_first) != NULL)
sys/arch/sparc64/dev/fdc.c
1188
if ((fd = fdc->sc_fd[n]) && (fd->sc_flags & FD_MOTOR))
sys/arch/sparc64/dev/fdc.c
1190
bus_space_write_1(fdc->sc_bustag, fdc->sc_handle,
sys/arch/sparc64/dev/fdc.c
1191
fdc->sc_reg_dor, status);
sys/arch/sparc64/dev/fdc.c
1196
if ((fd = fdc->sc_fd[n]) != NULL &&
sys/arch/sparc64/dev/fdc.c
1223
struct fdc_softc *fdc = device_private(device_parent(fd->sc_dev));
sys/arch/sparc64/dev/fdc.c
1228
if ((fdc->sc_drives.tqh_first == fd) && (fdc->sc_state == MOTORWAIT))
sys/arch/sparc64/dev/fdc.c
1229
(void)fdcstate(fdc);
sys/arch/sparc64/dev/fdc.c
1239
fdcresult(struct fdc_softc *fdc)
sys/arch/sparc64/dev/fdc.c
1241
bus_space_tag_t t = fdc->sc_bustag;
sys/arch/sparc64/dev/fdc.c
1242
bus_space_handle_t h = fdc->sc_handle;
sys/arch/sparc64/dev/fdc.c
1246
uint8_t v = bus_space_read_1(t, h, fdc->sc_reg_msr);
sys/arch/sparc64/dev/fdc.c
1249
return fdc->sc_nstat = n;
sys/arch/sparc64/dev/fdc.c
1251
if (n >= sizeof(fdc->sc_status)) {
sys/arch/sparc64/dev/fdc.c
1255
fdc->sc_status[n++] =
sys/arch/sparc64/dev/fdc.c
1256
bus_space_read_1(t, h, fdc->sc_reg_fifo);
sys/arch/sparc64/dev/fdc.c
1262
return fdc->sc_nstat = -1;
sys/arch/sparc64/dev/fdc.c
1270
fdc_wrfifo(struct fdc_softc *fdc, uint8_t x)
sys/arch/sparc64/dev/fdc.c
1272
bus_space_tag_t t = fdc->sc_bustag;
sys/arch/sparc64/dev/fdc.c
1273
bus_space_handle_t h = fdc->sc_handle;
sys/arch/sparc64/dev/fdc.c
1277
uint8_t v = bus_space_read_1(t, h, fdc->sc_reg_msr);
sys/arch/sparc64/dev/fdc.c
1280
bus_space_write_1(t, h, fdc->sc_reg_fifo, x);
sys/arch/sparc64/dev/fdc.c
1289
fdc_diskchange(struct fdc_softc *fdc)
sys/arch/sparc64/dev/fdc.c
1293
if (CPU_ISSUN4M && (fdc->sc_flags & FDC_82077) != 0) {
sys/arch/sparc64/dev/fdc.c
1295
bus_space_tag_t t = fdc->sc_bustag;
sys/arch/sparc64/dev/fdc.c
1296
bus_space_handle_t h = fdc->sc_handle;
sys/arch/sparc64/dev/fdc.c
1297
uint8_t v = bus_space_read_1(t, h, fdc->sc_reg_dir);
sys/arch/sparc64/dev/fdc.c
1391
fdcstart(struct fdc_softc *fdc)
sys/arch/sparc64/dev/fdc.c
1397
if (fdc->sc_state != DEVIDLE) {
sys/arch/sparc64/dev/fdc.c
1402
(void)fdcstate(fdc);
sys/arch/sparc64/dev/fdc.c
1406
fdcpstatus(struct fdc_softc *fdc)
sys/arch/sparc64/dev/fdc.c
1410
snprintb(bits, sizeof(bits), NE7_ST0BITS, fdc->sc_status[0]);
sys/arch/sparc64/dev/fdc.c
1412
snprintb(bits, sizeof(bits), NE7_ST1BITS, fdc->sc_status[1]);
sys/arch/sparc64/dev/fdc.c
1414
snprintb(bits, sizeof(bits), NE7_ST2BITS, fdc->sc_status[2]);
sys/arch/sparc64/dev/fdc.c
1417
fdc->sc_status[3], fdc->sc_status[4], fdc->sc_status[5]);
sys/arch/sparc64/dev/fdc.c
1421
fdcstatus(struct fdc_softc *fdc, const char *s)
sys/arch/sparc64/dev/fdc.c
1423
struct fd_softc *fd = fdc->sc_drives.tqh_first;
sys/arch/sparc64/dev/fdc.c
1428
n = fdc->sc_nstat;
sys/arch/sparc64/dev/fdc.c
1435
if (n == 0 && (fdc->sc_flags & FDC_82077) != 0) {
sys/arch/sparc64/dev/fdc.c
1436
fdc_wrfifo(fdc, NE7CMD_SENSEI);
sys/arch/sparc64/dev/fdc.c
1437
(void)fdcresult(fdc);
sys/arch/sparc64/dev/fdc.c
1443
fd ? device_xname(fd->sc_dev) : "fdc", s, fdc->sc_state);
sys/arch/sparc64/dev/fdc.c
1450
snprintb(bits, sizeof(bits), NE7_ST0BITS, fdc->sc_status[0]);
sys/arch/sparc64/dev/fdc.c
1451
printf(" (st0 %s cyl %d)\n", bits, fdc->sc_status[1]);
sys/arch/sparc64/dev/fdc.c
1454
fdcpstatus(fdc);
sys/arch/sparc64/dev/fdc.c
1467
struct fdc_softc *fdc = arg;
sys/arch/sparc64/dev/fdc.c
1472
fd = fdc->sc_drives.tqh_first;
sys/arch/sparc64/dev/fdc.c
1474
aprint_error_dev(fdc->sc_dev, "timeout but no I/O pending: state %d, istatus=%d\n",
sys/arch/sparc64/dev/fdc.c
1475
fdc->sc_state, fdc->sc_istatus);
sys/arch/sparc64/dev/fdc.c
1476
fdc->sc_state = DEVIDLE;
sys/arch/sparc64/dev/fdc.c
1481
fdc->sc_state++;
sys/arch/sparc64/dev/fdc.c
1483
fdc->sc_state = DEVIDLE;
sys/arch/sparc64/dev/fdc.c
1485
(void)fdcstate(fdc);
sys/arch/sparc64/dev/fdc.c
1494
struct fdc_softc *fdc = arg;
sys/arch/sparc64/dev/fdc.c
1499
(void)fdcstate(fdc);
sys/arch/sparc64/dev/fdc.c
1514
struct fdc_softc *fdc = arg;
sys/arch/sparc64/dev/fdc.c
1515
bus_space_tag_t t = fdc->sc_bustag;
sys/arch/sparc64/dev/fdc.c
1516
bus_space_handle_t h = fdc->sc_handle;
sys/arch/sparc64/dev/fdc.c
1518
switch (fdc->sc_itask) {
sys/arch/sparc64/dev/fdc.c
1522
if (fdc_wrfifo(fdc, NE7CMD_SENSEI) != 0 || fdcresult(fdc) == -1)
sys/arch/sparc64/dev/fdc.c
1523
fdc->sc_istatus = FDC_ISTATUS_ERROR;
sys/arch/sparc64/dev/fdc.c
1525
fdc->sc_istatus = FDC_ISTATUS_DONE;
sys/arch/sparc64/dev/fdc.c
1526
softint_schedule(fdc->sc_sicookie);
sys/arch/sparc64/dev/fdc.c
1529
if (fdcresult(fdc) == -1)
sys/arch/sparc64/dev/fdc.c
1530
fdc->sc_istatus = FDC_ISTATUS_ERROR;
sys/arch/sparc64/dev/fdc.c
1532
fdc->sc_istatus = FDC_ISTATUS_DONE;
sys/arch/sparc64/dev/fdc.c
1533
softint_schedule(fdc->sc_sicookie);
sys/arch/sparc64/dev/fdc.c
1539
printf("fdc: stray hard interrupt: itask=%d\n", fdc->sc_itask);
sys/arch/sparc64/dev/fdc.c
1540
fdc->sc_istatus = FDC_ISTATUS_SPURIOUS;
sys/arch/sparc64/dev/fdc.c
1541
softint_schedule(fdc->sc_sicookie);
sys/arch/sparc64/dev/fdc.c
1551
msr = bus_space_read_1(t, h, fdc->sc_reg_msr);
sys/arch/sparc64/dev/fdc.c
1559
fdcresult(fdc);
sys/arch/sparc64/dev/fdc.c
1560
fdc->sc_istatus = FDC_ISTATUS_DONE;
sys/arch/sparc64/dev/fdc.c
1561
softint_schedule(fdc->sc_sicookie);
sys/arch/sparc64/dev/fdc.c
1565
if (fdc->sc_tc == 0)
sys/arch/sparc64/dev/fdc.c
1572
*fdc->sc_data =
sys/arch/sparc64/dev/fdc.c
1573
bus_space_read_1(t, h, fdc->sc_reg_fifo);
sys/arch/sparc64/dev/fdc.c
1575
bus_space_write_1(t, h, fdc->sc_reg_fifo,
sys/arch/sparc64/dev/fdc.c
1576
*fdc->sc_data);
sys/arch/sparc64/dev/fdc.c
1578
fdc->sc_data++;
sys/arch/sparc64/dev/fdc.c
1579
if (--fdc->sc_tc == 0) {
sys/arch/sparc64/dev/fdc.c
1590
struct fdc_softc *fdc = arg;
sys/arch/sparc64/dev/fdc.c
1592
if (fdc->sc_istatus == FDC_ISTATUS_NONE)
sys/arch/sparc64/dev/fdc.c
1596
switch (fdc->sc_istatus) {
sys/arch/sparc64/dev/fdc.c
1598
printf("fdc: ierror status: state %d\n", fdc->sc_state);
sys/arch/sparc64/dev/fdc.c
1601
printf("fdc: spurious interrupt: state %d\n", fdc->sc_state);
sys/arch/sparc64/dev/fdc.c
1605
fdcstate(fdc);
sys/arch/sparc64/dev/fdc.c
1610
fdcstate(struct fdc_softc *fdc)
sys/arch/sparc64/dev/fdc.c
1613
#define st0 fdc->sc_status[0]
sys/arch/sparc64/dev/fdc.c
1614
#define st1 fdc->sc_status[1]
sys/arch/sparc64/dev/fdc.c
1615
#define cyl fdc->sc_status[1]
sys/arch/sparc64/dev/fdc.c
1616
#define FDC_WRFIFO(fdc, c) do { \
sys/arch/sparc64/dev/fdc.c
1617
if (fdc_wrfifo(fdc, (c))) { \
sys/arch/sparc64/dev/fdc.c
1628
if (fdc->sc_istatus == FDC_ISTATUS_ERROR) {
sys/arch/sparc64/dev/fdc.c
1630
if (fdc->sc_state != RESETCOMPLETE &&
sys/arch/sparc64/dev/fdc.c
1631
fdc->sc_state != RECALWAIT &&
sys/arch/sparc64/dev/fdc.c
1632
fdc->sc_state != RECALCOMPLETE)
sys/arch/sparc64/dev/fdc.c
1633
fdc->sc_state = DORESET;
sys/arch/sparc64/dev/fdc.c
1637
fdc->sc_istatus = FDC_ISTATUS_NONE;
sys/arch/sparc64/dev/fdc.c
1638
fdc->sc_itask = FDC_ITASK_NONE;
sys/arch/sparc64/dev/fdc.c
1642
fd = fdc->sc_drives.tqh_first;
sys/arch/sparc64/dev/fdc.c
1644
fdc->sc_state = DEVIDLE;
sys/arch/sparc64/dev/fdc.c
1652
TAILQ_REMOVE(&fdc->sc_drives, fd, sc_drivechain);
sys/arch/sparc64/dev/fdc.c
1660
switch (fdc->sc_state) {
sys/arch/sparc64/dev/fdc.c
1662
fdc->sc_errors = 0;
sys/arch/sparc64/dev/fdc.c
1668
fdc->sc_state = MOTORWAIT;
sys/arch/sparc64/dev/fdc.c
1673
struct fd_softc *ofd = fdc->sc_fd[fd->sc_drive ^ 1];
sys/arch/sparc64/dev/fdc.c
1679
fd_set_motor(fdc);
sys/arch/sparc64/dev/fdc.c
1680
fdc->sc_state = MOTORWAIT;
sys/arch/sparc64/dev/fdc.c
1681
if ((fdc->sc_flags & FDC_NEEDMOTORWAIT) != 0) { /*XXX*/
sys/arch/sparc64/dev/fdc.c
1692
fd_set_motor(fdc);
sys/arch/sparc64/dev/fdc.c
1694
if (fdc_diskchange(fdc))
sys/arch/sparc64/dev/fdc.c
1700
if ((fdc->sc_flags & FDC_EIS) &&
sys/arch/sparc64/dev/fdc.c
1711
fdc->sc_state = SEEKWAIT;
sys/arch/sparc64/dev/fdc.c
1712
fdc->sc_nstat = 0;
sys/arch/sparc64/dev/fdc.c
1717
callout_reset(&fdc->sc_timo_ch, 4 * hz, fdctimeout, fdc);
sys/arch/sparc64/dev/fdc.c
1720
FDC_WRFIFO(fdc, NE7CMD_SPECIFY);
sys/arch/sparc64/dev/fdc.c
1721
FDC_WRFIFO(fdc, fd->sc_type->steprate);
sys/arch/sparc64/dev/fdc.c
1723
FDC_WRFIFO(fdc, 6 | NE7_SPECIFY_NODMA);
sys/arch/sparc64/dev/fdc.c
1725
fdc->sc_itask = FDC_ITASK_SENSEI;
sys/arch/sparc64/dev/fdc.c
1727
FDC_WRFIFO(fdc, NE7CMD_SEEK);
sys/arch/sparc64/dev/fdc.c
1728
FDC_WRFIFO(fdc, fd->sc_drive); /* drive number */
sys/arch/sparc64/dev/fdc.c
1729
FDC_WRFIFO(fdc, bp->b_cylinder * fd->sc_type->step);
sys/arch/sparc64/dev/fdc.c
1739
callout_reset(&fdc->sc_timo_ch, 4 * hz, fdctimeout, fdc);
sys/arch/sparc64/dev/fdc.c
1741
fdc->sc_nstat = 0;
sys/arch/sparc64/dev/fdc.c
1742
fdc->sc_state = DSKCHGWAIT;
sys/arch/sparc64/dev/fdc.c
1744
fdc->sc_itask = FDC_ITASK_SENSEI;
sys/arch/sparc64/dev/fdc.c
1746
FDC_WRFIFO(fdc, NE7CMD_SEEK);
sys/arch/sparc64/dev/fdc.c
1747
FDC_WRFIFO(fdc, fd->sc_drive); /* drive number */
sys/arch/sparc64/dev/fdc.c
1748
FDC_WRFIFO(fdc, 1 * fd->sc_type->step);
sys/arch/sparc64/dev/fdc.c
1752
callout_stop(&fdc->sc_timo_ch);
sys/arch/sparc64/dev/fdc.c
1754
if (fdc->sc_nstat != 2 || (st0 & 0xf8) != 0x20 ||
sys/arch/sparc64/dev/fdc.c
1756
fdcstatus(fdc, "dskchg seek failed");
sys/arch/sparc64/dev/fdc.c
1757
fdc->sc_state = DORESET;
sys/arch/sparc64/dev/fdc.c
1759
fdc->sc_state = DORECAL;
sys/arch/sparc64/dev/fdc.c
1761
if (fdc_diskchange(fdc)) {
sys/arch/sparc64/dev/fdc.c
1762
aprint_error_dev(fdc->sc_dev,
sys/arch/sparc64/dev/fdc.c
1764
fdc->sc_state = DORESET;
sys/arch/sparc64/dev/fdc.c
1797
fdc->sc_data = (char *)bp->b_data + fd->sc_skip;
sys/arch/sparc64/dev/fdc.c
1798
fdc->sc_tc = fd->sc_nbytes;
sys/arch/sparc64/dev/fdc.c
1800
bus_space_write_1(fdc->sc_bustag, fdc->sc_handle,
sys/arch/sparc64/dev/fdc.c
1801
fdc->sc_reg_drs, type->rate);
sys/arch/sparc64/dev/fdc.c
1810
fdc->sc_state = IOCOMPLETE;
sys/arch/sparc64/dev/fdc.c
1811
fdc->sc_itask = FDC_ITASK_DMA;
sys/arch/sparc64/dev/fdc.c
1812
fdc->sc_nstat = 0;
sys/arch/sparc64/dev/fdc.c
1817
callout_reset(&fdc->sc_timo_ch, 3 * hz, fdctimeout, fdc);
sys/arch/sparc64/dev/fdc.c
1821
FDC_WRFIFO(fdc, NE7CMD_FORMAT);
sys/arch/sparc64/dev/fdc.c
1822
FDC_WRFIFO(fdc, (head << 2) | fd->sc_drive);
sys/arch/sparc64/dev/fdc.c
1823
FDC_WRFIFO(fdc, finfo->fd_formb_secshift);
sys/arch/sparc64/dev/fdc.c
1824
FDC_WRFIFO(fdc, finfo->fd_formb_nsecs);
sys/arch/sparc64/dev/fdc.c
1825
FDC_WRFIFO(fdc, finfo->fd_formb_gaplen);
sys/arch/sparc64/dev/fdc.c
1826
FDC_WRFIFO(fdc, finfo->fd_formb_fillbyte);
sys/arch/sparc64/dev/fdc.c
1829
FDC_WRFIFO(fdc, NE7CMD_READ);
sys/arch/sparc64/dev/fdc.c
1831
FDC_WRFIFO(fdc, NE7CMD_WRITE);
sys/arch/sparc64/dev/fdc.c
1832
FDC_WRFIFO(fdc, (head << 2) | fd->sc_drive);
sys/arch/sparc64/dev/fdc.c
1833
FDC_WRFIFO(fdc, fd->sc_cylin); /*track*/
sys/arch/sparc64/dev/fdc.c
1834
FDC_WRFIFO(fdc, head);
sys/arch/sparc64/dev/fdc.c
1835
FDC_WRFIFO(fdc, sec + 1); /*sector+1*/
sys/arch/sparc64/dev/fdc.c
1836
FDC_WRFIFO(fdc, type->secsize); /*sector size*/
sys/arch/sparc64/dev/fdc.c
1837
FDC_WRFIFO(fdc, type->sectrac); /*secs/track*/
sys/arch/sparc64/dev/fdc.c
1838
FDC_WRFIFO(fdc, type->gap1); /*gap1 size*/
sys/arch/sparc64/dev/fdc.c
1839
FDC_WRFIFO(fdc, type->datalen); /*data length*/
sys/arch/sparc64/dev/fdc.c
1845
callout_stop(&fdc->sc_timo_ch);
sys/arch/sparc64/dev/fdc.c
1846
fdc->sc_state = SEEKCOMPLETE;
sys/arch/sparc64/dev/fdc.c
1847
if (fdc->sc_flags & FDC_NEEDHEADSETTLE) {
sys/arch/sparc64/dev/fdc.c
1849
callout_reset(&fdc->sc_intr_ch, hz / 50,
sys/arch/sparc64/dev/fdc.c
1850
fdcpseudointr, fdc);
sys/arch/sparc64/dev/fdc.c
1859
if (fdc->sc_nstat != 2 || (st0 & 0xf8) != 0x20 ||
sys/arch/sparc64/dev/fdc.c
1863
fdcstatus(fdc, "seek failed");
sys/arch/sparc64/dev/fdc.c
1865
fdcretry(fdc);
sys/arch/sparc64/dev/fdc.c
1877
fdc->sc_itask = FDC_ITASK_RESULT;
sys/arch/sparc64/dev/fdc.c
1878
fdc->sc_state = IOCLEANUPWAIT;
sys/arch/sparc64/dev/fdc.c
1879
fdc->sc_nstat = 0;
sys/arch/sparc64/dev/fdc.c
1881
callout_reset(&fdc->sc_timo_ch, hz / 10, fdctimeout, fdc);
sys/arch/sparc64/dev/fdc.c
1890
fdcstatus(fdc, "timeout");
sys/arch/sparc64/dev/fdc.c
1893
fdcretry(fdc);
sys/arch/sparc64/dev/fdc.c
1896
fdc->sc_state = DORESET;
sys/arch/sparc64/dev/fdc.c
1900
callout_stop(&fdc->sc_timo_ch);
sys/arch/sparc64/dev/fdc.c
1903
fdcretry(fdc);
sys/arch/sparc64/dev/fdc.c
1907
callout_stop(&fdc->sc_timo_ch);
sys/arch/sparc64/dev/fdc.c
1912
if (fdc->sc_nstat != 7 || st1 != 0 ||
sys/arch/sparc64/dev/fdc.c
1914
((st0 & 0xf8) != 0x20 || (fdc->sc_cfg & CFG_EIS) == 0))) {
sys/arch/sparc64/dev/fdc.c
1917
fdcstatus(fdc, bp->b_flags & B_READ ?
sys/arch/sparc64/dev/fdc.c
1921
fdc->sc_nstat, fdc->sc_tc);
sys/arch/sparc64/dev/fdc.c
1924
if (fdc->sc_nstat == 7 &&
sys/arch/sparc64/dev/fdc.c
1931
int thr = fdc->sc_cfg & CFG_THRHLD_MASK;
sys/arch/sparc64/dev/fdc.c
1934
fdc->sc_cfg &= ~CFG_THRHLD_MASK;
sys/arch/sparc64/dev/fdc.c
1935
fdc->sc_cfg |= (thr & CFG_THRHLD_MASK);
sys/arch/sparc64/dev/fdc.c
1941
fdconf(fdc);
sys/arch/sparc64/dev/fdc.c
1942
fdc->sc_overruns = 0;
sys/arch/sparc64/dev/fdc.c
1944
if (++fdc->sc_overruns < 3) {
sys/arch/sparc64/dev/fdc.c
1945
fdc->sc_state = DOIO;
sys/arch/sparc64/dev/fdc.c
1949
fdcretry(fdc);
sys/arch/sparc64/dev/fdc.c
1952
if (fdc->sc_errors) {
sys/arch/sparc64/dev/fdc.c
1957
fdc->sc_errors = 0;
sys/arch/sparc64/dev/fdc.c
1959
if (--fdc->sc_overruns < -20) {
sys/arch/sparc64/dev/fdc.c
1960
int thr = fdc->sc_cfg & CFG_THRHLD_MASK;
sys/arch/sparc64/dev/fdc.c
1963
fdc->sc_cfg &= ~CFG_THRHLD_MASK;
sys/arch/sparc64/dev/fdc.c
1964
fdc->sc_cfg |= (thr & CFG_THRHLD_MASK);
sys/arch/sparc64/dev/fdc.c
1970
fdconf(fdc);
sys/arch/sparc64/dev/fdc.c
1972
fdc->sc_overruns = 0;
sys/arch/sparc64/dev/fdc.c
1987
fd_set_motor(fdc);
sys/arch/sparc64/dev/fdc.c
1989
fdc->sc_nstat = 0;
sys/arch/sparc64/dev/fdc.c
1990
fdc->sc_itask = FDC_ITASK_SENSEI;
sys/arch/sparc64/dev/fdc.c
1991
fdc->sc_state = RESETCOMPLETE;
sys/arch/sparc64/dev/fdc.c
1992
callout_reset(&fdc->sc_timo_ch, hz / 2, fdctimeout, fdc);
sys/arch/sparc64/dev/fdc.c
1993
fdc_reset(fdc);
sys/arch/sparc64/dev/fdc.c
1997
callout_stop(&fdc->sc_timo_ch);
sys/arch/sparc64/dev/fdc.c
1998
fdconf(fdc);
sys/arch/sparc64/dev/fdc.c
2002
fdc->sc_state = RECALWAIT;
sys/arch/sparc64/dev/fdc.c
2003
fdc->sc_itask = FDC_ITASK_SENSEI;
sys/arch/sparc64/dev/fdc.c
2004
fdc->sc_nstat = 0;
sys/arch/sparc64/dev/fdc.c
2005
callout_reset(&fdc->sc_timo_ch, 5 * hz, fdctimeout, fdc);
sys/arch/sparc64/dev/fdc.c
2007
FDC_WRFIFO(fdc, NE7CMD_RECAL);
sys/arch/sparc64/dev/fdc.c
2008
FDC_WRFIFO(fdc, fd->sc_drive);
sys/arch/sparc64/dev/fdc.c
2012
callout_stop(&fdc->sc_timo_ch);
sys/arch/sparc64/dev/fdc.c
2013
fdc->sc_state = RECALCOMPLETE;
sys/arch/sparc64/dev/fdc.c
2014
if ((fdc->sc_flags & FDC_NEEDHEADSETTLE) != 0) {
sys/arch/sparc64/dev/fdc.c
2016
callout_reset(&fdc->sc_intr_ch, hz / 30,
sys/arch/sparc64/dev/fdc.c
2017
fdcpseudointr, fdc);
sys/arch/sparc64/dev/fdc.c
2023
if (fdc->sc_nstat != 2 || (st0 & 0xf8) != 0x20 || cyl != 0) {
sys/arch/sparc64/dev/fdc.c
2026
fdcstatus(fdc, "recalibrate failed");
sys/arch/sparc64/dev/fdc.c
2028
fdcretry(fdc);
sys/arch/sparc64/dev/fdc.c
2040
fdcstatus(fdc, "stray interrupt");
sys/arch/sparc64/dev/fdc.c
2052
callout_stop(&fdc->sc_timo_ch);
sys/arch/sparc64/dev/fdc.c
2053
fdcretry(fdc);
sys/arch/sparc64/dev/fdc.c
2054
fdc->sc_state = DORESET;
sys/arch/sparc64/dev/fdc.c
2063
fdcretry(struct fdc_softc *fdc)
sys/arch/sparc64/dev/fdc.c
2069
fd = fdc->sc_drives.tqh_first;
sys/arch/sparc64/dev/fdc.c
2072
fdc->sc_overruns = 0;
sys/arch/sparc64/dev/fdc.c
2076
switch (fdc->sc_errors) {
sys/arch/sparc64/dev/fdc.c
2078
if (fdc->sc_nstat == 7 &&
sys/arch/sparc64/dev/fdc.c
2079
(fdc->sc_status[0] & 0xd8) == 0x40 &&
sys/arch/sparc64/dev/fdc.c
2080
(fdc->sc_status[1] & 0x2) == 0x2) {
sys/arch/sparc64/dev/fdc.c
2081
aprint_error_dev(fdc->sc_dev, "read-only medium\n");
sys/arch/sparc64/dev/fdc.c
2086
fdc->sc_state =
sys/arch/sparc64/dev/fdc.c
2087
(fdc->sc_flags & FDC_EIS) ? DOIO : DOSEEK;
sys/arch/sparc64/dev/fdc.c
2092
fdc->sc_state = DORECAL;
sys/arch/sparc64/dev/fdc.c
2096
if (fdc->sc_nstat == 7 &&
sys/arch/sparc64/dev/fdc.c
2097
fdc->sc_status[0] == 0 &&
sys/arch/sparc64/dev/fdc.c
2098
fdc->sc_status[1] == 0 &&
sys/arch/sparc64/dev/fdc.c
2099
fdc->sc_status[2] == 0) {
sys/arch/sparc64/dev/fdc.c
2106
aprint_error_dev(fdc->sc_dev, "no medium?\n");
sys/arch/sparc64/dev/fdc.c
2112
fdc->sc_state = DORESET;
sys/arch/sparc64/dev/fdc.c
2122
fdcstatus(fdc, "controller status");
sys/arch/sparc64/dev/fdc.c
2129
fdc->sc_errors++;
sys/arch/sparc64/dev/fdc.c
2136
struct fdc_softc *fdc;
sys/arch/sparc64/dev/fdc.c
2150
fdc = device_private(device_parent(fd->sc_dev));
sys/arch/sparc64/dev/fdc.c
2199
if (fdc->sc_flags & FDC_NOEJECT)
sys/arch/sparc64/dev/fdc.c
2328
fdc_wrfifo(fdc, NE7CMD_DUMPREG);
sys/arch/sparc64/dev/fdc.c
2329
fdcresult(fdc);
sys/arch/sparc64/dev/fdc.c
2330
printf("fdc: dumpreg(%d regs): <", fdc->sc_nstat);
sys/arch/sparc64/dev/fdc.c
2331
for (i = 0; i < fdc->sc_nstat; i++)
sys/arch/sparc64/dev/fdc.c
2332
printf(" 0x%x", fdc->sc_status[i]);
sys/arch/sparc64/dev/fdc.c
2337
fdc->sc_cfg &= ~CFG_THRHLD_MASK;
sys/arch/sparc64/dev/fdc.c
2338
fdc->sc_cfg |= (*(int *)addr & CFG_THRHLD_MASK);
sys/arch/sparc64/dev/fdc.c
2339
fdconf(fdc);
sys/arch/sparc64/dev/fdc.c
2343
fdc_wrfifo(fdc, NE7CMD_SENSEI);
sys/arch/sparc64/dev/fdc.c
2344
fdcresult(fdc);
sys/arch/sparc64/dev/fdc.c
2345
printf("fdc: sensei(%d regs): <", fdc->sc_nstat);
sys/arch/sparc64/dev/fdc.c
2346
for (i=0; i< fdc->sc_nstat; i++)
sys/arch/sparc64/dev/fdc.c
2347
printf(" 0x%x", fdc->sc_status[i]);
sys/arch/sparc64/dev/fdc.c
2490
struct fdc_softc *fdc = device_private(device_parent(fd->sc_dev));
sys/arch/sparc64/dev/fdc.c
2499
if (CPU_ISSUN4M && (fdc->sc_flags & FDC_82077) != 0) {
sys/arch/sparc64/dev/fdc.c
2501
bus_space_tag_t t = fdc->sc_bustag;
sys/arch/sparc64/dev/fdc.c
2502
bus_space_handle_t h = fdc->sc_handle;
sys/arch/sparc64/dev/fdc.c
2505
bus_space_write_1(t, h, fdc->sc_reg_dor, dor | FDO_EJ);
sys/arch/sparc64/dev/fdc.c
2507
bus_space_write_1(t, h, fdc->sc_reg_dor, FDO_FRST | FDO_DS);
sys/arch/sparc64/dev/fdc.c
484
establish_chip_type(struct fdc_softc *fdc,
sys/arch/sparc64/dev/fdc.c
531
fdc->sc_flags |= FDC_82077;
sys/arch/sparc64/dev/fdc.c
550
fdprint(void *aux, const char *fdc)
sys/arch/sparc64/dev/fdc.c
554
if (!fdc)
sys/arch/sparc64/dev/fdc.c
564
fdconf(struct fdc_softc *fdc)
sys/arch/sparc64/dev/fdc.c
568
if (fdc_wrfifo(fdc, NE7CMD_DUMPREG) || fdcresult(fdc) != 10)
sys/arch/sparc64/dev/fdc.c
575
if ((vroom = fdc->sc_status[7]) == 0)
sys/arch/sparc64/dev/fdc.c
579
if (fdc_wrfifo(fdc, NE7CMD_CFG) != 0)
sys/arch/sparc64/dev/fdc.c
581
if (fdc_wrfifo(fdc, vroom) != 0)
sys/arch/sparc64/dev/fdc.c
583
if (fdc_wrfifo(fdc, fdc->sc_cfg) != 0)
sys/arch/sparc64/dev/fdc.c
585
if (fdc_wrfifo(fdc, 0) != 0) /* PRETRK */
sys/arch/sparc64/dev/fdc.c
589
if ((fdc->sc_flags & FDC_82077) != 0) {
sys/arch/sparc64/dev/fdc.c
591
if (fdc_wrfifo(fdc, NE7CMD_LOCK | CFG_LOCK) != 0 ||
sys/arch/sparc64/dev/fdc.c
592
fdcresult(fdc) != 1) {
sys/arch/sparc64/dev/fdc.c
602
if (fdc_wrfifo(fdc, NE7CMD_VERSION) == 0 &&
sys/arch/sparc64/dev/fdc.c
603
fdcresult(fdc) == 1 && fdc->sc_status[0] == 0x90) {
sys/arch/sparc64/dev/fdc.c
614
struct fdc_softc *fdc = device_private(self);
sys/arch/sparc64/dev/fdc.c
617
fdc->sc_dev = self;
sys/arch/sparc64/dev/fdc.c
618
fdc->sc_bustag = ma->ma_bustag;
sys/arch/sparc64/dev/fdc.c
625
&fdc->sc_handle) != 0) {
sys/arch/sparc64/dev/fdc.c
630
establish_chip_type(fdc,
sys/arch/sparc64/dev/fdc.c
634
fdc->sc_handle);
sys/arch/sparc64/dev/fdc.c
636
if (fdcattach(fdc, ma->ma_pri) != 0)
sys/arch/sparc64/dev/fdc.c
637
bus_space_unmap(ma->ma_bustag, fdc->sc_handle, ma->ma_size);
sys/arch/sparc64/dev/fdc.c
643
struct fdc_softc *fdc = device_private(self);
sys/arch/sparc64/dev/fdc.c
652
fdc->sc_dev = self;
sys/arch/sparc64/dev/fdc.c
653
fdc->sc_bustag = sa->sa_bustag;
sys/arch/sparc64/dev/fdc.c
657
BUS_SPACE_MAP_LINEAR, &fdc->sc_handle) != 0) {
sys/arch/sparc64/dev/fdc.c
662
establish_chip_type(fdc,
sys/arch/sparc64/dev/fdc.c
666
fdc->sc_handle);
sys/arch/sparc64/dev/fdc.c
673
if (fdcattach(fdc, sa->sa_pri) != 0)
sys/arch/sparc64/dev/fdc.c
674
bus_space_unmap(sa->sa_bustag, fdc->sc_handle, sa->sa_size);
sys/arch/sparc64/dev/fdc.c
682
struct fdc_softc *fdc = device_private(self);
sys/arch/sparc64/dev/fdc.c
695
fdc->sc_dev = self;
sys/arch/sparc64/dev/fdc.c
696
fdc->sc_bustag = sa->sa_bustag;
sys/arch/sparc64/dev/fdc.c
699
sa->sa_size, 0, &fdc->sc_handle) != 0) {
sys/arch/sparc64/dev/fdc.c
704
establish_chip_type(fdc,
sys/arch/sparc64/dev/fdc.c
708
fdc->sc_handle);
sys/arch/sparc64/dev/fdc.c
716
fdc->sc_flags |= FDC_NOEJECT;
sys/arch/sparc64/dev/fdc.c
719
if (fdcattach(fdc, sa->sa_pri) != 0)
sys/arch/sparc64/dev/fdc.c
720
bus_space_unmap(sa->sa_bustag, fdc->sc_handle, sa->sa_size);
sys/arch/sparc64/dev/fdc.c
726
struct fdc_softc *fdc = device_private(self);
sys/arch/sparc64/dev/fdc.c
741
fdc->sc_dev = self;
sys/arch/sparc64/dev/fdc.c
742
fdc->sc_bustag = ea->ea_bustag;
sys/arch/sparc64/dev/fdc.c
746
ea->ea_vaddr[0], &fdc->sc_handle);
sys/arch/sparc64/dev/fdc.c
748
} else if (bus_space_map(fdc->sc_bustag,
sys/arch/sparc64/dev/fdc.c
750
ea->ea_reg[0].size, 0, &fdc->sc_handle) == 0) {
sys/arch/sparc64/dev/fdc.c
757
establish_chip_type(fdc,
sys/arch/sparc64/dev/fdc.c
758
fdc->sc_bustag,
sys/arch/sparc64/dev/fdc.c
762
fdc->sc_handle);
sys/arch/sparc64/dev/fdc.c
764
fdc->sc_flags |= FDC_EBUS;
sys/arch/sparc64/dev/fdc.c
767
fdc->sc_flags |= FDC_NOEJECT;
sys/arch/sparc64/dev/fdc.c
769
if (fdcattach(fdc, ea->ea_intr[0]) != 0)
sys/arch/sparc64/dev/fdc.c
771
bus_space_unmap(ea->ea_bustag, fdc->sc_handle,
sys/arch/sparc64/dev/fdc.c
777
fdcattach(struct fdc_softc *fdc, int pri)
sys/arch/sparc64/dev/fdc.c
783
callout_init(&fdc->sc_timo_ch, 0);
sys/arch/sparc64/dev/fdc.c
784
callout_init(&fdc->sc_intr_ch, 0);
sys/arch/sparc64/dev/fdc.c
786
fdc->sc_state = DEVIDLE;
sys/arch/sparc64/dev/fdc.c
787
fdc->sc_itask = FDC_ITASK_NONE;
sys/arch/sparc64/dev/fdc.c
788
fdc->sc_istatus = FDC_ISTATUS_NONE;
sys/arch/sparc64/dev/fdc.c
789
fdc->sc_flags |= FDC_EIS;
sys/arch/sparc64/dev/fdc.c
790
TAILQ_INIT(&fdc->sc_drives);
sys/arch/sparc64/dev/fdc.c
792
if ((fdc->sc_flags & FDC_82077) != 0) {
sys/arch/sparc64/dev/fdc.c
793
fdc->sc_reg_msr = FDREG77_MSR;
sys/arch/sparc64/dev/fdc.c
794
fdc->sc_reg_fifo = FDREG77_FIFO;
sys/arch/sparc64/dev/fdc.c
795
fdc->sc_reg_dor = FDREG77_DOR;
sys/arch/sparc64/dev/fdc.c
796
fdc->sc_reg_dir = FDREG77_DIR;
sys/arch/sparc64/dev/fdc.c
798
fdc->sc_flags |= FDC_NEEDMOTORWAIT;
sys/arch/sparc64/dev/fdc.c
800
fdc->sc_reg_msr = FDREG72_MSR;
sys/arch/sparc64/dev/fdc.c
801
fdc->sc_reg_fifo = FDREG72_FIFO;
sys/arch/sparc64/dev/fdc.c
802
fdc->sc_reg_dor = 0;
sys/arch/sparc64/dev/fdc.c
810
fdc->sc_cfg = CFG_EIS|/*CFG_EFIFO|*/CFG_POLL|(8 & CFG_THRHLD_MASK);
sys/arch/sparc64/dev/fdc.c
811
if (fdconf(fdc) != 0) {
sys/arch/sparc64/dev/fdc.c
816
fdc->sc_sicookie = softint_establish(SOFTINT_BIO, fdcswintr, fdc);
sys/arch/sparc64/dev/fdc.c
817
if (fdc->sc_sicookie == NULL) {
sys/arch/sparc64/dev/fdc.c
819
aprint_error_dev(fdc->sc_dev,
sys/arch/sparc64/dev/fdc.c
821
callout_stop(&fdc->sc_timo_ch);
sys/arch/sparc64/dev/fdc.c
822
callout_stop(&fdc->sc_intr_ch);
sys/arch/sparc64/dev/fdc.c
829
if (fdc->sc_flags & FDC_NOEJECT)
sys/arch/sparc64/dev/fdc.c
835
fdciop = &fdc->sc_io;
sys/arch/sparc64/dev/fdc.c
836
if (bus_intr_establish2(fdc->sc_bustag, pri, 0,
sys/arch/sparc64/dev/fdc.c
837
fdc_c_hwintr, fdc, fdchwintr) == NULL) {
sys/arch/sparc64/dev/fdc.c
839
if (bus_intr_establish(fdc->sc_bustag, pri, IPL_BIO,
sys/arch/sparc64/dev/fdc.c
840
fdc_c_hwintr, fdc) == NULL) {
sys/arch/sparc64/dev/fdc.c
843
aprint_error_dev(fdc->sc_dev,
sys/arch/sparc64/dev/fdc.c
845
callout_stop(&fdc->sc_timo_ch);
sys/arch/sparc64/dev/fdc.c
846
callout_stop(&fdc->sc_intr_ch);
sys/arch/sparc64/dev/fdc.c
847
softint_disestablish(fdc->sc_sicookie);
sys/arch/sparc64/dev/fdc.c
851
evcnt_attach_dynamic(&fdc->sc_intrcnt, EVCNT_TYPE_INTR, NULL,
sys/arch/sparc64/dev/fdc.c
852
device_xname(fdc->sc_dev), "intr");
sys/arch/sparc64/dev/fdc.c
859
if (config_found(fdc->sc_dev, (void *)&fa, fdprint,
sys/arch/sparc64/dev/fdc.c
875
struct fdc_softc *fdc = device_private(parent);
sys/arch/sparc64/dev/fdc.c
876
bus_space_tag_t t = fdc->sc_bustag;
sys/arch/sparc64/dev/fdc.c
877
bus_space_handle_t h = fdc->sc_handle;
sys/arch/sparc64/dev/fdc.c
886
if ((fdc->sc_flags & FDC_82077) != 0) {
sys/arch/sparc64/dev/fdc.c
888
bus_space_write_1(t, h, fdc->sc_reg_dor,
sys/arch/sparc64/dev/fdc.c
897
fdc->sc_nstat = 0;
sys/arch/sparc64/dev/fdc.c
898
fdc_wrfifo(fdc, NE7CMD_RECAL);
sys/arch/sparc64/dev/fdc.c
899
fdc_wrfifo(fdc, drive);
sys/arch/sparc64/dev/fdc.c
906
v = bus_space_read_1(t, h, fdc->sc_reg_msr);
sys/arch/sparc64/dev/fdc.c
910
if (fdc_wrfifo(fdc, NE7CMD_SENSEI))
sys/arch/sparc64/dev/fdc.c
912
if (fdcresult(fdc) == 1 && fdc->sc_status[0] == 0x80)
sys/arch/sparc64/dev/fdc.c
922
n = fdc->sc_nstat;
sys/arch/sparc64/dev/fdc.c
928
printf(" 0x%x", fdc->sc_status[i]);
sys/arch/sparc64/dev/fdc.c
932
ok = (n == 2 && (fdc->sc_status[0] & 0xf8) == 0x20) ? 1 : 0;
sys/arch/sparc64/dev/fdc.c
935
if ((fdc->sc_flags & FDC_82077) != 0) {
sys/arch/sparc64/dev/fdc.c
937
bus_space_write_1(t, h, fdc->sc_reg_dor, FDO_FRST | FDO_DS);
sys/arch/sparc64/dev/fdc.c
953
struct fdc_softc *fdc = device_private(parent);
sys/arch/sparc64/dev/fdc.c
975
fdc->sc_fd[drive] = fd;
sys/arch/sparc64/dev/fdc.c
977
fdc_wrfifo(fdc, NE7CMD_SPECIFY);
sys/arch/sparc64/dev/fdc.c
978
fdc_wrfifo(fdc, type->steprate);
sys/arch/sparc64/dev/fdc.c
980
fdc_wrfifo(fdc, 6 | NE7_SPECIFY_NODMA);
sys/arch/sun3/dev/fd.c
1012
struct fdc_softc *fdc = device_private(device_parent(dv));
sys/arch/sun3/dev/fd.c
1018
if (n == 0 && (fdc->sc_flags & FDC_82077)) {
sys/arch/sun3/dev/fd.c
1019
out_fdc(fdc, NE7CMD_SENSEI);
sys/arch/sun3/dev/fd.c
1020
(void)fdcresult(fdc);
sys/arch/sun3/dev/fd.c
1026
n = fdc->sc_nstat;
sys/arch/sun3/dev/fd.c
1028
printf("%s: %s: state %d", device_xname(dv), s, fdc->sc_state);
sys/arch/sun3/dev/fd.c
1030
fdcpstatus(n, fdc);
sys/arch/sun3/dev/fd.c
1036
struct fdc_softc *fdc = arg;
sys/arch/sun3/dev/fd.c
1037
struct fd_softc *fd = TAILQ_FIRST(&fdc->sc_drives);
sys/arch/sun3/dev/fd.c
1044
fdc->sc_state++;
sys/arch/sun3/dev/fd.c
1046
fdc->sc_state = DEVIDLE;
sys/arch/sun3/dev/fd.c
1048
(void)fdcstate(fdc);
sys/arch/sun3/dev/fd.c
1055
struct fdc_softc *fdc = arg;
sys/arch/sun3/dev/fd.c
1060
(void)fdcstate(fdc);
sys/arch/sun3/dev/fd.c
1072
struct fdc_softc *fdc = arg;
sys/arch/sun3/dev/fd.c
1077
switch (fdc->sc_istate) {
sys/arch/sun3/dev/fd.c
1081
out_fdc(fdc, NE7CMD_SENSEI);
sys/arch/sun3/dev/fd.c
1082
fdcresult(fdc);
sys/arch/sun3/dev/fd.c
1083
fdc->sc_istate = ISTATE_DONE;
sys/arch/sun3/dev/fd.c
1090
fdc->sc_fcr &= ~(FCR_DSEL(0)); /* Does this help? */
sys/arch/sun3/dev/fd.c
1091
fdc->sc_istate = ISTATE_SPURIOUS;
sys/arch/sun3/dev/fd.c
1099
msr = *fdc->sc_reg_msr;
sys/arch/sun3/dev/fd.c
1106
fdcresult(fdc);
sys/arch/sun3/dev/fd.c
1107
fdc->sc_istate = ISTATE_DONE;
sys/arch/sun3/dev/fd.c
1112
fdc->sc_tc);
sys/arch/sun3/dev/fd.c
1118
*fdc->sc_data++ = *fdc->sc_reg_fifo;
sys/arch/sun3/dev/fd.c
1120
*fdc->sc_reg_fifo = *fdc->sc_data++;
sys/arch/sun3/dev/fd.c
1122
if (--fdc->sc_tc == 0) {
sys/arch/sun3/dev/fd.c
1123
fdc->sc_fcr |= FCR_TC;
sys/arch/sun3/dev/fd.c
1126
fdc->sc_fcr &= ~FCR_TC;
sys/arch/sun3/dev/fd.c
1137
struct fdc_softc *fdc = arg;
sys/arch/sun3/dev/fd.c
1140
if (fdc->sc_istate != ISTATE_DONE)
sys/arch/sun3/dev/fd.c
1143
fdc->sc_istate = ISTATE_IDLE;
sys/arch/sun3/dev/fd.c
1145
fdcstate(fdc);
sys/arch/sun3/dev/fd.c
1150
fdcstate(struct fdc_softc *fdc)
sys/arch/sun3/dev/fd.c
1152
#define st0 fdc->sc_status[0]
sys/arch/sun3/dev/fd.c
1153
#define st1 fdc->sc_status[1]
sys/arch/sun3/dev/fd.c
1154
#define cyl fdc->sc_status[1]
sys/arch/sun3/dev/fd.c
1155
#define OUT_FDC(fdc, c, s) \
sys/arch/sun3/dev/fd.c
1157
if (out_fdc(fdc, (c))) { \
sys/arch/sun3/dev/fd.c
1158
(fdc)->sc_state = (s); \
sys/arch/sun3/dev/fd.c
1170
if (fdc->sc_istate != ISTATE_IDLE) {
sys/arch/sun3/dev/fd.c
1173
fdc->sc_state, fdc->sc_istate);
sys/arch/sun3/dev/fd.c
1174
fdc->sc_istate = ISTATE_IDLE;
sys/arch/sun3/dev/fd.c
1175
if (fdc->sc_state == RESETCOMPLETE ||
sys/arch/sun3/dev/fd.c
1176
fdc->sc_state == RESETTIMEDOUT) {
sys/arch/sun3/dev/fd.c
1185
fd = TAILQ_FIRST(&fdc->sc_drives);
sys/arch/sun3/dev/fd.c
1187
fdc->sc_state = DEVIDLE;
sys/arch/sun3/dev/fd.c
1195
TAILQ_REMOVE(&fdc->sc_drives, fd, sc_drivechain);
sys/arch/sun3/dev/fd.c
1203
switch (fdc->sc_state) {
sys/arch/sun3/dev/fd.c
1205
fdc->sc_errors = 0;
sys/arch/sun3/dev/fd.c
1211
fdc->sc_state = MOTORWAIT;
sys/arch/sun3/dev/fd.c
1216
struct fd_softc *ofd = fdc->sc_fd[fd->sc_drive ^ 1];
sys/arch/sun3/dev/fd.c
1222
fd_set_motor(fdc);
sys/arch/sun3/dev/fd.c
1223
fdc->sc_state = MOTORWAIT;
sys/arch/sun3/dev/fd.c
1224
if (fdc->sc_flags & FDC_82077) { /* XXX */
sys/arch/sun3/dev/fd.c
1235
fd_set_motor(fdc);
sys/arch/sun3/dev/fd.c
1240
if ((fdc->sc_flags & FDC_EIS) &&
sys/arch/sun3/dev/fd.c
1251
OUT_FDC(fdc, NE7CMD_SPECIFY, SEEKTIMEDOUT);
sys/arch/sun3/dev/fd.c
1252
OUT_FDC(fdc, fd->sc_type->steprate, SEEKTIMEDOUT);
sys/arch/sun3/dev/fd.c
1253
OUT_FDC(fdc, 6|1, SEEKTIMEDOUT); /* XXX head load time == 6ms */
sys/arch/sun3/dev/fd.c
1255
fdc->sc_istate = ISTATE_SENSEI;
sys/arch/sun3/dev/fd.c
1257
OUT_FDC(fdc, NE7CMD_SEEK, SEEKTIMEDOUT);
sys/arch/sun3/dev/fd.c
1258
OUT_FDC(fdc, fd->sc_drive, SEEKTIMEDOUT); /* drive number */
sys/arch/sun3/dev/fd.c
1259
OUT_FDC(fdc, bp->b_cylinder * fd->sc_type->step, SEEKTIMEDOUT);
sys/arch/sun3/dev/fd.c
1262
fdc->sc_state = SEEKWAIT;
sys/arch/sun3/dev/fd.c
1263
fdc->sc_nstat = 0;
sys/arch/sun3/dev/fd.c
1268
callout_reset(&fdc->sc_timo_ch, 4 * hz, fdctimeout, fdc);
sys/arch/sun3/dev/fd.c
1275
if (fdc->sc_reg_dir & FDI_DCHG) {
sys/arch/sun3/dev/fd.c
1304
device_xname(fdc->sc_dev), block,
sys/arch/sun3/dev/fd.c
1315
fdc->sc_data = (char *)bp->b_data + fd->sc_skip;
sys/arch/sun3/dev/fd.c
1316
fdc->sc_tc = fd->sc_nbytes;
sys/arch/sun3/dev/fd.c
1318
*fdc->sc_reg_drs = type->rate;
sys/arch/sun3/dev/fd.c
1326
fdc->sc_state = IOCOMPLETE;
sys/arch/sun3/dev/fd.c
1327
fdc->sc_istate = ISTATE_DMA;
sys/arch/sun3/dev/fd.c
1328
fdc->sc_nstat = 0;
sys/arch/sun3/dev/fd.c
1331
OUT_FDC(fdc, NE7CMD_FORMAT, IOTIMEDOUT);
sys/arch/sun3/dev/fd.c
1332
OUT_FDC(fdc, (head << 2) | fd->sc_drive, IOTIMEDOUT);
sys/arch/sun3/dev/fd.c
1333
OUT_FDC(fdc, finfo->fd_formb_secshift, IOTIMEDOUT);
sys/arch/sun3/dev/fd.c
1334
OUT_FDC(fdc, finfo->fd_formb_nsecs, IOTIMEDOUT);
sys/arch/sun3/dev/fd.c
1335
OUT_FDC(fdc, finfo->fd_formb_gaplen, IOTIMEDOUT);
sys/arch/sun3/dev/fd.c
1336
OUT_FDC(fdc, finfo->fd_formb_fillbyte, IOTIMEDOUT);
sys/arch/sun3/dev/fd.c
1339
OUT_FDC(fdc, NE7CMD_READ, IOTIMEDOUT);
sys/arch/sun3/dev/fd.c
1341
OUT_FDC(fdc, NE7CMD_WRITE, IOTIMEDOUT);
sys/arch/sun3/dev/fd.c
1342
OUT_FDC(fdc, (head << 2) | fd->sc_drive, IOTIMEDOUT);
sys/arch/sun3/dev/fd.c
1343
OUT_FDC(fdc, fd->sc_cylin, IOTIMEDOUT); /*track*/
sys/arch/sun3/dev/fd.c
1344
OUT_FDC(fdc, head, IOTIMEDOUT);
sys/arch/sun3/dev/fd.c
1345
OUT_FDC(fdc, sec + 1, IOTIMEDOUT); /*sector+1*/
sys/arch/sun3/dev/fd.c
1346
OUT_FDC(fdc, type->secsize, IOTIMEDOUT);/*sector size*/
sys/arch/sun3/dev/fd.c
1347
OUT_FDC(fdc, type->sectrac, IOTIMEDOUT);/*secs/track*/
sys/arch/sun3/dev/fd.c
1348
OUT_FDC(fdc, type->gap1, IOTIMEDOUT); /*gap1 size*/
sys/arch/sun3/dev/fd.c
1349
OUT_FDC(fdc, type->datalen, IOTIMEDOUT);/*data length*/
sys/arch/sun3/dev/fd.c
1355
callout_reset(&fdc->sc_timo_ch, 2 * hz, fdctimeout, fdc);
sys/arch/sun3/dev/fd.c
1359
callout_stop(&fdc->sc_timo_ch);
sys/arch/sun3/dev/fd.c
1360
fdc->sc_state = SEEKCOMPLETE;
sys/arch/sun3/dev/fd.c
1361
if (fdc->sc_flags & FDC_NEEDHEADSETTLE) {
sys/arch/sun3/dev/fd.c
1363
callout_reset(&fdc->sc_intr_ch, hz / 50,
sys/arch/sun3/dev/fd.c
1364
fdcpseudointr, fdc);
sys/arch/sun3/dev/fd.c
1373
if (fdc->sc_nstat != 2 || (st0 & 0xf8) != 0x20 ||
sys/arch/sun3/dev/fd.c
1379
fdcretry(fdc);
sys/arch/sun3/dev/fd.c
1386
fdc->sc_fcr |= FCR_TC;
sys/arch/sun3/dev/fd.c
1389
fdc->sc_fcr &= ~FCR_TC;
sys/arch/sun3/dev/fd.c
1391
(void)fdcresult(fdc);
sys/arch/sun3/dev/fd.c
1396
fdcretry(fdc);
sys/arch/sun3/dev/fd.c
1400
callout_stop(&fdc->sc_timo_ch);
sys/arch/sun3/dev/fd.c
1405
if (fdc->sc_nstat != 7 || (st0 & 0xf8) != 0 || st1 != 0) {
sys/arch/sun3/dev/fd.c
1413
fdc->sc_tc);
sys/arch/sun3/dev/fd.c
1416
if (fdc->sc_nstat == 7 &&
sys/arch/sun3/dev/fd.c
1423
int thr = fdc->sc_cfg & CFG_THRHLD_MASK;
sys/arch/sun3/dev/fd.c
1426
fdc->sc_cfg &= ~CFG_THRHLD_MASK;
sys/arch/sun3/dev/fd.c
1427
fdc->sc_cfg |= (thr & CFG_THRHLD_MASK);
sys/arch/sun3/dev/fd.c
1433
fdconf(fdc);
sys/arch/sun3/dev/fd.c
1434
fdc->sc_overruns = 0;
sys/arch/sun3/dev/fd.c
1436
if (++fdc->sc_overruns < 3) {
sys/arch/sun3/dev/fd.c
1437
fdc->sc_state = DOIO;
sys/arch/sun3/dev/fd.c
1441
fdcretry(fdc);
sys/arch/sun3/dev/fd.c
1444
if (fdc->sc_errors) {
sys/arch/sun3/dev/fd.c
1448
fdc->sc_errors = 0;
sys/arch/sun3/dev/fd.c
1450
if (--fdc->sc_overruns < -20) {
sys/arch/sun3/dev/fd.c
1451
int thr = fdc->sc_cfg & CFG_THRHLD_MASK;
sys/arch/sun3/dev/fd.c
1454
fdc->sc_cfg &= ~CFG_THRHLD_MASK;
sys/arch/sun3/dev/fd.c
1455
fdc->sc_cfg |= (thr & CFG_THRHLD_MASK);
sys/arch/sun3/dev/fd.c
1461
fdconf(fdc);
sys/arch/sun3/dev/fd.c
1463
fdc->sc_overruns = 0;
sys/arch/sun3/dev/fd.c
1479
fd_set_motor(fdc);
sys/arch/sun3/dev/fd.c
1481
fdc_reset(fdc);
sys/arch/sun3/dev/fd.c
1482
fdc->sc_nstat = 0;
sys/arch/sun3/dev/fd.c
1483
fdc->sc_istate = ISTATE_SENSEI;
sys/arch/sun3/dev/fd.c
1484
fdc->sc_state = RESETCOMPLETE;
sys/arch/sun3/dev/fd.c
1485
callout_reset(&fdc->sc_timo_ch, hz / 2, fdctimeout, fdc);
sys/arch/sun3/dev/fd.c
1489
callout_stop(&fdc->sc_timo_ch);
sys/arch/sun3/dev/fd.c
1490
fdconf(fdc);
sys/arch/sun3/dev/fd.c
1494
fdc->sc_state = RECALWAIT;
sys/arch/sun3/dev/fd.c
1495
fdc->sc_istate = ISTATE_SENSEI;
sys/arch/sun3/dev/fd.c
1496
fdc->sc_nstat = 0;
sys/arch/sun3/dev/fd.c
1498
OUT_FDC(fdc, NE7CMD_RECAL, RECALTIMEDOUT);
sys/arch/sun3/dev/fd.c
1499
OUT_FDC(fdc, fd->sc_drive, RECALTIMEDOUT);
sys/arch/sun3/dev/fd.c
1500
callout_reset(&fdc->sc_timo_ch, 5 * hz, fdctimeout, fdc);
sys/arch/sun3/dev/fd.c
1504
callout_stop(&fdc->sc_timo_ch);
sys/arch/sun3/dev/fd.c
1505
fdc->sc_state = RECALCOMPLETE;
sys/arch/sun3/dev/fd.c
1506
if (fdc->sc_flags & FDC_NEEDHEADSETTLE) {
sys/arch/sun3/dev/fd.c
1508
callout_reset(&fdc->sc_intr_ch, hz / 30,
sys/arch/sun3/dev/fd.c
1509
fdcpseudointr, fdc);
sys/arch/sun3/dev/fd.c
1514
if (fdc->sc_nstat != 2 || (st0 & 0xf8) != 0x20 || cyl != 0) {
sys/arch/sun3/dev/fd.c
1519
fdcretry(fdc);
sys/arch/sun3/dev/fd.c
1543
fdcretry(struct fdc_softc *fdc)
sys/arch/sun3/dev/fd.c
1548
fd = fdc->sc_drives.tqh_first;
sys/arch/sun3/dev/fd.c
1551
fdc->sc_overruns = 0;
sys/arch/sun3/dev/fd.c
1555
switch (fdc->sc_errors) {
sys/arch/sun3/dev/fd.c
1558
fdc->sc_state =
sys/arch/sun3/dev/fd.c
1559
(fdc->sc_flags & FDC_EIS) ? DOIO : DOSEEK;
sys/arch/sun3/dev/fd.c
1566
fdc->sc_state = DORECAL;
sys/arch/sun3/dev/fd.c
1571
fdc->sc_state = DORESET;
sys/arch/sun3/dev/fd.c
1580
fdcpstatus(7, fdc);
sys/arch/sun3/dev/fd.c
1586
fdc->sc_errors++;
sys/arch/sun3/dev/fd.c
1775
struct fdc_softc *fdc =
sys/arch/sun3/dev/fd.c
1778
out_fdc(fdc, NE7CMD_DUMPREG);
sys/arch/sun3/dev/fd.c
1779
fdcresult(fdc);
sys/arch/sun3/dev/fd.c
1780
printf("dumpreg(%d regs): <", fdc->sc_nstat);
sys/arch/sun3/dev/fd.c
1781
for (k = 0; k < fdc->sc_nstat; k++)
sys/arch/sun3/dev/fd.c
1782
printf(" %x", fdc->sc_status[k]);
sys/arch/sun3/dev/fd.c
1789
struct fdc_softc *fdc =
sys/arch/sun3/dev/fd.c
1792
fdc->sc_cfg &= ~CFG_THRHLD_MASK;
sys/arch/sun3/dev/fd.c
1793
fdc->sc_cfg |= (*(int *)addr & CFG_THRHLD_MASK);
sys/arch/sun3/dev/fd.c
1794
fdconf(fdc);
sys/arch/sun3/dev/fd.c
1801
struct fdc_softc *fdc =
sys/arch/sun3/dev/fd.c
1804
out_fdc(fdc, NE7CMD_SENSEI);
sys/arch/sun3/dev/fd.c
1805
fdcresult(fdc);
sys/arch/sun3/dev/fd.c
1806
printf("sensei(%d regs): <", fdc->sc_nstat);
sys/arch/sun3/dev/fd.c
1807
for (k=0; k < fdc->sc_nstat; k++)
sys/arch/sun3/dev/fd.c
1808
printf(" 0x%x", fdc->sc_status[k]);
sys/arch/sun3/dev/fd.c
191
CFATTACH_DECL_NEW(fdc, sizeof(struct fdc_softc),
sys/arch/sun3/dev/fd.c
1929
fd_do_eject(struct fdc_softc *fdc, int unit)
sys/arch/sun3/dev/fd.c
1932
fdc->sc_fcr |= FCR_DSEL(unit)|FCR_EJECT;
sys/arch/sun3/dev/fd.c
1935
fdc->sc_fcr &= ~(FCR_DSEL(unit)|FCR_EJECT);
sys/arch/sun3/dev/fd.c
1948
struct fdc_softc *fdc;
sys/arch/sun3/dev/fd.c
1952
fdc = device_private(device_parent(dev));
sys/arch/sun3/dev/fd.c
1953
fd_do_eject(fdc, fd->sc_drive);
sys/arch/sun3/dev/fd.c
1978
struct fdc_softc *fdc;
sys/arch/sun3/dev/fd.c
2021
fdc = device_private(device_parent(fd->sc_dv));
sys/arch/sun3/dev/fd.c
2022
fd_do_eject(fdc, 0); /* XXX */
sys/arch/sun3/dev/fd.c
338
#define FD_SET_SWINTR() softint_schedule(fdc->sc_si);
sys/arch/sun3/dev/fd.c
355
#define FCR_REG_SYNC() (*fdc->sc_reg_fcr = fdc->sc_fcr)
sys/arch/sun3/dev/fd.c
385
fdprint(void *aux, const char *fdc)
sys/arch/sun3/dev/fd.c
389
if (fdc == NULL)
sys/arch/sun3/dev/fd.c
395
fdconf(struct fdc_softc *fdc)
sys/arch/sun3/dev/fd.c
399
if (out_fdc(fdc, NE7CMD_DUMPREG) || fdcresult(fdc) != 10)
sys/arch/sun3/dev/fd.c
406
if ((vroom = fdc->sc_status[7]) == 0)
sys/arch/sun3/dev/fd.c
410
out_fdc(fdc, NE7CMD_CFG);
sys/arch/sun3/dev/fd.c
411
out_fdc(fdc, vroom);
sys/arch/sun3/dev/fd.c
412
out_fdc(fdc, fdc->sc_cfg);
sys/arch/sun3/dev/fd.c
413
out_fdc(fdc, 0); /* PRETRK */
sys/arch/sun3/dev/fd.c
421
struct fdc_softc *fdc = device_private(self);
sys/arch/sun3/dev/fd.c
426
fdc->sc_dev = self;
sys/arch/sun3/dev/fd.c
428
fdc->sc_reg = (void *)bus_mapin(ca->ca_bustype, ca->ca_paddr,
sys/arch/sun3/dev/fd.c
431
callout_init(&fdc->sc_timo_ch, 0);
sys/arch/sun3/dev/fd.c
432
callout_init(&fdc->sc_intr_ch, 0);
sys/arch/sun3/dev/fd.c
434
fdc->sc_state = DEVIDLE;
sys/arch/sun3/dev/fd.c
435
fdc->sc_istate = ISTATE_IDLE;
sys/arch/sun3/dev/fd.c
436
fdc->sc_flags |= FDC_EIS;
sys/arch/sun3/dev/fd.c
437
TAILQ_INIT(&fdc->sc_drives);
sys/arch/sun3/dev/fd.c
446
fdc->sc_reg_msr = &((struct fdreg_72 *)fdc->sc_reg)->fd_msr;
sys/arch/sun3/dev/fd.c
447
fdc->sc_reg_fifo = &((struct fdreg_72 *)fdc->sc_reg)->fd_fifo;
sys/arch/sun3/dev/fd.c
449
fdc->sc_reg_fcr = ((volatile uint8_t *)fdc->sc_reg)
sys/arch/sun3/dev/fd.c
451
fdc->sc_reg_fvr = ((volatile uint8_t *)fdc->sc_reg)
sys/arch/sun3/dev/fd.c
460
isr_add_autovect(fdchwintr, fdc, pri);
sys/arch/sun3/dev/fd.c
463
isr_add_vectored(fdchwintr, fdc, pri, vec);
sys/arch/sun3/dev/fd.c
465
*fdc->sc_reg_fvr = vec; /* Program controller w/ interrupt vector */
sys/arch/sun3/dev/fd.c
467
fdc->sc_si = softint_establish(SOFTINT_BIO, fdcswintr, fdc);
sys/arch/sun3/dev/fd.c
475
if (out_fdc(fdc, NE7CMD_VERSION) == 0 &&
sys/arch/sun3/dev/fd.c
476
fdcresult(fdc) == 1 && fdc->sc_status[0] == 0x90) {
sys/arch/sun3/dev/fd.c
482
fdc_reset(fdc);
sys/arch/sun3/dev/fd.c
487
fdc->sc_cfg = CFG_EIS|/*CFG_EFIFO|*/CFG_POLL|(8 & CFG_THRHLD_MASK);
sys/arch/sun3/dev/fd.c
488
fdconf(fdc);
sys/arch/sun3/dev/fd.c
490
evcnt_attach_dynamic(&fdc->sc_intrcnt, EVCNT_TYPE_INTR, NULL,
sys/arch/sun3/dev/fd.c
504
struct fdc_softc *fdc = device_private(parent);
sys/arch/sun3/dev/fd.c
514
fdc->sc_fcr |= FCR_DSEL(drive) | FCR_MTRON;
sys/arch/sun3/dev/fd.c
519
fdc->sc_nstat = 0;
sys/arch/sun3/dev/fd.c
520
out_fdc(fdc, NE7CMD_RECAL);
sys/arch/sun3/dev/fd.c
521
out_fdc(fdc, drive);
sys/arch/sun3/dev/fd.c
525
if ((*fdc->sc_reg_msr & (NE7_RQM|NE7_DIO|NE7_CB)) == NE7_RQM) {
sys/arch/sun3/dev/fd.c
528
if (out_fdc(fdc, NE7CMD_SENSEI))
sys/arch/sun3/dev/fd.c
530
if (fdcresult(fdc) == 1 && fdc->sc_status[0] == 0x80)
sys/arch/sun3/dev/fd.c
540
n = fdc->sc_nstat;
sys/arch/sun3/dev/fd.c
546
aprint_debug(" %x", fdc->sc_status[i]);
sys/arch/sun3/dev/fd.c
550
ok = (n == 2 && (fdc->sc_status[0] & 0xf8) == 0x20) ? 1 : 0;
sys/arch/sun3/dev/fd.c
553
fdc->sc_fcr &= ~(FCR_DSEL(drive)|FCR_MTRON);
sys/arch/sun3/dev/fd.c
565
struct fdc_softc *fdc = device_private(parent);
sys/arch/sun3/dev/fd.c
588
fdc->sc_fd[drive] = fd;
sys/arch/sun3/dev/fd.c
609
OUT_FDC(fdc, NE7CMD_SPECIFY);
sys/arch/sun3/dev/fd.c
610
OUT_FDC(fdc, type->steprate);
sys/arch/sun3/dev/fd.c
622
OUT_FDC(fdc, 6|1); /* XXX head load time == 6ms */
sys/arch/sun3/dev/fd.c
715
struct fdc_softc *fdc;
sys/arch/sun3/dev/fd.c
717
fdc = device_private(device_parent(fd->sc_dv));
sys/arch/sun3/dev/fd.c
718
if (fdc->sc_state == DEVIDLE) {
sys/arch/sun3/dev/fd.c
720
fdcstart(fdc);
sys/arch/sun3/dev/fd.c
735
struct fdc_softc *fdc = device_private(device_parent(fd->sc_dv));
sys/arch/sun3/dev/fd.c
736
bool active = fdc->sc_drives.tqh_first != 0;
sys/arch/sun3/dev/fd.c
740
TAILQ_INSERT_TAIL(&fdc->sc_drives, fd, sc_drivechain);
sys/arch/sun3/dev/fd.c
744
fdcstart(fdc);
sys/arch/sun3/dev/fd.c
750
struct fdc_softc *fdc = device_private(device_parent(fd->sc_dv));
sys/arch/sun3/dev/fd.c
761
TAILQ_REMOVE(&fdc->sc_drives, fd, sc_drivechain);
sys/arch/sun3/dev/fd.c
763
TAILQ_INSERT_TAIL(&fdc->sc_drives, fd, sc_drivechain);
sys/arch/sun3/dev/fd.c
773
fdc->sc_state = DEVIDLE;
sys/arch/sun3/dev/fd.c
777
fdc_reset(struct fdc_softc *fdc)
sys/arch/sun3/dev/fd.c
780
fdc->sc_fcr = 0;
sys/arch/sun3/dev/fd.c
783
*fdc->sc_reg_drs = DRS_RESET;
sys/arch/sun3/dev/fd.c
785
*fdc->sc_reg_drs = 0;
sys/arch/sun3/dev/fd.c
794
fd_set_motor(struct fdc_softc *fdc)
sys/arch/sun3/dev/fd.c
802
if ((fd = fdc->sc_fd[n]) && (fd->sc_flags & FD_MOTOR))
sys/arch/sun3/dev/fd.c
805
fdc->sc_fcr |= FCR_DSEL(0)|FCR_MTRON; /* XXX */
sys/arch/sun3/dev/fd.c
807
fdc->sc_fcr &= ~(FCR_DSEL(0)|FCR_MTRON); /* XXX */
sys/arch/sun3/dev/fd.c
828
struct fdc_softc *fdc = device_private(device_parent(fd->sc_dv));
sys/arch/sun3/dev/fd.c
833
if ((TAILQ_FIRST(&fdc->sc_drives) == fd) &&
sys/arch/sun3/dev/fd.c
834
(fdc->sc_state == MOTORWAIT))
sys/arch/sun3/dev/fd.c
835
(void)fdcstate(fdc);
sys/arch/sun3/dev/fd.c
840
fdcresult(struct fdc_softc *fdc)
sys/arch/sun3/dev/fd.c
846
i = *fdc->sc_reg_msr & (NE7_DIO | NE7_RQM | NE7_CB);
sys/arch/sun3/dev/fd.c
848
fdc->sc_nstat = n;
sys/arch/sun3/dev/fd.c
852
if (n >= sizeof(fdc->sc_status)) {
sys/arch/sun3/dev/fd.c
856
fdc->sc_status[n++] = *fdc->sc_reg_fifo;
sys/arch/sun3/dev/fd.c
861
fdc->sc_nstat = -1;
sys/arch/sun3/dev/fd.c
866
out_fdc(struct fdc_softc *fdc, u_char x)
sys/arch/sun3/dev/fd.c
870
while (((*fdc->sc_reg_msr & (NE7_DIO|NE7_RQM)) != NE7_RQM) && i-- > 0)
sys/arch/sun3/dev/fd.c
875
*fdc->sc_reg_fifo = x;
sys/arch/sun3/dev/fd.c
964
fdcstart(struct fdc_softc *fdc)
sys/arch/sun3/dev/fd.c
970
if (fdc->sc_state != DEVIDLE) {
sys/arch/sun3/dev/fd.c
975
(void)fdcstate(fdc);
sys/arch/sun3/dev/fd.c
979
fdcpstatus(int n, struct fdc_softc *fdc)
sys/arch/sun3/dev/fd.c
988
snprintb(bits, sizeof(bits), NE7_ST0BITS, fdc->sc_status[0]);
sys/arch/sun3/dev/fd.c
989
printf(" (st0 %s cyl %d)\n", bits, fdc->sc_status[1]);
sys/arch/sun3/dev/fd.c
992
snprintb(bits, sizeof(bits), NE7_ST0BITS, fdc->sc_status[0]);
sys/arch/sun3/dev/fd.c
994
snprintb(bits, sizeof(bits), NE7_ST1BITS, fdc->sc_status[1]);
sys/arch/sun3/dev/fd.c
996
snprintb(bits, sizeof(bits), NE7_ST2BITS, fdc->sc_status[2]);
sys/arch/sun3/dev/fd.c
999
fdc->sc_status[3], fdc->sc_status[4], fdc->sc_status[5]);
sys/arch/x68k/dev/fd.c
1006
if (fdc->sc_state != DEVIDLE) {
sys/arch/x68k/dev/fd.c
1011
(void)fdcintr(fdc);
sys/arch/x68k/dev/fd.c
1016
fdcpstatus(int n, struct fdc_softc *fdc)
sys/arch/x68k/dev/fd.c
1025
snprintb(bits, sizeof(bits), NE7_ST0BITS, fdc->sc_status[0]);
sys/arch/x68k/dev/fd.c
1026
printf(" (st0 %s cyl %d)\n", bits, fdc->sc_status[1]);
sys/arch/x68k/dev/fd.c
1029
snprintb(bits, sizeof(bits), NE7_ST0BITS, fdc->sc_status[0]);
sys/arch/x68k/dev/fd.c
1031
snprintb(bits, sizeof(bits), NE7_ST1BITS, fdc->sc_status[1]);
sys/arch/x68k/dev/fd.c
1033
snprintb(bits, sizeof(bits), NE7_ST2BITS, fdc->sc_status[2]);
sys/arch/x68k/dev/fd.c
1036
fdc->sc_status[3], fdc->sc_status[4], fdc->sc_status[5]);
sys/arch/x68k/dev/fd.c
1049
struct fdc_softc *fdc = device_private(device_parent(dv));
sys/arch/x68k/dev/fd.c
1052
out_fdc(fdc->sc_iot, fdc->sc_ioh, NE7CMD_SENSEI);
sys/arch/x68k/dev/fd.c
1053
(void)fdcresult(fdc);
sys/arch/x68k/dev/fd.c
1057
printf("%s: %s: state %d", device_xname(dv), s, fdc->sc_state);
sys/arch/x68k/dev/fd.c
1058
fdcpstatus(n, fdc);
sys/arch/x68k/dev/fd.c
1064
struct fdc_softc *fdc = arg;
sys/arch/x68k/dev/fd.c
1065
struct fd_softc *fd = TAILQ_FIRST(&fdc->sc_drives);
sys/arch/x68k/dev/fd.c
1072
fdc->sc_state++;
sys/arch/x68k/dev/fd.c
1074
fdc->sc_state = DEVIDLE;
sys/arch/x68k/dev/fd.c
1076
(void)fdcintr(fdc);
sys/arch/x68k/dev/fd.c
1085
struct fdc_softc *fdc = arg;
sys/arch/x68k/dev/fd.c
1089
(void)fdcintr(fdc);
sys/arch/x68k/dev/fd.c
1097
struct fdc_softc *fdc = arg;
sys/arch/x68k/dev/fd.c
1098
#define st0 fdc->sc_status[0]
sys/arch/x68k/dev/fd.c
1099
#define cyl fdc->sc_status[1]
sys/arch/x68k/dev/fd.c
1102
bus_space_tag_t iot = fdc->sc_iot;
sys/arch/x68k/dev/fd.c
1103
bus_space_handle_t ioh = fdc->sc_ioh;
sys/arch/x68k/dev/fd.c
1110
fd = TAILQ_FIRST(&fdc->sc_drives);
sys/arch/x68k/dev/fd.c
1113
if (fdc->sc_state == DEVIDLE) {
sys/arch/x68k/dev/fd.c
1117
if ((tmp = fdcresult(fdc)) != 2 ||
sys/arch/x68k/dev/fd.c
1124
fdc->sc_state = DEVIDLE;
sys/arch/x68k/dev/fd.c
1132
TAILQ_REMOVE(&fdc->sc_drives, fd, sc_drivechain);
sys/arch/x68k/dev/fd.c
1140
switch (fdc->sc_state) {
sys/arch/x68k/dev/fd.c
1143
fdc->sc_errors = 0;
sys/arch/x68k/dev/fd.c
1149
fdc->sc_state = MOTORWAIT;
sys/arch/x68k/dev/fd.c
1156
struct fd_softc *ofd = fdc->sc_fd[i];
sys/arch/x68k/dev/fd.c
1166
fd_set_motor(fdc, 0);
sys/arch/x68k/dev/fd.c
1167
fdc->sc_state = MOTORWAIT;
sys/arch/x68k/dev/fd.c
1176
fd_set_motor(fdc, 0);
sys/arch/x68k/dev/fd.c
1194
fdc->sc_state = SEEKWAIT;
sys/arch/x68k/dev/fd.c
1199
callout_reset(&fdc->sc_timo_ch, 4 * hz, fdctimeout, fdc);
sys/arch/x68k/dev/fd.c
1279
fdc_dmastart(fdc, read, (char *)bp->b_data + fd->sc_skip,
sys/arch/x68k/dev/fd.c
1284
fdc->sc_errors = 4;
sys/arch/x68k/dev/fd.c
1285
fdcretry(fdc);
sys/arch/x68k/dev/fd.c
1307
fdc->sc_state = IOCOMPLETE;
sys/arch/x68k/dev/fd.c
1312
callout_reset(&fdc->sc_timo_ch, 2 * hz, fdctimeout, fdc);
sys/arch/x68k/dev/fd.c
1325
fdc_dmastart(fdc, B_READ, fd->sc_copybuf, 1024);
sys/arch/x68k/dev/fd.c
1335
fdc->sc_state = COPYCOMPLETE;
sys/arch/x68k/dev/fd.c
1337
callout_reset(&fdc->sc_timo_ch, 2 * hz, fdctimeout, fdc);
sys/arch/x68k/dev/fd.c
1371
fdc->sc_state = IOCOMPLETE;
sys/arch/x68k/dev/fd.c
1377
fdc_dmastart(fdc, read, fd->sc_copybuf, 1024);
sys/arch/x68k/dev/fd.c
1388
fdc->sc_state = IOCOMPLETE;
sys/arch/x68k/dev/fd.c
1390
callout_reset(&fdc->sc_timo_ch, 2 * hz, fdctimeout, fdc);
sys/arch/x68k/dev/fd.c
1394
callout_stop(&fdc->sc_timo_ch);
sys/arch/x68k/dev/fd.c
1395
fdc->sc_state = SEEKCOMPLETE;
sys/arch/x68k/dev/fd.c
1398
callout_reset(&fdc->sc_intr_ch, hz / 50, fdcpseudointr, fdc);
sys/arch/x68k/dev/fd.c
1405
bus_space_read_1(fdc->sc_iot, fdc->sc_ioh, fdsts)));
sys/arch/x68k/dev/fd.c
1407
tmp = fdcresult(fdc);
sys/arch/x68k/dev/fd.c
1410
fdc->sc_state = DORECAL;
sys/arch/x68k/dev/fd.c
1418
fdcretry(fdc);
sys/arch/x68k/dev/fd.c
1425
fdc_dmaabort(fdc);
sys/arch/x68k/dev/fd.c
1429
fdcretry(fdc);
sys/arch/x68k/dev/fd.c
1433
callout_stop(&fdc->sc_timo_ch);
sys/arch/x68k/dev/fd.c
1435
if ((tmp = fdcresult(fdc)) != 7 || (st0 & 0xf8) != 0) {
sys/arch/x68k/dev/fd.c
1436
fdc_dmaabort(fdc);
sys/arch/x68k/dev/fd.c
1441
fdcretry(fdc);
sys/arch/x68k/dev/fd.c
1445
if (fdc->sc_errors) {
sys/arch/x68k/dev/fd.c
1449
fdc->sc_errors = 0;
sys/arch/x68k/dev/fd.c
1466
callout_stop(&fdc->sc_timo_ch);
sys/arch/x68k/dev/fd.c
1467
if ((tmp = fdcresult(fdc)) != 7 || (st0 & 0xf8) != 0) {
sys/arch/x68k/dev/fd.c
1469
fdc_dmaabort(fdc);
sys/arch/x68k/dev/fd.c
1474
fdcretry(fdc);
sys/arch/x68k/dev/fd.c
1482
fd_set_motor(fdc, 1);
sys/arch/x68k/dev/fd.c
1484
fd_set_motor(fdc, 0);
sys/arch/x68k/dev/fd.c
1485
fdc->sc_state = RESETCOMPLETE;
sys/arch/x68k/dev/fd.c
1486
callout_reset(&fdc->sc_timo_ch, hz / 2, fdctimeout, fdc);
sys/arch/x68k/dev/fd.c
1491
callout_stop(&fdc->sc_timo_ch);
sys/arch/x68k/dev/fd.c
1495
(void)fdcresult(fdc);
sys/arch/x68k/dev/fd.c
1503
fdc->sc_state = RECALWAIT;
sys/arch/x68k/dev/fd.c
1504
callout_reset(&fdc->sc_timo_ch, 5 * hz, fdctimeout, fdc);
sys/arch/x68k/dev/fd.c
1509
callout_stop(&fdc->sc_timo_ch);
sys/arch/x68k/dev/fd.c
1510
fdc->sc_state = RECALCOMPLETE;
sys/arch/x68k/dev/fd.c
1513
callout_reset(&fdc->sc_intr_ch, hz / 30, fdcpseudointr, fdc);
sys/arch/x68k/dev/fd.c
1520
tmp = fdcresult(fdc);
sys/arch/x68k/dev/fd.c
1523
fdc->sc_state = DORECAL;
sys/arch/x68k/dev/fd.c
1529
fdcretry(fdc);
sys/arch/x68k/dev/fd.c
1543
tmp = fdcresult(fdc);
sys/arch/x68k/dev/fd.c
1547
fdcpstatus(7, fdc);
sys/arch/x68k/dev/fd.c
1566
fdcretry(struct fdc_softc *fdc)
sys/arch/x68k/dev/fd.c
1572
fd = TAILQ_FIRST(&fdc->sc_drives);
sys/arch/x68k/dev/fd.c
1578
switch (fdc->sc_errors) {
sys/arch/x68k/dev/fd.c
1581
fdc->sc_state = SEEKCOMPLETE;
sys/arch/x68k/dev/fd.c
1588
fdc->sc_state = DORECAL;
sys/arch/x68k/dev/fd.c
1593
fdc->sc_state = DORESET;
sys/arch/x68k/dev/fd.c
1601
fdcpstatus(7, fdc);
sys/arch/x68k/dev/fd.c
1607
fdc->sc_errors++;
sys/arch/x68k/dev/fd.c
1614
struct fdc_softc *fdc = device_private(device_parent(fd->sc_dev));
sys/arch/x68k/dev/fd.c
171
CFATTACH_DECL_NEW(fdc, sizeof(struct fdc_softc),
sys/arch/x68k/dev/fd.c
1798
fd_do_eject(fdc, FDUNIT(dev));
sys/arch/x68k/dev/fd.c
1853
fd_do_eject(struct fdc_softc *fdc, int unit)
sys/arch/x68k/dev/fd.c
1856
bus_space_write_1(fdc->sc_iot, fdc->sc_ioh, fdout, 0x20 | (1 << unit));
sys/arch/x68k/dev/fd.c
1858
bus_space_write_1(fdc->sc_iot, fdc->sc_ioh, fdout, 0x20);
sys/arch/x68k/dev/fd.c
1911
struct fdc_softc *fdc = device_private(device_parent(fd->sc_dev));
sys/arch/x68k/dev/fd.c
1915
fd_do_eject(fdc, device_unit(dev));
sys/arch/x68k/dev/fd.c
335
fdc_dmastart(struct fdc_softc *fdc, int read, void *addr, vsize_t count)
sys/arch/x68k/dev/fd.c
342
error = bus_dmamap_load(fdc->sc_dmat, fdc->sc_dmamap, addr, count,
sys/arch/x68k/dev/fd.c
348
bus_dmamap_sync(fdc->sc_dmat, fdc->sc_dmamap, 0, count,
sys/arch/x68k/dev/fd.c
363
fdc->sc_xfer = dmac_prepare_xfer(fdc->sc_dmachan, fdc->sc_dmat,
sys/arch/x68k/dev/fd.c
364
fdc->sc_dmamap,
sys/arch/x68k/dev/fd.c
367
fdc->sc_addr + fddata * 2 + 1);
sys/arch/x68k/dev/fd.c
369
fdc->sc_read = read;
sys/arch/x68k/dev/fd.c
370
dmac_start_xfer(fdc->sc_dmachan->ch_softc, fdc->sc_xfer);
sys/arch/x68k/dev/fd.c
374
fdc_dmaabort(struct fdc_softc *fdc)
sys/arch/x68k/dev/fd.c
377
dmac_abort_xfer(fdc->sc_dmachan->ch_softc, fdc->sc_xfer);
sys/arch/x68k/dev/fd.c
378
bus_dmamap_unload(fdc->sc_dmat, fdc->sc_dmamap);
sys/arch/x68k/dev/fd.c
384
struct fdc_softc *fdc = arg;
sys/arch/x68k/dev/fd.c
386
bus_dmamap_sync(fdc->sc_dmat, fdc->sc_dmamap,
sys/arch/x68k/dev/fd.c
387
0, fdc->sc_dmamap->dm_mapsize,
sys/arch/x68k/dev/fd.c
388
fdc->sc_read ?
sys/arch/x68k/dev/fd.c
390
bus_dmamap_unload(fdc->sc_dmat, fdc->sc_dmamap);
sys/arch/x68k/dev/fd.c
449
fdprint(void *aux, const char *fdc)
sys/arch/x68k/dev/fd.c
453
if (fdc == NULL)
sys/arch/x68k/dev/fd.c
461
struct fdc_softc *fdc = device_private(self);
sys/arch/x68k/dev/fd.c
478
callout_init(&fdc->sc_timo_ch, 0);
sys/arch/x68k/dev/fd.c
479
callout_init(&fdc->sc_intr_ch, 0);
sys/arch/x68k/dev/fd.c
481
fdc->sc_iot = iot;
sys/arch/x68k/dev/fd.c
482
fdc->sc_ioh = ioh;
sys/arch/x68k/dev/fd.c
483
fdc->sc_addr = (void *)ia->ia_addr;
sys/arch/x68k/dev/fd.c
485
fdc->sc_dmat = ia->ia_dmat;
sys/arch/x68k/dev/fd.c
486
fdc->sc_state = DEVIDLE;
sys/arch/x68k/dev/fd.c
487
TAILQ_INIT(&fdc->sc_drives);
sys/arch/x68k/dev/fd.c
490
fdc->sc_dmachan = dmac_alloc_channel(parent, ia->ia_dma, "fdc",
sys/arch/x68k/dev/fd.c
491
ia->ia_dmaintr, fdcdmaintr, fdc,
sys/arch/x68k/dev/fd.c
492
ia->ia_dmaintr + 1, fdcdmaerrintr, fdc,
sys/arch/x68k/dev/fd.c
496
if (bus_dmamap_create(fdc->sc_dmat, FDC_MAXIOSIZE, 1, DMAC_MAXSEGSZ,
sys/arch/x68k/dev/fd.c
497
0, BUS_DMA_NOWAIT | BUS_DMA_ALLOCNOW, &fdc->sc_dmamap)) {
sys/arch/x68k/dev/fd.c
502
if (intio_intr_establish(ia->ia_intr, "fdc", fdcintr, fdc) != 0)
sys/arch/x68k/dev/fd.c
509
fdcresult(fdc);
sys/arch/x68k/dev/fd.c
510
fdcreset(fdc);
sys/arch/x68k/dev/fd.c
526
fdcreset(struct fdc_softc *fdc)
sys/arch/x68k/dev/fd.c
529
bus_space_write_1(fdc->sc_iot, fdc->sc_ioh, fdsts, NE7CMD_RESET);
sys/arch/x68k/dev/fd.c
533
fdcpoll(struct fdc_softc *fdc)
sys/arch/x68k/dev/fd.c
539
out_fdc(fdc->sc_iot, fdc->sc_ioh, NE7CMD_SENSEI);
sys/arch/x68k/dev/fd.c
540
fdcresult(fdc);
sys/arch/x68k/dev/fd.c
551
struct fdc_softc *fdc = device_private(parent);
sys/arch/x68k/dev/fd.c
555
bus_space_tag_t iot = fdc->sc_iot;
sys/arch/x68k/dev/fd.c
556
bus_space_handle_t ioh = fdc->sc_ioh;
sys/arch/x68k/dev/fd.c
570
(void)fdcresult(fdc);
sys/arch/x68k/dev/fd.c
577
fdcpoll(fdc);
sys/arch/x68k/dev/fd.c
587
n = fdcresult(fdc);
sys/arch/x68k/dev/fd.c
598
DPRINTF((" %x", fdc->sc_status[_i]));
sys/arch/x68k/dev/fd.c
604
if ((fdc->sc_status[0] & 0xf0) == 0x20)
sys/arch/x68k/dev/fd.c
606
else if ((fdc->sc_status[0] & 0xf0) == 0xc0)
sys/arch/x68k/dev/fd.c
611
bus_space_write_1(fdc->sc_iot, fdc->sc_ioh,
sys/arch/x68k/dev/fd.c
628
struct fdc_softc *fdc = device_private(parent);
sys/arch/x68k/dev/fd.c
652
fdc->sc_fd[drive] = fd;
sys/arch/x68k/dev/fd.c
749
struct fdc_softc *fdc;
sys/arch/x68k/dev/fd.c
751
fdc = device_private(device_parent(fd->sc_dev));
sys/arch/x68k/dev/fd.c
752
if (fdc->sc_state == DEVIDLE) {
sys/arch/x68k/dev/fd.c
754
fdcstart(fdc);
sys/arch/x68k/dev/fd.c
769
struct fdc_softc *fdc = device_private(device_parent(fd->sc_dev));
sys/arch/x68k/dev/fd.c
770
int active = !TAILQ_EMPTY(&fdc->sc_drives);
sys/arch/x68k/dev/fd.c
774
TAILQ_INSERT_TAIL(&fdc->sc_drives, fd, sc_drivechain);
sys/arch/x68k/dev/fd.c
778
fdcstart(fdc);
sys/arch/x68k/dev/fd.c
784
struct fdc_softc *fdc = device_private(device_parent(fd->sc_dev));
sys/arch/x68k/dev/fd.c
795
TAILQ_REMOVE(&fdc->sc_drives, fd, sc_drivechain);
sys/arch/x68k/dev/fd.c
797
TAILQ_INSERT_TAIL(&fdc->sc_drives, fd, sc_drivechain);
sys/arch/x68k/dev/fd.c
809
fdc->sc_state = DEVIDLE;
sys/arch/x68k/dev/fd.c
827
fd_set_motor(struct fdc_softc *fdc, int reset)
sys/arch/x68k/dev/fd.c
834
fd = fdc->sc_fd[n];
sys/arch/x68k/dev/fd.c
836
bus_space_write_1(fdc->sc_iot, fdc->sc_ioh, fdctl,
sys/arch/x68k/dev/fd.c
845
struct fdc_softc *fdc = device_private(device_parent(fd->sc_dev));
sys/arch/x68k/dev/fd.c
852
bus_space_write_1(fdc->sc_iot, fdc->sc_ioh, fdctl,
sys/arch/x68k/dev/fd.c
855
fd_set_motor(fdc, 0); /* XXX */
sys/arch/x68k/dev/fd.c
865
struct fdc_softc *fdc = device_private(device_parent(fd->sc_dev));
sys/arch/x68k/dev/fd.c
872
if ((TAILQ_FIRST(&fdc->sc_drives) == fd) &&
sys/arch/x68k/dev/fd.c
873
(fdc->sc_state == MOTORWAIT))
sys/arch/x68k/dev/fd.c
874
(void)fdcintr(fdc);
sys/arch/x68k/dev/fd.c
880
fdcresult(struct fdc_softc *fdc)
sys/arch/x68k/dev/fd.c
882
bus_space_tag_t iot = fdc->sc_iot;
sys/arch/x68k/dev/fd.c
883
bus_space_handle_t ioh = fdc->sc_ioh;
sys/arch/x68k/dev/fd.c
895
if (n >= sizeof(fdc->sc_status)) {
sys/arch/x68k/dev/fd.c
899
fdc->sc_status[n++] =
sys/arch/x68k/dev/fd.c
929
struct fdc_softc *fdc;
sys/arch/x68k/dev/fd.c
943
fdc = device_private(device_parent(fd->sc_dev));
sys/arch/x68k/dev/fd.c
946
bus_space_write_1(fdc->sc_iot, fdc->sc_ioh, fdout,
sys/arch/x68k/dev/fd.c
948
bus_space_write_1(fdc->sc_iot, fdc->sc_ioh, fdout, 0x40);
sys/arch/x68k/dev/fd.c
973
struct fdc_softc *fdc = device_private(device_parent(fd->sc_dev));
sys/arch/x68k/dev/fd.c
990
bus_space_write_1(fdc->sc_iot, fdc->sc_ioh, fdout,
sys/arch/x68k/dev/fd.c
992
bus_space_write_1(fdc->sc_iot, fdc->sc_ioh, fdout, 0);
sys/arch/x68k/dev/fd.c
998
fdcstart(struct fdc_softc *fdc)
sys/arch/x68k/x68k/iodevice.h
318
struct fdc io_fdc;
sys/dev/acpi/fdc_acpi.c
306
fdc_acpi_nvtotype(const char *fdc, int nvraminfo, int drive)
sys/dev/acpi/fdc_acpi.c
326
fdc, drive, type);
sys/dev/ieee1394/firewire.c
2024
struct firewire_dev_comm *fdc;
sys/dev/ieee1394/firewire.c
2091
fdc = device_private(devlist->dev);
sys/dev/ieee1394/firewire.c
2092
if (fdc->post_explore != NULL)
sys/dev/ieee1394/firewire.c
2093
fdc->post_explore(fdc);
sys/dev/ieee1394/firewire.c
527
struct firewire_dev_comm *fdc;
sys/dev/ieee1394/firewire.c
544
fdc = device_private(devlist->dev);
sys/dev/ieee1394/firewire.c
545
if (fdc->post_busreset != NULL)
sys/dev/ieee1394/firewire.c
546
fdc->post_busreset(fdc);
sys/dev/isa/fd.c
1001
fdc->sc_status[3], fdc->sc_status[4], fdc->sc_status[5]);
sys/dev/isa/fd.c
1014
struct fdc_softc *fdc = device_private(device_parent(dv));
sys/dev/isa/fd.c
1017
out_fdc(fdc->sc_iot, fdc->sc_ioh, NE7CMD_SENSEI);
sys/dev/isa/fd.c
1018
(void) fdcresult(fdc);
sys/dev/isa/fd.c
1021
fdcpstatus(n, fdc);
sys/dev/isa/fd.c
1030
struct fdc_softc *fdc = arg;
sys/dev/isa/fd.c
1031
struct fd_softc *fd = TAILQ_FIRST(&fdc->sc_drives);
sys/dev/isa/fd.c
1033
mutex_enter(&fdc->sc_mtx);
sys/dev/isa/fd.c
1035
log(LOG_ERR, "fdctimeout: state %d\n", fdc->sc_state);
sys/dev/isa/fd.c
1040
fdc->sc_state++;
sys/dev/isa/fd.c
1042
fdc->sc_state = DEVIDLE;
sys/dev/isa/fd.c
1044
(void)fdcintr1(fdc);
sys/dev/isa/fd.c
1045
mutex_exit(&fdc->sc_mtx);
sys/dev/isa/fd.c
1049
fdcintr1(struct fdc_softc *fdc)
sys/dev/isa/fd.c
1051
#define st0 fdc->sc_status[0]
sys/dev/isa/fd.c
1052
#define cyl fdc->sc_status[1]
sys/dev/isa/fd.c
1055
bus_space_tag_t iot = fdc->sc_iot;
sys/dev/isa/fd.c
1056
bus_space_handle_t ioh = fdc->sc_ioh;
sys/dev/isa/fd.c
1061
KASSERT(mutex_owned(&fdc->sc_mtx));
sys/dev/isa/fd.c
1062
if (fdc->sc_state == PROBING) {
sys/dev/isa/fd.c
1066
fdc->sc_probe++;
sys/dev/isa/fd.c
1072
fd = TAILQ_FIRST(&fdc->sc_drives);
sys/dev/isa/fd.c
1074
fdc->sc_state = DEVIDLE;
sys/dev/isa/fd.c
1082
TAILQ_REMOVE(&fdc->sc_drives, fd, sc_drivechain);
sys/dev/isa/fd.c
1090
switch (fdc->sc_state) {
sys/dev/isa/fd.c
1092
fdc->sc_errors = 0;
sys/dev/isa/fd.c
1098
fdc->sc_state = MOTORWAIT;
sys/dev/isa/fd.c
1103
struct fd_softc *ofd = fdc->sc_fd[fd->sc_drive ^ 1];
sys/dev/isa/fd.c
1109
fd_set_motor(fdc, 0);
sys/dev/isa/fd.c
1110
fdc->sc_state = MOTORWAIT;
sys/dev/isa/fd.c
1117
fd_set_motor(fdc, 0);
sys/dev/isa/fd.c
1134
fdc->sc_state = SEEKWAIT;
sys/dev/isa/fd.c
1139
callout_reset(&fdc->sc_timo_ch, 4 * hz, fdctimeout, fdc);
sys/dev/isa/fd.c
1151
nblks = uimin(nblks, fdc->sc_maxiosize / FDC_BSIZE);
sys/dev/isa/fd.c
1171
isa_dmastart(fdc->sc_ic, fdc->sc_drq,
sys/dev/isa/fd.c
1174
bus_space_write_1(iot, fdc->sc_fdctlioh, 0, type->rate);
sys/dev/isa/fd.c
1183
fdc->sc_errors = 4;
sys/dev/isa/fd.c
1184
fdcretry(fdc);
sys/dev/isa/fd.c
1206
fdc->sc_state = IOCOMPLETE;
sys/dev/isa/fd.c
1211
callout_reset(&fdc->sc_timo_ch, 2 * hz, fdctimeout, fdc);
sys/dev/isa/fd.c
1215
callout_stop(&fdc->sc_timo_ch);
sys/dev/isa/fd.c
1216
fdc->sc_state = SEEKCOMPLETE;
sys/dev/isa/fd.c
1218
callout_reset(&fdc->sc_intr_ch, hz / 50, fdcintrcb, fdc);
sys/dev/isa/fd.c
1227
if (fdcresult(fdc) != 2 || (st0 & 0xf8) != 0x20 ||
sys/dev/isa/fd.c
1232
fdcretry(fdc);
sys/dev/isa/fd.c
1239
isa_dmaabort(fdc->sc_ic, fdc->sc_drq);
sys/dev/isa/fd.c
1244
fdcretry(fdc);
sys/dev/isa/fd.c
1248
callout_stop(&fdc->sc_timo_ch);
sys/dev/isa/fd.c
1253
if (fdcresult(fdc) != 7 || (st0 & 0xf8) != 0) {
sys/dev/isa/fd.c
1254
isa_dmaabort(fdc->sc_ic, fdc->sc_drq);
sys/dev/isa/fd.c
1261
fdcretry(fdc);
sys/dev/isa/fd.c
1264
isa_dmadone(fdc->sc_ic, fdc->sc_drq);
sys/dev/isa/fd.c
1265
if (fdc->sc_errors) {
sys/dev/isa/fd.c
1269
fdc->sc_errors = 0;
sys/dev/isa/fd.c
1283
fd_set_motor(fdc, 1);
sys/dev/isa/fd.c
1285
fd_set_motor(fdc, 0);
sys/dev/isa/fd.c
1286
fdc->sc_state = RESETCOMPLETE;
sys/dev/isa/fd.c
1287
callout_reset(&fdc->sc_timo_ch, hz / 2, fdctimeout, fdc);
sys/dev/isa/fd.c
1291
callout_stop(&fdc->sc_timo_ch);
sys/dev/isa/fd.c
1295
(void) fdcresult(fdc);
sys/dev/isa/fd.c
1302
fdc->sc_state = RECALWAIT;
sys/dev/isa/fd.c
1303
callout_reset(&fdc->sc_timo_ch, 5 * hz, fdctimeout, fdc);
sys/dev/isa/fd.c
1307
callout_stop(&fdc->sc_timo_ch);
sys/dev/isa/fd.c
1308
fdc->sc_state = RECALCOMPLETE;
sys/dev/isa/fd.c
1310
callout_reset(&fdc->sc_intr_ch, hz / 30, fdcintrcb, fdc);
sys/dev/isa/fd.c
1315
if (fdcresult(fdc) != 2 || (st0 & 0xf8) != 0x20 || cyl != 0) {
sys/dev/isa/fd.c
1319
fdcretry(fdc);
sys/dev/isa/fd.c
1338
cv_signal(&fdc->sc_cv);
sys/dev/isa/fd.c
1352
struct fdc_softc *fdc = arg;
sys/dev/isa/fd.c
1354
mutex_enter(&fdc->sc_mtx);
sys/dev/isa/fd.c
1355
rc = fdcintr1(fdc);
sys/dev/isa/fd.c
1356
mutex_exit(&fdc->sc_mtx);
sys/dev/isa/fd.c
1361
fdcretry(struct fdc_softc *fdc)
sys/dev/isa/fd.c
1366
fd = TAILQ_FIRST(&fdc->sc_drives);
sys/dev/isa/fd.c
1371
switch (fdc->sc_errors) {
sys/dev/isa/fd.c
1374
fdc->sc_state = DOSEEK;
sys/dev/isa/fd.c
1379
fdc->sc_state = DORECAL;
sys/dev/isa/fd.c
1384
fdc->sc_state = DORESET;
sys/dev/isa/fd.c
1392
fdcpstatus(7, fdc);
sys/dev/isa/fd.c
1398
fdc->sc_errors++;
sys/dev/isa/fd.c
264
void fd_set_motor(struct fdc_softc *fdc, int reset);
sys/dev/isa/fd.c
267
int fdcresult(struct fdc_softc *fdc);
sys/dev/isa/fd.c
268
void fdcstart(struct fdc_softc *fdc);
sys/dev/isa/fd.c
271
void fdcretry(struct fdc_softc *fdc);
sys/dev/isa/fd.c
295
fdprint(void *aux, const char *fdc)
sys/dev/isa/fd.c
299
if (!fdc)
sys/dev/isa/fd.c
307
struct fdc_softc *fdc = device_private(self);
sys/dev/isa/fd.c
309
mutex_enter(&fdc->sc_mtx);
sys/dev/isa/fd.c
310
(void)fdcintr1(fdc);
sys/dev/isa/fd.c
311
mutex_exit(&fdc->sc_mtx);
sys/dev/isa/fd.c
318
struct fdc_softc *fdc = device_private(self);
sys/dev/isa/fd.c
322
mutex_enter(&fdc->sc_mtx);
sys/dev/isa/fd.c
323
while (fdc->sc_state != DEVIDLE)
sys/dev/isa/fd.c
324
cv_wait(&fdc->sc_cv, &fdc->sc_mtx);
sys/dev/isa/fd.c
326
if ((fd = fdc->sc_fd[drive]) == NULL)
sys/dev/isa/fd.c
330
fd_set_motor(fdc, 0);
sys/dev/isa/fd.c
331
mutex_exit(&fdc->sc_mtx);
sys/dev/isa/fd.c
338
struct fdc_softc *fdc = device_private(self);
sys/dev/isa/fd.c
342
KASSERT(fdc->sc_fd[drive] == fd); /* but the kid is not my son */
sys/dev/isa/fd.c
343
fdc->sc_fd[drive] = NULL;
sys/dev/isa/fd.c
350
struct fdc_softc *fdc = device_private(self);
sys/dev/isa/fd.c
357
isa_dmamap_destroy(fdc->sc_ic, fdc->sc_drq);
sys/dev/isa/fd.c
358
isa_drq_free(fdc->sc_ic, fdc->sc_drq);
sys/dev/isa/fd.c
360
callout_destroy(&fdc->sc_intr_ch);
sys/dev/isa/fd.c
361
callout_destroy(&fdc->sc_timo_ch);
sys/dev/isa/fd.c
363
cv_destroy(&fdc->sc_cv);
sys/dev/isa/fd.c
364
mutex_destroy(&fdc->sc_mtx);
sys/dev/isa/fd.c
370
fdcattach(struct fdc_softc *fdc)
sys/dev/isa/fd.c
372
mutex_init(&fdc->sc_mtx, MUTEX_DEFAULT, IPL_BIO);
sys/dev/isa/fd.c
373
cv_init(&fdc->sc_cv, "fdcwake");
sys/dev/isa/fd.c
374
callout_init(&fdc->sc_timo_ch, 0);
sys/dev/isa/fd.c
375
callout_init(&fdc->sc_intr_ch, 0);
sys/dev/isa/fd.c
377
fdc->sc_state = DEVIDLE;
sys/dev/isa/fd.c
378
TAILQ_INIT(&fdc->sc_drives);
sys/dev/isa/fd.c
380
fdc->sc_maxiosize = isa_dmamaxsize(fdc->sc_ic, fdc->sc_drq);
sys/dev/isa/fd.c
382
if (isa_drq_alloc(fdc->sc_ic, fdc->sc_drq) != 0) {
sys/dev/isa/fd.c
383
aprint_normal_dev(fdc->sc_dev, "can't reserve drq %d\n",
sys/dev/isa/fd.c
384
fdc->sc_drq);
sys/dev/isa/fd.c
388
if (isa_dmamap_create(fdc->sc_ic, fdc->sc_drq, fdc->sc_maxiosize,
sys/dev/isa/fd.c
390
aprint_normal_dev(fdc->sc_dev, "can't set up ISA DMA map\n");
sys/dev/isa/fd.c
394
config_interrupts(fdc->sc_dev, fdcfinishattach);
sys/dev/isa/fd.c
396
if (!pmf_device_register(fdc->sc_dev, fdcsuspend, fdcresume)) {
sys/dev/isa/fd.c
397
aprint_error_dev(fdc->sc_dev,
sys/dev/isa/fd.c
405
struct fdc_softc *fdc = device_private(self);
sys/dev/isa/fd.c
406
bus_space_tag_t iot = fdc->sc_iot;
sys/dev/isa/fd.c
407
bus_space_handle_t ioh = fdc->sc_ioh;
sys/dev/isa/fd.c
422
aprint_normal_dev(fdc->sc_dev, "can't reset controller\n");
sys/dev/isa/fd.c
434
if (device_unit(fdc->sc_dev) == 0) {
sys/dev/isa/fd.c
436
fdc->sc_known = 1;
sys/dev/isa/fd.c
437
fdc->sc_knownfds[0] = fd_nvtotype(device_xname(fdc->sc_dev),
sys/dev/isa/fd.c
439
if (fdc->sc_knownfds[0] != NULL)
sys/dev/isa/fd.c
440
fdc->sc_present |= 1;
sys/dev/isa/fd.c
441
fdc->sc_knownfds[1] = fd_nvtotype(device_xname(fdc->sc_dev),
sys/dev/isa/fd.c
443
if (fdc->sc_knownfds[1] != NULL)
sys/dev/isa/fd.c
444
fdc->sc_present |= 2;
sys/dev/isa/fd.c
449
fdc->sc_state = PROBING;
sys/dev/isa/fd.c
451
if (fdc->sc_known) {
sys/dev/isa/fd.c
452
if (fdc->sc_present & (1 << fa.fa_drive)) {
sys/dev/isa/fd.c
453
fa.fa_deftype = fdc->sc_knownfds[fa.fa_drive];
sys/dev/isa/fd.c
454
config_found(fdc->sc_dev, (void *)&fa,
sys/dev/isa/fd.c
464
config_found(fdc->sc_dev, &fa, fdprint,
sys/dev/isa/fd.c
472
config_found(fdc->sc_dev, &fa, fdprint,
sys/dev/isa/fd.c
477
fdc->sc_state = DEVIDLE;
sys/dev/isa/fd.c
483
struct fdc_softc *fdc = device_private(parent);
sys/dev/isa/fd.c
487
bus_space_tag_t iot = fdc->sc_iot;
sys/dev/isa/fd.c
488
bus_space_handle_t ioh = fdc->sc_ioh;
sys/dev/isa/fd.c
503
if (fdc->sc_known)
sys/dev/isa/fd.c
506
mutex_enter(&fdc->sc_mtx);
sys/dev/isa/fd.c
510
(void) fdcresult(fdc);
sys/dev/isa/fd.c
516
(void) cv_timedwait(&fdc->sc_cv, &fdc->sc_mtx, hz / 4);
sys/dev/isa/fd.c
521
if (cv_timedwait(&fdc->sc_cv, &fdc->sc_mtx, 2 * hz) != EWOULDBLOCK){
sys/dev/isa/fd.c
528
n = fdcresult(fdc);
sys/dev/isa/fd.c
534
printf(" %x", fdc->sc_status[i]);
sys/dev/isa/fd.c
540
mutex_exit(&fdc->sc_mtx);
sys/dev/isa/fd.c
543
if (n != 2 || (fdc->sc_status[1] != 0))
sys/dev/isa/fd.c
546
if (n != 2 || (fdc->sc_status[0] & 0xf8) != 0x20)
sys/dev/isa/fd.c
559
struct fdc_softc *fdc = device_private(parent);
sys/dev/isa/fd.c
582
fdc->sc_fd[drive] = fd;
sys/dev/isa/fd.c
652
fd_nvtotype(const char *fdc, int nvraminfo, int drive)
sys/dev/isa/fd.c
683
fdc, drive, type);
sys/dev/isa/fd.c
703
struct fdc_softc *fdc = device_private(device_parent(fd->sc_dev));
sys/dev/isa/fd.c
746
mutex_enter(&fdc->sc_mtx);
sys/dev/isa/fd.c
753
if (fdc->sc_state == DEVIDLE) {
sys/dev/isa/fd.c
755
fdcstart(fdc);
sys/dev/isa/fd.c
759
mutex_exit(&fdc->sc_mtx);
sys/dev/isa/fd.c
771
struct fdc_softc *fdc = device_private(device_parent(fd->sc_dev));
sys/dev/isa/fd.c
772
int active = !TAILQ_EMPTY(&fdc->sc_drives);
sys/dev/isa/fd.c
774
KASSERT(mutex_owned(&fdc->sc_mtx));
sys/dev/isa/fd.c
777
TAILQ_INSERT_TAIL(&fdc->sc_drives, fd, sc_drivechain);
sys/dev/isa/fd.c
781
fdcstart(fdc);
sys/dev/isa/fd.c
787
struct fdc_softc *fdc = device_private(device_parent(fd->sc_dev));
sys/dev/isa/fd.c
798
TAILQ_REMOVE(&fdc->sc_drives, fd, sc_drivechain);
sys/dev/isa/fd.c
800
TAILQ_INSERT_TAIL(&fdc->sc_drives, fd, sc_drivechain);
sys/dev/isa/fd.c
812
fdc->sc_state = DEVIDLE;
sys/dev/isa/fd.c
830
fd_set_motor(struct fdc_softc *fdc, int reset)
sys/dev/isa/fd.c
836
if ((fd = TAILQ_FIRST(&fdc->sc_drives)) != NULL)
sys/dev/isa/fd.c
843
if ((fd = fdc->sc_fd[n]) && (fd->sc_flags & FD_MOTOR))
sys/dev/isa/fd.c
845
bus_space_write_1(fdc->sc_iot, fdc->sc_ioh, fdout, status);
sys/dev/isa/fd.c
852
struct fdc_softc *fdc;
sys/dev/isa/fd.c
854
fdc = device_private(device_parent(fd->sc_dev));
sys/dev/isa/fd.c
856
mutex_enter(&fdc->sc_mtx);
sys/dev/isa/fd.c
858
fd_set_motor(fdc, 0);
sys/dev/isa/fd.c
859
mutex_exit(&fdc->sc_mtx);
sys/dev/isa/fd.c
866
struct fdc_softc *fdc = device_private(device_parent(fd->sc_dev));
sys/dev/isa/fd.c
868
mutex_enter(&fdc->sc_mtx);
sys/dev/isa/fd.c
870
if (TAILQ_FIRST(&fdc->sc_drives) == fd && fdc->sc_state == MOTORWAIT)
sys/dev/isa/fd.c
871
(void)fdcintr1(fdc);
sys/dev/isa/fd.c
872
mutex_exit(&fdc->sc_mtx);
sys/dev/isa/fd.c
876
fdcresult(struct fdc_softc *fdc)
sys/dev/isa/fd.c
878
bus_space_tag_t iot = fdc->sc_iot;
sys/dev/isa/fd.c
879
bus_space_handle_t ioh = fdc->sc_ioh;
sys/dev/isa/fd.c
890
if (n >= sizeof(fdc->sc_status)) {
sys/dev/isa/fd.c
894
fdc->sc_status[n++] =
sys/dev/isa/fd.c
961
fdcstart(struct fdc_softc *fdc)
sys/dev/isa/fd.c
964
KASSERT(mutex_owned(&fdc->sc_mtx));
sys/dev/isa/fd.c
966
if (!device_is_active(fdc->sc_dev))
sys/dev/isa/fd.c
972
if (fdc->sc_state != DEVIDLE) {
sys/dev/isa/fd.c
977
(void)fdcintr1(fdc);
sys/dev/isa/fd.c
981
fdcpstatus(int n, struct fdc_softc *fdc)
sys/dev/isa/fd.c
990
snprintb(bits, sizeof(bits), NE7_ST0BITS, fdc->sc_status[0]);
sys/dev/isa/fd.c
991
printf(" (st0 %s cyl %d)\n", bits, fdc->sc_status[1]);
sys/dev/isa/fd.c
994
snprintb(bits, sizeof(bits), NE7_ST0BITS, fdc->sc_status[0]);
sys/dev/isa/fd.c
996
snprintb(bits, sizeof(bits), NE7_ST1BITS, fdc->sc_status[1]);
sys/dev/isa/fd.c
998
snprintb(bits, sizeof(bits), NE7_ST2BITS, fdc->sc_status[2]);
sys/dev/isa/fdc_isa.c
186
struct fdc_softc *fdc = &isc->sc_fdc;
sys/dev/isa/fdc_isa.c
191
isa_intr_disestablish(fdc->sc_ic, fdc->sc_ih);
sys/dev/isa/fdc_isa.c
193
bus_space_unmap(fdc->sc_iot, fdc->sc_fdctlioh, 1);
sys/dev/isa/fdc_isa.c
195
bus_space_unmap(fdc->sc_iot, isc->sc_baseioh, 6 /* FDC_NPORT */);
sys/dev/isa/fdc_isa.c
204
struct fdc_softc *fdc = &isc->sc_fdc;
sys/dev/isa/fdc_isa.c
210
fdc->sc_dev = self;
sys/dev/isa/fdc_isa.c
211
fdc->sc_iot = ia->ia_iot;
sys/dev/isa/fdc_isa.c
212
fdc->sc_ic = ia->ia_ic;
sys/dev/isa/fdc_isa.c
213
fdc->sc_drq = ia->ia_drq[0].ir_drq;
sys/dev/isa/fdc_isa.c
215
if (bus_space_map(fdc->sc_iot, ia->ia_io[0].ir_addr,
sys/dev/isa/fdc_isa.c
217
aprint_normal_dev(fdc->sc_dev, "unable to map I/O space\n");
sys/dev/isa/fdc_isa.c
221
if (bus_space_subregion(fdc->sc_iot, isc->sc_baseioh, 2, 4,
sys/dev/isa/fdc_isa.c
222
&fdc->sc_ioh)) {
sys/dev/isa/fdc_isa.c
223
aprint_normal_dev(fdc->sc_dev,
sys/dev/isa/fdc_isa.c
228
if (bus_space_map(fdc->sc_iot, ia->ia_io[0].ir_addr + fdctl + 2, 1, 0,
sys/dev/isa/fdc_isa.c
229
&fdc->sc_fdctlioh)) {
sys/dev/isa/fdc_isa.c
230
aprint_normal_dev(fdc->sc_dev,
sys/dev/isa/fdc_isa.c
235
fdc->sc_ih = isa_intr_establish(ia->ia_ic, ia->ia_irq[0].ir_irq,
sys/dev/isa/fdc_isa.c
236
IST_EDGE, IPL_BIO, fdcintr, fdc);
sys/dev/isa/fdc_isa.c
238
fdcattach(fdc);
sys/dev/pcmcia/fdc_pcmcia.c
103
(n = fdcresult(fdc, -1)) == -1)
sys/dev/pcmcia/fdc_pcmcia.c
119
(void)out_fdc(iot, ioh, fdc->sc_status[9]); /* same comp */
sys/dev/pcmcia/fdc_pcmcia.c
124
fdcresult(fdc, 1) != 1)
sys/dev/pcmcia/fdc_pcmcia.c
143
struct fdc_softc *fdc = &psc->sc_fdc;
sys/dev/pcmcia/fdc_pcmcia.c
150
fdc->sc_dev = self;
sys/dev/pcmcia/fdc_pcmcia.c
160
fdc->sc_iot = cfe->iospace[0].handle.iot;
sys/dev/pcmcia/fdc_pcmcia.c
161
fdc->sc_iot = cfe->iospace[0].handle.ioh;
sys/dev/pcmcia/fdc_pcmcia.c
166
fdc->sc_flags = FDC_HEADSETTLE;
sys/dev/pcmcia/fdc_pcmcia.c
167
fdc->sc_state = DEVIDLE;
sys/dev/pcmcia/fdc_pcmcia.c
168
TAILQ_INIT(&fdc->sc_drives);
sys/dev/pcmcia/fdc_pcmcia.c
170
if (!fdcfind(fdc->sc_iot, fdc->sc_ioh, 1))
sys/dev/pcmcia/fdc_pcmcia.c
173
fdc_conf(fdc);
sys/dev/pcmcia/fdc_pcmcia.c
176
fdc->sc_ih = pcmcia_intr_establish(pa->pf, IPL_BIO, fdchwintr, fdc);
sys/dev/pcmcia/fdc_pcmcia.c
177
if (!fdc->sc_ih)
sys/dev/pcmcia/fdc_pcmcia.c
76
fdc_conf(struct fdc_softc *fdc)
sys/dev/pcmcia/fdc_pcmcia.c
78
bus_space_tag_t iot = fdc->sc_iot;
sys/dev/pcmcia/fdc_pcmcia.c
79
bus_space_handle_t ioh = fdc->sc_ioh;
sys/dev/pcmcia/fdc_pcmcia.c
84
(n = fdcresult(fdc, 1)) != 1)
sys/dev/pcmcia/fdc_pcmcia.c
88
if (FDC_ST0(fdc->sc_status[0]) == FDC_ST0_INVL)
sys/dev/pcmcia/fdc_pcmcia.c
94
(n = fdcresult(fdc, 1)) != 1) {
sys/dev/pcmcia/fdc_pcmcia.c
99
printf("Version %x\n", fdc->sc_status[0]);
tests/lib/libc/sys/t_listen.c
53
int fda, fdb, fdc;
tests/lib/libc/sys/t_listen.c
68
fdc = open("listen", O_RDWR | O_CREAT, 0600);
tests/lib/libc/sys/t_listen.c
70
ATF_REQUIRE(fda >= 0 && fdb >= 0 && fdc >= 0);
tests/lib/libc/sys/t_listen.c
71
ATF_REQUIRE_ERRNO(ENOTSOCK, listen(fdc, 1) == -1);
tests/lib/libc/sys/t_listen.c
73
(void)close(fdc);