?? osst.h
字號(hào):
/* * $Header: /home/cvsroot/Driver/osst.h,v 1.9 2000/10/08 03:09:43 riede Exp $ */#include <asm/byteorder.h>#include <linux/config.h>#ifdef CONFIG_DEVFS_FS#include <linux/devfs_fs_kernel.h>#endif/* FIXME - rename and use the following two types or delete them! * and the types really should go to st.h anyway... * INQUIRY packet command - Data Format (From Table 6-8 of QIC-157C) */typedef struct { unsigned device_type :5; /* Peripheral Device Type */ unsigned reserved0_765 :3; /* Peripheral Qualifier - Reserved */ unsigned reserved1_6t0 :7; /* Reserved */ unsigned rmb :1; /* Removable Medium Bit */ unsigned ansi_version :3; /* ANSI Version */ unsigned ecma_version :3; /* ECMA Version */ unsigned iso_version :2; /* ISO Version */ unsigned response_format :4; /* Response Data Format */ unsigned reserved3_45 :2; /* Reserved */ unsigned reserved3_6 :1; /* TrmIOP - Reserved */ unsigned reserved3_7 :1; /* AENC - Reserved */ u8 additional_length; /* Additional Length (total_length-4) */ u8 rsv5, rsv6, rsv7; /* Reserved */ u8 vendor_id[8]; /* Vendor Identification */ u8 product_id[16]; /* Product Identification */ u8 revision_level[4]; /* Revision Level */ u8 vendor_specific[20]; /* Vendor Specific - Optional */ u8 reserved56t95[40]; /* Reserved - Optional */ /* Additional information may be returned */} idetape_inquiry_result_t;/* * READ POSITION packet command - Data Format (From Table 6-57) */typedef struct { unsigned reserved0_10 :2; /* Reserved */ unsigned bpu :1; /* Block Position Unknown */ unsigned reserved0_543 :3; /* Reserved */ unsigned eop :1; /* End Of Partition */ unsigned bop :1; /* Beginning Of Partition */ u8 partition; /* Partition Number */ u8 reserved2, reserved3; /* Reserved */ u32 first_block; /* First Block Location */ u32 last_block; /* Last Block Location (Optional) */ u8 reserved12; /* Reserved */ u8 blocks_in_buffer[3]; /* Blocks In Buffer - (Optional) */ u32 bytes_in_buffer; /* Bytes In Buffer (Optional) */} idetape_read_position_result_t;/* * Follows structures which are related to the SELECT SENSE / MODE SENSE * packet commands. */#define COMPRESSION_PAGE 0x0f#define COMPRESSION_PAGE_LENGTH 16#define CAPABILITIES_PAGE 0x2a#define CAPABILITIES_PAGE_LENGTH 20#define TAPE_PARAMTR_PAGE 0x2b#define TAPE_PARAMTR_PAGE_LENGTH 16#define NUMBER_RETRIES_PAGE 0x2f#define NUMBER_RETRIES_PAGE_LENGTH 4#define BLOCK_SIZE_PAGE 0x30#define BLOCK_SIZE_PAGE_LENGTH 4#define BUFFER_FILLING_PAGE 0x33#define BUFFER_FILLING_PAGE_LENGTH #define VENDOR_IDENT_PAGE 0x36#define VENDOR_IDENT_PAGE_LENGTH 8#define LOCATE_STATUS_PAGE 0x37#define LOCATE_STATUS_PAGE_LENGTH 0#define MODE_HEADER_LENGTH 4/* * REQUEST SENSE packet command result - Data Format. */typedef struct { unsigned error_code :7; /* Current of deferred errors */ unsigned valid :1; /* The information field conforms to QIC-157C */ u8 reserved1 :8; /* Segment Number - Reserved */ unsigned sense_key :4; /* Sense Key */ unsigned reserved2_4 :1; /* Reserved */ unsigned ili :1; /* Incorrect Length Indicator */ unsigned eom :1; /* End Of Medium */ unsigned filemark :1; /* Filemark */ u32 information __attribute__ ((packed)); u8 asl; /* Additional sense length (n-7) */ u32 command_specific; /* Additional command specific information */ u8 asc; /* Additional Sense Code */ u8 ascq; /* Additional Sense Code Qualifier */ u8 replaceable_unit_code; /* Field Replaceable Unit Code */ unsigned sk_specific1 :7; /* Sense Key Specific */ unsigned sksv :1; /* Sense Key Specific information is valid */ u8 sk_specific2; /* Sense Key Specific */ u8 sk_specific3; /* Sense Key Specific */ u8 pad[2]; /* Padding to 20 bytes */} idetape_request_sense_result_t;/* * Mode Parameter Header for the MODE SENSE packet command */typedef struct { u8 mode_data_length; /* Length of the following data transfer */ u8 medium_type; /* Medium Type */ u8 dsp; /* Device Specific Parameter */ u8 bdl; /* Block Descriptor Length */} osst_mode_parameter_header_t;/* * Mode Parameter Block Descriptor the MODE SENSE packet command * * Support for block descriptors is optional. */typedef struct { u8 density_code; /* Medium density code */ u8 blocks[3]; /* Number of blocks */ u8 reserved4; /* Reserved */ u8 length[3]; /* Block Length */} osst_parameter_block_descriptor_t;/* * The Data Compression Page, as returned by the MODE SENSE packet command. */typedef struct {#if defined(__BIG_ENDIAN_BITFIELD) unsigned ps :1; unsigned reserved0 :1; /* Reserved */ unsigned page_code :6; /* Page Code - Should be 0xf */#elif defined(__LITTLE_ENDIAN_BITFIELD) unsigned page_code :6; /* Page Code - Should be 0xf */ unsigned reserved0 :1; /* Reserved */ unsigned ps :1;#else#error "Please fix <asm/byteorder.h>"#endif u8 page_length; /* Page Length - Should be 14 */#if defined(__BIG_ENDIAN_BITFIELD) unsigned dce :1; /* Data Compression Enable */ unsigned dcc :1; /* Data Compression Capable */ unsigned reserved2 :6; /* Reserved */#elif defined(__LITTLE_ENDIAN_BITFIELD) unsigned reserved2 :6; /* Reserved */ unsigned dcc :1; /* Data Compression Capable */ unsigned dce :1; /* Data Compression Enable */#else#error "Please fix <asm/byteorder.h>"#endif#if defined(__BIG_ENDIAN_BITFIELD) unsigned dde :1; /* Data Decompression Enable */ unsigned red :2; /* Report Exception on Decompression */ unsigned reserved3 :5; /* Reserved */#elif defined(__LITTLE_ENDIAN_BITFIELD) unsigned reserved3 :5; /* Reserved */ unsigned red :2; /* Report Exception on Decompression */ unsigned dde :1; /* Data Decompression Enable */#else#error "Please fix <asm/byteorder.h>"#endif u32 ca; /* Compression Algorithm */ u32 da; /* Decompression Algorithm */ u8 reserved[4]; /* Reserved */} osst_data_compression_page_t;/* * The Medium Partition Page, as returned by the MODE SENSE packet command. */typedef struct {#if defined(__BIG_ENDIAN_BITFIELD) unsigned ps :1; unsigned reserved1_6 :1; /* Reserved */ unsigned page_code :6; /* Page Code - Should be 0x11 */#elif defined(__LITTLE_ENDIAN_BITFIELD) unsigned page_code :6; /* Page Code - Should be 0x11 */ unsigned reserved1_6 :1; /* Reserved */ unsigned ps :1;#else#error "Please fix <asm/byteorder.h>"#endif u8 page_length; /* Page Length - Should be 6 */ u8 map; /* Maximum Additional Partitions - Should be 0 */ u8 apd; /* Additional Partitions Defined - Should be 0 */#if defined(__BIG_ENDIAN_BITFIELD) unsigned fdp :1; /* Fixed Data Partitions */ unsigned sdp :1; /* Should be 0 */ unsigned idp :1; /* Should be 0 */ unsigned psum :2; /* Should be 0 */ unsigned reserved4_012 :3; /* Reserved */#elif defined(__LITTLE_ENDIAN_BITFIELD) unsigned reserved4_012 :3; /* Reserved */ unsigned psum :2; /* Should be 0 */ unsigned idp :1; /* Should be 0 */ unsigned sdp :1; /* Should be 0 */ unsigned fdp :1; /* Fixed Data Partitions */#else#error "Please fix <asm/byteorder.h>"#endif u8 mfr; /* Medium Format Recognition */ u8 reserved[2]; /* Reserved */} osst_medium_partition_page_t;/* * Capabilities and Mechanical Status Page */typedef struct {#if defined(__BIG_ENDIAN_BITFIELD) unsigned reserved1_67 :2; unsigned page_code :6; /* Page code - Should be 0x2a */#elif defined(__LITTLE_ENDIAN_BITFIELD) unsigned page_code :6; /* Page code - Should be 0x2a */ unsigned reserved1_67 :2;#else#error "Please fix <asm/byteorder.h>"#endif u8 page_length; /* Page Length - Should be 0x12 */ u8 reserved2, reserved3;#if defined(__BIG_ENDIAN_BITFIELD) unsigned reserved4_67 :2; unsigned sprev :1; /* Supports SPACE in the reverse direction */ unsigned reserved4_1234 :4; unsigned ro :1; /* Read Only Mode */#elif defined(__LITTLE_ENDIAN_BITFIELD) unsigned ro :1; /* Read Only Mode */ unsigned reserved4_1234 :4; unsigned sprev :1; /* Supports SPACE in the reverse direction */ unsigned reserved4_67 :2;#else#error "Please fix <asm/byteorder.h>"#endif#if defined(__BIG_ENDIAN_BITFIELD) unsigned reserved5_67 :2; unsigned qfa :1; /* Supports the QFA two partition formats */ unsigned reserved5_4 :1; unsigned efmt :1; /* Supports ERASE command initiated formatting */ unsigned reserved5_012 :3;#elif defined(__LITTLE_ENDIAN_BITFIELD) unsigned reserved5_012 :3; unsigned efmt :1; /* Supports ERASE command initiated formatting */ unsigned reserved5_4 :1; unsigned qfa :1; /* Supports the QFA two partition formats */ unsigned reserved5_67 :2;#else#error "Please fix <asm/byteorder.h>"#endif#if defined(__BIG_ENDIAN_BITFIELD) unsigned cmprs :1; /* Supports data compression */ unsigned ecc :1; /* Supports error correction */ unsigned reserved6_45 :2; /* Reserved */ unsigned eject :1; /* The device can eject the volume */ unsigned prevent :1; /* The device defaults in the prevent state after power up */ unsigned locked :1; /* The volume is locked */ unsigned lock :1; /* Supports locking the volume */#elif defined(__LITTLE_ENDIAN_BITFIELD) unsigned lock :1; /* Supports locking the volume */ unsigned locked :1; /* The volume is locked */ unsigned prevent :1; /* The device defaults in the prevent state after power up */ unsigned eject :1; /* The device can eject the volume */ unsigned reserved6_45 :2; /* Reserved */ unsigned ecc :1; /* Supports error correction */ unsigned cmprs :1; /* Supports data compression */#else#error "Please fix <asm/byteorder.h>"#endif#if defined(__BIG_ENDIAN_BITFIELD) unsigned blk32768 :1; /* slowb - the device restricts the byte count for PIO */ /* transfers for slow buffer memory ??? */ /* Also 32768 block size in some cases */ unsigned reserved7_3_6 :4; unsigned blk1024 :1; /* Supports 1024 bytes block size */ unsigned blk512 :1; /* Supports 512 bytes block size */ unsigned reserved7_0 :1;#elif defined(__LITTLE_ENDIAN_BITFIELD) unsigned reserved7_0 :1; unsigned blk512 :1; /* Supports 512 bytes block size */ unsigned blk1024 :1; /* Supports 1024 bytes block size */ unsigned reserved7_3_6 :4; unsigned blk32768 :1; /* slowb - the device restricts the byte count for PIO */ /* transfers for slow buffer memory ??? */ /* Also 32768 block size in some cases */#else#error "Please fix <asm/byteorder.h>"#endif u16 max_speed; /* Maximum speed supported in KBps */ u8 reserved10, reserved11; u16 ctl; /* Continuous Transfer Limit in blocks */ u16 speed; /* Current Speed, in KBps */ u16 buffer_size; /* Buffer Size, in 512 bytes */ u8 reserved18, reserved19;} osst_capabilities_page_t;/* * Block Size Page */typedef struct {#if defined(__BIG_ENDIAN_BITFIELD) unsigned ps :1; unsigned reserved1_6 :1; unsigned page_code :6; /* Page code - Should be 0x30 */#elif defined(__LITTLE_ENDIAN_BITFIELD) unsigned page_code :6; /* Page code - Should be 0x30 */ unsigned reserved1_6 :1; unsigned ps :1;#else#error "Please fix <asm/byteorder.h>"#endif u8 page_length; /* Page Length - Should be 2 */ u8 reserved2;
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -