2006-08-18 14:50:52

by Daniel Ritz

[permalink] [raw]
Subject: [PATCH] PCI: fix ICH6 quirks

[PATCH] PCI: fix ICH6 quirks

- add the ICH6(R) LPC to the ICH6 ACPI quirks. currently only the ICH6-M is
handled. [ PCI_DEVICE_ID_INTEL_ICH6_1 is the ICH6-M LPC, ICH6_0 is the ICH6(R) ]
- remove the wrong quirk calling asus_hides_smbus_lpc() for ICH6. the register
modified in asus_hides_smbus_lpc() has a different meaning in ICH6.

Signed-off-by: Daniel Ritz <[email protected]>
Cc: Jean Delvare <[email protected]>

diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index fb08bc9..e4bd137 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -438,6 +438,7 @@ static void __devinit quirk_ich6_lpc_acp
pci_read_config_dword(dev, 0x48, &region);
quirk_io_region(dev, region, 64, PCI_BRIDGE_RESOURCES+1, "ICH6 GPIO");
}
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH6_0, quirk_ich6_lpc_acpi );
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH6_1, quirk_ich6_lpc_acpi );

/*
@@ -1091,7 +1092,6 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801CA_12, asus_hides_smbus_lpc );
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801DB_12, asus_hides_smbus_lpc );
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801EB_0, asus_hides_smbus_lpc );
-DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH6_1, asus_hides_smbus_lpc );

static void __init asus_hides_smbus_lpc_ich6(struct pci_dev *dev)
{


2006-08-18 16:57:41

by Jean Delvare

[permalink] [raw]
Subject: Re: [PATCH] PCI: fix ICH6 quirks

Hi Daniel,

> [PATCH] PCI: fix ICH6 quirks
>
> - add the ICH6(R) LPC to the ICH6 ACPI quirks. currently only the ICH6-M is
> handled. [ PCI_DEVICE_ID_INTEL_ICH6_1 is the ICH6-M LPC, ICH6_0 is the ICH6(R) ]

No objection.

> - remove the wrong quirk calling asus_hides_smbus_lpc() for ICH6. the register
> modified in asus_hides_smbus_lpc() has a different meaning in ICH6.

My mistake :( Thanks for fixing it. Do you know if executing the old
quirk on the ICH6 can cause trouble? In other words, should we backport
this fix to 2.6.17.y?

> Signed-off-by: Daniel Ritz <[email protected]>
> Cc: Jean Delvare <[email protected]>

Signed-off-by: Jean Delvare <[email protected]>

> diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
> index fb08bc9..e4bd137 100644
> --- a/drivers/pci/quirks.c
> +++ b/drivers/pci/quirks.c
> @@ -438,6 +438,7 @@ static void __devinit quirk_ich6_lpc_acp
> pci_read_config_dword(dev, 0x48, &region);
> quirk_io_region(dev, region, 64, PCI_BRIDGE_RESOURCES+1, "ICH6 GPIO");
> }
> +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH6_0, quirk_ich6_lpc_acpi );
> DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH6_1, quirk_ich6_lpc_acpi );
>
> /*
> @@ -1091,7 +1092,6 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I
> DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801CA_12, asus_hides_smbus_lpc );
> DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801DB_12, asus_hides_smbus_lpc );
> DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801EB_0, asus_hides_smbus_lpc );
> -DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH6_1, asus_hides_smbus_lpc );
>
> static void __init asus_hides_smbus_lpc_ich6(struct pci_dev *dev)
> {


--
Jean Delvare

2006-08-18 17:21:46

by Daniel Ritz

[permalink] [raw]
Subject: Re: [PATCH] PCI: fix ICH6 quirks

On Friday 18 August 2006 18.57, Jean Delvare wrote:
> Hi Daniel,
>
> > [PATCH] PCI: fix ICH6 quirks
> >
> > - add the ICH6(R) LPC to the ICH6 ACPI quirks. currently only the ICH6-M is
> > handled. [ PCI_DEVICE_ID_INTEL_ICH6_1 is the ICH6-M LPC, ICH6_0 is the ICH6(R) ]
>
> No objection.
>
> > - remove the wrong quirk calling asus_hides_smbus_lpc() for ICH6. the register
> > modified in asus_hides_smbus_lpc() has a different meaning in ICH6.
>
> My mistake :( Thanks for fixing it. Do you know if executing the old
> quirk on the ICH6 can cause trouble? In other words, should we backport
> this fix to 2.6.17.y?

the register it touches is part of the "root complex base address" register. so
changing it means the ICH6 decodes a different address range that could conflict
with something else...so yes, i think this is a 2.6.17.x candidate.

rgds
-daniel

2006-08-18 22:03:14

by Jean Delvare

[permalink] [raw]
Subject: Re: [PATCH] PCI: fix ICH6 quirks

> On Friday 18 August 2006 18.57, Jean Delvare wrote:
> > Hi Daniel,
> >
> > > [PATCH] PCI: fix ICH6 quirks
> > >
> > > - add the ICH6(R) LPC to the ICH6 ACPI quirks. currently only the ICH6-M is
> > > handled. [ PCI_DEVICE_ID_INTEL_ICH6_1 is the ICH6-M LPC, ICH6_0 is the ICH6(R) ]
> >
> > No objection.
> >
> > > - remove the wrong quirk calling asus_hides_smbus_lpc() for ICH6. the register
> > > modified in asus_hides_smbus_lpc() has a different meaning in ICH6.
> >
> > My mistake :( Thanks for fixing it. Do you know if executing the old
> > quirk on the ICH6 can cause trouble? In other words, should we backport
> > this fix to 2.6.17.y?
>
> the register it touches is part of the "root complex base address" register. so
> changing it means the ICH6 decodes a different address range that could conflict
> with something else...so yes, i think this is a 2.6.17.x candidate.

OK, this also means that we want your patch in 2.6.18. Greg, can you
pick it quickly?

Thanks,
--
Jean Delvare

2006-08-21 18:27:29

by Greg KH

[permalink] [raw]
Subject: Re: [PATCH] PCI: fix ICH6 quirks

On Fri, Aug 18, 2006 at 04:50:40PM +0200, Daniel Ritz wrote:
> [PATCH] PCI: fix ICH6 quirks
>
> - add the ICH6(R) LPC to the ICH6 ACPI quirks. currently only the ICH6-M is
> handled. [ PCI_DEVICE_ID_INTEL_ICH6_1 is the ICH6-M LPC, ICH6_0 is the ICH6(R) ]
> - remove the wrong quirk calling asus_hides_smbus_lpc() for ICH6. the register
> modified in asus_hides_smbus_lpc() has a different meaning in ICH6.
>
> Signed-off-by: Daniel Ritz <[email protected]>
> Cc: Jean Delvare <[email protected]>

Queued to -stable, thanks.

greg k-h