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:
@@ -230,4 +230,18 @@ static inline void ata_sff_exit(void)
|
||||
{ }
|
||||
#endif /* CONFIG_ATA_SFF */
|
||||
|
||||
/* libata-zpodd.c */
|
||||
#ifdef CONFIG_SATA_ZPODD
|
||||
void zpodd_init(struct ata_device *dev);
|
||||
void zpodd_exit(struct ata_device *dev);
|
||||
static inline bool zpodd_dev_enabled(struct ata_device *dev)
|
||||
{
|
||||
return dev->zpodd != NULL;
|
||||
}
|
||||
#else /* CONFIG_SATA_ZPODD */
|
||||
static inline void zpodd_init(struct ata_device *dev) {}
|
||||
static inline void zpodd_exit(struct ata_device *dev) {}
|
||||
static inline bool zpodd_dev_enabled(struct ata_device *dev) { return false; }
|
||||
#endif /* CONFIG_SATA_ZPODD */
|
||||
|
||||
#endif /* __LIBATA_H__ */
|
||||
|
Reference in New Issue
Block a user