[PATCH] ssb: Clear RETRY_TIMEOUT in PCI Configuration
Rafał Miłecki
zajec5 at gmail.com
Tue Nov 9 18:09:45 EST 2010
2010/10/19 Michael Büsch <mb at bu3sch.de>:
> On Tue, 2010-10-19 at 12:55 -0500, Larry Finger wrote:
>> MMIO log traces obtained using the Broadcom wl hybrid driver show that
>> the RETRY_TIMEOUT register (0x41) in PCI configuration space is cleared
>> if non-zero. Similar code found in other drivers such as ipw2100 show
>> this operation is needed to keep PCI Tx retries from interfering with
>> C3 CPU state. There are no known cases where omission of this code has
>> caused a problem, but this patch is offered just in case such a situation
>> occurs.
>>
>> Signed-off-by: Larry Finger <Larry.Finger at lwfinger.net>
>> ---
>>
>> John,
>>
>> No particular urgency for this patch.
>>
>> Larry
>> ---
>>
>> Index: wireless-testing/drivers/ssb/driver_pcicore.c
>> ===================================================================
>> --- wireless-testing.orig/drivers/ssb/driver_pcicore.c
>> +++ wireless-testing/drivers/ssb/driver_pcicore.c
>> @@ -271,6 +271,7 @@ int ssb_pcicore_plat_dev_init(struct pci
>> static void ssb_pcicore_fixup_pcibridge(struct pci_dev *dev)
>> {
>> u8 lat;
>> + u32 val;
>>
>> if (dev->bus->ops != &ssb_pcicore_pciops) {
>> /* This is not a device on the PCI-core bridge. */
>> @@ -288,6 +289,12 @@ static void ssb_pcicore_fixup_pcibridge(
>> return;
>> }
>>
>> + /* Disable the RETRY_TIMEOUT register (0x41) to keep
>> + * PCI Tx retries from interfering with C3 CPU state */
>> + pci_read_config_dword(pci_dev, 0x40, &val);
>> + if ((val & 0x0000ff00) != 0)
>> + pci_write_config_dword(pci_dev, 0x40, val & 0xffff00ff);
>> +
>> /* Enable PCI bridge BAR1 prefetch and burst */
>> pci_write_config_dword(dev, SSB_BAR1_CONTROL, 3);
>
>
> Hm, do you realize that this function will only be executed for PCI
> devices that live on top of a native SSB bus? Is that intentional?
>
> It won't affect normal broadcom wireless PCI devices.
> It will only have an affect on a broadcom wireless PCI device that lives
> behind a SSB->PCI bridge on an embedded device.
Is this patch needed? Shouldn't this be replaced by second version
affecting "normal devices"?
I can see both applied to wireless-testing.
--
Rafał
More information about the b43-dev
mailing list