/* Don't continue if device has no _ADR method.
         * _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);
                if (err < 0) {
                        if (ata_msg_probe(ap))
 
        /* Get this drive's _ADR info. if not already known. */
        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,
                         * + _their_ children == drive objects */
                        /* channel is ap->port_no */
                ata_dev_printk(dev, KERN_DEBUG, "%s: ENTER: port#: %d\n",
                               __FUNCTION__, ap->port_no);
 
-       if (libata_noacpi || !(ap->cbl == ATA_CBL_SATA))
+       if (libata_noacpi || !(ap->flags & ATA_FLAG_ACPI_SATA))
                return 0;
 
        if (!ata_dev_enabled(dev) || (ap->flags & ATA_FLAG_DISABLED))
         * we should not run GTF on PATA devices since some
         * PATA require execution of GTM/STM before GTF.
         */
-       if (!(ap->cbl == ATA_CBL_SATA))
+       if (!(ap->flags & ATA_FLAG_ACPI_SATA))
                return 0;
 
        for (ix = 0; ix < ATA_MAX_DEVICES; ix++) {
                               __FUNCTION__, dev->devno, ap->port_no);
 
        /* 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))
                        ata_dev_printk(dev, KERN_DEBUG,
                                "%s: Not a SATA device\n", __FUNCTION__);
 
        /* host flags */
        SIL24_COMMON_FLAGS      = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY |
                                  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 */
 
        IRQ_STAT_4PORTS         = 0xf,
 
        ATA_FLAG_SETXFER_POLLING= (1 << 14), /* use polling for SETXFER */
        ATA_FLAG_IGN_SIMPLEX    = (1 << 15), /* ignore SIMPLEX */
        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
         * ap->flags because it's referenced in many LLDs and will be