|
@@ -225,6 +225,43 @@ typedef struct idetape_packet_command_s {
|
|
|
/* Data direction */
|
|
|
#define PC_WRITING 5
|
|
|
|
|
|
+/* Tape door status */
|
|
|
+#define DOOR_UNLOCKED 0
|
|
|
+#define DOOR_LOCKED 1
|
|
|
+#define DOOR_EXPLICITLY_LOCKED 2
|
|
|
+
|
|
|
+/* Some defines for the SPACE command */
|
|
|
+#define IDETAPE_SPACE_OVER_FILEMARK 1
|
|
|
+#define IDETAPE_SPACE_TO_EOD 3
|
|
|
+
|
|
|
+/* Some defines for the LOAD UNLOAD command */
|
|
|
+#define IDETAPE_LU_LOAD_MASK 1
|
|
|
+#define IDETAPE_LU_RETENSION_MASK 2
|
|
|
+#define IDETAPE_LU_EOT_MASK 4
|
|
|
+
|
|
|
+/*
|
|
|
+ * Special requests for our block device strategy routine.
|
|
|
+ *
|
|
|
+ * In order to service a character device command, we add special requests to
|
|
|
+ * the tail of our block device request queue and wait for their completion.
|
|
|
+ */
|
|
|
+
|
|
|
+enum {
|
|
|
+ REQ_IDETAPE_PC1 = (1 << 0), /* packet command (first stage) */
|
|
|
+ REQ_IDETAPE_PC2 = (1 << 1), /* packet command (second stage) */
|
|
|
+ REQ_IDETAPE_READ = (1 << 2),
|
|
|
+ REQ_IDETAPE_WRITE = (1 << 3),
|
|
|
+};
|
|
|
+
|
|
|
+/* Error codes returned in rq->errors to the higher part of the driver. */
|
|
|
+#define IDETAPE_ERROR_GENERAL 101
|
|
|
+#define IDETAPE_ERROR_FILEMARK 102
|
|
|
+#define IDETAPE_ERROR_EOD 103
|
|
|
+
|
|
|
+/* Structures related to the SELECT SENSE / MODE SENSE packet commands. */
|
|
|
+#define IDETAPE_BLOCK_DESCRIPTOR 0
|
|
|
+#define IDETAPE_CAPABILITIES_PAGE 0x2a
|
|
|
+
|
|
|
/* A pipeline stage. */
|
|
|
typedef struct idetape_stage_s {
|
|
|
struct request rq; /* The corresponding request */
|
|
@@ -446,11 +483,6 @@ static void ide_tape_put(struct ide_tape_obj *tape)
|
|
|
mutex_unlock(&idetape_ref_mutex);
|
|
|
}
|
|
|
|
|
|
-/* Tape door status */
|
|
|
-#define DOOR_UNLOCKED 0
|
|
|
-#define DOOR_LOCKED 1
|
|
|
-#define DOOR_EXPLICITLY_LOCKED 2
|
|
|
-
|
|
|
/*
|
|
|
* Tape flag bits values.
|
|
|
*/
|
|
@@ -466,38 +498,6 @@ static void ide_tape_put(struct ide_tape_obj *tape)
|
|
|
/* 0 = no tape is loaded, so we don't rewind after ejecting */
|
|
|
#define IDETAPE_MEDIUM_PRESENT 9
|
|
|
|
|
|
-/* Some defines for the SPACE command */
|
|
|
-#define IDETAPE_SPACE_OVER_FILEMARK 1
|
|
|
-#define IDETAPE_SPACE_TO_EOD 3
|
|
|
-
|
|
|
-/* Some defines for the LOAD UNLOAD command */
|
|
|
-#define IDETAPE_LU_LOAD_MASK 1
|
|
|
-#define IDETAPE_LU_RETENSION_MASK 2
|
|
|
-#define IDETAPE_LU_EOT_MASK 4
|
|
|
-
|
|
|
-/*
|
|
|
- * Special requests for our block device strategy routine.
|
|
|
- *
|
|
|
- * In order to service a character device command, we add special requests to
|
|
|
- * the tail of our block device request queue and wait for their completion.
|
|
|
- */
|
|
|
-
|
|
|
-enum {
|
|
|
- REQ_IDETAPE_PC1 = (1 << 0), /* packet command (first stage) */
|
|
|
- REQ_IDETAPE_PC2 = (1 << 1), /* packet command (second stage) */
|
|
|
- REQ_IDETAPE_READ = (1 << 2),
|
|
|
- REQ_IDETAPE_WRITE = (1 << 3),
|
|
|
-};
|
|
|
-
|
|
|
-/* Error codes returned in rq->errors to the higher part of the driver. */
|
|
|
-#define IDETAPE_ERROR_GENERAL 101
|
|
|
-#define IDETAPE_ERROR_FILEMARK 102
|
|
|
-#define IDETAPE_ERROR_EOD 103
|
|
|
-
|
|
|
-/* Structures related to the SELECT SENSE / MODE SENSE packet commands. */
|
|
|
-#define IDETAPE_BLOCK_DESCRIPTOR 0
|
|
|
-#define IDETAPE_CAPABILITIES_PAGE 0x2a
|
|
|
-
|
|
|
/*
|
|
|
* The variables below are used for the character device interface. Additional
|
|
|
* state variables are defined in our ide_drive_t structure.
|