Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branch 'for-3.10-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata

Pull libata changes from Tejun Heo:
"Nothing too interesting. PCI ID additions, some sata_rcar fixes and a
fringe bug fix for DMADIR handling which shouldn't affect any device
remotely modern."

* 'for-3.10-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata:
sata_rcar: fix interrupt handling
ahci: add an observed PCI ID for Marvell 88se9172 SATA controller
sata_rcar: clear STOP bit in bmdma_start() method
libata: make ata_exec_internal_sg honor DMADIR
ata_piix: add PCI IDs for Intel BayTail
libata: update "Maintained by:" tags

+49 -26
+1 -1
drivers/ata/acard-ahci.c
··· 2 2 /* 3 3 * acard-ahci.c - ACard AHCI SATA support 4 4 * 5 - * Maintained by: Jeff Garzik <jgarzik@pobox.com> 5 + * Maintained by: Tejun Heo <tj@kernel.org> 6 6 * Please ALWAYS copy linux-ide@vger.kernel.org 7 7 * on emails. 8 8 *
+3 -1
drivers/ata/ahci.c
··· 1 1 /* 2 2 * ahci.c - AHCI SATA support 3 3 * 4 - * Maintained by: Jeff Garzik <jgarzik@pobox.com> 4 + * Maintained by: Tejun Heo <tj@kernel.org> 5 5 * Please ALWAYS copy linux-ide@vger.kernel.org 6 6 * on emails. 7 7 * ··· 422 422 { PCI_DEVICE(PCI_VENDOR_ID_MARVELL_EXT, 0x9125), 423 423 .driver_data = board_ahci_yes_fbs }, /* 88se9125 */ 424 424 { PCI_DEVICE(PCI_VENDOR_ID_MARVELL_EXT, 0x917a), 425 + .driver_data = board_ahci_yes_fbs }, /* 88se9172 */ 426 + { PCI_DEVICE(PCI_VENDOR_ID_MARVELL_EXT, 0x9172), 425 427 .driver_data = board_ahci_yes_fbs }, /* 88se9172 */ 426 428 { PCI_DEVICE(PCI_VENDOR_ID_MARVELL_EXT, 0x9192), 427 429 .driver_data = board_ahci_yes_fbs }, /* 88se9172 on some Gigabyte */
+1 -1
drivers/ata/ahci.h
··· 1 1 /* 2 2 * ahci.h - Common AHCI SATA definitions and declarations 3 3 * 4 - * Maintained by: Jeff Garzik <jgarzik@pobox.com> 4 + * Maintained by: Tejun Heo <tj@kernel.org> 5 5 * Please ALWAYS copy linux-ide@vger.kernel.org 6 6 * on emails. 7 7 *
+16 -1
drivers/ata/ata_piix.c
··· 1 1 /* 2 2 * ata_piix.c - Intel PATA/SATA controllers 3 3 * 4 - * Maintained by: Jeff Garzik <jgarzik@pobox.com> 4 + * Maintained by: Tejun Heo <tj@kernel.org> 5 5 * Please ALWAYS copy linux-ide@vger.kernel.org 6 6 * on emails. 7 7 * ··· 151 151 piix_pata_vmw, /* PIIX4 for VMware, spurious DMA_ERR */ 152 152 ich8_sata_snb, 153 153 ich8_2port_sata_snb, 154 + ich8_2port_sata_byt, 154 155 }; 155 156 156 157 struct piix_map_db { ··· 335 334 { 0x8086, 0x8d60, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata_snb }, 336 335 /* SATA Controller IDE (Wellsburg) */ 337 336 { 0x8086, 0x8d68, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata }, 337 + /* SATA Controller IDE (BayTrail) */ 338 + { 0x8086, 0x0F20, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata_byt }, 339 + { 0x8086, 0x0F21, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata_byt }, 338 340 339 341 { } /* terminate list */ 340 342 }; ··· 445 441 [tolapai_sata] = &tolapai_map_db, 446 442 [ich8_sata_snb] = &ich8_map_db, 447 443 [ich8_2port_sata_snb] = &ich8_2port_map_db, 444 + [ich8_2port_sata_byt] = &ich8_2port_map_db, 448 445 }; 449 446 450 447 static struct pci_bits piix_enable_bits[] = { ··· 1259 1254 .udma_mask = ATA_UDMA6, 1260 1255 .port_ops = &piix_sata_ops, 1261 1256 }, 1257 + 1258 + [ich8_2port_sata_byt] = 1259 + { 1260 + .flags = PIIX_SATA_FLAGS | PIIX_FLAG_SIDPR | PIIX_FLAG_PIO16, 1261 + .pio_mask = ATA_PIO4, 1262 + .mwdma_mask = ATA_MWDMA2, 1263 + .udma_mask = ATA_UDMA6, 1264 + .port_ops = &piix_sata_ops, 1265 + }, 1266 + 1262 1267 }; 1263 1268 1264 1269 #define AHCI_PCI_BAR 5
+1 -1
drivers/ata/libahci.c
··· 1 1 /* 2 2 * libahci.c - Common AHCI SATA low-level routines 3 3 * 4 - * Maintained by: Jeff Garzik <jgarzik@pobox.com> 4 + * Maintained by: Tejun Heo <tj@kernel.org> 5 5 * Please ALWAYS copy linux-ide@vger.kernel.org 6 6 * on emails. 7 7 *
+7 -1
drivers/ata/libata-core.c
··· 1 1 /* 2 2 * libata-core.c - helper library for ATA 3 3 * 4 - * Maintained by: Jeff Garzik <jgarzik@pobox.com> 4 + * Maintained by: Tejun Heo <tj@kernel.org> 5 5 * Please ALWAYS copy linux-ide@vger.kernel.org 6 6 * on emails. 7 7 * ··· 1602 1602 qc->tf = *tf; 1603 1603 if (cdb) 1604 1604 memcpy(qc->cdb, cdb, ATAPI_CDB_LEN); 1605 + 1606 + /* some SATA bridges need us to indicate data xfer direction */ 1607 + if (tf->protocol == ATAPI_PROT_DMA && (dev->flags & ATA_DFLAG_DMADIR) && 1608 + dma_dir == DMA_FROM_DEVICE) 1609 + qc->tf.feature |= ATAPI_DMADIR; 1610 + 1605 1611 qc->flags |= ATA_QCFLAG_RESULT_TF; 1606 1612 qc->dma_dir = dma_dir; 1607 1613 if (dma_dir != DMA_NONE) {
+1 -1
drivers/ata/libata-eh.c
··· 1 1 /* 2 2 * libata-eh.c - libata error handling 3 3 * 4 - * Maintained by: Jeff Garzik <jgarzik@pobox.com> 4 + * Maintained by: Tejun Heo <tj@kernel.org> 5 5 * Please ALWAYS copy linux-ide@vger.kernel.org 6 6 * on emails. 7 7 *
+1 -1
drivers/ata/libata-scsi.c
··· 1 1 /* 2 2 * libata-scsi.c - helper library for ATA 3 3 * 4 - * Maintained by: Jeff Garzik <jgarzik@pobox.com> 4 + * Maintained by: Tejun Heo <tj@kernel.org> 5 5 * Please ALWAYS copy linux-ide@vger.kernel.org 6 6 * on emails. 7 7 *
+1 -1
drivers/ata/libata-sff.c
··· 1 1 /* 2 2 * libata-sff.c - helper library for PCI IDE BMDMA 3 3 * 4 - * Maintained by: Jeff Garzik <jgarzik@pobox.com> 4 + * Maintained by: Tejun Heo <tj@kernel.org> 5 5 * Please ALWAYS copy linux-ide@vger.kernel.org 6 6 * on emails. 7 7 *
+1 -1
drivers/ata/pdc_adma.c
··· 1 1 /* 2 2 * pdc_adma.c - Pacific Digital Corporation ADMA 3 3 * 4 - * Maintained by: Mark Lord <mlord@pobox.com> 4 + * Maintained by: Tejun Heo <tj@kernel.org> 5 5 * 6 6 * Copyright 2005 Mark Lord 7 7 *
+1 -1
drivers/ata/sata_promise.c
··· 1 1 /* 2 2 * sata_promise.c - Promise SATA 3 3 * 4 - * Maintained by: Jeff Garzik <jgarzik@pobox.com> 4 + * Maintained by: Tejun Heo <tj@kernel.org> 5 5 * Mikael Pettersson <mikpe@it.uu.se> 6 6 * Please ALWAYS copy linux-ide@vger.kernel.org 7 7 * on emails.
+12 -12
drivers/ata/sata_rcar.c
··· 549 549 550 550 /* start host DMA transaction */ 551 551 dmactl = ioread32(priv->base + ATAPI_CONTROL1_REG); 552 + dmactl &= ~ATAPI_CONTROL1_STOP; 552 553 dmactl |= ATAPI_CONTROL1_START; 553 554 iowrite32(dmactl, priv->base + ATAPI_CONTROL1_REG); 554 555 } ··· 619 618 .bmdma_status = sata_rcar_bmdma_status, 620 619 }; 621 620 622 - static int sata_rcar_serr_interrupt(struct ata_port *ap) 621 + static void sata_rcar_serr_interrupt(struct ata_port *ap) 623 622 { 624 623 struct sata_rcar_priv *priv = ap->host->private_data; 625 624 struct ata_eh_info *ehi = &ap->link.eh_info; 626 625 int freeze = 0; 627 - int handled = 0; 628 626 u32 serror; 629 627 630 628 serror = ioread32(priv->base + SCRSERR_REG); 631 629 if (!serror) 632 - return 0; 630 + return; 633 631 634 632 DPRINTK("SError @host_intr: 0x%x\n", serror); 635 633 ··· 641 641 ata_ehi_push_desc(ehi, "%s", "hotplug"); 642 642 643 643 freeze = serror & SERR_COMM_WAKE ? 0 : 1; 644 - handled = 1; 645 644 } 646 645 647 646 /* freeze or abort */ ··· 648 649 ata_port_freeze(ap); 649 650 else 650 651 ata_port_abort(ap); 651 - 652 - return handled; 653 652 } 654 653 655 - static int sata_rcar_ata_interrupt(struct ata_port *ap) 654 + static void sata_rcar_ata_interrupt(struct ata_port *ap) 656 655 { 657 656 struct ata_queued_cmd *qc; 658 657 int handled = 0; ··· 659 662 if (qc) 660 663 handled |= ata_bmdma_port_intr(ap, qc); 661 664 662 - return handled; 665 + /* be sure to clear ATA interrupt */ 666 + if (!handled) 667 + sata_rcar_check_status(ap); 663 668 } 664 669 665 670 static irqreturn_t sata_rcar_interrupt(int irq, void *dev_instance) ··· 676 677 spin_lock_irqsave(&host->lock, flags); 677 678 678 679 sataintstat = ioread32(priv->base + SATAINTSTAT_REG); 680 + sataintstat &= SATA_RCAR_INT_MASK; 679 681 if (!sataintstat) 680 682 goto done; 681 683 /* ack */ 682 - iowrite32(sataintstat & ~SATA_RCAR_INT_MASK, 683 - priv->base + SATAINTSTAT_REG); 684 + iowrite32(~sataintstat & 0x7ff, priv->base + SATAINTSTAT_REG); 684 685 685 686 ap = host->ports[0]; 686 687 687 688 if (sataintstat & SATAINTSTAT_ATA) 688 - handled |= sata_rcar_ata_interrupt(ap); 689 + sata_rcar_ata_interrupt(ap); 689 690 690 691 if (sataintstat & SATAINTSTAT_SERR) 691 - handled |= sata_rcar_serr_interrupt(ap); 692 + sata_rcar_serr_interrupt(ap); 692 693 694 + handled = 1; 693 695 done: 694 696 spin_unlock_irqrestore(&host->lock, flags); 695 697
+1 -1
drivers/ata/sata_sil.c
··· 1 1 /* 2 2 * sata_sil.c - Silicon Image SATA 3 3 * 4 - * Maintained by: Jeff Garzik <jgarzik@pobox.com> 4 + * Maintained by: Tejun Heo <tj@kernel.org> 5 5 * Please ALWAYS copy linux-ide@vger.kernel.org 6 6 * on emails. 7 7 *
+1 -1
drivers/ata/sata_sx4.c
··· 1 1 /* 2 2 * sata_sx4.c - Promise SATA 3 3 * 4 - * Maintained by: Jeff Garzik <jgarzik@pobox.com> 4 + * Maintained by: Tejun Heo <tj@kernel.org> 5 5 * Please ALWAYS copy linux-ide@vger.kernel.org 6 6 * on emails. 7 7 *
+1 -1
drivers/ata/sata_via.c
··· 1 1 /* 2 2 * sata_via.c - VIA Serial ATA controllers 3 3 * 4 - * Maintained by: Jeff Garzik <jgarzik@pobox.com> 4 + * Maintained by: Tejun Heo <tj@kernel.org> 5 5 * Please ALWAYS copy linux-ide@vger.kernel.org 6 6 * on emails. 7 7 *