Lines Matching refs:fjp

84 static int fd_get_media_info(struct fcu_obj *fjp, caddr_t buf, int flag);
222 struct fcu_obj *fjp = NULL; in fd_getinfo() local
228 (void) fd_getdrive(dev, &fjp, &fdp); in fd_getinfo()
233 if (fjp && fdp) { in fd_getinfo()
234 *result = fjp->fj_dip; in fd_getinfo()
339 struct fcu_obj *fjp; in fd_attach() local
423 fjp = fdp->d_obj = ddi_get_driver_private(dip); in fd_attach()
425 mutex_init(&fjp->fj_lock, NULL, MUTEX_DRIVER, *fjp->fj_iblock); in fd_attach()
428 fjp->fj_drive = (struct fd_drive *)(fdp + 1); in fd_attach()
429 fjp->fj_chars = (struct fd_char *)(fjp->fj_drive + 1); in fd_attach()
430 fjp->fj_attr = (struct fdattr *)(fjp->fj_chars + 1); in fd_attach()
437 *fjp->fj_drive = dfd_525HD; in fd_attach()
443 *fjp->fj_drive = dfd_350HD; in fd_attach()
450 if (mode_3D && (fjp->fj_fdc->c_flags & FCFLG_3DMODE)) in fd_attach()
460 *fjp->fj_drive = dfd_525DD; in fd_attach()
466 *fjp->fj_drive = dfd_350HD; in fd_attach()
473 *fjp->fj_drive = dfd_350ED; in fd_attach()
482 *fjp->fj_chars = *defchar[fdp->d_deffdtype]; in fd_attach()
483 *fjp->fj_attr = fdtypes[fdp->d_deffdtype]; in fd_attach()
486 fjp->fj_rotspd = fdtypes[fdp->d_deffdtype].fda_rotatespd; in fd_attach()
505 fdp->d_iostat->ks_lock = &fjp->fj_lock; in fd_attach()
509 fjp->fj_data = (caddr_t)fdp; in fd_attach()
510 fjp->fj_flags |= FUNIT_DRVATCH; in fd_attach()
541 fjp->fj_drive = NULL; in fd_attach()
542 fjp->fj_chars = NULL; in fd_attach()
543 fjp->fj_attr = NULL; in fd_attach()
544 mutex_destroy(&fjp->fj_lock); in fd_attach()
558 struct fcu_obj *fjp; in fd_detach() local
578 fjp = (struct fcu_obj *)fdp->d_obj; in fd_detach()
579 fjp->fj_flags &= ~FUNIT_DRVATCH; in fd_detach()
580 fjp->fj_data = NULL; in fd_detach()
581 fjp->fj_drive = NULL; in fd_detach()
582 fjp->fj_chars = NULL; in fd_detach()
583 fjp->fj_attr = NULL; in fd_detach()
585 mutex_destroy(&fjp->fj_lock); in fd_detach()
651 struct fcu_obj *fjp = NULL; in fd_open() local
661 unit = fd_getdrive(dev, &fjp, &fdp); in fd_open()
662 if (!fjp || !fdp) in fd_open()
698 fjp->fj_ops->fco_select(fjp, unit, 1); in fd_open()
699 if (fjp->fj_ops->fco_getchng(fjp, unit) != 0) { in fd_open()
700 if (fjp->fj_ops->fco_rcseek(fjp, unit, -1, 0)) { in fd_open()
703 fjp->fj_ops->fco_select(fjp, unit, 0); in fd_open()
707 fjp->fj_flags &= ~(FUNIT_LABELOK | FUNIT_UNLABELED); in fd_open()
711 fjp->fj_ops->fco_select(fjp, unit, 0); in fd_open()
718 rval = fdgetlabel(fjp, unit); in fd_open()
719 fjp->fj_ops->fco_select(fjp, unit, 0); in fd_open()
764 fdgetlabel(struct fcu_obj *fjp, int unit) in fdgetlabel() argument
780 fdp = (struct fdisk *)fjp->fj_data; in fdgetlabel()
781 fjp->fj_flags &= ~(FUNIT_UNLABELED); in fdgetlabel()
810 fjp->fj_flags &= ~FUNIT_CHAROK; in fdgetlabel()
813 if (!(rval = fjp->fj_ops->fco_rw(fjp, unit, in fdgetlabel()
814 FDREAD, 1, 0, fjp->fj_chars->fdc_secptrack, in fdgetlabel()
818 fjp->fj_ops->fco_rw(fjp, unit, FDREAD, 1, in fdgetlabel()
819 0, fjp->fj_chars->fdc_secptrack + 1, in fdgetlabel()
823 !(rval = fjp->fj_ops->fco_rw(fjp, unit, in fdgetlabel()
836 *fjp->fj_chars = *defchar[fdp->d_curfdtype]; in fdgetlabel()
837 *fjp->fj_attr = fdtypes[fdp->d_curfdtype]; in fdgetlabel()
844 if (fjp->fj_chars->fdc_transfer_rate == 250 && in fdgetlabel()
845 fjp->fj_rotspd > fjp->fj_attr->fda_rotatespd) { in fdgetlabel()
850 fjp->fj_attr->fda_rotatespd = 360; in fdgetlabel()
851 fjp->fj_chars->fdc_transfer_rate = 300; in fdgetlabel()
852 fjp->fj_chars->fdc_medium = 5; in fdgetlabel()
854 if ((2 * fjp->fj_chars->fdc_ncyl) == in fdgetlabel()
857 fjp->fj_chars->fdc_steps = 2; in fdgetlabel()
859 fjp->fj_chars->fdc_steps = 1; in fdgetlabel()
874 unit, fjp->fj_chars->fdc_ncyl, fjp->fj_chars->fdc_secptrack, in fdgetlabel()
875 fjp->fj_chars->fdc_steps, fjp->fj_attr->fda_rotatespd, in fdgetlabel()
876 fjp->fj_attr->fda_intrlv)); in fdgetlabel()
900 fjp->fj_chars->fdc_ncyl = label->dkl_pcyl; in fdgetlabel()
901 fjp->fj_chars->fdc_nhead = label->dkl_nhead; in fdgetlabel()
902 fjp->fj_chars->fdc_secptrack = (label->dkl_nsect * DEV_BSIZE) / in fdgetlabel()
903 fjp->fj_chars->fdc_sec_size; in fdgetlabel()
904 if (defchar[fdp->d_deffdtype]->fdc_ncyl == 2 * fjp->fj_chars->fdc_ncyl) in fdgetlabel()
905 fjp->fj_chars->fdc_steps = 2; in fdgetlabel()
907 fjp->fj_chars->fdc_steps = 1; in fdgetlabel()
909 fjp->fj_attr->fda_rotatespd = label->dkl_rpm; in fdgetlabel()
910 fjp->fj_attr->fda_intrlv = label->dkl_intrlv; in fdgetlabel()
928 fjp->fj_flags |= FUNIT_LABELOK; in fdgetlabel()
941 fjp->fj_chars->fdc_ncyl, fjp->fj_chars->fdc_nhead, in fdgetlabel()
942 fjp->fj_chars->fdc_secptrack); in fdgetlabel()
943 fjp->fj_flags |= FUNIT_UNLABELED; in fdgetlabel()
955 struct fcu_obj *fjp = NULL; in fd_close() local
966 DEBUG_ASSIGN fd_getdrive(dev, &fjp, &fdp); in fd_close()
971 if (!fjp || !fdp) in fd_close()
1029 struct fcu_obj *fjp; in fd_strategy() local
1037 (void) fd_getdrive(bp->b_edev, &fjp, &fdp); in fd_strategy()
1045 if (fjp->fj_chars->fdc_sec_size > NBPSCTR && (bp->b_blkno & 1)) { in fd_strategy()
1074 if (bp->b_bcount % fjp->fj_chars->fdc_sec_size) { in fd_strategy()
1078 fjp->fj_chars->fdc_sec_size)); in fd_strategy()
1087 mutex_enter(&fjp->fj_lock); in fd_strategy()
1095 if (!(fjp->fj_flags & FUNIT_BUSY)) { in fd_strategy()
1096 fdstart(fjp); in fd_strategy()
1098 mutex_exit(&fjp->fj_lock); in fd_strategy()
1118 fdstart(struct fcu_obj *fjp) in fdstart() argument
1121 struct fdisk *fdp = (struct fdisk *)fjp->fj_data; in fdstart()
1132 ASSERT(MUTEX_HELD(&fjp->fj_lock)); in fdstart()
1133 fjp->fj_flags |= FUNIT_BUSY; in fdstart()
1141 mutex_exit(&fjp->fj_lock); in fdstart()
1150 ASSERT(DRIVE(bp->b_edev) == ddi_get_instance(fjp->fj_dip)); in fdstart()
1151 unit = fjp->fj_unit; in fdstart()
1152 fjp->fj_ops->fco_select(fjp, unit, 1); in fdstart()
1161 chp = fjp->fj_chars; in fdstart()
1232 bp->b_error = fjp->fj_ops->fco_rw(fjp, unit, in fdstart()
1262 fjp->fj_ops->fco_select(fjp, unit, 0); in fdstart()
1263 mutex_enter(&fjp->fj_lock); in fdstart()
1266 fjp->fj_flags ^= FUNIT_BUSY; in fdstart()
1283 struct fcu_obj *fjp = NULL; in fd_ioctl() local
1291 unit = fd_getdrive(dev, &fjp, &fdp); in fd_ioctl()
1292 if (!fjp || !fdp) in fd_ioctl()
1301 fjp->fj_ops->fco_dkinfo(fjp, &cpy.dki); in fd_ioctl()
1302 cpy.dki.dki_cnum = FDCTLR(fjp->fj_unit); in fd_ioctl()
1303 cpy.dki.dki_unit = FDUNIT(fjp->fj_unit); in fd_ioctl()
1311 cpy.dkg.dkg_nsect = fjp->fj_chars->fdc_secptrack; in fd_ioctl()
1314 if (fjp->fj_flags & FUNIT_LABELOK) in fd_ioctl()
1315 cpy.dkg.dkg_nsect = (fjp->fj_chars->fdc_secptrack * in fd_ioctl()
1316 fjp->fj_chars->fdc_sec_size) / DEV_BSIZE; in fd_ioctl()
1318 cpy.dkg.dkg_nsect = fjp->fj_chars->fdc_secptrack; in fd_ioctl()
1320 cpy.dkg.dkg_pcyl = fjp->fj_chars->fdc_ncyl; in fd_ioctl()
1321 cpy.dkg.dkg_ncyl = fjp->fj_chars->fdc_ncyl; in fd_ioctl()
1322 cpy.dkg.dkg_nhead = fjp->fj_chars->fdc_nhead; in fd_ioctl()
1323 cpy.dkg.dkg_intrlv = fjp->fj_attr->fda_intrlv; in fd_ioctl()
1324 cpy.dkg.dkg_rpm = fjp->fj_attr->fda_rotatespd; in fd_ioctl()
1338 mutex_enter(&fjp->fj_lock); in fd_ioctl()
1339 fjp->fj_chars->fdc_ncyl = cpy.dkg.dkg_ncyl; in fd_ioctl()
1340 fjp->fj_chars->fdc_nhead = cpy.dkg.dkg_nhead; in fd_ioctl()
1341 fjp->fj_chars->fdc_secptrack = cpy.dkg.dkg_nsect; in fd_ioctl()
1342 fjp->fj_attr->fda_intrlv = cpy.dkg.dkg_intrlv; in fd_ioctl()
1343 fjp->fj_attr->fda_rotatespd = cpy.dkg.dkg_rpm; in fd_ioctl()
1345 mutex_exit(&fjp->fj_lock); in fd_ioctl()
1357 nblks = fjp->fj_chars->fdc_nhead * fjp->fj_chars->fdc_secptrack; in fd_ioctl()
1444 nblks = fjp->fj_chars->fdc_nhead * in fd_ioctl()
1445 fjp->fj_chars->fdc_secptrack; in fd_ioctl()
1446 mutex_enter(&fjp->fj_lock); in fd_ioctl()
1457 mutex_exit(&fjp->fj_lock); in fd_ioctl()
1462 mutex_enter(&fjp->fj_lock); in fd_ioctl()
1469 fjp->fj_ops->fco_select(fjp, unit, 1); in fd_ioctl()
1470 rval = fdgetlabel(fjp, unit); in fd_ioctl()
1471 fjp->fj_ops->fco_select(fjp, unit, 0); in fd_ioctl()
1473 mutex_exit(&fjp->fj_lock); in fd_ioctl()
1478 fd_build_user_vtoc(fjp, fdp, &vtoc); in fd_ioctl()
1479 mutex_exit(&fjp->fj_lock); in fd_ioctl()
1542 mutex_enter(&fjp->fj_lock); in fd_ioctl()
1544 if ((rval = fd_build_label_vtoc(fjp, fdp, &vtoc, label)) == 0) { in fd_ioctl()
1545 fjp->fj_ops->fco_select(fjp, unit, 1); in fd_ioctl()
1546 rval = fjp->fj_ops->fco_rw(fjp, unit, FDWRITE, in fd_ioctl()
1548 fjp->fj_ops->fco_select(fjp, unit, 0); in fd_ioctl()
1550 mutex_exit(&fjp->fj_lock); in fd_ioctl()
1571 if (ddi_copyout(fjp->fj_chars, (void *)arg, in fd_ioctl()
1590 mutex_enter(&fjp->fj_lock); in fd_ioctl()
1591 fjp->fj_attr->fda_rotatespd = 360; in fd_ioctl()
1592 mutex_exit(&fjp->fj_lock); in fd_ioctl()
1599 mutex_enter(&fjp->fj_lock); in fd_ioctl()
1600 *(fjp->fj_chars) = cpy.fdchar; in fd_ioctl()
1602 fjp->fj_flags &= ~FUNIT_CHAROK; in fd_ioctl()
1603 mutex_exit(&fjp->fj_lock); in fd_ioctl()
1621 mutex_enter(&fjp->fj_lock); in fd_ioctl()
1623 *fjp->fj_chars = *defchar[fdp->d_curfdtype]; in fd_ioctl()
1624 *fjp->fj_attr = fdtypes[fdp->d_curfdtype]; in fd_ioctl()
1627 fjp->fj_flags &= ~FUNIT_CHAROK; in fd_ioctl()
1628 mutex_exit(&fjp->fj_lock); in fd_ioctl()
1633 fjp->fj_flags &= ~(FUNIT_LABELOK | FUNIT_UNLABELED); in fd_ioctl()
1642 mutex_enter(&fjp->fj_lock); in fd_ioctl()
1643 fjp->fj_ops->fco_select(fjp, unit, 1); in fd_ioctl()
1645 if (fjp->fj_flags & FUNIT_CHANGED) in fd_ioctl()
1649 fjp->fj_flags &= ~FUNIT_CHANGED; in fd_ioctl()
1651 if (fjp->fj_ops->fco_getchng(fjp, unit)) { in fd_ioctl()
1653 fjp->fj_ops->fco_resetchng(fjp, unit); in fd_ioctl()
1657 if (fjp->fj_ops->fco_getchng(fjp, unit)) { in fd_ioctl()
1662 if (fjp->fj_flags & FUNIT_CHGDET) in fd_ioctl()
1668 fjp->fj_flags |= FUNIT_CHGDET; in fd_ioctl()
1674 fjp->fj_flags &= ~FUNIT_CHGDET; in fd_ioctl()
1678 fjp->fj_flags &= ~FUNIT_CHGDET; in fd_ioctl()
1683 if (fjp->fj_flags & FUNIT_WPROT) { in fd_ioctl()
1688 fjp->fj_ops->fco_select(fjp, unit, 0); in fd_ioctl()
1689 mutex_exit(&fjp->fj_lock); in fd_ioctl()
1696 if (ddi_copyout(fjp->fj_drive, (void *)arg, in fd_ioctl()
1707 mutex_enter(&fjp->fj_lock); in fd_ioctl()
1708 *(fjp->fj_drive) = cpy.drvchar; in fd_ioctl()
1710 fjp->fj_flags &= ~FUNIT_CHAROK; in fd_ioctl()
1711 mutex_exit(&fjp->fj_lock); in fd_ioctl()
1725 rval = fd_get_media_info(fjp, (caddr_t)arg, flag); in fd_ioctl()
1781 fjp->fj_chars->fdc_sec_size; in fd_ioctl()
1792 spt = fjp->fj_chars->fdc_secptrack; /* sec/trk */ in fd_ioctl()
1793 spc = fjp->fj_chars->fdc_nhead * spt; /* sec/cyl */ in fd_ioctl()
1797 fjp->fj_flags &= in fd_ioctl()
1802 fjp->fj_ops->fco_select(fjp, unit, 1); in fd_ioctl()
1803 rval = fjp->fj_ops->fco_format(fjp, unit, cyl, head, in fd_ioctl()
1805 fjp->fj_ops->fco_select(fjp, unit, 0); in fd_ioctl()
1817 rval = fd_rawioctl(fjp, unit, (caddr_t)arg, flag); in fd_ioctl()
1831 fd_build_user_vtoc(struct fcu_obj *fjp, struct fdisk *fdp, struct vtoc *vtocp) in fd_build_user_vtoc() argument
1850 if (fjp->fj_flags & FUNIT_LABELOK) { in fd_build_user_vtoc()
1854 vtocp->v_sectorsz = fjp->fj_chars->fdc_sec_size; in fd_build_user_vtoc()
1876 fd_build_label_vtoc(struct fcu_obj *fjp, struct fdisk *fdp, struct vtoc *vtocp, in fd_build_label_vtoc() argument
1902 nblks = (fjp->fj_chars->fdc_nhead * fjp->fj_chars->fdc_secptrack * in fd_build_label_vtoc()
1903 fjp->fj_chars->fdc_sec_size) / DEV_BSIZE; in fd_build_label_vtoc()
1904 if (nblks == 0 || fjp->fj_chars->fdc_ncyl == 0) in fd_build_label_vtoc()
1922 if (ncyl > (long)fjp->fj_chars->fdc_ncyl) { in fd_build_label_vtoc()
1974 labelp->dkl_pcyl = fjp->fj_chars->fdc_ncyl; in fd_build_label_vtoc()
1975 labelp->dkl_ncyl = fjp->fj_chars->fdc_ncyl; in fd_build_label_vtoc()
1976 labelp->dkl_nhead = fjp->fj_chars->fdc_nhead; in fd_build_label_vtoc()
1983 labelp->dkl_nsect = (fjp->fj_chars->fdc_secptrack * in fd_build_label_vtoc()
1984 fjp->fj_chars->fdc_sec_size) / DEV_BSIZE; in fd_build_label_vtoc()
1985 labelp->dkl_intrlv = fjp->fj_attr->fda_intrlv; in fd_build_label_vtoc()
1986 labelp->dkl_rpm = fjp->fj_attr->fda_rotatespd; in fd_build_label_vtoc()
2005 fd_rawioctl(struct fcu_obj *fjp, int unit, caddr_t arg, int mode) in fd_rawioctl() argument
2017 if (fjp->fj_chars->fdc_medium != 3 && fjp->fj_chars->fdc_medium != 5) { in fd_rawioctl()
2073 fjp->fj_flags &= ~(FUNIT_LABELOK | FUNIT_UNLABELED); in fd_rawioctl()
2132 fjp->fj_ops->fco_select(fjp, unit, 1); in fd_rawioctl()
2133 rval = fjp->fj_ops->fco_rwioctl(fjp, unit, (caddr_t)&fdr); in fd_rawioctl()
2143 fjp->fj_ops->fco_select(fjp, unit, 0); in fd_rawioctl()
2158 struct fcu_obj *fjp = NULL; in fd_prop_op() local
2179 (void) fd_getdrive(dev, &fjp, &fdp); in fd_prop_op()
2180 if (!fjp || !fdp) in fd_prop_op()
2194 struct fcu_obj *fjp; in fd_media_watch() local
2203 DEBUG_ASSIGN fd_getdrive((dev_t)arg, &fjp, &fdp); in fd_media_watch()
2219 mutex_enter(&fjp->fj_lock); in fd_media_watch()
2221 mutex_exit(&fjp->fj_lock); in fd_media_watch()
2225 fd_get_media_state(struct fcu_obj *fjp, int unit) in fd_get_media_state() argument
2229 if (fjp->fj_ops->fco_getchng(fjp, unit)) { in fd_get_media_state()
2231 fjp->fj_ops->fco_resetchng(fjp, unit); in fd_get_media_state()
2232 if (fjp->fj_ops->fco_getchng(fjp, unit)) { in fd_get_media_state()
2233 if (fjp->fj_flags & FUNIT_CHGDET) { in fd_get_media_state()
2242 fjp->fj_flags |= FUNIT_CHGDET; in fd_get_media_state()
2246 fjp->fj_flags &= ~FUNIT_CHGDET; in fd_get_media_state()
2250 fjp->fj_flags &= ~FUNIT_CHGDET; in fd_get_media_state()
2261 struct fcu_obj *fjp; in fd_check_media() local
2266 unit = fd_getdrive(dev, &fjp, &fdp); in fd_check_media()
2268 mutex_enter(&fjp->fj_lock); in fd_check_media()
2270 fjp->fj_ops->fco_select(fjp, unit, 1); in fd_check_media()
2271 fdp->d_media_state = fd_get_media_state(fjp, unit); in fd_check_media()
2276 fjp->fj_ops->fco_select(fjp, unit, 0); in fd_check_media()
2282 if (cv_wait_sig(&fdp->d_statecv, &fjp->fj_lock) == 0) { in fd_check_media()
2284 mutex_exit(&fjp->fj_lock); in fd_check_media()
2287 fjp->fj_ops->fco_select(fjp, unit, 1); in fd_check_media()
2288 fdp->d_media_state = fd_get_media_state(fjp, unit); in fd_check_media()
2292 err = fdgetlabel(fjp, unit); in fd_check_media()
2294 fjp->fj_ops->fco_select(fjp, unit, 0); in fd_check_media()
2295 mutex_exit(&fjp->fj_lock); in fd_check_media()
2299 fjp->fj_ops->fco_select(fjp, unit, 0); in fd_check_media()
2300 mutex_exit(&fjp->fj_lock); in fd_check_media()
2311 fd_get_media_info(struct fcu_obj *fjp, caddr_t buf, int flag) in fd_get_media_info() argument
2317 media_info.dki_lbsize = fjp->fj_chars->fdc_sec_size; in fd_get_media_info()
2318 media_info.dki_capacity = fjp->fj_chars->fdc_ncyl * in fd_get_media_info()
2319 fjp->fj_chars->fdc_secptrack * fjp->fj_chars->fdc_nhead; in fd_get_media_info()