Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 494e2fbe authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev:
  libata-sff: remove harmful BUG_ON from ata_bmdma_qc_issue
  sata_mv: fix broken DSM/TRIM support (v2)
  libata: be less of a drama queen on empty data commands
  [libata] sata_dwc_460ex: signdness bug
  ahci: add HFLAG_YES_FBS and apply it to 88SE9128
  libata: remove no longer needed pata_winbond driver
  pata_cmd64x: revert commit d62f5576
parents f1819427 55ee67f8
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -828,6 +828,7 @@ config PATA_SAMSUNG_CF
config PATA_WINBOND_VLB
	tristate "Winbond W83759A VLB PATA support (Experimental)"
	depends on ISA && EXPERIMENTAL
	select PATA_LEGACY
	help
	  Support for the Winbond W83759A controller on Vesa Local Bus
	  systems.
+0 −1
Original line number Diff line number Diff line
@@ -89,7 +89,6 @@ obj-$(CONFIG_PATA_QDI) += pata_qdi.o
obj-$(CONFIG_PATA_RB532)	+= pata_rb532_cf.o
obj-$(CONFIG_PATA_RZ1000)	+= pata_rz1000.o
obj-$(CONFIG_PATA_SAMSUNG_CF)	+= pata_samsung_cf.o
obj-$(CONFIG_PATA_WINBOND_VLB)	+= pata_winbond.o

obj-$(CONFIG_PATA_PXA)		+= pata_pxa.o

+11 −0
Original line number Diff line number Diff line
@@ -60,6 +60,7 @@ enum board_ids {
	board_ahci,
	board_ahci_ign_iferr,
	board_ahci_nosntf,
	board_ahci_yes_fbs,

	/* board IDs for specific chipsets in alphabetical order */
	board_ahci_mcp65,
@@ -132,6 +133,14 @@ static const struct ata_port_info ahci_port_info[] = {
		.udma_mask	= ATA_UDMA6,
		.port_ops	= &ahci_ops,
	},
	[board_ahci_yes_fbs] =
	{
		AHCI_HFLAGS	(AHCI_HFLAG_YES_FBS),
		.flags		= AHCI_FLAG_COMMON,
		.pio_mask	= ATA_PIO4,
		.udma_mask	= ATA_UDMA6,
		.port_ops	= &ahci_ops,
	},
	/* by chipsets */
	[board_ahci_mcp65] =
	{
@@ -362,6 +371,8 @@ static const struct pci_device_id ahci_pci_tbl[] = {
	/* Marvell */
	{ PCI_VDEVICE(MARVELL, 0x6145), board_ahci_mv },	/* 6145 */
	{ PCI_VDEVICE(MARVELL, 0x6121), board_ahci_mv },	/* 6121 */
	{ PCI_DEVICE(0x1b4b, 0x9123),
	  .driver_data = board_ahci_yes_fbs },			/* 88se9128 */

	/* Promise */
	{ PCI_VDEVICE(PROMISE, 0x3f20), board_ahci },	/* PDC42819 */
+1 −0
Original line number Diff line number Diff line
@@ -209,6 +209,7 @@ enum {
							link offline */
	AHCI_HFLAG_NO_SNTF		= (1 << 12), /* no sntf */
	AHCI_HFLAG_NO_FPDMA_AA		= (1 << 13), /* no FPDMA AA */
	AHCI_HFLAG_YES_FBS		= (1 << 14), /* force FBS cap on */

	/* ap->flags bits */

+14 −2
Original line number Diff line number Diff line
@@ -430,6 +430,12 @@ void ahci_save_initial_config(struct device *dev,
		cap &= ~HOST_CAP_SNTF;
	}

	if (!(cap & HOST_CAP_FBS) && (hpriv->flags & AHCI_HFLAG_YES_FBS)) {
		dev_printk(KERN_INFO, dev,
			   "controller can do FBS, turning on CAP_FBS\n");
		cap |= HOST_CAP_FBS;
	}

	if (force_port_map && port_map != force_port_map) {
		dev_printk(KERN_INFO, dev, "forcing port_map 0x%x -> 0x%x\n",
			   port_map, force_port_map);
@@ -2036,9 +2042,15 @@ static int ahci_port_start(struct ata_port *ap)
		u32 cmd = readl(port_mmio + PORT_CMD);
		if (cmd & PORT_CMD_FBSCP)
			pp->fbs_supported = true;
		else
		else if (hpriv->flags & AHCI_HFLAG_YES_FBS) {
			dev_printk(KERN_INFO, dev,
				   "port %d can do FBS, forcing FBSCP\n",
				   ap->port_no);
			pp->fbs_supported = true;
		} else
			dev_printk(KERN_WARNING, dev,
				   "The port is not capable of FBS\n");
				   "port %d is not capable of FBS\n",
				   ap->port_no);
	}

	if (pp->fbs_supported) {
Loading