libata-acpi: add ATA_FLAG_ACPI_SATA port flag
Whether a controller needs IDE or SATA ACPI hierarchy is determined by the programming interface of the controller not by whether the controller is SATA or PATA, or it supports slave device or not. This patch adds ATA_FLAG_ACPI_SATA port flags which tells libata-acpi that the port needs SATA ACPI nodes, and sets the flag for ahci and sata_sil24. Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
This commit is contained in:
parent
6ddcd3b020
commit
3cadbcc098
4 changed files with 10 additions and 7 deletions
|
@ -173,7 +173,8 @@ enum {
|
||||||
|
|
||||||
AHCI_FLAG_COMMON = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY |
|
AHCI_FLAG_COMMON = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY |
|
||||||
ATA_FLAG_MMIO | ATA_FLAG_PIO_DMA |
|
ATA_FLAG_MMIO | ATA_FLAG_PIO_DMA |
|
||||||
ATA_FLAG_SKIP_D2H_BSY,
|
ATA_FLAG_SKIP_D2H_BSY |
|
||||||
|
ATA_FLAG_ACPI_SATA,
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ahci_cmd_hdr {
|
struct ahci_cmd_hdr {
|
||||||
|
|
|
@ -321,7 +321,7 @@ static int do_drive_get_GTF(struct ata_device *dev, unsigned int *gtf_length,
|
||||||
|
|
||||||
/* Don't continue if device has no _ADR method.
|
/* Don't continue if device has no _ADR method.
|
||||||
* _GTF is intended for known motherboard devices. */
|
* _GTF is intended for known motherboard devices. */
|
||||||
if (!(ap->cbl == ATA_CBL_SATA)) {
|
if (!(ap->flags & ATA_FLAG_ACPI_SATA)) {
|
||||||
err = pata_get_dev_handle(gdev, &dev_handle, &pcidevfn);
|
err = pata_get_dev_handle(gdev, &dev_handle, &pcidevfn);
|
||||||
if (err < 0) {
|
if (err < 0) {
|
||||||
if (ata_msg_probe(ap))
|
if (ata_msg_probe(ap))
|
||||||
|
@ -343,7 +343,7 @@ static int do_drive_get_GTF(struct ata_device *dev, unsigned int *gtf_length,
|
||||||
|
|
||||||
/* Get this drive's _ADR info. if not already known. */
|
/* Get this drive's _ADR info. if not already known. */
|
||||||
if (!dev->obj_handle) {
|
if (!dev->obj_handle) {
|
||||||
if (!(ap->cbl == ATA_CBL_SATA)) {
|
if (!(ap->flags & ATA_FLAG_ACPI_SATA)) {
|
||||||
/* get child objects of dev_handle == channel objects,
|
/* get child objects of dev_handle == channel objects,
|
||||||
* + _their_ children == drive objects */
|
* + _their_ children == drive objects */
|
||||||
/* channel is ap->port_no */
|
/* channel is ap->port_no */
|
||||||
|
@ -528,7 +528,7 @@ static int do_drive_set_taskfiles(struct ata_device *dev,
|
||||||
ata_dev_printk(dev, KERN_DEBUG, "%s: ENTER: port#: %d\n",
|
ata_dev_printk(dev, KERN_DEBUG, "%s: ENTER: port#: %d\n",
|
||||||
__FUNCTION__, ap->port_no);
|
__FUNCTION__, ap->port_no);
|
||||||
|
|
||||||
if (libata_noacpi || !(ap->cbl == ATA_CBL_SATA))
|
if (libata_noacpi || !(ap->flags & ATA_FLAG_ACPI_SATA))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (!ata_dev_enabled(dev) || (ap->flags & ATA_FLAG_DISABLED))
|
if (!ata_dev_enabled(dev) || (ap->flags & ATA_FLAG_DISABLED))
|
||||||
|
@ -578,7 +578,7 @@ int ata_acpi_exec_tfs(struct ata_port *ap)
|
||||||
* we should not run GTF on PATA devices since some
|
* we should not run GTF on PATA devices since some
|
||||||
* PATA require execution of GTM/STM before GTF.
|
* PATA require execution of GTM/STM before GTF.
|
||||||
*/
|
*/
|
||||||
if (!(ap->cbl == ATA_CBL_SATA))
|
if (!(ap->flags & ATA_FLAG_ACPI_SATA))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
for (ix = 0; ix < ATA_MAX_DEVICES; ix++) {
|
for (ix = 0; ix < ATA_MAX_DEVICES; ix++) {
|
||||||
|
@ -641,7 +641,7 @@ int ata_acpi_push_id(struct ata_device *dev)
|
||||||
__FUNCTION__, dev->devno, ap->port_no);
|
__FUNCTION__, dev->devno, ap->port_no);
|
||||||
|
|
||||||
/* Don't continue if not a SATA device. */
|
/* Don't continue if not a SATA device. */
|
||||||
if (!(ap->cbl == ATA_CBL_SATA)) {
|
if (!(ap->flags & ATA_FLAG_ACPI_SATA)) {
|
||||||
if (ata_msg_probe(ap))
|
if (ata_msg_probe(ap))
|
||||||
ata_dev_printk(dev, KERN_DEBUG,
|
ata_dev_printk(dev, KERN_DEBUG,
|
||||||
"%s: Not a SATA device\n", __FUNCTION__);
|
"%s: Not a SATA device\n", __FUNCTION__);
|
||||||
|
|
|
@ -237,7 +237,8 @@ enum {
|
||||||
/* host flags */
|
/* host flags */
|
||||||
SIL24_COMMON_FLAGS = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY |
|
SIL24_COMMON_FLAGS = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY |
|
||||||
ATA_FLAG_MMIO | ATA_FLAG_PIO_DMA |
|
ATA_FLAG_MMIO | ATA_FLAG_PIO_DMA |
|
||||||
ATA_FLAG_NCQ | ATA_FLAG_SKIP_D2H_BSY,
|
ATA_FLAG_NCQ | ATA_FLAG_SKIP_D2H_BSY |
|
||||||
|
ATA_FLAG_ACPI_SATA,
|
||||||
SIL24_FLAG_PCIX_IRQ_WOC = (1 << 24), /* IRQ loss errata on PCI-X */
|
SIL24_FLAG_PCIX_IRQ_WOC = (1 << 24), /* IRQ loss errata on PCI-X */
|
||||||
|
|
||||||
IRQ_STAT_4PORTS = 0xf,
|
IRQ_STAT_4PORTS = 0xf,
|
||||||
|
|
|
@ -173,6 +173,7 @@ enum {
|
||||||
ATA_FLAG_SETXFER_POLLING= (1 << 14), /* use polling for SETXFER */
|
ATA_FLAG_SETXFER_POLLING= (1 << 14), /* use polling for SETXFER */
|
||||||
ATA_FLAG_IGN_SIMPLEX = (1 << 15), /* ignore SIMPLEX */
|
ATA_FLAG_IGN_SIMPLEX = (1 << 15), /* ignore SIMPLEX */
|
||||||
ATA_FLAG_NO_IORDY = (1 << 16), /* controller lacks iordy */
|
ATA_FLAG_NO_IORDY = (1 << 16), /* controller lacks iordy */
|
||||||
|
ATA_FLAG_ACPI_SATA = (1 << 17), /* need native SATA ACPI layout */
|
||||||
|
|
||||||
/* The following flag belongs to ap->pflags but is kept in
|
/* The following flag belongs to ap->pflags but is kept in
|
||||||
* ap->flags because it's referenced in many LLDs and will be
|
* ap->flags because it's referenced in many LLDs and will be
|
||||||
|
|
Loading…
Reference in a new issue