libata-pmp: extend ACPI support to cover PMP
Extend ata_acpi_associate_sata_port() such that it can handle PMP and call it when PMP is attached and detached. Build breakage when !CONFIG_ATA_ACPI was spotted and fixed by Petr Vandrovec. Signed-off-by: Tejun Heo <htejun@gmail.com> Cc: Petr Vandrovec <petr@vandrovec.name> Signed-off-by: Jeff Garzik <jeff@garzik.org>
This commit is contained in:
@ -40,12 +40,40 @@ static int is_pci_dev(struct device *dev)
|
||||
return (dev->bus == &pci_bus_type);
|
||||
}
|
||||
|
||||
static void ata_acpi_associate_sata_port(struct ata_port *ap)
|
||||
/**
|
||||
* ata_acpi_associate_sata_port - associate SATA port with ACPI objects
|
||||
* @ap: target SATA port
|
||||
*
|
||||
* Look up ACPI objects associated with @ap and initialize acpi_handle
|
||||
* fields of @ap, the port and devices accordingly.
|
||||
*
|
||||
* LOCKING:
|
||||
* EH context.
|
||||
*
|
||||
* RETURNS:
|
||||
* 0 on success, -errno on failure.
|
||||
*/
|
||||
void ata_acpi_associate_sata_port(struct ata_port *ap)
|
||||
{
|
||||
acpi_integer adr = SATA_ADR(ap->port_no, NO_PORT_MULT);
|
||||
WARN_ON(!(ap->flags & ATA_FLAG_ACPI_SATA));
|
||||
|
||||
ap->link.device->acpi_handle =
|
||||
acpi_get_child(ap->host->acpi_handle, adr);
|
||||
if (!ap->nr_pmp_links) {
|
||||
acpi_integer adr = SATA_ADR(ap->port_no, NO_PORT_MULT);
|
||||
|
||||
ap->link.device->acpi_handle =
|
||||
acpi_get_child(ap->host->acpi_handle, adr);
|
||||
} else {
|
||||
struct ata_link *link;
|
||||
|
||||
ap->link.device->acpi_handle = NULL;
|
||||
|
||||
ata_port_for_each_link(link, ap) {
|
||||
acpi_integer adr = SATA_ADR(ap->port_no, link->pmp);
|
||||
|
||||
link->device->acpi_handle =
|
||||
acpi_get_child(ap->host->acpi_handle, adr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void ata_acpi_associate_ide_port(struct ata_port *ap)
|
||||
|
Reference in New Issue
Block a user