libata: identify and init ZPODD devices
The ODD can be enabled for ZPODD if the following three conditions are satisfied: 1 The ODD supports device attention; 2 The platform can runtime power off the ODD through ACPI; 3 The ODD is either slot type or drawer type. For such ODDs, zpodd_init is called and a new structure is allocated for it to store ZPODD related stuffs. And the zpodd_dev_enabled function is used to test if ZPODD is currently enabled for this ODD. A new config CONFIG_SATA_ZPODD is added to selectively build ZPODD code. Signed-off-by: Aaron Lu <aaron.lu@intel.com> Acked-by: Tejun Heo <tj@kernel.org> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
This commit is contained in:
@@ -908,5 +908,39 @@ struct mode_page_header {
|
||||
__be16 desc_length;
|
||||
};
|
||||
|
||||
/* removable medium feature descriptor */
|
||||
struct rm_feature_desc {
|
||||
__be16 feature_code;
|
||||
#if defined(__BIG_ENDIAN_BITFIELD)
|
||||
__u8 reserved1:2;
|
||||
__u8 feature_version:4;
|
||||
__u8 persistent:1;
|
||||
__u8 curr:1;
|
||||
#elif defined(__LITTLE_ENDIAN_BITFIELD)
|
||||
__u8 curr:1;
|
||||
__u8 persistent:1;
|
||||
__u8 feature_version:4;
|
||||
__u8 reserved1:2;
|
||||
#endif
|
||||
__u8 add_len;
|
||||
#if defined(__BIG_ENDIAN_BITFIELD)
|
||||
__u8 mech_type:3;
|
||||
__u8 load:1;
|
||||
__u8 eject:1;
|
||||
__u8 pvnt_jmpr:1;
|
||||
__u8 dbml:1;
|
||||
__u8 lock:1;
|
||||
#elif defined(__LITTLE_ENDIAN_BITFIELD)
|
||||
__u8 lock:1;
|
||||
__u8 dbml:1;
|
||||
__u8 pvnt_jmpr:1;
|
||||
__u8 eject:1;
|
||||
__u8 load:1;
|
||||
__u8 mech_type:3;
|
||||
#endif
|
||||
__u8 reserved2;
|
||||
__u8 reserved3;
|
||||
__u8 reserved4;
|
||||
};
|
||||
|
||||
#endif /* _UAPI_LINUX_CDROM_H */
|
||||
|
Reference in New Issue
Block a user