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

Commit b8d2ea1b authored by Muli Ben-Yehuda's avatar Muli Ben-Yehuda Committed by Linus Torvalds
Browse files

x86_64: introduce handle_quirks() for various chipset quirks



Move the aic94xx split completion timeout handling there.

Signed-off-by: default avatarMuli Ben-Yehuda <muli@il.ibm.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarAndi Kleen <ak@suse.de>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 9882234b
Loading
Loading
Loading
Loading
+17 −8
Original line number Diff line number Diff line
@@ -807,6 +807,20 @@ static void __init calgary_set_split_completion_timeout(void __iomem *bbar,
	readq(target); /* flush */
}

static void __init calgary_handle_quirks(struct pci_dev* dev)
{
	unsigned char busnum = dev->bus->number;
	struct iommu_table *tbl = dev->sysdata;

	/*
	 * Give split completion a longer timeout on bus 1 for aic94xx
	 * http://bugzilla.kernel.org/show_bug.cgi?id=7180
	 */
	if (busnum == 1)
		calgary_set_split_completion_timeout(tbl->bbar, busnum,
						     CCR_2SEC_TIMEOUT);
}

static void __init calgary_enable_translation(struct pci_dev *dev)
{
	u32 val32;
@@ -831,14 +845,6 @@ static void __init calgary_enable_translation(struct pci_dev *dev)
	writel(cpu_to_be32(val32), target);
	readl(target); /* flush */

	/*
	 * Give split completion a longer timeout on bus 1 for aic94xx
	 * http://bugzilla.kernel.org/show_bug.cgi?id=7180
	 */
	if (busnum == 1)
		calgary_set_split_completion_timeout(bbar, busnum,
						     CCR_2SEC_TIMEOUT);

	init_timer(&tbl->watchdog_timer);
	tbl->watchdog_timer.function = &calgary_watchdog;
	tbl->watchdog_timer.data = (unsigned long)dev;
@@ -890,6 +896,9 @@ static int __init calgary_init_one(struct pci_dev *dev)

	pci_dev_get(dev);
	dev->bus->self = dev;

	calgary_handle_quirks(dev);

	calgary_enable_translation(dev);

	return 0;