Lines Matching defs:rsp

133 	rd_devstate_t	*rsp;
137 if ((rsp = ddi_get_soft_state(rd_statep, minor)) != NULL &&
138 rsp->rd_dip == rd_dip) {
171 rd_devstate_t *rsp;
175 if ((rsp = ddi_get_soft_state(rd_statep, minor)) != NULL &&
176 strcmp(rsp->rd_name, name) == 0) {
177 return (rsp);
191 rd_devstate_t *rsp;
195 if ((rsp = ddi_get_soft_state(rd_statep, minor)) != NULL &&
196 rsp->rd_dip == dip) {
197 return (rsp);
207 rd_is_open(rd_devstate_t *rsp)
210 return (rsp->rd_chr_open || rsp->rd_blk_open || rsp->rd_lyr_open_cnt);
217 rd_opened(rd_devstate_t *rsp, int otyp)
222 rsp->rd_chr_open = 1;
225 rsp->rd_blk_open = 1;
228 rsp->rd_lyr_open_cnt++;
240 rd_closed(rd_devstate_t *rsp, int otyp)
245 rsp->rd_chr_open = 0;
248 rsp->rd_blk_open = 0;
251 rsp->rd_lyr_open_cnt--;
399 rd_unmap_window(rd_devstate_t *rsp)
401 ASSERT(rsp->rd_window_obp == 0);
402 if (rsp->rd_window_base != RD_WINDOW_NOT_MAPPED) {
403 hat_unload(kas.a_hat, rsp->rd_window_virt, rsp->rd_window_size,
412 rd_map_window(rd_devstate_t *rsp, off_t offset)
416 if (rsp->rd_window_base != RD_WINDOW_NOT_MAPPED) {
420 if (offset >= rsp->rd_window_base &&
421 offset < rsp->rd_window_base + rsp->rd_window_size) {
428 rd_unmap_window(rsp);
430 rsp->rd_window_base = ptob(offpgs);
436 if (rsp->rd_dip == rd_dip) {
444 lastpi = pi + btopr(rsp->rd_window_size);
445 if (lastpi > rsp->rd_npages) {
446 lastpi = rsp->rd_npages;
452 vaddr = rsp->rd_window_virt;
454 hat_memload(kas.a_hat, vaddr, rsp->rd_ppa[pi],
467 for (i = 0; i < rsp->rd_nexisting; ++i) {
468 if (offset < rsp->rd_existing[i].size) {
471 offset -= rsp->rd_existing[i].size;
473 ASSERT(i < rsp->rd_nexisting);
478 pfn = btop(rsp->rd_existing[i].phys + offset);
479 hat_devload(kas.a_hat, rsp->rd_window_virt, rsp->rd_window_size,
496 rd_fake_disk_geometry(rd_devstate_t *rsp)
510 if (rsp->rd_size < (2 * 1024 * 1024)) /* floppy? */
511 rsp->rd_dkg.dkg_ncyl = rsp->rd_size / (100 * 1024);
513 rsp->rd_dkg.dkg_ncyl = rsp->rd_size / (300 * 1024);
515 if (rsp->rd_dkg.dkg_ncyl == 0)
516 rsp->rd_dkg.dkg_ncyl = 1;
517 rsp->rd_dkg.dkg_acyl = 0;
518 rsp->rd_dkg.dkg_bcyl = 0;
519 rsp->rd_dkg.dkg_nhead = 1;
520 rsp->rd_dkg.dkg_obs1 = 0;
521 rsp->rd_dkg.dkg_intrlv = 0;
522 rsp->rd_dkg.dkg_obs2 = 0;
523 rsp->rd_dkg.dkg_obs3 = 0;
524 rsp->rd_dkg.dkg_apc = 0;
525 rsp->rd_dkg.dkg_rpm = 7200;
526 rsp->rd_dkg.dkg_pcyl = rsp->rd_dkg.dkg_ncyl + rsp->rd_dkg.dkg_acyl;
527 rsp->rd_dkg.dkg_nsect = rsp->rd_size /
528 (DEV_BSIZE * rsp->rd_dkg.dkg_ncyl);
529 rsp->rd_dkg.dkg_write_reinstruct = 0;
530 rsp->rd_dkg.dkg_read_reinstruct = 0;
533 bzero(&rsp->rd_vtoc, sizeof (struct vtoc));
534 rsp->rd_vtoc.v_sanity = VTOC_SANE;
535 rsp->rd_vtoc.v_version = V_VERSION;
536 bcopy(RD_DRIVER_NAME, rsp->rd_vtoc.v_volume, 7);
537 rsp->rd_vtoc.v_sectorsz = DEV_BSIZE;
538 rsp->rd_vtoc.v_nparts = 1;
539 rsp->rd_vtoc.v_part[0].p_tag = V_UNASSIGNED;
540 rsp->rd_vtoc.v_part[0].p_flag = V_UNMNT;
541 rsp->rd_vtoc.v_part[0].p_start = (daddr_t)0;
548 rsp->rd_vtoc.v_part[0].p_size = rsp->rd_dkg.dkg_pcyl *
549 rsp->rd_dkg.dkg_nsect * rsp->rd_dkg.dkg_nhead;
552 bzero(&rsp->rd_ci, sizeof (struct dk_cinfo));
553 (void) strcpy(rsp->rd_ci.dki_cname, RD_DRIVER_NAME);
554 rsp->rd_ci.dki_ctype = DKC_MD;
555 rsp->rd_ci.dki_flags = 0;
556 rsp->rd_ci.dki_cnum = 0;
557 rsp->rd_ci.dki_addr = 0;
558 rsp->rd_ci.dki_space = 0;
559 rsp->rd_ci.dki_prio = 0;
560 rsp->rd_ci.dki_vec = 0;
561 (void) strcpy(rsp->rd_ci.dki_dname, RD_DRIVER_NAME);
562 rsp->rd_ci.dki_unit = 0;
563 rsp->rd_ci.dki_slave = 0;
564 rsp->rd_ci.dki_partition = 0;
571 rsp->rd_ci.dki_maxtransfer = 16;
579 rd_dealloc_resources(rd_devstate_t *rsp)
581 dev_info_t *dip = rsp->rd_dip;
585 if (rsp->rd_window_obp == 0 && rsp->rd_window_virt != NULL) {
586 if (rsp->rd_window_base != RD_WINDOW_NOT_MAPPED) {
587 rd_unmap_window(rsp);
589 vmem_free(heap_arena, rsp->rd_window_virt, rsp->rd_window_size);
591 mutex_destroy(&rsp->rd_device_lock);
593 if (rsp->rd_existing) {
594 ddi_prop_free(rsp->rd_existing);
596 if (rsp->rd_ppa != NULL) {
597 rd_phys_free(rsp->rd_ppa, rsp->rd_npages);
605 rsp->rd_name);
608 rsp->rd_name);
618 fulldev = makedevice(ddi_driver_major(dip), rsp->rd_minor);
622 if (rsp->rd_kstat) {
623 kstat_delete(rsp->rd_kstat);
624 mutex_destroy(&rsp->rd_kstat_lock);
627 ddi_soft_state_free(rd_statep, rsp->rd_minor);
638 rd_devstate_t *rsp;
648 rsp = ddi_get_soft_state(rd_statep, minor);
650 (void) strcpy(rsp->rd_name, name);
651 rsp->rd_dip = dip;
652 rsp->rd_minor = minor;
653 rsp->rd_size = size;
658 mutex_init(&rsp->rd_device_lock, NULL, MUTEX_DRIVER, NULL);
660 rsp->rd_window_obp = 0;
661 rsp->rd_window_base = RD_WINDOW_NOT_MAPPED;
662 rsp->rd_window_size = PAGESIZE;
663 rsp->rd_window_virt = vmem_alloc(heap_arena,
664 rsp->rd_window_size, VM_SLEEP);
665 if (rsp->rd_window_virt == NULL) {
669 rsp->rd_window_obp = 1;
670 rsp->rd_window_base = 0;
671 rsp->rd_window_size = size;
672 rsp->rd_window_virt = (caddr_t)((ulong_t)addr);
680 rsp->rd_npages = btopr(size);
681 rsp->rd_ppa = rd_phys_alloc(rsp->rd_npages);
682 if (rsp->rd_ppa == NULL) {
693 rsp->rd_name);
699 rsp->rd_name);
739 rsp->rd_kstat = kstat_create(RD_DRIVER_NAME, minor, NULL,
741 if (rsp->rd_kstat) {
742 mutex_init(&rsp->rd_kstat_lock, NULL,
744 rsp->rd_kstat->ks_lock = &rsp->rd_kstat_lock;
745 kstat_install(rsp->rd_kstat);
748 rd_fake_disk_geometry(rsp);
750 return (rsp);
756 rd_dealloc_resources(rsp);
782 rd_devstate_t *rsp;
784 if ((rsp = rd_find_dip_state(dip)) != NULL) {
785 rd_dealloc_resources(rsp);
800 rd_devstate_t *rsp;
823 rsp = ddi_get_soft_state(rd_statep, RD_CTL_MINOR);
824 rsp->rd_dip = dip;
881 if ((rsp = rd_alloc_resources(name, obpaddr, size,
886 rsp->rd_existing = ep;
887 rsp->rd_nexisting = nep;
943 rd_devstate_t *rsp;
947 if ((rsp = ddi_get_soft_state(rd_statep,
949 *result = rsp->rd_dip;
956 if ((rsp = ddi_get_soft_state(rd_statep,
959 ddi_get_instance(rsp->rd_dip);
975 rd_devstate_t *rsp;
989 rsp = ddi_get_soft_state(rd_statep, RD_CTL_MINOR);
990 if (rsp == NULL) {
995 if (rd_is_open(rsp)) {
999 (void) rd_opened(rsp, OTYP_CHR);
1006 rsp = ddi_get_soft_state(rd_statep, minor);
1007 if (rsp == NULL) {
1012 if (rd_opened(rsp, otyp) == -1) {
1026 rd_devstate_t *rsp;
1032 rsp = ddi_get_soft_state(rd_statep, minor);
1033 if (rsp == NULL) {
1038 rd_closed(rsp, otyp);
1054 rd_rw(rd_devstate_t *rsp, struct buf *bp, offset_t offset, size_t nbytes)
1067 mutex_enter(&rsp->rd_device_lock);
1068 rd_map_window(rsp, offset);
1070 off_in_window = offset - rsp->rd_window_base;
1071 rem_in_window = rsp->rd_window_size - off_in_window;
1073 raddr = rsp->rd_window_virt + off_in_window;
1081 mutex_exit(&rsp->rd_device_lock);
1099 rd_devstate_t *rsp;
1102 rsp = ddi_get_soft_state(rd_statep, getminor(bp->b_edev));
1106 if (rsp == NULL ||
1108 (rsp->rd_dip != rd_dip || rd_dip == NULL))) { /* OBP ramdisk */
1110 if (rsp == NULL) {
1114 } else if (offset >= rsp->rd_size) {
1120 if (rsp->rd_kstat) {
1121 mutex_enter(rsp->rd_kstat->ks_lock);
1122 kstat_runq_enter(KSTAT_IO_PTR(rsp->rd_kstat));
1123 mutex_exit(rsp->rd_kstat->ks_lock);
1126 nbytes = min(bp->b_bcount, rsp->rd_size - offset);
1128 rd_rw(rsp, bp, offset, nbytes);
1132 if (rsp->rd_kstat) {
1135 mutex_enter(rsp->rd_kstat->ks_lock);
1136 kioptr = KSTAT_IO_PTR(rsp->rd_kstat);
1145 mutex_exit(rsp->rd_kstat->ks_lock);
1157 rd_devstate_t *rsp;
1159 rsp = ddi_get_soft_state(rd_statep, getminor(dev));
1161 if (uiop->uio_offset >= rsp->rd_size)
1171 rd_devstate_t *rsp;
1173 rsp = ddi_get_soft_state(rd_statep, getminor(dev));
1175 if (uiop->uio_offset >= rsp->rd_size)
1187 rd_devstate_t *rsp;
1208 rsp = rd_alloc_resources(kri.ri_name, 0, size, rd_dip);
1209 if (rsp == NULL) {
1224 rd_devstate_t *rsp;
1234 rsp = rd_find_named_disk(kri.ri_name);
1235 if (rsp == NULL || rsp->rd_dip != rd_dip) {
1239 if (rd_is_open(rsp)) {
1244 rd_dealloc_resources(rsp);
1258 rd_devstate_t *rsp;
1289 rsp = ddi_get_soft_state(rd_statep, minor);
1290 if (rsp == NULL) {
1303 vtoctovtoc32(rsp->rd_vtoc, vtoc32);
1311 if (ddi_copyout(&rsp->rd_vtoc, (void *)arg,
1318 error = ddi_copyout(&rsp->rd_ci, (void *)arg,
1326 error = ddi_copyout(&rsp->rd_dkg, (void *)arg,