Lines Matching refs:udev
129 static void info_scsi_cmd_err(struct udev *udev, const char *cmd, int err)
147 static void scsi_cmd_init(struct udev *udev, struct scsi_cmd *cmd)
159 static void scsi_cmd_set(struct udev *udev, struct scsi_cmd *cmd, size_t i, unsigned char arg)
167 static int scsi_cmd_run(struct udev *udev, struct scsi_cmd *cmd, int fd, unsigned char *buf, size_t bufsize)
193 static int media_lock(struct udev *udev, int fd, bool lock)
209 static int media_eject(struct udev *udev, int fd)
214 scsi_cmd_init(udev, &sc);
215 scsi_cmd_set(udev, &sc, 0, 0x1b);
216 scsi_cmd_set(udev, &sc, 4, 0x02);
217 scsi_cmd_set(udev, &sc, 5, 0);
218 err = scsi_cmd_run(udev, &sc, fd, NULL, 0);
220 info_scsi_cmd_err(udev, "START_STOP_UNIT", err);
226 static int cd_capability_compat(struct udev *udev, int fd)
253 static int cd_media_compat(struct udev *udev, int fd)
263 static int cd_inquiry(struct udev *udev, int fd)
269 scsi_cmd_init(udev, &sc);
270 scsi_cmd_set(udev, &sc, 0, 0x12);
271 scsi_cmd_set(udev, &sc, 4, 36);
272 scsi_cmd_set(udev, &sc, 5, 0);
273 err = scsi_cmd_run(udev, &sc, fd, inq, 36);
275 info_scsi_cmd_err(udev, "INQUIRY", err);
288 static void feature_profile_media(struct udev *udev, int cur_profile)
397 static int feature_profiles(struct udev *udev, const unsigned char *profiles, size_t size)
487 static int cd_profiles_old_mmc(struct udev *udev, int fd)
494 scsi_cmd_init(udev, &sc);
495 scsi_cmd_set(udev, &sc, 0, 0x51);
496 scsi_cmd_set(udev, &sc, 8, sizeof(header));
497 scsi_cmd_set(udev, &sc, 9, 0);
498 err = scsi_cmd_run(udev, &sc, fd, header, sizeof(header));
500 info_scsi_cmd_err(udev, "READ DISC INFORMATION", err);
529 static int cd_profiles(struct udev *udev, int fd)
542 scsi_cmd_init(udev, &sc);
543 scsi_cmd_set(udev, &sc, 0, 0x46);
544 scsi_cmd_set(udev, &sc, 8, 8);
545 scsi_cmd_set(udev, &sc, 9, 0);
546 err = scsi_cmd_run(udev, &sc, fd, features, 8);
548 info_scsi_cmd_err(udev, "GET CONFIGURATION", err);
553 ret = cd_profiles_old_mmc(udev, fd);
561 feature_profile_media (udev, cur_profile);
578 scsi_cmd_init(udev, &sc);
579 scsi_cmd_set(udev, &sc, 0, 0x46);
580 scsi_cmd_set(udev, &sc, 7, ( len >> 8 ) & 0xff);
581 scsi_cmd_set(udev, &sc, 8, len & 0xff);
582 scsi_cmd_set(udev, &sc, 9, 0);
583 err = scsi_cmd_run(udev, &sc, fd, features, len);
585 info_scsi_cmd_err(udev, "GET CONFIGURATION", err);
607 feature_profiles(udev, &features[i]+4, MIN(features[i+3], len - i - 4));
618 static int cd_media_info(struct udev *udev, int fd)
630 scsi_cmd_init(udev, &sc);
631 scsi_cmd_set(udev, &sc, 0, 0x51);
632 scsi_cmd_set(udev, &sc, 8, sizeof(header) & 0xff);
633 scsi_cmd_set(udev, &sc, 9, 0);
634 err = scsi_cmd_run(udev, &sc, fd, header, sizeof(header));
636 info_scsi_cmd_err(udev, "READ DISC INFORMATION", err);
668 scsi_cmd_init(udev, &sc);
669 scsi_cmd_set(udev, &sc, 0, 0xAD);
670 scsi_cmd_set(udev, &sc, 7, 0xC0);
671 scsi_cmd_set(udev, &sc, 9, sizeof(dvdstruct));
672 scsi_cmd_set(udev, &sc, 11, 0);
673 err = scsi_cmd_run(udev, &sc, fd, dvdstruct, sizeof(dvdstruct));
675 info_scsi_cmd_err(udev, "READ DVD STRUCTURE", err);
685 scsi_cmd_init(udev, &sc);
686 scsi_cmd_set(udev, &sc, 0, 0x23);
687 scsi_cmd_set(udev, &sc, 8, sizeof(format));
688 scsi_cmd_set(udev, &sc, 9, 0);
689 err = scsi_cmd_run(udev, &sc, fd, format, sizeof(format));
691 info_scsi_cmd_err(udev, "READ DVD FORMAT CAPACITIES", err);
726 scsi_cmd_init(udev, &sc);
727 scsi_cmd_set(udev, &sc, 0, 0x28);
728 scsi_cmd_set(udev, &sc, 5, 0);
729 scsi_cmd_set(udev, &sc, 8, 32);
730 scsi_cmd_set(udev, &sc, 9, 0);
731 err = scsi_cmd_run(udev, &sc, fd, buffer, sizeof(buffer));
734 info_scsi_cmd_err(udev, "READ FIRST 32 BLOCKS", err);
771 static int cd_media_toc(struct udev *udev, int fd)
780 scsi_cmd_init(udev, &sc);
781 scsi_cmd_set(udev, &sc, 0, 0x43);
782 scsi_cmd_set(udev, &sc, 6, 1);
783 scsi_cmd_set(udev, &sc, 8, sizeof(header) & 0xff);
784 scsi_cmd_set(udev, &sc, 9, 0);
785 err = scsi_cmd_run(udev, &sc, fd, header, sizeof(header));
787 info_scsi_cmd_err(udev, "READ TOC", err);
804 scsi_cmd_init(udev, &sc);
805 scsi_cmd_set(udev, &sc, 0, 0x43);
806 scsi_cmd_set(udev, &sc, 6, header[2]); /* First Track/Session Number */
807 scsi_cmd_set(udev, &sc, 7, (len >> 8) & 0xff);
808 scsi_cmd_set(udev, &sc, 8, len & 0xff);
809 scsi_cmd_set(udev, &sc, 9, 0);
810 err = scsi_cmd_run(udev, &sc, fd, toc, len);
812 info_scsi_cmd_err(udev, "READ TOC (tracks)", err);
835 scsi_cmd_init(udev, &sc);
836 scsi_cmd_set(udev, &sc, 0, 0x43);
837 scsi_cmd_set(udev, &sc, 2, 1); /* Session Info */
838 scsi_cmd_set(udev, &sc, 8, sizeof(header));
839 scsi_cmd_set(udev, &sc, 9, 0);
840 err = scsi_cmd_run(udev, &sc, fd, header, sizeof(header));
842 info_scsi_cmd_err(udev, "READ TOC (multi session)", err);
853 struct udev *udev;
872 udev = udev_new();
873 if (udev == NULL)
940 if (cd_capability_compat(udev, fd) < 0) {
947 cd_media_compat(udev, fd);
950 if (cd_inquiry(udev, fd) < 0)
954 if (cd_profiles(udev, fd) != 0)
960 cd_media_toc(udev, fd);
963 cd_media_info(udev, fd);
969 media_lock(udev, fd, true);
974 media_lock(udev, fd, false);
979 media_lock(udev, fd, false);
981 media_eject(udev, fd);
1086 udev_unref(udev);