Skip to contentSkip to conversation

SMSC SLC90E66: IRQ router support and PCI quirk

PATCH New [email protected] 1 participant 1 message Jun 26, 2001 PCI

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 SMSC SLC90E66: IRQ router support and PCI quirk

Hi all,

SMSC SLC90E66 is southbridge chip, designed to be almost exact clone of Intel PIIX4. So it needs same handling as an original chip.

Attached two patches against 2.4.5-ac17,
first adds IRQ router support (using functions for Intel PIIX4), second adds quirk handling (ACPI/SMBus resources) same as for original PIIX4.

Both patches are untested, written according to SLC90E66 datasheet.

Best regards.

Signature · 2 lines
Andrey Panin            | Embedded systems software engineer
[email protected]        | PGP key: http://www.orbita1.ru/~pazke/AndreyPanin.asc
arch/i386/kernel/pci-irq.c +2 -1
diff -ur linux.vanilla/arch/i386/kernel/pci-irq.c linux/arch/i386/kernel/pci-irq.c
@@ -174,7 +174,7 @@
 }
 
 /*
- * The Intel PIIX4 pirq rules are fairly simple: "pirq" is
+ * The Intel PIIX4 and SMSC SLC90E66 pirq rules are fairly simple: "pirq" is
  * just a pointer to the config space.
  */
 static int pirq_piix_get(struct pci_dev *router, struct pci_dev *dev, int pirq)
@@ -448,6 +448,7 @@
 	{ "PIIX", PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82371MX,   pirq_piix_get, pirq_piix_set },
 	{ "PIIX", PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82443MX_0, pirq_piix_get, pirq_piix_set },
 	{ "PIIX", PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801BA_0, pirq_piix_get, pirq_piix_set },
+	{ "SLC90E66", PCI_VENDOR_ID_EFAR, PCI_DEVICE_ID_EFAR_SLC90E66_0, pirq_piix_get, pirq_piix_set },
 
 	{ "ALI", PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M1533, pirq_ali_get, pirq_ali_set },
 
arch/i386/kernel/pci-pc.c +2 -1
diff -ur linux.vanilla/arch/i386/kernel/pci-pc.c linux/arch/i386/kernel/pci-pc.c
@@ -943,7 +943,7 @@
 static void __init pci_fixup_piix4_acpi(struct pci_dev *d)
 {
 	/*
-	 * PIIX4 ACPI device: hardwired IRQ9
+	 * Intel PIIX4 and SMSC SLC90E66 ACPI device: hardwired IRQ9
 	 */
 	d->irq = 9;
 }
@@ -996,6 +996,7 @@
  	{ PCI_FIXUP_HEADER,	PCI_VENDOR_ID_VIA,	PCI_DEVICE_ID_VIA_82C598_1,	pci_fixup_via691_2 },
 #endif 	
  	{ PCI_FIXUP_HEADER,	PCI_VENDOR_ID_INTEL,	PCI_DEVICE_ID_INTEL_82371AB_3,	pci_fixup_piix4_acpi },
+	{ PCI_FIXUP_HEADER,	PCI_DEVICE_ID_EFAR,	PCI_DEVICE_ID_EFAR_SLC90E66_3,	pci_fixup_piix4_acpi },
 	{ 0 }
 };
 
drivers/pci/quirks.c +2 -1
diff -ur linux.vanilla/drivers/pci/quirks.c linux/drivers/pci/quirks.c
@@ -209,7 +209,7 @@
 }
 
 /*
- * PIIX4 ACPI: Two IO regions pointed to by longwords at
+ * Intel PIIX4 and SMSC SLC90E66 ACPI: Two IO regions pointed to by longwords at
  *	0x40 (64 bytes of ACPI registers)
  *	0x90 (32 bytes of SMB registers)
  */
@@ -423,6 +423,7 @@
 	{ PCI_FIXUP_HEADER,	PCI_VENDOR_ID_VIA,	PCI_DEVICE_ID_VIA_82C586_3,	quirk_vt82c586_acpi },
 	{ PCI_FIXUP_HEADER,	PCI_VENDOR_ID_VIA,	PCI_DEVICE_ID_VIA_82C686_4,	quirk_vt82c686_acpi },
 	{ PCI_FIXUP_HEADER,	PCI_VENDOR_ID_INTEL,	PCI_DEVICE_ID_INTEL_82371AB_3,	quirk_piix4_acpi },
+	{ PCI_FIXUP_HEADER,	PCI_DEVICE_ID_EFAR,	PCI_DEVICE_ID_EFAR_SLC90E66_3,	quirk_piix4_acpi },
 	{ PCI_FIXUP_HEADER,	PCI_VENDOR_ID_AL,	PCI_DEVICE_ID_AL_M7101,		quirk_ali7101_acpi },
  	{ PCI_FIXUP_HEADER,	PCI_VENDOR_ID_INTEL,	PCI_DEVICE_ID_INTEL_82371SB_2,	quirk_piix3_usb },
 	{ PCI_FIXUP_HEADER,	PCI_VENDOR_ID_INTEL,	PCI_DEVICE_ID_INTEL_82371AB_2,	quirk_piix3_usb },