Messages in this thread Patches in this message | | | Date | Tue, 26 Jun 2001 17:53:26 +0400 | Subject | [PATCH] SMSC SLC90E66: IRQ router support and PCI quirk | From | <> |
| |
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.
-- Andrey Panin | Embedded systems software engineer pazke@orbita1.ru | PGP key: http://www.orbita1.ru/~pazke/AndreyPanin.ascdiff -ur linux.vanilla/arch/i386/kernel/pci-irq.c linux/arch/i386/kernel/pci-irq.c --- linux.vanilla/arch/i386/kernel/pci-irq.c Tue Jun 26 10:38:25 2001 +++ linux/arch/i386/kernel/pci-irq.c Tue Jun 26 11:07:27 2001 @@ -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 }, diff -ur linux.vanilla/arch/i386/kernel/pci-pc.c linux/arch/i386/kernel/pci-pc.c --- linux.vanilla/arch/i386/kernel/pci-pc.c Tue Jun 26 10:38:25 2001 +++ linux/arch/i386/kernel/pci-pc.c Tue Jun 26 15:03:16 2001 @@ -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 } }; diff -ur linux.vanilla/drivers/pci/quirks.c linux/drivers/pci/quirks.c --- linux.vanilla/drivers/pci/quirks.c Tue Jun 26 10:37:55 2001 +++ linux/drivers/pci/quirks.c Tue Jun 26 15:00:31 2001 @@ -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 },[unhandled content-type:application/pgp-signature] | |