summaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorTejun Heo <htejun@gmail.com>2007-05-15 03:28:16 +0900
committerJeff Garzik <jeff@garzik.org>2007-07-09 12:17:31 -0400
commitfafbae87db88a73b166d3bc3294d209207f27056 (patch)
tree158217a52a396b2be110688f23eacbe25cf1c2d7 /include/linux
parent7dcca30a32aadb0520417521b0c44f42d09fe05c (diff)
downloadop-kernel-dev-fafbae87db88a73b166d3bc3294d209207f27056.zip
op-kernel-dev-fafbae87db88a73b166d3bc3294d209207f27056.tar.gz
libata-acpi: implement ata_acpi_associate()
* Add acpi_handle to ata_host and ata_port. Rename ata_device->obj_handle to ->acpi_handle and move it above such that it doesn't get cleared on reconfiguration. * Replace ACPI node association which ata_acpi_associate() which is called once during host initialization. Unlike the previous implementation, ata_acpi_associate() uses ATA_FLAG_ACPI_SATA to choose between IDE or SATA ACPI hierarchy and uses simple child look up instead of recursive walk to match the nodes. This is way safer and simpler. Please read the following message for more info. http://article.gmane.org/gmane.linux.ide/17554 Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/libata.h13
1 files changed, 9 insertions, 4 deletions
diff --git a/include/linux/libata.h b/include/linux/libata.h
index 620da7b..d758168 100644
--- a/include/linux/libata.h
+++ b/include/linux/libata.h
@@ -363,6 +363,9 @@ struct ata_host {
void *private_data;
const struct ata_port_operations *ops;
unsigned long flags;
+#ifdef CONFIG_ATA_ACPI
+ acpi_handle acpi_handle;
+#endif
struct ata_port *simplex_claimed; /* channel owning the DMA */
struct ata_port *ports[0];
};
@@ -429,6 +432,9 @@ struct ata_device {
unsigned int devno; /* 0 or 1 */
unsigned long flags; /* ATA_DFLAG_xxx */
struct scsi_device *sdev; /* attached SCSI device */
+#ifdef CONFIG_ATA_ACPI
+ acpi_handle acpi_handle;
+#endif
/* n_sector is used as CLEAR_OFFSET, read comment above CLEAR_OFFSET */
u64 n_sectors; /* size of device, if ATA */
unsigned int class; /* ATA_DEV_xxx */
@@ -457,10 +463,6 @@ struct ata_device {
struct ata_ering ering;
int spdn_cnt;
unsigned int horkage; /* List of broken features */
-#ifdef CONFIG_ATA_ACPI
- /* ACPI objects info */
- acpi_handle obj_handle;
-#endif
};
/* Offset into struct ata_device. Fields above it are maintained
@@ -549,6 +551,9 @@ struct ata_port {
void *private_data;
+#ifdef CONFIG_ATA_ACPI
+ acpi_handle acpi_handle;
+#endif
u8 sector_buf[ATA_SECT_SIZE]; /* owned by EH */
};
OpenPOWER on IntegriCloud