• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/src/linux/linux-2.6/drivers/cdrom/

Lines Matching defs:cdi

92   cdi->options in various ioctl.
333 /* The (cdo->capability & ~cdi->mask & CDC_XXX) construct was used in
335 #define CDROM_CAN(type) (cdi->ops->capability & ~cdi->mask & (type))
338 #define CHECKAUDIO if ((ret=check_for_audio_disc(cdi, cdo))) return ret
347 static int open_for_data(struct cdrom_device_info * cdi);
348 static int check_for_audio_disc(struct cdrom_device_info * cdi,
352 static int mmc_ioctl(struct cdrom_device_info *cdi, unsigned int cmd,
359 static int cdrom_mrw_exit(struct cdrom_device_info *cdi);
361 static int cdrom_get_disc_info(struct cdrom_device_info *cdi, disc_information *di);
368 static int cdrom_dummy_generic_packet(struct cdrom_device_info *cdi,
388 int register_cdrom(struct cdrom_device_info *cdi)
391 struct cdrom_device_ops *cdo = cdi->ops;
416 cdi->mc_flags = 0;
418 cdi->options = CDO_USE_FFLAGS;
421 cdi->options |= (int) CDO_AUTO_CLOSE;
423 cdi->options |= (int) CDO_AUTO_EJECT;
425 cdi->options |= (int) CDO_LOCK;
427 cdi->options |= (int) CDO_CHECK_TYPE;
430 cdi->exit = cdrom_mrw_exit;
432 if (cdi->disk)
433 cdi->cdda_method = CDDA_BPC_FULL;
435 cdi->cdda_method = CDDA_OLD;
440 cdinfo(CD_REG_UNREG, "drive \"/dev/%s\" registered\n", cdi->name);
442 cdi->next = topCdromPtr;
443 topCdromPtr = cdi;
451 struct cdrom_device_info *cdi, *prev;
456 cdi = topCdromPtr;
457 while (cdi && cdi != unreg) {
458 prev = cdi;
459 cdi = cdi->next;
462 if (cdi == NULL) {
467 prev->next = cdi->next;
469 topCdromPtr = cdi->next;
473 if (cdi->exit)
474 cdi->exit(cdi);
476 cdi->ops->n_minors--;
477 cdinfo(CD_REG_UNREG, "drive \"/dev/%s\" unregistered\n", cdi->name);
481 int cdrom_get_media_event(struct cdrom_device_info *cdi,
495 if (cdi->ops->generic_packet(cdi, &cgc))
512 static int cdrom_mrw_probe_pc(struct cdrom_device_info *cdi)
522 if (!cdrom_mode_sense(cdi, &cgc, MRW_MODE_PC, 0)) {
523 cdi->mrw_mode_page = MRW_MODE_PC;
525 } else if (!cdrom_mode_sense(cdi, &cgc, MRW_MODE_PC_PRE1, 0)) {
526 cdi->mrw_mode_page = MRW_MODE_PC_PRE1;
533 static int cdrom_is_mrw(struct cdrom_device_info *cdi, int *write)
549 if ((ret = cdi->ops->generic_packet(cdi, &cgc)))
557 if ((ret = cdrom_mrw_probe_pc(cdi))) {
565 static int cdrom_mrw_bgformat(struct cdrom_device_info *cdi, int cont)
599 ret = cdi->ops->generic_packet(cdi, &cgc);
606 static int cdrom_mrw_bgformat_susp(struct cdrom_device_info *cdi, int immed)
621 return cdi->ops->generic_packet(cdi, &cgc);
624 static int cdrom_flush_cache(struct cdrom_device_info *cdi)
633 return cdi->ops->generic_packet(cdi, &cgc);
636 static int cdrom_mrw_exit(struct cdrom_device_info *cdi)
641 ret = cdrom_get_disc_info(cdi, &di);
649 ret = cdrom_mrw_bgformat_susp(cdi, 0);
652 if (!ret && cdi->media_written)
653 ret = cdrom_flush_cache(cdi);
658 static int cdrom_mrw_set_lba_space(struct cdrom_device_info *cdi, int space)
670 if ((ret = cdrom_mode_sense(cdi, &cgc, cdi->mrw_mode_page, 0)))
680 if ((ret = cdrom_mode_select(cdi, &cgc)))
683 printk(KERN_INFO "cdrom: %s: mrw address space %s selected\n", cdi->name, mrw_address_space[space]);
687 static int cdrom_get_random_writable(struct cdrom_device_info *cdi,
701 if ((ret = cdi->ops->generic_packet(cdi, &cgc)))
708 static int cdrom_has_defect_mgt(struct cdrom_device_info *cdi)
722 if ((ret = cdi->ops->generic_packet(cdi, &cgc)))
733 static int cdrom_is_random_writable(struct cdrom_device_info *cdi, int *write)
740 if ((ret = cdrom_get_random_writable(cdi, &rfd)))
749 static int cdrom_media_erasable(struct cdrom_device_info *cdi)
754 ret = cdrom_get_disc_info(cdi, &di);
761 static int cdrom_dvdram_open_write(struct cdrom_device_info *cdi)
763 int ret = cdrom_media_erasable(cdi);
775 static int cdrom_mrw_open_write(struct cdrom_device_info *cdi)
783 if (cdrom_mrw_set_lba_space(cdi, MRW_LBA_DMA)) {
788 ret = cdrom_get_disc_info(cdi, &di);
809 ret = cdrom_mrw_bgformat(cdi, 1);
814 static int mo_open_write(struct cdrom_device_info *cdi)
828 ret = cdrom_mode_sense(cdi, &cgc, GPMODE_ALL_PAGES, 0);
830 ret = cdrom_mode_sense(cdi, &cgc, GPMODE_VENDOR_PAGE, 0);
833 ret = cdrom_mode_sense(cdi, &cgc, GPMODE_ALL_PAGES, 0);
843 static int cdrom_ram_open_write(struct cdrom_device_info *cdi)
848 if ((ret = cdrom_has_defect_mgt(cdi)))
851 if ((ret = cdrom_get_random_writable(cdi, &rfd)))
860 static void cdrom_mmc3_profile(struct cdrom_device_info *cdi)
874 if ((ret = cdi->ops->generic_packet(cdi, &cgc)))
879 cdi->mmc3_profile = mmc3_profile;
882 static int cdrom_is_dvd_rw(struct cdrom_device_info *cdi)
884 switch (cdi->mmc3_profile) {
896 static int cdrom_open_write(struct cdrom_device_info *cdi)
902 if (!cdrom_is_mrw(cdi, &mrw_write))
908 (void) cdrom_is_random_writable(cdi, &ram_write);
911 cdi->mask &= ~CDC_MRW;
913 cdi->mask |= CDC_MRW;
916 cdi->mask &= ~CDC_MRW_W;
918 cdi->mask |= CDC_MRW_W;
921 cdi->mask &= ~CDC_RAM;
923 cdi->mask |= CDC_RAM;
926 ret = cdrom_mrw_open_write(cdi);
928 ret = cdrom_dvdram_open_write(cdi);
931 ret = cdrom_ram_open_write(cdi);
933 ret = mo_open_write(cdi);
934 else if (!cdrom_is_dvd_rw(cdi))
940 static void cdrom_dvd_rw_close_write(struct cdrom_device_info *cdi)
944 if (cdi->mmc3_profile != 0x1a) {
945 cdinfo(CD_CLOSE, "%s: No DVD+RW\n", cdi->name);
949 if (!cdi->media_written) {
950 cdinfo(CD_CLOSE, "%s: DVD+RW media clean\n", cdi->name);
955 cdi->name);
960 cdi->ops->generic_packet(cdi, &cgc);
966 cdi->ops->generic_packet(cdi, &cgc);
973 cdi->ops->generic_packet(cdi, &cgc);
975 cdi->media_written = 0;
978 static int cdrom_close_write(struct cdrom_device_info *cdi)
991 int cdrom_open(struct cdrom_device_info *cdi, struct inode *ip, struct file *fp)
999 cdi->use_count++;
1000 if ((fp->f_flags & O_NONBLOCK) && (cdi->options & CDO_USE_FFLAGS)) {
1001 ret = cdi->ops->open(cdi, 1);
1003 ret = open_for_data(cdi);
1006 cdrom_mmc3_profile(cdi);
1009 if (cdrom_open_write(cdi))
1014 cdi->media_written = 0;
1022 cdi->name, cdi->use_count);
1028 cdi->ops->release(cdi);
1030 cdi->use_count--;
1035 int open_for_data(struct cdrom_device_info * cdi)
1038 struct cdrom_device_ops *cdo = cdi->ops;
1044 ret = cdo->drive_status(cdi, CDSL_CURRENT);
1050 cdi->options & CDO_AUTO_CLOSE) {
1052 ret=cdo->tray_move(cdi,0);
1069 ret = cdo->drive_status(cdi, CDSL_CURRENT);
1079 ret = cdo->drive_status(cdi, CDSL_CURRENT);
1085 cdrom_count_tracks(cdi, &tracks);
1094 if (cdi->options & CDO_CHECK_TYPE) {
1111 ret = cdo->open(cdi, 0); /* open for data */
1120 if (CDROM_CAN(CDC_LOCK) && (cdi->options & CDO_LOCK)) {
1121 cdo->lock_door(cdi, 1);
1134 if (CDROM_CAN(CDC_LOCK) && cdi->options & CDO_LOCK) {
1135 cdo->lock_door(cdi, 0);
1144 int check_for_audio_disc(struct cdrom_device_info * cdi,
1150 if (!(cdi->options & CDO_CHECK_TYPE))
1153 ret = cdo->drive_status(cdi, CDSL_CURRENT);
1159 cdi->options & CDO_AUTO_CLOSE) {
1161 ret=cdo->tray_move(cdi,0);
1176 ret = cdo->drive_status(cdi, CDSL_CURRENT);
1188 cdrom_count_tracks(cdi, &tracks);
1199 int cdrom_release(struct cdrom_device_info *cdi, struct file *fp)
1201 struct cdrom_device_ops *cdo = cdi->ops;
1206 if (cdi->use_count > 0)
1207 cdi->use_count--;
1208 if (cdi->use_count == 0)
1209 cdinfo(CD_CLOSE, "Use count for \"/dev/%s\" now zero\n", cdi->name);
1210 if (cdi->use_count == 0)
1211 cdrom_dvd_rw_close_write(cdi);
1212 if (cdi->use_count == 0 &&
1215 cdo->lock_door(cdi, 0);
1217 opened_for_data = !(cdi->options & CDO_USE_FFLAGS) ||
1223 if (CDROM_CAN(CDC_RAM) && !cdi->use_count && cdi->for_data)
1224 cdrom_close_write(cdi);
1226 cdo->release(cdi);
1227 if (cdi->use_count == 0) { /* last process that closes dev*/
1229 cdi->options & CDO_AUTO_EJECT && CDROM_CAN(CDC_OPEN_TRAY))
1230 cdo->tray_move(cdi, 1);
1235 static int cdrom_read_mech_status(struct cdrom_device_info *cdi,
1239 struct cdrom_device_ops *cdo = cdi->ops;
1247 if (cdi->sanyo_slot) {
1249 buf->hdr.curslot = cdi->sanyo_slot == 3 ? 0 : cdi->sanyo_slot;
1258 cdi->capacity * sizeof(struct cdrom_slot);
1264 return cdo->generic_packet(cdi, &cgc);
1267 static int cdrom_slot_status(struct cdrom_device_info *cdi, int slot)
1273 if (cdi->sanyo_slot)
1280 if ((ret = cdrom_read_mech_status(cdi, info)))
1296 int cdrom_number_of_slots(struct cdrom_device_info *cdi)
1304 cdi->capacity = 0;
1310 if ((status = cdrom_read_mech_status(cdi, info)) == 0)
1319 static int cdrom_load_unload(struct cdrom_device_info *cdi, int slot)
1324 if (cdi->sanyo_slot && slot < 0)
1336 if (cdi->sanyo_slot && -1 < slot) {
1340 cdi->sanyo_slot = slot ? slot : 3;
1343 return cdi->ops->generic_packet(cdi, &cgc);
1346 static int cdrom_select_disc(struct cdrom_device_info *cdi, int slot)
1356 (void) cdi->ops->media_changed(cdi, slot);
1360 cdi->mc_flags = 0x3;
1361 return cdrom_load_unload(cdi, -1);
1368 if ((ret = cdrom_read_mech_status(cdi, info))) {
1376 if (cdi->use_count > 1 || keeplocked) {
1393 cdi->mc_flags = 0x3;
1394 if ((ret = cdrom_load_unload(cdi, slot)))
1407 int media_changed(struct cdrom_device_info *cdi, int queue)
1410 int ret = !!(cdi->mc_flags & mask);
1415 if (cdi->ops->media_changed(cdi, CDSL_CURRENT)) {
1416 cdi->mc_flags = 0x3; /* set bit on both queues */
1418 cdi->media_written = 0;
1420 cdi->mc_flags &= ~mask; /* clear bit */
1424 int cdrom_media_changed(struct cdrom_device_info *cdi)
1429 if (cdi == NULL || cdi->ops->media_changed == NULL)
1433 return media_changed(cdi, 0);
1437 static void cdrom_count_tracks(struct cdrom_device_info *cdi, tracktype* tracks)
1444 tracks->cdi=0;
1453 if ((ret = cdi->ops->audio_ioctl(cdi, CDROMREADTOCHDR, &header))) {
1464 if (cdi->ops->audio_ioctl(cdi, CDROMREADTOCENTRY, &entry)) {
1470 tracks->cdi++;
1482 tracks->cdi, tracks->xa);
1582 static int dvd_do_auth(struct cdrom_device_info *cdi, dvd_authinfo *ai)
1587 struct cdrom_device_ops *cdo = cdi->ops;
1600 if ((ret = cdo->generic_packet(cdi, &cgc)))
1611 if ((ret = cdo->generic_packet(cdi, &cgc)))
1622 if ((ret = cdo->generic_packet(cdi, &cgc)))
1639 if ((ret = cdo->generic_packet(cdi, &cgc)))
1653 if ((ret = cdo->generic_packet(cdi, &cgc)))
1666 if ((ret = cdo->generic_packet(cdi, &cgc)))
1678 if ((ret = cdo->generic_packet(cdi, &cgc))) {
1690 if ((ret = cdo->generic_packet(cdi, &cgc)))
1701 if ((ret = cdo->generic_packet(cdi, &cgc)))
1718 if ((ret = cdo->generic_packet(cdi, &cgc)))
1730 static int dvd_read_physical(struct cdrom_device_info *cdi, dvd_struct *s)
1735 struct cdrom_device_ops *cdo = cdi->ops;
1752 if ((ret = cdo->generic_packet(cdi, &cgc)))
1780 static int dvd_read_copyright(struct cdrom_device_info *cdi, dvd_struct *s)
1785 struct cdrom_device_ops *cdo = cdi->ops;
1794 if ((ret = cdo->generic_packet(cdi, &cgc)))
1803 static int dvd_read_disckey(struct cdrom_device_info *cdi, dvd_struct *s)
1808 struct cdrom_device_ops *cdo = cdi->ops;
1822 if (!(ret = cdo->generic_packet(cdi, &cgc)))
1829 static int dvd_read_bca(struct cdrom_device_info *cdi, dvd_struct *s)
1834 struct cdrom_device_ops *cdo = cdi->ops;
1841 if ((ret = cdo->generic_packet(cdi, &cgc)))
1854 static int dvd_read_manufact(struct cdrom_device_info *cdi, dvd_struct *s)
1859 struct cdrom_device_ops *cdo = cdi->ops;
1872 if ((ret = cdo->generic_packet(cdi, &cgc))) {
1890 static int dvd_read_struct(struct cdrom_device_info *cdi, dvd_struct *s)
1894 return dvd_read_physical(cdi, s);
1897 return dvd_read_copyright(cdi, s);
1900 return dvd_read_disckey(cdi, s);
1903 return dvd_read_bca(cdi, s);
1906 return dvd_read_manufact(cdi, s);
1915 int cdrom_mode_sense(struct cdrom_device_info *cdi,
1919 struct cdrom_device_ops *cdo = cdi->ops;
1928 return cdo->generic_packet(cdi, cgc);
1931 int cdrom_mode_select(struct cdrom_device_info *cdi,
1934 struct cdrom_device_ops *cdo = cdi->ops;
1943 return cdo->generic_packet(cdi, cgc);
1946 static int cdrom_read_subchannel(struct cdrom_device_info *cdi,
1949 struct cdrom_device_ops *cdo = cdi->ops;
1961 if ((ret = cdo->generic_packet(cdi, &cgc)))
1983 static int cdrom_read_cd(struct cdrom_device_info *cdi,
1987 struct cdrom_device_ops *cdo = cdi->ops;
1999 return cdo->generic_packet(cdi, cgc);
2003 static int cdrom_read_block(struct cdrom_device_info *cdi,
2007 struct cdrom_device_ops *cdo = cdi->ops;
2032 return cdo->generic_packet(cdi, cgc);
2035 static int cdrom_read_cdda_old(struct cdrom_device_info *cdi, __u8 __user *ubuf,
2042 cdi->last_sense = 0;
2071 ret = cdrom_read_block(cdi, &cgc, lba, nr, 1, CD_FRAMESIZE_RAW);
2087 static int cdrom_read_cdda_bpc(struct cdrom_device_info *cdi, __u8 __user *ubuf,
2090 request_queue_t *q = cdi->disk->queue;
2103 cdi->last_sense = 0;
2107 if (cdi->cdda_method == CDDA_BPC_SINGLE)
2135 if (blk_execute_rq(q, cdi->disk, rq, 0)) {
2138 cdi->last_sense = s->sense_key;
2156 static int cdrom_read_cdda(struct cdrom_device_info *cdi, __u8 __user *ubuf,
2161 if (cdi->cdda_method == CDDA_OLD)
2162 return cdrom_read_cdda_old(cdi, ubuf, lba, nframes);
2168 ret = cdrom_read_cdda_bpc(cdi, ubuf, lba, nframes);
2176 if (cdi->cdda_method == CDDA_BPC_FULL && nframes > 1) {
2178 cdi->cdda_method = CDDA_BPC_SINGLE;
2187 if (cdi->last_sense != 0x04 && cdi->last_sense != 0x0b)
2190 printk("cdrom: dropping to old style cdda (sense=%x)\n", cdi->last_sense);
2191 cdi->cdda_method = CDDA_OLD;
2192 return cdrom_read_cdda_old(cdi, ubuf, lba, nframes);
2195 static int cdrom_ioctl_multisession(struct cdrom_device_info *cdi,
2204 if (!(cdi->ops->capability & CDC_MULTI_SESSION))
2215 ret = cdi->ops->get_last_session(cdi, &ms_info);
2228 static int cdrom_ioctl_eject(struct cdrom_device_info *cdi)
2234 if (cdi->use_count != 1 || keeplocked)
2237 int ret = cdi->ops->lock_door(cdi, 0);
2242 return cdi->ops->tray_move(cdi, 1);
2245 static int cdrom_ioctl_closetray(struct cdrom_device_info *cdi)
2251 return cdi->ops->tray_move(cdi, 0);
2254 static int cdrom_ioctl_eject_sw(struct cdrom_device_info *cdi,
2264 cdi->options &= ~(CDO_AUTO_CLOSE | CDO_AUTO_EJECT);
2266 cdi->options |= CDO_AUTO_CLOSE | CDO_AUTO_EJECT;
2270 static int cdrom_ioctl_media_changed(struct cdrom_device_info *cdi,
2283 return media_changed(cdi, 1);
2285 if ((unsigned int)arg >= cdi->capacity)
2292 ret = cdrom_read_mech_status(cdi, info);
2299 static int cdrom_ioctl_set_options(struct cdrom_device_info *cdi,
2317 return cdi->options;
2323 cdi->options |= (int) arg;
2324 return cdi->options;
2327 static int cdrom_ioctl_clear_options(struct cdrom_device_info *cdi,
2332 cdi->options &= ~(int) arg;
2333 return cdi->options;
2336 static int cdrom_ioctl_select_speed(struct cdrom_device_info *cdi,
2343 return cdi->ops->select_speed(cdi, arg);
2346 static int cdrom_ioctl_select_disc(struct cdrom_device_info *cdi,
2355 if ((int)arg >= cdi->capacity)
2364 if (cdi->ops->select_disc)
2365 return cdi->ops->select_disc(cdi, arg);
2368 return cdrom_select_disc(cdi, arg);
2371 static int cdrom_ioctl_reset(struct cdrom_device_info *cdi,
2381 return cdi->ops->reset(cdi);
2384 static int cdrom_ioctl_lock_door(struct cdrom_device_info *cdi,
2398 if (cdi->use_count != 1 && !arg && !capable(CAP_SYS_ADMIN))
2400 return cdi->ops->lock_door(cdi, arg);
2403 static int cdrom_ioctl_debug(struct cdrom_device_info *cdi,
2414 static int cdrom_ioctl_get_capability(struct cdrom_device_info *cdi)
2417 return (cdi->ops->capability & ~cdi->mask);
2426 static int cdrom_ioctl_get_mcn(struct cdrom_device_info *cdi,
2434 if (!(cdi->ops->capability & CDC_MCN))
2436 ret = cdi->ops->get_mcn(cdi, &mcn);
2446 static int cdrom_ioctl_drive_status(struct cdrom_device_info *cdi,
2451 if (!(cdi->ops->capability & CDC_DRIVE_STATUS))
2455 return cdi->ops->drive_status(cdi, CDSL_CURRENT);
2456 if (((int)arg >= cdi->capacity))
2458 return cdrom_slot_status(cdi, arg);
2478 static int cdrom_ioctl_disc_status(struct cdrom_device_info *cdi)
2484 cdrom_count_tracks(cdi, &tracks);
2490 if (!tracks.data && !tracks.cdi && !tracks.xa)
2496 if (tracks.cdi > 0)
2508 static int cdrom_ioctl_changer_nslots(struct cdrom_device_info *cdi)
2511 return cdi->capacity;
2514 static int cdrom_ioctl_get_subchnl(struct cdrom_device_info *cdi,
2533 ret = cdi->ops->audio_ioctl(cdi, CDROMSUBCHNL, &q);
2547 static int cdrom_ioctl_read_tochdr(struct cdrom_device_info *cdi,
2560 ret = cdi->ops->audio_ioctl(cdi, CDROMREADTOCHDR, &header);
2570 static int cdrom_ioctl_read_tocentry(struct cdrom_device_info *cdi,
2589 ret = cdi->ops->audio_ioctl(cdi, CDROMREADTOCENTRY, &entry);
2600 static int cdrom_ioctl_play_msf(struct cdrom_device_info *cdi,
2611 return cdi->ops->audio_ioctl(cdi, CDROMPLAYMSF, &msf);
2614 static int cdrom_ioctl_play_trkind(struct cdrom_device_info *cdi,
2627 ret = check_for_audio_disc(cdi, cdi->ops);
2630 return cdi->ops->audio_ioctl(cdi, CDROMPLAYTRKIND, &ti);
2632 static int cdrom_ioctl_volctrl(struct cdrom_device_info *cdi,
2643 return cdi->ops->audio_ioctl(cdi, CDROMVOLCTRL, &volume);
2646 static int cdrom_ioctl_volread(struct cdrom_device_info *cdi,
2657 ret = cdi->ops->audio_ioctl(cdi, CDROMVOLREAD, &volume);
2666 static int cdrom_ioctl_audioctl(struct cdrom_device_info *cdi,
2675 ret = check_for_audio_disc(cdi, cdi->ops);
2678 return cdi->ops->audio_ioctl(cdi, cmd, NULL);
2686 int cdrom_ioctl(struct file * file, struct cdrom_device_info *cdi,
2701 return cdrom_ioctl_multisession(cdi, argp);
2703 return cdrom_ioctl_eject(cdi);
2705 return cdrom_ioctl_closetray(cdi);
2707 return cdrom_ioctl_eject_sw(cdi, arg);
2709 return cdrom_ioctl_media_changed(cdi, arg);
2711 return cdrom_ioctl_set_options(cdi, arg);
2713 return cdrom_ioctl_clear_options(cdi, arg);
2715 return cdrom_ioctl_select_speed(cdi, arg);
2717 return cdrom_ioctl_select_disc(cdi, arg);
2719 return cdrom_ioctl_reset(cdi, ip->i_bdev);
2721 return cdrom_ioctl_lock_door(cdi, arg);
2723 return cdrom_ioctl_debug(cdi, arg);
2725 return cdrom_ioctl_get_capability(cdi);
2727 return cdrom_ioctl_get_mcn(cdi, argp);
2729 return cdrom_ioctl_drive_status(cdi, arg);
2731 return cdrom_ioctl_disc_status(cdi);
2733 return cdrom_ioctl_changer_nslots(cdi);
2743 ret = mmc_ioctl(cdi, cmd, arg);
2755 return cdrom_ioctl_get_subchnl(cdi, argp);
2757 return cdrom_ioctl_read_tochdr(cdi, argp);
2759 return cdrom_ioctl_read_tocentry(cdi, argp);
2761 return cdrom_ioctl_play_msf(cdi, argp);
2763 return cdrom_ioctl_play_trkind(cdi, argp);
2765 return cdrom_ioctl_volctrl(cdi, argp);
2767 return cdrom_ioctl_volread(cdi, argp);
2772 return cdrom_ioctl_audioctl(cdi, cmd);
2788 static int cdrom_switch_blocksize(struct cdrom_device_info *cdi, int size)
2790 struct cdrom_device_ops *cdo = cdi->ops;
2810 return cdo->generic_packet(cdi, &cgc);
2813 static int mmc_ioctl(struct cdrom_device_info *cdi, unsigned int cmd,
2816 struct cdrom_device_ops *cdo = cdi->ops;
2855 ret = cdrom_read_block(cdi, &cgc, lba, 1, format, blocksize);
2861 if ((ret = cdrom_switch_blocksize(cdi, blocksize))) {
2866 ret = cdrom_read_cd(cdi, &cgc, lba, blocksize, 1);
2867 ret |= cdrom_switch_blocksize(cdi, blocksize);
2892 return cdrom_read_cdda(cdi, ra.buf, lba, ra.nframes);
2903 if ((ret = cdrom_read_subchannel(cdi, &q, 0)))
2924 return cdo->generic_packet(cdi, &cgc);
2938 return cdo->generic_packet(cdi, &cgc);
2952 if ((ret = cdrom_mode_sense(cdi, &cgc, GPMODE_AUDIO_CTL_PAGE, 0)))
2966 ret = cdrom_mode_sense(cdi, &cgc,
2990 if ((ret = cdrom_mode_sense(cdi, &cgc,
3002 return cdrom_mode_select(cdi, &cgc);
3012 return cdo->generic_packet(cdi, &cgc);
3021 return cdo->generic_packet(cdi, &cgc);
3036 if ((ret = dvd_read_struct(cdi, s))) {
3052 if ((ret = dvd_do_auth (cdi, &ai)))
3061 if ((ret = cdrom_get_next_writable(cdi, &next)))
3069 if ((ret = cdrom_get_last_written(cdi, &last)))
3079 static int cdrom_get_track_info(struct cdrom_device_info *cdi, __u16 track, __u8 type,
3082 struct cdrom_device_ops *cdo = cdi->ops;
3094 if ((ret = cdo->generic_packet(cdi, &cgc)))
3104 if ((ret = cdo->generic_packet(cdi, &cgc)))
3112 static int cdrom_get_disc_info(struct cdrom_device_info *cdi, disc_information *di)
3114 struct cdrom_device_ops *cdo = cdi->ops;
3124 if ((ret = cdo->generic_packet(cdi, &cgc)))
3137 if ((ret = cdo->generic_packet(cdi, &cgc)))
3146 int cdrom_get_last_written(struct cdrom_device_info *cdi, long *last_written)
3157 ret = cdrom_get_disc_info(cdi, &di);
3164 ti_size = cdrom_get_track_info(cdi, last_track, 1, &ti);
3173 ti_size = cdrom_get_track_info(cdi, last_track, 1, &ti);
3200 if ((ret = cdi->ops->audio_ioctl(cdi, CDROMREADTOCENTRY, &toc)))
3208 static int cdrom_get_next_writable(struct cdrom_device_info *cdi, long *next_writable)
3218 ret = cdrom_get_disc_info(cdi, &di);
3225 ti_size = cdrom_get_track_info(cdi, last_track, 1, &ti);
3234 ti_size = cdrom_get_track_info(cdi, last_track, 1, &ti);
3247 if ((ret = cdrom_get_last_written(cdi, next_writable))) {
3286 struct cdrom_device_info *cdi;
3297 for (cdi=topCdromPtr;cdi!=NULL;cdi=cdi->next)
3298 pos += sprintf(info+pos, "\t%s", cdi->name);
3301 for (cdi=topCdromPtr;cdi!=NULL;cdi=cdi->next)
3302 pos += sprintf(info+pos, "\t%d", cdi->speed);
3305 for (cdi=topCdromPtr;cdi!=NULL;cdi=cdi->next)
3306 pos += sprintf(info+pos, "\t%d", cdi->capacity);
3309 for (cdi=topCdromPtr;cdi!=NULL;cdi=cdi->next)
3313 for (cdi=topCdromPtr;cdi!=NULL;cdi=cdi->next)
3317 for (cdi=topCdromPtr;cdi!=NULL;cdi=cdi->next)
3321 for (cdi=topCdromPtr;cdi!=NULL;cdi=cdi->next)
3325 for (cdi=topCdromPtr;cdi!=NULL;cdi=cdi->next)
3329 for (cdi=topCdromPtr;cdi!=NULL;cdi=cdi->next)
3333 for (cdi=topCdromPtr;cdi!=NULL;cdi=cdi->next)
3337 for (cdi=topCdromPtr;cdi!=NULL;cdi=cdi->next)
3341 for (cdi=topCdromPtr;cdi!=NULL;cdi=cdi->next)
3345 for (cdi=topCdromPtr;cdi!=NULL;cdi=cdi->next)
3349 for (cdi=topCdromPtr;cdi!=NULL;cdi=cdi->next)
3353 for (cdi=topCdromPtr;cdi!=NULL;cdi=cdi->next)
3357 for (cdi=topCdromPtr;cdi!=NULL;cdi=cdi->next)
3361 for (cdi=topCdromPtr;cdi!=NULL;cdi=cdi->next)
3365 for (cdi=topCdromPtr;cdi!=NULL;cdi=cdi->next)
3369 for (cdi=topCdromPtr;cdi!=NULL;cdi=cdi->next)
3373 for (cdi=topCdromPtr;cdi!=NULL;cdi=cdi->next)
3387 struct cdrom_device_info *cdi;
3389 for (cdi = topCdromPtr; cdi != NULL; cdi = cdi->next) {
3391 cdi->options |= CDO_AUTO_CLOSE;
3393 cdi->options &= ~CDO_AUTO_CLOSE;
3395 cdi->options |= CDO_AUTO_EJECT;
3397 cdi->options &= ~CDO_AUTO_EJECT;
3399 cdi->options |= CDO_LOCK;
3401 cdi->options &= ~CDO_LOCK;
3403 cdi->options |= CDO_CHECK_TYPE;
3405 cdi->options &= ~CDO_CHECK_TYPE;