x86_64: introduce handle_quirks() for various chipset quirks
Move the aic94xx split completion timeout handling there. Signed-off-by: Muli Ben-Yehuda <muli@il.ibm.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Andi Kleen <ak@suse.de> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
9882234bf2
commit
b8d2ea1b87
1 changed files with 17 additions and 8 deletions
|
@ -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;
|
||||
|
|
Reference in a new issue