SCSI definitions
This commit is contained in:
parent
292e69a468
commit
53da57ba60
4 changed files with 375 additions and 0 deletions
139
cpu/arm/common/usb/msc/spc2_struct.h
Normal file
139
cpu/arm/common/usb/msc/spc2_struct.h
Normal file
|
@ -0,0 +1,139 @@
|
|||
#ifndef __SPC2_STRUCT_H__6R1KTJP0NJ__
|
||||
#define __SPC2_STRUCT_H__6R1KTJP0NJ__
|
||||
|
||||
typedef uint8_t uint40_bytes[5];
|
||||
typedef uint8_t uint32_bytes[4];
|
||||
typedef uint8_t uint16_bytes[2];
|
||||
|
||||
#ifndef CC_BYTE_ALIGNED
|
||||
#ifdef __GNUC__
|
||||
#define CC_BYTE_ALIGNED __attribute__ ((packed))
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef CC_BYTE_ALIGNED
|
||||
#define CC_BYTE_ALIGNED
|
||||
#endif
|
||||
|
||||
#define HOST16_TO_BE_BYTES(x) {(((x) >> 8) & 0xff), ((x) & 0xff)}
|
||||
#define HOST32_TO_BE_BYTES(x) {(((x) >> 24) & 0xff), (((x) >> 16) & 0xff), \
|
||||
(((x) >> 8) & 0xff), ((x) & 0xff)}
|
||||
#define HOST40_TO_BE_BYTES(x) {(((x) >> 32) & 0xff), (((x) >> 24) & 0xff), (((x) >> 16) & 0xff), \
|
||||
(((x) >> 8) & 0xff), ((x) & 0xff)}
|
||||
|
||||
inline unsigned long
|
||||
be16_to_host(uint16_bytes bytes)
|
||||
{
|
||||
return bytes[0] << 8 | bytes[1];
|
||||
}
|
||||
|
||||
inline unsigned long
|
||||
be32_to_host(uint32_bytes bytes)
|
||||
{
|
||||
return (be16_to_host(bytes) << 16) | be16_to_host(bytes + 2);
|
||||
}
|
||||
|
||||
|
||||
#define BE16_TO_HOST(bytes) ((bytes)[0] << 8 | (bytes)[1])
|
||||
#define BE32_TO_HOST(bytes) \
|
||||
((BE16_TO_HOST(bytes) << 16) | BE16_TO_HOST((bytes)+2))
|
||||
struct spc2_inquiry_cmd
|
||||
{
|
||||
uint8_t op_code;
|
||||
uint8_t flags;
|
||||
uint8_t page;
|
||||
uint8_t reserved;
|
||||
uint8_t allocation_length;
|
||||
uint8_t control;
|
||||
} CC_BYTE_ALIGNED;
|
||||
|
||||
struct spc2_std_inquiry_data
|
||||
{
|
||||
uint8_t device;
|
||||
uint8_t flags1;
|
||||
uint8_t version;
|
||||
uint8_t flags2;
|
||||
uint8_t additional_length;
|
||||
uint8_t flags3;
|
||||
uint8_t flags4;
|
||||
uint8_t flags5;
|
||||
char vendor_id[8];
|
||||
char product_id[16];
|
||||
char product_rev[4];
|
||||
} CC_BYTE_ALIGNED;
|
||||
|
||||
struct spc2_vital_product_data_head
|
||||
{
|
||||
uint8_t device;
|
||||
uint8_t page;
|
||||
uint8_t reserved;
|
||||
uint8_t page_length;
|
||||
} CC_BYTE_ALIGNED;
|
||||
|
||||
struct spc2_identification_descriptor
|
||||
{
|
||||
uint8_t code_set;
|
||||
uint8_t identifier_type;
|
||||
uint8_t reserved;
|
||||
uint8_t identifier_length;
|
||||
};
|
||||
|
||||
struct spc2_request_sense_cmd
|
||||
{
|
||||
uint8_t op_code;
|
||||
uint8_t reserved1;
|
||||
uint8_t reserved2;
|
||||
uint8_t reserved3;
|
||||
uint8_t allocation_length;
|
||||
uint8_t control;
|
||||
} CC_BYTE_ALIGNED;
|
||||
|
||||
struct spc2_sense_data
|
||||
{
|
||||
uint8_t response_code;
|
||||
uint8_t obsolete;
|
||||
uint8_t sense_key;
|
||||
uint8_t information[4];
|
||||
uint8_t additional_length;
|
||||
uint8_t command_specific[4];
|
||||
uint8_t asc;
|
||||
uint8_t ascq;
|
||||
uint8_t unit_code;
|
||||
uint8_t sense_key_specific[3];
|
||||
} CC_BYTE_ALIGNED;
|
||||
|
||||
struct spc2_mode_sence_6_cmd
|
||||
{
|
||||
uint8_t op_code;
|
||||
uint8_t flags;
|
||||
uint8_t page_code;
|
||||
uint8_t reserved;
|
||||
uint8_t allocation_length;
|
||||
uint8_t control;
|
||||
} CC_BYTE_ALIGNED;
|
||||
|
||||
struct spc2_mode_select_6_cmd
|
||||
{
|
||||
uint8_t op_code;
|
||||
uint8_t flags;
|
||||
uint8_t reserved1;
|
||||
uint8_t reserved2;
|
||||
uint8_t parameter_list_length;
|
||||
uint8_t control;
|
||||
};
|
||||
|
||||
struct spc2_mode_parameter_header_6
|
||||
{
|
||||
uint8_t mode_data_length;
|
||||
uint8_t medium_type;
|
||||
uint8_t device_specific_parameter;
|
||||
uint8_t block_descriptor_length;
|
||||
} CC_BYTE_ALIGNED;
|
||||
|
||||
struct spc2_mode_page
|
||||
{
|
||||
uint8_t page_code;
|
||||
uint8_t page_length;
|
||||
} CC_BYTE_ALIGNED;
|
||||
|
||||
#endif /* __SPC2_STRUCT_H__6R1KTJP0NJ__ */
|
Loading…
Add table
Add a link
Reference in a new issue