• Home
  • Raw
  • Download

Lines Matching full:cd

149 	struct scsi_cd *cd = dev_get_drvdata(dev);  in sr_runtime_suspend()  local
151 if (!cd) /* E.g.: runtime suspend following sr_remove() */ in sr_runtime_suspend()
154 if (cd->media_present) in sr_runtime_suspend()
166 struct scsi_cd *cd = NULL; in scsi_cd_get() local
171 cd = scsi_cd(disk); in scsi_cd_get()
172 kref_get(&cd->kref); in scsi_cd_get()
173 if (scsi_device_get(cd->device)) { in scsi_cd_get()
174 kref_put(&cd->kref, sr_kref_release); in scsi_cd_get()
175 cd = NULL; in scsi_cd_get()
179 return cd; in scsi_cd_get()
182 static void scsi_cd_put(struct scsi_cd *cd) in scsi_cd_put() argument
184 struct scsi_device *sdev = cd->device; in scsi_cd_put()
187 kref_put(&cd->kref, sr_kref_release); in scsi_cd_put()
238 struct scsi_cd *cd = cdi->handle; in sr_check_events() local
248 events = sr_get_events(cd->device); in sr_check_events()
249 cd->get_event_changed |= events & DISK_EVENT_MEDIA_CHANGE; in sr_check_events()
257 if (cd->ignore_get_event) { in sr_check_events()
267 if (cd->device->changed) { in sr_check_events()
269 cd->device->changed = 0; in sr_check_events()
270 cd->tur_changed = true; in sr_check_events()
277 last_present = cd->media_present; in sr_check_events()
278 ret = scsi_test_unit_ready(cd->device, SR_TIMEOUT, MAX_RETRIES, &sshdr); in sr_check_events()
285 cd->media_present = scsi_status_is_good(ret) || in sr_check_events()
288 if (last_present != cd->media_present) in sr_check_events()
289 cd->device->changed = 1; in sr_check_events()
291 if (cd->device->changed) { in sr_check_events()
293 cd->device->changed = 0; in sr_check_events()
294 cd->tur_changed = true; in sr_check_events()
297 if (cd->ignore_get_event) in sr_check_events()
301 if (!cd->tur_changed) { in sr_check_events()
302 if (cd->get_event_changed) { in sr_check_events()
303 if (cd->tur_mismatch++ > 8) { in sr_check_events()
304 sr_printk(KERN_WARNING, cd, in sr_check_events()
306 cd->ignore_get_event = true; in sr_check_events()
309 cd->tur_mismatch = 0; in sr_check_events()
312 cd->tur_changed = false; in sr_check_events()
313 cd->get_event_changed = false; in sr_check_events()
331 struct scsi_cd *cd = scsi_cd(SCpnt->request->rq_disk); in sr_done() local
358 if (cd->device->sector_size == 2048) in sr_done()
373 if (error_sector < get_capacity(cd->disk) && in sr_done()
374 cd->capacity - error_sector < 4 * 75) in sr_done()
375 set_capacity(cd->disk, error_sector); in sr_done()
393 struct scsi_cd *cd; in sr_init_command() local
400 cd = scsi_cd(rq->rq_disk); in sr_init_command()
405 if (!cd->device || !scsi_device_online(cd->device)) { in sr_init_command()
413 if (cd->device->changed) { in sr_init_command()
425 s_size = cd->device->sector_size; in sr_init_command()
428 sr_set_blocklength(cd, 2048); in sr_init_command()
441 if (!cd->writeable) in sr_init_command()
444 cd->cdi.media_written = 1; in sr_init_command()
505 SCpnt->transfersize = cd->device->sector_size; in sr_init_command()
519 static void sr_revalidate_disk(struct scsi_cd *cd) in sr_revalidate_disk() argument
524 if (scsi_test_unit_ready(cd->device, SR_TIMEOUT, MAX_RETRIES, &sshdr)) in sr_revalidate_disk()
526 sr_cd_check(&cd->cdi); in sr_revalidate_disk()
527 get_sectorsize(cd); in sr_revalidate_disk()
532 struct scsi_cd *cd; in sr_block_open() local
536 cd = scsi_cd_get(bdev->bd_disk); in sr_block_open()
537 if (!cd) in sr_block_open()
540 sdev = cd->device; in sr_block_open()
543 sr_revalidate_disk(cd); in sr_block_open()
545 mutex_lock(&cd->lock); in sr_block_open()
546 ret = cdrom_open(&cd->cdi, bdev, mode); in sr_block_open()
547 mutex_unlock(&cd->lock); in sr_block_open()
551 scsi_cd_put(cd); in sr_block_open()
559 struct scsi_cd *cd = scsi_cd(disk); in sr_block_release() local
561 mutex_lock(&cd->lock); in sr_block_release()
562 cdrom_release(&cd->cdi, mode); in sr_block_release()
563 mutex_unlock(&cd->lock); in sr_block_release()
565 scsi_cd_put(cd); in sr_block_release()
571 struct scsi_cd *cd = scsi_cd(bdev->bd_disk); in sr_block_ioctl() local
572 struct scsi_device *sdev = cd->device; in sr_block_ioctl()
576 mutex_lock(&cd->lock); in sr_block_ioctl()
596 ret = cdrom_ioctl(&cd->cdi, bdev, mode, cmd, arg); in sr_block_ioctl()
606 mutex_unlock(&cd->lock); in sr_block_ioctl()
614 struct scsi_cd *cd = scsi_cd(bdev->bd_disk); in sr_block_compat_ioctl() local
615 struct scsi_device *sdev = cd->device; in sr_block_compat_ioctl()
619 mutex_lock(&cd->lock); in sr_block_compat_ioctl()
639 ret = cdrom_ioctl(&cd->cdi, bdev, mode, cmd, (unsigned long)argp); in sr_block_compat_ioctl()
649 mutex_unlock(&cd->lock); in sr_block_compat_ioctl()
659 struct scsi_cd *cd; in sr_block_check_events() local
661 cd = scsi_cd_get(disk); in sr_block_check_events()
662 if (!cd) in sr_block_check_events()
665 if (!atomic_read(&cd->device->disk_events_disable_depth)) in sr_block_check_events()
666 ret = cdrom_check_events(&cd->cdi, clearing); in sr_block_check_events()
668 scsi_cd_put(cd); in sr_block_check_events()
686 struct scsi_cd *cd = cdi->handle; in sr_open() local
687 struct scsi_device *sdev = cd->device; in sr_open()
706 struct scsi_cd *cd = cdi->handle; in sr_release() local
708 if (cd->device->sector_size > 2048) in sr_release()
709 sr_set_blocklength(cd, 2048); in sr_release()
717 struct scsi_cd *cd; in sr_probe() local
726 cd = kzalloc(sizeof(*cd), GFP_KERNEL); in sr_probe()
727 if (!cd) in sr_probe()
730 kref_init(&cd->kref); in sr_probe()
735 mutex_init(&cd->lock); in sr_probe()
757 cd->device = sdev; in sr_probe()
758 cd->disk = disk; in sr_probe()
759 cd->driver = &sr_template; in sr_probe()
760 cd->disk = disk; in sr_probe()
761 cd->capacity = 0x1fffff; in sr_probe()
762 cd->device->changed = 1; /* force recheck CD type */ in sr_probe()
763 cd->media_present = 1; in sr_probe()
764 cd->use = 1; in sr_probe()
765 cd->readcd_known = 0; in sr_probe()
766 cd->readcd_cdda = 0; in sr_probe()
768 cd->cdi.ops = &sr_dops; in sr_probe()
769 cd->cdi.handle = cd; in sr_probe()
770 cd->cdi.mask = 0; in sr_probe()
771 cd->cdi.capacity = 1; in sr_probe()
772 sprintf(cd->cdi.name, "sr%d", minor); in sr_probe()
777 get_capabilities(cd); in sr_probe()
778 sr_vendor_init(cd); in sr_probe()
780 set_capacity(disk, cd->capacity); in sr_probe()
781 disk->private_data = &cd->driver; in sr_probe()
784 if (register_cdrom(disk, &cd->cdi)) in sr_probe()
793 dev_set_drvdata(dev, cd); in sr_probe()
795 sr_revalidate_disk(cd); in sr_probe()
799 "Attached scsi CD-ROM %s\n", cd->cdi.name); in sr_probe()
800 scsi_autopm_put_device(cd->device); in sr_probe()
810 mutex_destroy(&cd->lock); in sr_probe()
812 kfree(cd); in sr_probe()
819 static void get_sectorsize(struct scsi_cd *cd) in get_sectorsize() argument
833 the_result = scsi_execute_req(cd->device, cmd, DMA_FROM_DEVICE, in get_sectorsize()
843 cd->capacity = 0x1fffff; in get_sectorsize()
848 cd->capacity = 1 + get_unaligned_be32(&buffer[0]); in get_sectorsize()
856 if (!cdrom_get_last_written(&cd->cdi, &last_written)) in get_sectorsize()
857 cd->capacity = max_t(long, cd->capacity, last_written); in get_sectorsize()
862 * HP 4020i CD-Recorder reports 2340 byte sectors in get_sectorsize()
863 * Philips CD-Writers report 2352 byte sectors in get_sectorsize()
873 cd->capacity *= 4; in get_sectorsize()
878 sr_printk(KERN_INFO, cd, in get_sectorsize()
880 cd->capacity = 0; in get_sectorsize()
883 cd->device->sector_size = sector_size; in get_sectorsize()
889 set_capacity(cd->disk, cd->capacity); in get_sectorsize()
892 queue = cd->device->request_queue; in get_sectorsize()
898 static void get_capabilities(struct scsi_cd *cd) in get_capabilities() argument
922 sr_printk(KERN_ERR, cd, "out of memory.\n"); in get_capabilities()
927 scsi_test_unit_ready(cd->device, SR_TIMEOUT, MAX_RETRIES, &sshdr); in get_capabilities()
930 rc = scsi_mode_sense(cd->device, 0, 0x2a, buffer, ms_len, in get_capabilities()
936 cd->cdi.speed = 1; in get_capabilities()
937 cd->cdi.mask |= (CDC_CD_R | CDC_CD_RW | CDC_DVD_R | in get_capabilities()
942 sr_printk(KERN_INFO, cd, "scsi-1 drive"); in get_capabilities()
947 cd->cdi.speed = get_unaligned_be16(&buffer[n + 8]) / 176; in get_capabilities()
948 cd->readcd_known = 1; in get_capabilities()
949 cd->readcd_cdda = buffer[n + 5] & 0x01; in get_capabilities()
951 sr_printk(KERN_INFO, cd, in get_capabilities()
954 cd->cdi.speed, in get_capabilities()
955 buffer[n + 3] & 0x01 ? "writer " : "", /* CD Writer */ in get_capabilities()
957 buffer[n + 2] & 0x02 ? "cd/rw " : "", /* can read rewriteable */ in get_capabilities()
963 cd->cdi.mask |= CDC_CLOSE_TRAY; in get_capabilities()
966 cd->cdi.mask |= CDC_DVD; in get_capabilities()
969 cd->cdi.mask |= CDC_DVD_RAM; in get_capabilities()
972 cd->cdi.mask |= CDC_DVD_R; in get_capabilities()
974 /* can't write CD-RW media */ in get_capabilities()
975 cd->cdi.mask |= CDC_CD_RW; in get_capabilities()
977 /* can't write CD-R media */ in get_capabilities()
978 cd->cdi.mask |= CDC_CD_R; in get_capabilities()
981 cd->cdi.mask |= CDC_OPEN_TRAY; in get_capabilities()
985 cd->cdi.capacity = in get_capabilities()
986 cdrom_number_of_slots(&cd->cdi); in get_capabilities()
987 if (cd->cdi.capacity <= 1) in get_capabilities()
989 cd->cdi.mask |= CDC_SELECT_DISC; in get_capabilities()
991 cd->cdi.mask |= CDC_CLOSE_TRAY; */ in get_capabilities()
994 * if DVD-RAM, MRW-W or CD-RW, we are randomly writable in get_capabilities()
996 if ((cd->cdi.mask & (CDC_DVD_RAM | CDC_MRW_W | CDC_RAM | CDC_CD_RW)) != in get_capabilities()
998 cd->writeable = 1; in get_capabilities()
1006 * by the Uniform CD-ROM layer.
1011 struct scsi_cd *cd = cdi->handle; in sr_packet() local
1012 struct scsi_device *sdev = cd->device; in sr_packet()
1020 sr_do_ioctl(cd, cgc); in sr_packet()
1036 struct scsi_cd *cd = container_of(kref, struct scsi_cd, kref); in sr_kref_release() local
1037 struct gendisk *disk = cd->disk; in sr_kref_release()
1043 unregister_cdrom(&cd->cdi); in sr_kref_release()
1049 mutex_destroy(&cd->lock); in sr_kref_release()
1051 kfree(cd); in sr_kref_release()
1056 struct scsi_cd *cd = dev_get_drvdata(dev); in sr_remove() local
1058 scsi_autopm_get_device(cd->device); in sr_remove()
1060 del_gendisk(cd->disk); in sr_remove()
1064 kref_put(&cd->kref, sr_kref_release); in sr_remove()