Lines Matching +full:sense +full:- +full:mode
18 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
30 #include <linux/dma-mapping.h>
95 {UNIT_ATTENTION, "Device needs attention - disk may have been changed"},
178 * been hit by a serious failure - but we'll in gdrom_identifydevice()
179 * try to return a sense key even so */ in gdrom_identifydevice()
252 return -ENOMEM; in gdrom_preparedisk_cmd()
253 spin_command->cmd[0] = 0x70; in gdrom_preparedisk_cmd()
254 spin_command->cmd[2] = 0x1f; in gdrom_preparedisk_cmd()
255 spin_command->buflen = 0; in gdrom_preparedisk_cmd()
266 return -EIO; in gdrom_preparedisk_cmd()
286 return -ENOMEM; in gdrom_readtoc_cmd()
288 toc_command->cmd[0] = 0x14; in gdrom_readtoc_cmd()
289 toc_command->cmd[1] = session; in gdrom_readtoc_cmd()
290 toc_command->cmd[3] = tocsize >> 8; in gdrom_readtoc_cmd()
291 toc_command->cmd[4] = tocsize & 0xff; in gdrom_readtoc_cmd()
292 toc_command->buflen = tocsize; in gdrom_readtoc_cmd()
294 err = -EBUSY; in gdrom_readtoc_cmd()
302 err = -EINVAL; in gdrom_readtoc_cmd()
307 err = -EINVAL; in gdrom_readtoc_cmd()
319 return (cpu_to_be32(track & 0xffffff00) - GD_SESSION_OFFSET); in get_entry_lba()
337 return -ENOMEM; in gdrom_get_last_session()
339 /* Check if GD-ROM */ in gdrom_get_last_session()
341 /* Not a GD-ROM so check if standard CD-ROM */ in gdrom_get_last_session()
347 return -ENXIO; in gdrom_get_last_session()
351 fentry = get_entry_track(gd.toc->first); in gdrom_get_last_session()
352 lentry = get_entry_track(gd.toc->last); in gdrom_get_last_session()
354 track = get_entry_track(gd.toc->last); in gdrom_get_last_session()
356 data = gd.toc->entry[track - 1]; in gdrom_get_last_session()
359 track--; in gdrom_get_last_session()
362 if ((track > 100) || (track < get_entry_track(gd.toc->first))) { in gdrom_get_last_session()
365 return -ENXIO; in gdrom_get_last_session()
368 ms_info->addr_format = CDROM_LBA; in gdrom_get_last_session()
369 ms_info->addr.lba = get_entry_lba(data); in gdrom_get_last_session()
370 ms_info->xa_flag = 1; in gdrom_get_last_session()
387 /* read the sense key */ in gdrom_drivestatus()
388 char sense = __raw_readb(GDROM_ERROR_REG); in gdrom_drivestatus() local
389 sense &= 0xF0; in gdrom_drivestatus()
390 if (sense == 0) in gdrom_drivestatus()
392 if (sense == 0x20) in gdrom_drivestatus()
401 /* check the sense key */ in gdrom_check_events()
417 * CD Rom specification - returning int */
421 gdrom_spicommand(&command->cmd, command->buflen); in gdrom_packetcommand()
425 /* Get Sense SPI command
434 short sense[5]; in gdrom_getsense() local
436 int err = -EIO; in gdrom_getsense()
440 return -ENOMEM; in gdrom_getsense()
441 sense_command->cmd[0] = 0x13; in gdrom_getsense()
442 sense_command->cmd[4] = 10; in gdrom_getsense()
443 sense_command->buflen = 10; in gdrom_getsense()
445 * the sense key if possible */ in gdrom_getsense()
447 err = -EBUSY; in gdrom_getsense()
456 insw(GDROM_DATA_REG, &sense, sense_command->buflen/2); in gdrom_getsense()
457 if (sense[1] & 40) { in gdrom_getsense()
458 pr_info("Drive not ready - command aborted\n"); in gdrom_getsense()
461 sense_key = sense[1] & 0x0F; in gdrom_getsense()
465 pr_err("Unknown sense key: %d\n", sense_key); in gdrom_getsense()
466 if (bufstring) /* return addional sense data */ in gdrom_getsense()
467 memcpy(bufstring, &sense[4], 2); in gdrom_getsense()
481 return -EINVAL; in gdrom_audio_ioctl()
497 static int gdrom_bdops_open(struct block_device *bdev, fmode_t mode) in gdrom_bdops_open() argument
504 ret = cdrom_open(gd.cd_info, bdev, mode); in gdrom_bdops_open()
509 static void gdrom_bdops_release(struct gendisk *disk, fmode_t mode) in gdrom_bdops_release() argument
512 cdrom_release(gd.cd_info, mode); in gdrom_bdops_release()
522 static int gdrom_bdops_ioctl(struct block_device *bdev, fmode_t mode, in gdrom_bdops_ioctl() argument
528 ret = cdrom_ioctl(gd.cd_info, bdev, mode, cmd, arg); in gdrom_bdops_ioctl()
578 * 0 -> 0x30
579 * 1 -> mode
580 * 2 -> block >> 16
581 * 3 -> block >> 8
582 * 4 -> block
583 * 8 -> sectors >> 16
584 * 9 -> sectors >> 8
585 * 10 -> sectors
601 read_command->cmd[0] = 0x30; in gdrom_readdisk_dma()
602 read_command->cmd[1] = 0x20; in gdrom_readdisk_dma()
609 __raw_writel(virt_to_phys(bio_data(req->bio)), GDROM_DMA_STARTADDR_REG); in gdrom_readdisk_dma()
613 read_command->cmd[2] = (block >> 16) & 0xFF; in gdrom_readdisk_dma()
614 read_command->cmd[3] = (block >> 8) & 0xFF; in gdrom_readdisk_dma()
615 read_command->cmd[4] = block & 0xFF; in gdrom_readdisk_dma()
616 read_command->cmd[8] = (block_cnt >> 16) & 0xFF; in gdrom_readdisk_dma()
617 read_command->cmd[9] = (block_cnt >> 8) & 0xFF; in gdrom_readdisk_dma()
618 read_command->cmd[10] = block_cnt & 0xFF; in gdrom_readdisk_dma()
638 outsw(GDROM_DATA_REG, &read_command->cmd, 6); in gdrom_readdisk_dma()
654 list_del_init(&req->queuelist); in gdrom_readdisk_dma()
672 list_add_tail(&req->queuelist, &gdrom_deferred); in gdrom_request()
676 pr_notice("Read only device - write request ignored\n"); in gdrom_request()
680 printk(KERN_DEBUG "gdrom: Non-fs request ignored\n"); in gdrom_request()
692 int err = -ENOMEM; in gdrom_outputversion()
699 model_name = kstrndup(id->modname, 16, GFP_KERNEL); in gdrom_outputversion()
702 manuf_name = kstrndup(id->mname, 16, GFP_KERNEL); in gdrom_outputversion()
705 firmw_ver = kstrndup(id->firmver, 16, GFP_KERNEL); in gdrom_outputversion()
721 /* set the default mode for DMA transfer */
727 return -EBUSY; in gdrom_init_dma_mode()
730 return -EBUSY; in gdrom_init_dma_mode()
732 * Bits 31 - 16 security: 0x8843 in gdrom_init_dma_mode()
734 * Bits 14 - 8 start of transfer range in 1 MB blocks OR'ed with 0x80 in gdrom_init_dma_mode()
735 * Bits 6 - 0 end of transfer range in 1 MB blocks OR'ed with 0x80 in gdrom_init_dma_mode()
745 gd.cd_info->ops = &gdrom_ops; in probe_gdrom_setupcd()
746 gd.cd_info->capacity = 1; in probe_gdrom_setupcd()
747 strcpy(gd.cd_info->name, GDROM_DEV_NAME); in probe_gdrom_setupcd()
748 gd.cd_info->mask = CDC_CLOSE_TRAY|CDC_OPEN_TRAY|CDC_LOCK| in probe_gdrom_setupcd()
754 gd.disk->major = gdrom_major; in probe_gdrom_setupdisk()
755 gd.disk->first_minor = 1; in probe_gdrom_setupdisk()
756 gd.disk->minors = 1; in probe_gdrom_setupdisk()
757 strcpy(gd.disk->disk_name, GDROM_DEV_NAME); in probe_gdrom_setupdisk()
767 gd.disk->queue = gd.gdrom_rq; in probe_gdrom_setupqueue()
781 return -ENODEV; in probe_gdrom()
785 return -ENOMEM; in probe_gdrom()
795 err = -ENOMEM; in probe_gdrom()
801 err = -ENODEV; in probe_gdrom()
806 err = -ENODEV; in probe_gdrom()
809 gd.disk->fops = &gdrom_bdops; in probe_gdrom()
816 err = -ENOMEM; in probe_gdrom()
827 err = -ENOMEM; in probe_gdrom()
846 pr_warning("Probe failed - error is 0x%X\n", err); in probe_gdrom()
879 pd = platform_device_register_simple(GDROM_DEV_NAME, -1, NULL, 0); in init_gdrom()
898 MODULE_DESCRIPTION("SEGA Dreamcast GD-ROM Driver");