Lines Matching refs:csb

1076 	struct fdcsb *csb;  in fdrecalseek()  local
1083 csb = &fcp->c_csb; in fdrecalseek()
1084 csb->csb_cmd[1] = (uchar_t)unit; in fdrecalseek()
1086 *csb->csb_cmd = FO_RECAL; in fdrecalseek()
1087 csb->csb_ncmds = 2; in fdrecalseek()
1088 csb->csb_timer = 28; in fdrecalseek()
1090 *csb->csb_cmd = FO_SEEK; in fdrecalseek()
1091 csb->csb_cmd[2] = (uchar_t)arg; in fdrecalseek()
1092 csb->csb_ncmds = 3; in fdrecalseek()
1093 csb->csb_timer = 10; in fdrecalseek()
1095 csb->csb_nrslts = 2; /* 2 for SENSE INTERRUPTS */ in fdrecalseek()
1096 csb->csb_opflags = CSB_OFINRPT; in fdrecalseek()
1097 csb->csb_maxretry = skretry; in fdrecalseek()
1098 csb->csb_dmahandle = NULL; in fdrecalseek()
1099 csb->csb_handle_bound = 0; in fdrecalseek()
1100 csb->csb_dmacookiecnt = 0; in fdrecalseek()
1101 csb->csb_dmacurrcookie = 0; in fdrecalseek()
1102 csb->csb_dmawincnt = 0; in fdrecalseek()
1103 csb->csb_dmacurrwin = 0; in fdrecalseek()
1109 if (!(*csb->csb_rslt & S0_SEKEND) || in fdrecalseek()
1110 (*csb->csb_rslt & S0_ICMASK) || in fdrecalseek()
1111 ((*csb->csb_rslt & S0_ECHK) && arg < 0) || in fdrecalseek()
1112 csb->csb_cmdstat) in fdrecalseek()
1130 struct fdcsb *csb; in fdrw() local
1140 csb = &fcp->c_csb; in fdrw()
1143 csb->csb_opflags = CSB_OFDMARD | CSB_OFINRPT; in fdrw()
1144 *csb->csb_cmd = FO_MT | FO_MFM | FO_SK | FO_RDDAT; in fdrw()
1147 csb->csb_opflags = CSB_OFDMAWT | CSB_OFINRPT; in fdrw()
1148 *csb->csb_cmd = FO_MT | FO_MFM | FO_WRDAT; in fdrw()
1150 csb->csb_cmd[1] = (uchar_t)(unit | ((head & 0x1) << 2)); in fdrw()
1151 csb->csb_cmd[2] = (uchar_t)cyl; in fdrw()
1152 csb->csb_cmd[3] = (uchar_t)head; in fdrw()
1153 csb->csb_cmd[4] = (uchar_t)sector; in fdrw()
1155 &csb->csb_cmd[5]); in fdrw()
1156 csb->csb_cmd[6] = (uchar_t)max(fjp->fj_chars->fdc_secptrack, sector); in fdrw()
1157 csb->csb_cmd[7] = fjp->fj_attr->fda_gapl; in fdrw()
1158 csb->csb_cmd[8] = 0xFF; in fdrw()
1160 csb->csb_ncmds = 9; in fdrw()
1161 csb->csb_nrslts = 7; in fdrw()
1162 csb->csb_timer = 36; in fdrw()
1164 csb->csb_maxretry = 1; in fdrw()
1166 csb->csb_maxretry = rwretry; in fdrw()
1168 csb->csb_dmahandle = NULL; in fdrw()
1169 csb->csb_handle_bound = 0; in fdrw()
1170 csb->csb_dmacookiecnt = 0; in fdrw()
1171 csb->csb_dmacurrcookie = 0; in fdrw()
1172 csb->csb_dmawincnt = 0; in fdrw()
1173 csb->csb_dmacurrwin = 0; in fdrw()
1177 0, &csb->csb_dmahandle) != DDI_SUCCESS) { in fdrw()
1187 rval = ddi_dma_mem_alloc(csb->csb_dmahandle, len, &fdc_accattr, in fdrw()
1199 rval = ddi_dma_addr_bind_handle(csb->csb_dmahandle, NULL, aligned_buf, in fdrw()
1200 len, dmar_flags, DDI_DMA_SLEEP, 0, &csb->csb_dmacookie, in fdrw()
1201 &csb->csb_dmacookiecnt); in fdrw()
1204 csb->csb_dmawincnt = 1; in fdrw()
1205 csb->csb_handle_bound = 1; in fdrw()
1207 csb->csb_handle_bound = 1; in fdrw()
1208 if (ddi_dma_numwin(csb->csb_dmahandle, &csb->csb_dmawincnt) != in fdrw()
1227 if (csb->csb_dmahandle) { in fdrw()
1228 if (csb->csb_handle_bound) { in fdrw()
1229 if (ddi_dma_unbind_handle(csb->csb_dmahandle) != in fdrw()
1233 csb->csb_handle_bound = 0; in fdrw()
1238 ddi_dma_free_handle(&csb->csb_dmahandle); in fdrw()
1239 csb->csb_dmahandle = NULL; in fdrw()
1249 struct fdcsb *csb; in fdtrkformat() local
1262 csb = &fcp->c_csb; in fdtrkformat()
1264 csb->csb_opflags = CSB_OFDMAWT | CSB_OFINRPT; in fdtrkformat()
1266 *csb->csb_cmd = FO_FRMT | FO_MFM; in fdtrkformat()
1267 csb->csb_cmd[1] = (head << 2) | unit; in fdtrkformat()
1269 &csb->csb_cmd[2]); in fdtrkformat()
1270 csb->csb_cmd[3] = numsctr = fjp->fj_chars->fdc_secptrack; in fdtrkformat()
1271 csb->csb_cmd[4] = fjp->fj_attr->fda_gapf; in fdtrkformat()
1272 csb->csb_cmd[5] = (uchar_t)filldata; in fdtrkformat()
1274 csb->csb_npcyl = (uchar_t)(cyl * fjp->fj_chars->fdc_steps); in fdtrkformat()
1276 csb->csb_dmahandle = NULL; in fdtrkformat()
1277 csb->csb_handle_bound = 0; in fdtrkformat()
1278 csb->csb_dmacookiecnt = 0; in fdtrkformat()
1279 csb->csb_dmacurrcookie = 0; in fdtrkformat()
1280 csb->csb_dmawincnt = 0; in fdtrkformat()
1281 csb->csb_dmacurrwin = 0; in fdtrkformat()
1282 csb->csb_ncmds = 6; in fdtrkformat()
1283 csb->csb_nrslts = 7; in fdtrkformat()
1284 csb->csb_timer = 32; in fdtrkformat()
1285 csb->csb_maxretry = rwretry; in fdtrkformat()
1296 0, &csb->csb_dmahandle) != DDI_SUCCESS) { in fdtrkformat()
1306 rval = ddi_dma_mem_alloc(csb->csb_dmahandle, fmdatlen, &fdc_accattr, in fdtrkformat()
1323 *dp++ = csb->csb_cmd[2]; in fdtrkformat()
1327 rval = ddi_dma_addr_bind_handle(csb->csb_dmahandle, NULL, aligned_buf, in fdtrkformat()
1329 DDI_DMA_SLEEP, 0, &csb->csb_dmacookie, &csb->csb_dmacookiecnt); in fdtrkformat()
1332 csb->csb_dmawincnt = 1; in fdtrkformat()
1333 csb->csb_handle_bound = 1; in fdtrkformat()
1335 csb->csb_handle_bound = 1; in fdtrkformat()
1336 if (ddi_dma_numwin(csb->csb_dmahandle, &csb->csb_dmawincnt) != in fdtrkformat()
1352 if (csb->csb_dmahandle) { in fdtrkformat()
1353 if (csb->csb_handle_bound) { in fdtrkformat()
1354 if (ddi_dma_unbind_handle(csb->csb_dmahandle) != in fdtrkformat()
1358 csb->csb_handle_bound = 0; in fdtrkformat()
1363 ddi_dma_free_handle(&csb->csb_dmahandle); in fdtrkformat()
1364 csb->csb_dmahandle = NULL; in fdtrkformat()
1374 struct fdcsb *csb; in fdrawioctl() local
1390 csb = &fcp->c_csb; in fdrawioctl()
1394 csb->csb_cmd[i] = fdrp->fdr_cmd[i]; in fdrawioctl()
1395 csb->csb_ncmds = (uchar_t)fdrp->fdr_cnum; in fdrawioctl()
1397 csb->csb_maxretry = 0; /* let the application deal with errors */ in fdrawioctl()
1398 csb->csb_opflags = CSB_OFRAWIOCTL; in fdrawioctl()
1399 csb->csb_nrslts = 0; in fdrawioctl()
1400 csb->csb_timer = 50; in fdrawioctl()
1408 csb->csb_opflags |= CSB_OFINRPT; in fdrawioctl()
1412 csb->csb_npcyl = *(uchar_t *)(fdrp->fdr_addr) * in fdrawioctl()
1417 csb->csb_opflags |= CSB_OFDMAWT | CSB_OFRESLT | CSB_OFINRPT; in fdrawioctl()
1418 csb->csb_nrslts = 7; in fdrawioctl()
1427 csb->csb_opflags |= CSB_OFDMARD | CSB_OFRESLT | CSB_OFINRPT; in fdrawioctl()
1428 csb->csb_nrslts = 7; in fdrawioctl()
1433 csb->csb_opflags |= CSB_OFRESLT | CSB_OFINRPT; in fdrawioctl()
1434 csb->csb_nrslts = 7; in fdrawioctl()
1439 csb->csb_nrslts = 1; in fdrawioctl()
1445 csb->csb_nrslts = 2; in fdrawioctl()
1457 csb->csb_dmahandle = NULL; in fdrawioctl()
1458 csb->csb_handle_bound = 0; in fdrawioctl()
1459 csb->csb_dmacookiecnt = 0; in fdrawioctl()
1460 csb->csb_dmacurrcookie = 0; in fdrawioctl()
1461 csb->csb_dmawincnt = 0; in fdrawioctl()
1462 csb->csb_dmacurrwin = 0; in fdrawioctl()
1464 if (csb->csb_opflags & (CSB_OFDMARD | CSB_OFDMAWT)) { in fdrawioctl()
1466 DDI_DMA_SLEEP, 0, &csb->csb_dmahandle) != DDI_SUCCESS) { in fdrawioctl()
1476 rval = ddi_dma_mem_alloc(csb->csb_dmahandle, in fdrawioctl()
1490 rval = ddi_dma_addr_bind_handle(csb->csb_dmahandle, NULL, in fdrawioctl()
1492 DDI_DMA_SLEEP, 0, &csb->csb_dmacookie, in fdrawioctl()
1493 &csb->csb_dmacookiecnt); in fdrawioctl()
1496 csb->csb_dmawincnt = 1; in fdrawioctl()
1497 csb->csb_handle_bound = 1; in fdrawioctl()
1499 csb->csb_handle_bound = 1; in fdrawioctl()
1500 if (ddi_dma_numwin(csb->csb_dmahandle, in fdrawioctl()
1501 &csb->csb_dmawincnt) != DDI_SUCCESS) { in fdrawioctl()
1516 (CE_CONT, "cmd: %x %x %x %x %x %x %x %x %x %x\n", csb->csb_cmd[0], in fdrawioctl()
1517 csb->csb_cmd[1], csb->csb_cmd[2], csb->csb_cmd[3], in fdrawioctl()
1518 csb->csb_cmd[4], csb->csb_cmd[5], csb->csb_cmd[6], in fdrawioctl()
1519 csb->csb_cmd[7], csb->csb_cmd[8], csb->csb_cmd[9])); in fdrawioctl()
1522 csb->csb_ncmds, csb->csb_opflags, (void *)fdrp->fdr_addr, in fdrawioctl()
1543 (CE_CONT, "rslt: %x %x %x %x %x %x %x %x %x %x\n", csb->csb_rslt[0], in fdrawioctl()
1544 csb->csb_rslt[1], csb->csb_rslt[2], csb->csb_rslt[3], in fdrawioctl()
1545 csb->csb_rslt[4], csb->csb_rslt[5], csb->csb_rslt[6], in fdrawioctl()
1546 csb->csb_rslt[7], csb->csb_rslt[8], csb->csb_rslt[9])); in fdrawioctl()
1549 for (i = 0; i <= (int)csb->csb_nrslts; i++) in fdrawioctl()
1550 fdrp->fdr_result[i] = csb->csb_rslt[i]; in fdrawioctl()
1554 if (csb->csb_dmahandle) { in fdrawioctl()
1555 if (csb->csb_handle_bound) { in fdrawioctl()
1556 if (ddi_dma_unbind_handle(csb->csb_dmahandle) != in fdrawioctl()
1560 csb->csb_handle_bound = 0; in fdrawioctl()
1565 ddi_dma_free_handle(&csb->csb_dmahandle); in fdrawioctl()
1566 csb->csb_dmahandle = NULL; in fdrawioctl()
1705 fdcreadid(struct fdcntlr *fcp, struct fdcsb *csb) in fdcreadid() argument
1709 readidcmd[1] = csb->csb_cmd[1]; in fdcreadid()
2075 struct fdcsb *csb = &fcp->c_csb; in fdmotort() local
2090 (csb->csb_xstate == FXS_MTRON || csb->csb_xstate == FXS_HDST || in fdmotort()
2091 csb->csb_xstate == FXS_DKCHGX)) { in fdmotort()
2118 struct fdcsb *csb = &fcp->c_csb; in fdc_dmae_isr() local
2122 if (csb->csb_dmahandle && !csb->csb_cmdstat) { in fdc_dmae_isr()
2123 if (++csb->csb_dmacurrcookie < csb->csb_dmacookiecnt) { in fdc_dmae_isr()
2124 ddi_dma_nextcookie(csb->csb_dmahandle, in fdc_dmae_isr()
2125 &csb->csb_dmacookie); in fdc_dmae_isr()
2126 return (&csb->csb_dmacookie); in fdc_dmae_isr()
2127 } else if (++csb->csb_dmacurrwin < csb->csb_dmawincnt) { in fdc_dmae_isr()
2128 if (ddi_dma_getwin(csb->csb_dmahandle, in fdc_dmae_isr()
2129 csb->csb_dmacurrwin, &off, &len, in fdc_dmae_isr()
2130 &csb->csb_dmacookie, in fdc_dmae_isr()
2131 &csb->csb_dmacookiecnt) != DDI_SUCCESS) { in fdc_dmae_isr()
2134 csb->csb_dmacurrcookie = 0; in fdc_dmae_isr()
2135 return (&csb->csb_dmacookie); in fdc_dmae_isr()
2159 struct fdcsb *csb; in fdc_exec() local
2167 csb = &fcp->c_csb; in fdc_exec()
2168 unit = csb->csb_drive; in fdc_exec()
2171 if (csb->csb_opflags & CSB_OFINRPT) { in fdc_exec()
2172 if (*csb->csb_cmd == FO_RECAL) in fdc_exec()
2173 csb->csb_npcyl = 0; in fdc_exec()
2174 else if ((*csb->csb_cmd & ~FO_MFM) != FO_FRMT) in fdc_exec()
2175 csb->csb_npcyl = in fdc_exec()
2176 csb->csb_cmd[2] * fjp->fj_chars->fdc_steps; in fdc_exec()
2177 csb->csb_xstate = FXS_START; in fdc_exec()
2179 csb->csb_xstate = FXS_DOIT; in fdc_exec()
2180 csb->csb_retrys = 0; in fdc_exec()
2181 csb->csb_ourtrys = 0; in fdc_exec()
2183 if (csb->csb_dmahandle) { in fdc_exec()
2190 if ((*csb->csb_cmd & ~FO_MFM) == FO_FRMT && in fdc_exec()
2191 (4 * csb->csb_cmd[3]) != csb->csb_dmacookie.dmac_size) { in fdc_exec()
2233 (CE_WARN, "diskette %d changed!!!", csb->csb_drive)); in fdc_exec()
2242 if (*csb->csb_cmd == FO_SDRV) { in fdc_exec()
2262 switch (csb->csb_cmd[0] & 0x1f) { in fdc_exec()
2280 bzero(csb->csb_rslt, 10); in fdc_exec()
2281 csb->csb_cmdstat = 0; in fdc_exec()
2283 if (csb->csb_dmahandle) { in fdc_exec()
2285 dmaereq.der_command = (csb->csb_opflags & CSB_OFDMAWT) ? in fdc_exec()
2293 if (ddi_dmae_prog(fcp->c_dip, &dmaereq, &csb->csb_dmacookie, in fdc_exec()
2304 if (!csb->csb_nrslts) { in fdc_exec()
2333 if (csb->csb_cmdstat && *csb->csb_cmd != FO_SDRV) { in fdc_exec()
2340 if (csb->csb_xstate == FXS_END) in fdc_exec()
2341 csb->csb_xstate = FXS_START; in fdc_exec()
2342 if (fdc_dma_attr.dma_attr_sgllen > 1 && csb->csb_dmahandle) { in fdc_exec()
2347 if (ddi_dma_getwin(csb->csb_dmahandle, in fdc_exec()
2348 csb->csb_dmacurrwin, &off, &len, in fdc_exec()
2349 &csb->csb_dmacookie, in fdc_exec()
2350 &csb->csb_dmacookiecnt) != DDI_SUCCESS) { in fdc_exec()
2355 csb->csb_dmacurrcookie = 0; in fdc_exec()
2373 struct fdcsb *csb = &fcp->c_csb; in fdcheckdisk() local
2388 save_cmd = *csb->csb_cmd; in fdcheckdisk()
2389 save_cd1 = csb->csb_cmd[1]; in fdcheckdisk()
2390 save_npcyl = csb->csb_npcyl; in fdcheckdisk()
2391 save_xstate = csb->csb_xstate; in fdcheckdisk()
2393 *csb->csb_cmd = FO_SEEK; in fdcheckdisk()
2394 csb->csb_cmd[1] = (uchar_t)unit; in fdcheckdisk()
2395 csb->csb_npcyl = (uchar_t)newcyl; in fdcheckdisk()
2403 csb->csb_xstate = FXS_DKCHGX; in fdcheckdisk()
2408 csb->csb_xstate = FXS_SEEK; in fdcheckdisk()
2434 *csb->csb_cmd = save_cmd; in fdcheckdisk()
2435 csb->csb_cmd[1] = save_cd1; in fdcheckdisk()
2436 csb->csb_npcyl = save_npcyl; in fdcheckdisk()
2437 csb->csb_xstate = save_xstate; in fdcheckdisk()
2445 struct fdcsb *csb = &fcp->c_csb; in fdrecover() local
2451 (CE_NOTE, "fdrecover unit %d", csb->csb_drive)); in fdrecover()
2453 unit = csb->csb_drive; in fdrecover()
2457 csb->csb_rslt[1] |= 0x08; in fdrecover()
2459 (CE_WARN, "fd unit %d: %s timed out", csb->csb_drive, in fdrecover()
2460 fdcmds[*csb->csb_cmd & 0x1f].cmdname)); in fdrecover()
2463 if (csb->csb_status & S0_SEKEND) in fdrecover()
2466 switch (csb->csb_oldxs) { in fdrecover()
2471 "fd unit %d: %s error: st0=0x%x pcn=%d", csb->csb_drive, in fdrecover()
2472 fdcmds[*csb->csb_cmd & 0x1f].cmdname, in fdrecover()
2473 *csb->csb_rslt, csb->csb_rslt[1])); in fdrecover()
2474 if (csb->csb_retrys++ < skretry && in fdrecover()
2475 !(csb->csb_opflags & CSB_OFRAWIOCTL)) in fdrecover()
2480 if (!(csb->csb_status & S0_SEKEND)) in fdrecover()
2481 csb->csb_xstate = FXS_HDST; in fdrecover()
2485 if (csb->csb_opflags & (CSB_OFDMARD | CSB_OFDMAWT)) { in fdrecover()
2497 csb->csb_drive, in fdrecover()
2498 fdcmds[*csb->csb_cmd & 0x1f].cmdname, in fdrecover()
2499 csb->csb_dmacookie.dmac_size, residual)); in fdrecover()
2501 if (csb->csb_rslt[1] == S1_OVRUN) in fdrecover()
2506 if (++csb->csb_ourtrys <= OURUN_TRIES) { in fdrecover()
2510 csb->csb_drive, in fdrecover()
2511 fdcmds[*csb->csb_cmd & 0x1f].cmdname)); in fdrecover()
2518 csb->csb_ourtrys = 0; in fdrecover()
2521 !(csb->csb_opflags & CSB_OFRAWIOCTL)) { in fdrecover()
2526 if (csb->csb_rslt[1] & S1_CRCER) in fdrecover()
2528 if (csb->csb_rslt[1] & S1_OVRUN) in fdrecover()
2530 if (csb->csb_rslt[1] & (S1_NODATA | S1_MADMK)) in fdrecover()
2532 if (csb->csb_rslt[1] & 0x08) in fdrecover()
2538 if (csb->csb_retrys++ < csb->csb_maxretry && in fdrecover()
2539 (*csb->csb_cmd & ~FO_MFM) != FO_FRMT) { in fdrecover()
2540 if (csb->csb_opflags & in fdrecover()
2546 csb->csb_drive, in fdrecover()
2547 fdcmds[*csb->csb_cmd & in fdrecover()
2549 *csb->csb_rslt, csb->csb_rslt[1], in fdrecover()
2550 csb->csb_rslt[2])); in fdrecover()
2552 if ((csb->csb_retrys & 1) && in fdrecover()
2553 csb->csb_xstate == FXS_END) in fdrecover()
2554 csb->csb_xstate = FXS_DOIT; in fdrecover()
2555 else if (csb->csb_retrys == 3) in fdrecover()
2556 csb->csb_xstate = FXS_RESTART; in fdrecover()
2559 if (csb->csb_rslt[1] & S1_CRCER) in fdrecover()
2561 else if (csb->csb_rslt[1] & S1_OVRUN) in fdrecover()
2563 else if (csb->csb_rslt[1] & (S1_NODATA | S1_MADMK)) in fdrecover()
2565 else if (csb->csb_rslt[1] & 0x08) in fdrecover()
2570 csb->csb_drive, in fdrecover()
2571 fdcmds[*csb->csb_cmd & 0x1f].cmdname, failure, in fdrecover()
2572 *csb->csb_rslt, csb->csb_rslt[1], csb->csb_rslt[2]); in fdrecover()
2576 csb->csb_drive, in fdrecover()
2577 fdcmds[*csb->csb_cmd & 0x1f].cmdname, in fdrecover()
2578 *csb->csb_rslt, csb->csb_rslt[1], in fdrecover()
2579 csb->csb_rslt[2])); in fdrecover()
2586 csb->csb_drive, fdcmds[*csb->csb_cmd & 0x1f].cmdname, in fdrecover()
2587 *csb->csb_rslt, csb->csb_rslt[1], csb->csb_rslt[2])); in fdrecover()
2599 struct fdcsb *csb; in fdc_intr() local
2609 csb = &fcp->c_csb; in fdc_intr()
2632 csb->csb_drive, csb->csb_xstate, state)); in fdc_intr()
2644 (!(state & 0x0f) || ((1 << csb->csb_drive) & state))) { in fdc_intr()
2663 if (csb->csb_dmahandle && !csb->csb_cmdstat && in fdc_intr()
2668 ((csb->csb_dmacurrcookie < in fdc_intr()
2669 (csb->csb_dmacookiecnt - 1)) || in fdc_intr()
2670 (csb->csb_dmacurrwin) < (csb->csb_dmawincnt - 1))) { in fdc_intr()
2676 if (++csb->csb_dmacurrcookie < in fdc_intr()
2677 csb->csb_dmacookiecnt) { in fdc_intr()
2678 ddi_dma_nextcookie(csb->csb_dmahandle, in fdc_intr()
2679 &csb->csb_dmacookie); in fdc_intr()
2680 } else if (++csb->csb_dmacurrwin < in fdc_intr()
2681 csb->csb_dmawincnt) { in fdc_intr()
2682 if (ddi_dma_getwin(csb->csb_dmahandle, in fdc_intr()
2683 csb->csb_dmacurrwin, &off, &blklen, in fdc_intr()
2684 &csb->csb_dmacookie, in fdc_intr()
2685 &csb->csb_dmacookiecnt) != in fdc_intr()
2691 csb->csb_dmacurrcookie = 0; in fdc_intr()
2695 &csb->csb_dmacookie, fcp->c_dmachan) != in fdc_intr()
2707 csb->csb_cmd[2] = csb->csb_rslt[3]; in fdc_intr()
2708 csb->csb_cmd[3] = csb->csb_rslt[4]; in fdc_intr()
2709 csb->csb_cmd[4] = csb->csb_rslt[5]; in fdc_intr()
2710 csb->csb_cmd[1] = (csb->csb_cmd[1] & ~0x04) | in fdc_intr()
2711 (csb->csb_cmd[3] << 2); in fdc_intr()
2713 csb->csb_xstate = FXS_START; in fdc_intr()
2724 csb->csb_cmdstat = EIO; in fdc_intr()
2750 csb->csb_drive, state)); in fdc_intr()
2771 struct fdcsb *csb; in fdwatch() local
2788 csb = &fcp->c_csb; in fdwatch()
2791 csb->csb_drive, csb->csb_xstate)); in fdwatch()
2798 csb->csb_xstate = FXS_KILL; in fdwatch()
2805 csb->csb_xstate = FXS_END; in fdwatch()
2810 csb->csb_cmdstat = EIO; in fdwatch()
2827 struct fdcsb *csb = &fcp->c_csb; in fdc_statemach() local
2834 unit = csb->csb_drive; in fdc_statemach()
2837 csb->csb_oldxs = csb->csb_xstate; in fdc_statemach()
2838 switch (csb->csb_xstate) { in fdc_statemach()
2842 time = drv_usectohz(100000 * (unsigned int)csb->csb_timer); in fdc_statemach()
2851 csb->csb_xstate = FXS_MTRON; in fdc_statemach()
2862 if (fcp->c_curpcyl[unit] != -1 && *csb->csb_cmd != FO_RECAL) in fdc_statemach()
2868 csb->csb_cmdstat = EIO; in fdc_statemach()
2869 csb->csb_xstate = FXS_RESET; in fdc_statemach()
2873 csb->csb_xstate = FXS_RCAL; in fdc_statemach()
2879 if (csb->csb_opflags & CSB_OFRAWIOCTL && in fdc_statemach()
2880 *csb->csb_cmd == FO_RECAL) { in fdc_statemach()
2882 csb->csb_status = 0; in fdc_statemach()
2891 (void) fdc_result(fcp, csb->csb_rslt, 2); in fdc_statemach()
2896 if ((csb->csb_status = ((*csb->csb_rslt ^ S0_SEKEND) & in fdc_statemach()
2900 csb->csb_drive, *csb->csb_rslt)); in fdc_statemach()
2902 csb->csb_cmdstat = EIO; in fdc_statemach()
2903 csb->csb_xstate = FXS_RESET; in fdc_statemach()
2906 if (unit != (*csb->csb_rslt & 3) || csb->csb_rslt[1]) { in fdc_statemach()
2907 csb->csb_status = S0_SEKEND; in fdc_statemach()
2910 fcp->c_curpcyl[unit] = csb->csb_rslt[1]; in fdc_statemach()
2911 if (*csb->csb_cmd == FO_RECAL) in fdc_statemach()
2914 if (*csb->csb_cmd != FO_SEEK && in fdc_statemach()
2915 csb->csb_npcyl == fcp->c_curpcyl[unit]) in fdc_statemach()
2917 fcp->c_sekdir[unit] = csb->csb_npcyl - fcp->c_curpcyl[unit]; in fdc_statemach()
2921 (void) fdcseek(fcp, csb->csb_cmd[1], csb->csb_npcyl); in fdc_statemach()
2926 csb->csb_xstate = FXS_SEEK; in fdc_statemach()
2931 time = drv_usectohz(100000 * csb->csb_timer); in fdc_statemach()
2940 if ((csb->csb_npcyl == 0 || fcp->c_sekdir[unit] >= 0) && in fdc_statemach()
2941 (int)csb->csb_cmd[2] < (fjp->fj_chars->fdc_ncyl - 1)) in fdc_statemach()
2942 backoff = csb->csb_npcyl + 1; in fdc_statemach()
2944 backoff = csb->csb_npcyl - 1; in fdc_statemach()
2945 (void) fdcseek(fcp, csb->csb_cmd[1], backoff); in fdc_statemach()
2950 csb->csb_xstate = FXS_RESEEK; in fdc_statemach()
2959 (void) fdc_result(fcp, csb->csb_rslt, 2); in fdc_statemach()
2964 if ((csb->csb_status = ((*csb->csb_rslt ^ S0_SEKEND) & in fdc_statemach()
2967 (void) fdcseek(fcp, csb->csb_cmd[1], csb->csb_npcyl); in fdc_statemach()
2972 csb->csb_xstate = FXS_SEEK; in fdc_statemach()
2979 if (csb->csb_opflags & CSB_OFRAWIOCTL) { in fdc_statemach()
2980 fcp->c_curpcyl[unit] = csb->csb_npcyl; in fdc_statemach()
2981 csb->csb_status = 0; in fdc_statemach()
2990 (void) fdc_result(fcp, csb->csb_rslt, 2); in fdc_statemach()
2995 if ((csb->csb_status = ((*csb->csb_rslt ^ S0_SEKEND) & in fdc_statemach()
2998 if (unit != (*csb->csb_rslt & 3) || in fdc_statemach()
2999 csb->csb_rslt[1] != csb->csb_npcyl) { in fdc_statemach()
3000 csb->csb_status = S0_SEKEND; in fdc_statemach()
3003 fcp->c_curpcyl[unit] = csb->csb_rslt[1]; in fdc_statemach()
3012 csb->csb_xstate = FXS_HDST; in fdc_statemach()
3016 if (*csb->csb_cmd == FO_SEEK) in fdc_statemach()
3018 if ((*csb->csb_cmd & ~FO_MFM) == FO_FRMT) in fdc_statemach()
3020 fdcreadid(fcp, csb); in fdc_statemach()
3021 csb->csb_xstate = FXS_RDID; in fdc_statemach()
3025 (void) fdc_result(fcp, csb->csb_rslt, 7); in fdc_statemach()
3030 if ((csb->csb_status = (*csb->csb_rslt & in fdc_statemach()
3033 if (csb->csb_cmd[2] != csb->csb_rslt[3]) { in fdc_statemach()
3035 csb->csb_status = S0_SEKEND; in fdc_statemach()
3042 time = drv_usectohz(100000 * csb->csb_timer); in fdc_statemach()
3047 if (fdc_docmd(fcp, csb->csb_cmd, csb->csb_ncmds) == -1) { in fdc_statemach()
3050 csb->csb_xstate = FXS_RESET; in fdc_statemach()
3051 csb->csb_cmdstat = EIO; in fdc_statemach()
3054 csb->csb_xstate = FXS_DOWT; in fdc_statemach()
3058 (void) fdc_result(fcp, csb->csb_rslt, csb->csb_nrslts); in fdc_statemach()
3063 if (*csb->csb_cmd == FO_SDRV) { in fdc_statemach()
3064 csb->csb_status = in fdc_statemach()
3065 (*csb->csb_rslt ^ (S3_DRRDY | S3_2SIDE)) & in fdc_statemach()
3068 csb->csb_status = *csb->csb_rslt & in fdc_statemach()
3072 if (csb->csb_status) in fdc_statemach()
3073 csb->csb_cmdstat = EIO; in fdc_statemach()
3074 csb->csb_xstate = FXS_END; in fdc_statemach()
3091 csb->csb_xstate = FXS_RESET; in fdc_statemach()
3107 csb->csb_xstate = FXS_END; in fdc_statemach()
3116 csb->csb_drive, csb->csb_oldxs, csb->csb_xstate)); in fdc_statemach()
3117 return (csb->csb_xstate); in fdc_statemach()