diff options
author | Tejun Heo <htejun@gmail.com> | 2007-01-20 02:00:28 -0500 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2007-02-09 17:39:37 -0500 |
commit | f0d36efdc624beb3d9e29b9ab9e9537bf0f25d5b (patch) | |
tree | eac4efb465aa682d6eaac61f76b3174ffd9fd8cd /include/linux/libata.h | |
parent | 0529c159dbdd79794796c1b50b39442d72efbe97 (diff) |
libata: update libata core layer to use devres
Update libata core layer to use devres.
* ata_device_add() acquires all resources in managed mode.
* ata_host is allocated as devres associated with ata_host_release.
* Port attached status is handled as devres associated with
ata_host_attach_release().
* Initialization failure and host removal is handedl by releasing
devres group.
* Except for ata_scsi_release() removal, LLD interface remains the
same. Some functions use hacky is_managed test to support both
managed and unmanaged devices. These will go away once all LLDs are
updated to use devres.
Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'include/linux/libata.h')
-rw-r--r-- | include/linux/libata.h | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/include/linux/libata.h b/include/linux/libata.h index e9a0cfdcfe2c..f96277ed184f 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h | |||
@@ -31,7 +31,7 @@ | |||
31 | #include <linux/pci.h> | 31 | #include <linux/pci.h> |
32 | #include <linux/dma-mapping.h> | 32 | #include <linux/dma-mapping.h> |
33 | #include <asm/scatterlist.h> | 33 | #include <asm/scatterlist.h> |
34 | #include <asm/io.h> | 34 | #include <linux/io.h> |
35 | #include <linux/ata.h> | 35 | #include <linux/ata.h> |
36 | #include <linux/workqueue.h> | 36 | #include <linux/workqueue.h> |
37 | #include <scsi/scsi_host.h> | 37 | #include <scsi/scsi_host.h> |
@@ -726,7 +726,6 @@ extern void ata_host_remove(struct ata_host *host); | |||
726 | extern int ata_scsi_detect(struct scsi_host_template *sht); | 726 | extern int ata_scsi_detect(struct scsi_host_template *sht); |
727 | extern int ata_scsi_ioctl(struct scsi_device *dev, int cmd, void __user *arg); | 727 | extern int ata_scsi_ioctl(struct scsi_device *dev, int cmd, void __user *arg); |
728 | extern int ata_scsi_queuecmd(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *)); | 728 | extern int ata_scsi_queuecmd(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *)); |
729 | extern int ata_scsi_release(struct Scsi_Host *host); | ||
730 | extern void ata_sas_port_destroy(struct ata_port *); | 729 | extern void ata_sas_port_destroy(struct ata_port *); |
731 | extern struct ata_port *ata_sas_port_alloc(struct ata_host *, | 730 | extern struct ata_port *ata_sas_port_alloc(struct ata_host *, |
732 | struct ata_port_info *, struct Scsi_Host *); | 731 | struct ata_port_info *, struct Scsi_Host *); |
@@ -1227,14 +1226,14 @@ static inline unsigned int __ac_err_mask(u8 status) | |||
1227 | static inline int ata_pad_alloc(struct ata_port *ap, struct device *dev) | 1226 | static inline int ata_pad_alloc(struct ata_port *ap, struct device *dev) |
1228 | { | 1227 | { |
1229 | ap->pad_dma = 0; | 1228 | ap->pad_dma = 0; |
1230 | ap->pad = dma_alloc_coherent(dev, ATA_DMA_PAD_BUF_SZ, | 1229 | ap->pad = dmam_alloc_coherent(dev, ATA_DMA_PAD_BUF_SZ, |
1231 | &ap->pad_dma, GFP_KERNEL); | 1230 | &ap->pad_dma, GFP_KERNEL); |
1232 | return (ap->pad == NULL) ? -ENOMEM : 0; | 1231 | return (ap->pad == NULL) ? -ENOMEM : 0; |
1233 | } | 1232 | } |
1234 | 1233 | ||
1235 | static inline void ata_pad_free(struct ata_port *ap, struct device *dev) | 1234 | static inline void ata_pad_free(struct ata_port *ap, struct device *dev) |
1236 | { | 1235 | { |
1237 | dma_free_coherent(dev, ATA_DMA_PAD_BUF_SZ, ap->pad, ap->pad_dma); | 1236 | dmam_free_coherent(dev, ATA_DMA_PAD_BUF_SZ, ap->pad, ap->pad_dma); |
1238 | } | 1237 | } |
1239 | 1238 | ||
1240 | static inline struct ata_port *ata_shost_to_port(struct Scsi_Host *host) | 1239 | static inline struct ata_port *ata_shost_to_port(struct Scsi_Host *host) |