I am using Atheros AR5414 card in a custom Geode LX-based board.
It is a mini-PCI card with PCI ID 168c:001b.
Under the 2.6.25 kernel, the ath5k driver works.
Under the 3.0.9 and 3.2.0 kernels, the card does not work.
By 'does not work' I mean that it can't find any access points. ?After digging
a bit, it looks like interrupts are not occurring.
Here is a snippet of the kernel log (Geode LX/3.0.9):
[ ? ?1.712119] cfg80211: Calling CRDA to update world regulatory domain
[ ? ?1.801089] ath5k 0000:00:0c.0: PCI INT A -> Link[LNKA] -> GSI 10
(level, low) -> IRQ 10
[ ? ?1.801270] ath5k 0000:00:0c.0: registered as 'phy0'
[ ? ?2.468139] ath: EEPROM regdomain: 0x0
[ ? ?2.468158] ath: EEPROM indicates default country code should be used
[ ? ?2.468176] ath: doing EEPROM country->regdmn map search
[ ? ?2.468200] ath: country maps to regdmn code: 0x3a
[ ? ?2.468217] ath: Country alpha2 being used: US
[ ? ?2.468233] ath: Regpair used: 0x3a
[ ? ?2.468862] ieee80211 phy0: Selected rate control algorithm 'pid'
[ ? ?2.471545] ath5k phy0: Atheros AR5414 chip found (MAC: 0xa5, PHY: 0x61)
~ # cat /proc/interrupts
? ? ? ? ? CPU0
?0: ? ? ?43630 ? ?XT-PIC-XT-PIC ? ?timer
?2: ? ? ? ? ?0 ? ?XT-PIC-XT-PIC ? ?cascade
?3: ? ? ? ? ?1 ? ?XT-PIC-XT-PIC
?4: ? ? ? ? ?1 ? ?XT-PIC-XT-PIC
?8: ? ? ? ? ?0 ? ?XT-PIC-XT-PIC ? ?rtc0
?9: ? ? ? ? ?0 ? ?XT-PIC-XT-PIC ? ?acpi
10: ? ? ? ? ?0 ? ?XT-PIC-XT-PIC ? ?ath
11: ? ? ? 2373 ? ?XT-PIC-XT-PIC ? ?ehci_hcd:usb1, ohci_hcd:usb2, eth0
14: ? ? ? ?418 ? ?XT-PIC-XT-PIC ? ?pata_cs5536
NMI: ? ? ? ? ?0 ? Non-maskable interrupts
LOC: ? ? ? ? ?0 ? Local timer interrupts
SPU: ? ? ? ? ?0 ? Spurious interrupts
PMI: ? ? ? ? ?0 ? Performance monitoring interrupts
IWI: ? ? ? ? ?0 ? IRQ work interrupts
ERR: ? ? ? ? ?0
MIS: ? ? ? ? ?0
The 'registers' from debugfs show that an interrupt is pending.
~ # cat /debug/ieee80211/phy1/ath5k/registers
AR5K_CR ? ? ? ? ? ? ? ? ?0x00000004
AR5K_RXDP ? ? ? ? ? ? ? ?0x1f3524e0
AR5K_CFG ? ? ? ? ? ? ? ? 0x00000100
AR5K_IER ? ? ? ? ? ? ? ? 0x00000001
AR5K_BCR ? ? ? ? ? ? ? ? 0x00000000
AR5K_RTSD0 ? ? ? ? ? ? ? 0x00000000
AR5K_RTSD1 ? ? ? ? ? ? ? 0x00000000
AR5K_TXCFG ? ? ? ? ? ? ? 0x00000015
AR5K_RXCFG ? ? ? ? ? ? ? 0x00000005
AR5K_RXJLA ? ? ? ? ? ? ? 0x1f3524f0
AR5K_MIBC ? ? ? ? ? ? ? ?0x00000001
AR5K_TOPS ? ? ? ? ? ? ? ?0x00000008
AR5K_RXNOFRM ? ? ? ? ? ? 0x00000000
AR5K_TXNOFRM ? ? ? ? ? ? 0x00000000
AR5K_RPGTO ? ? ? ? ? ? ? 0x00000000
AR5K_RFCNT ? ? ? ? ? ? ? 0x0000001f
AR5K_MISC ? ? ? ? ? ? ? ?0x00000000
AR5K_QCUDCU_CLKGT ? ? ? ?0x00de96a1
AR5K_ISR ? ? ? ? ? ? ? ? 0x00000000
AR5K_PISR ? ? ? ? ? ? ? ?0x00045005
AR5K_SISR0 ? ? ? ? ? ? ? 0x00000000
AR5K_SISR1 ? ? ? ? ? ? ? 0x00000000
AR5K_SISR2 ? ? ? ? ? ? ? 0x88800000
AR5K_SISR3 ? ? ? ? ? ? ? 0x00000000
AR5K_SISR4 ? ? ? ? ? ? ? 0x00000000
AR5K_IMR ? ? ? ? ? ? ? ? 0x00000000
AR5K_PIMR ? ? ? ? ? ? ? ?0x800814b5
AR5K_SIMR0 ? ? ? ? ? ? ? 0x00cf0000
AR5K_SIMR1 ? ? ? ? ? ? ? 0x004f0000
AR5K_SIMR2 ? ? ? ? ? ? ? 0x00070000
AR5K_SIMR3 ? ? ? ? ? ? ? 0x00000000
AR5K_SIMR4 ? ? ? ? ? ? ? 0x00000000
AR5K_DCM_ADDR ? ? ? ? ? ?0x00000012
AR5K_DCCFG ? ? ? ? ? ? ? 0x00000000
AR5K_CCFG ? ? ? ? ? ? ? ?0x00000000
AR5K_CPC0 ? ? ? ? ? ? ? ?0x00000000
AR5K_CPC1 ? ? ? ? ? ? ? ?0x00000000
AR5K_CPC2 ? ? ? ? ? ? ? ?0x00000000
AR5K_CPC3 ? ? ? ? ? ? ? ?0x00000000
AR5K_CPCOVF ? ? ? ? ? ? ?0x00000000
AR5K_RESET_CTL ? ? ? ? ? 0x00000000
AR5K_SLEEP_CTL ? ? ? ? ? 0x00000000
AR5K_INTPEND ? ? ? ? ? ? 0x00000001
AR5K_SFR ? ? ? ? ? ? ? ? 0x00000000
AR5K_PCICFG ? ? ? ? ? ? ?0x00000014
AR5K_GPIOCR ? ? ? ? ? ? ?0x00008000
AR5K_GPIODO ? ? ? ? ? ? ?0x00000001
AR5K_SREV ? ? ? ? ? ? ? ?0x000000a5
For comparison, I also have an older Geode GX-based board with the same Atheros
card. ?The exact same 3.0.9 image works just fine on that board.
Here is the same group of kernel logs:
[ ? ?6.033111] cfg80211: Calling CRDA to update world regulatory domain
[ ? ?6.455114] ath5k 0000:00:0d.0: guessed PCI INT A -> IRQ 11
[ ? ?6.455965] ath5k 0000:00:0d.0: registered as 'phy0'
[ ? ?7.228768] ath: EEPROM regdomain: 0x0
[ ? ?7.228800] ath: EEPROM indicates default country code should be used
[ ? ?7.228828] ath: doing EEPROM country->regdmn map search
[ ? ?7.228865] ath: country maps to regdmn code: 0x3a
[ ? ?7.228893] ath: Country alpha2 being used: US
[ ? ?7.228918] ath: Regpair used: 0x3a
[ ? ?7.230164] ieee80211 phy0: Selected rate control algorithm 'pid'
[ ? ?7.234204] ath5k phy0: Atheros AR5414 chip found (MAC: 0xa5, PHY: 0x61)
The only significant difference is the line that shows the IRQ.
At this point, I'm not sure if this is a problem with the ath5k driver or with
the something else that changed in the kernel between the two versions, or with
the CPU board itself.
I have not yet done a bisect to see when the driver stopped working on the LX.
I plan to do that next.
Any suggestions as to what to look for would be helpful.
Thanks,
Ben
My issue had to do with broken ACPI on the LX board.
After disabling ACPI, the driver works perfectly.
Ben
On Thu, Jan 12, 2012 at 10:38 AM, Ben Gardner <[email protected]> wrote:
> I am using Atheros AR5414 card in a custom Geode LX-based board.
> It is a mini-PCI card with PCI ID 168c:001b.
>
> Under the 2.6.25 kernel, the ath5k driver works.
> Under the 3.0.9 and 3.2.0 kernels, the card does not work.
> By 'does not work' I mean that it can't find any access points. ?After digging
> a bit, it looks like interrupts are not occurring.
>
> Here is a snippet of the kernel log (Geode LX/3.0.9):
> [ ? ?1.712119] cfg80211: Calling CRDA to update world regulatory domain
> [ ? ?1.801089] ath5k 0000:00:0c.0: PCI INT A -> Link[LNKA] -> GSI 10
> (level, low) -> IRQ 10
> [ ? ?1.801270] ath5k 0000:00:0c.0: registered as 'phy0'
> [ ? ?2.468139] ath: EEPROM regdomain: 0x0
> [ ? ?2.468158] ath: EEPROM indicates default country code should be used
> [ ? ?2.468176] ath: doing EEPROM country->regdmn map search
> [ ? ?2.468200] ath: country maps to regdmn code: 0x3a
> [ ? ?2.468217] ath: Country alpha2 being used: US
> [ ? ?2.468233] ath: Regpair used: 0x3a
> [ ? ?2.468862] ieee80211 phy0: Selected rate control algorithm 'pid'
> [ ? ?2.471545] ath5k phy0: Atheros AR5414 chip found (MAC: 0xa5, PHY: 0x61)
>
> ~ # cat /proc/interrupts
> ? ? ? ? ? CPU0
> ?0: ? ? ?43630 ? ?XT-PIC-XT-PIC ? ?timer
> ?2: ? ? ? ? ?0 ? ?XT-PIC-XT-PIC ? ?cascade
> ?3: ? ? ? ? ?1 ? ?XT-PIC-XT-PIC
> ?4: ? ? ? ? ?1 ? ?XT-PIC-XT-PIC
> ?8: ? ? ? ? ?0 ? ?XT-PIC-XT-PIC ? ?rtc0
> ?9: ? ? ? ? ?0 ? ?XT-PIC-XT-PIC ? ?acpi
> 10: ? ? ? ? ?0 ? ?XT-PIC-XT-PIC ? ?ath
> 11: ? ? ? 2373 ? ?XT-PIC-XT-PIC ? ?ehci_hcd:usb1, ohci_hcd:usb2, eth0
> 14: ? ? ? ?418 ? ?XT-PIC-XT-PIC ? ?pata_cs5536
> NMI: ? ? ? ? ?0 ? Non-maskable interrupts
> LOC: ? ? ? ? ?0 ? Local timer interrupts
> SPU: ? ? ? ? ?0 ? Spurious interrupts
> PMI: ? ? ? ? ?0 ? Performance monitoring interrupts
> IWI: ? ? ? ? ?0 ? IRQ work interrupts
> ERR: ? ? ? ? ?0
> MIS: ? ? ? ? ?0
>
> The 'registers' from debugfs show that an interrupt is pending.
> ~ # cat /debug/ieee80211/phy1/ath5k/registers
> AR5K_CR ? ? ? ? ? ? ? ? ?0x00000004
> AR5K_RXDP ? ? ? ? ? ? ? ?0x1f3524e0
> AR5K_CFG ? ? ? ? ? ? ? ? 0x00000100
> AR5K_IER ? ? ? ? ? ? ? ? 0x00000001
> AR5K_BCR ? ? ? ? ? ? ? ? 0x00000000
> AR5K_RTSD0 ? ? ? ? ? ? ? 0x00000000
> AR5K_RTSD1 ? ? ? ? ? ? ? 0x00000000
> AR5K_TXCFG ? ? ? ? ? ? ? 0x00000015
> AR5K_RXCFG ? ? ? ? ? ? ? 0x00000005
> AR5K_RXJLA ? ? ? ? ? ? ? 0x1f3524f0
> AR5K_MIBC ? ? ? ? ? ? ? ?0x00000001
> AR5K_TOPS ? ? ? ? ? ? ? ?0x00000008
> AR5K_RXNOFRM ? ? ? ? ? ? 0x00000000
> AR5K_TXNOFRM ? ? ? ? ? ? 0x00000000
> AR5K_RPGTO ? ? ? ? ? ? ? 0x00000000
> AR5K_RFCNT ? ? ? ? ? ? ? 0x0000001f
> AR5K_MISC ? ? ? ? ? ? ? ?0x00000000
> AR5K_QCUDCU_CLKGT ? ? ? ?0x00de96a1
> AR5K_ISR ? ? ? ? ? ? ? ? 0x00000000
> AR5K_PISR ? ? ? ? ? ? ? ?0x00045005
> AR5K_SISR0 ? ? ? ? ? ? ? 0x00000000
> AR5K_SISR1 ? ? ? ? ? ? ? 0x00000000
> AR5K_SISR2 ? ? ? ? ? ? ? 0x88800000
> AR5K_SISR3 ? ? ? ? ? ? ? 0x00000000
> AR5K_SISR4 ? ? ? ? ? ? ? 0x00000000
> AR5K_IMR ? ? ? ? ? ? ? ? 0x00000000
> AR5K_PIMR ? ? ? ? ? ? ? ?0x800814b5
> AR5K_SIMR0 ? ? ? ? ? ? ? 0x00cf0000
> AR5K_SIMR1 ? ? ? ? ? ? ? 0x004f0000
> AR5K_SIMR2 ? ? ? ? ? ? ? 0x00070000
> AR5K_SIMR3 ? ? ? ? ? ? ? 0x00000000
> AR5K_SIMR4 ? ? ? ? ? ? ? 0x00000000
> AR5K_DCM_ADDR ? ? ? ? ? ?0x00000012
> AR5K_DCCFG ? ? ? ? ? ? ? 0x00000000
> AR5K_CCFG ? ? ? ? ? ? ? ?0x00000000
> AR5K_CPC0 ? ? ? ? ? ? ? ?0x00000000
> AR5K_CPC1 ? ? ? ? ? ? ? ?0x00000000
> AR5K_CPC2 ? ? ? ? ? ? ? ?0x00000000
> AR5K_CPC3 ? ? ? ? ? ? ? ?0x00000000
> AR5K_CPCOVF ? ? ? ? ? ? ?0x00000000
> AR5K_RESET_CTL ? ? ? ? ? 0x00000000
> AR5K_SLEEP_CTL ? ? ? ? ? 0x00000000
> AR5K_INTPEND ? ? ? ? ? ? 0x00000001
> AR5K_SFR ? ? ? ? ? ? ? ? 0x00000000
> AR5K_PCICFG ? ? ? ? ? ? ?0x00000014
> AR5K_GPIOCR ? ? ? ? ? ? ?0x00008000
> AR5K_GPIODO ? ? ? ? ? ? ?0x00000001
> AR5K_SREV ? ? ? ? ? ? ? ?0x000000a5
>
>
> For comparison, I also have an older Geode GX-based board with the same Atheros
> card. ?The exact same 3.0.9 image works just fine on that board.
> Here is the same group of kernel logs:
> [ ? ?6.033111] cfg80211: Calling CRDA to update world regulatory domain
> [ ? ?6.455114] ath5k 0000:00:0d.0: guessed PCI INT A -> IRQ 11
> [ ? ?6.455965] ath5k 0000:00:0d.0: registered as 'phy0'
> [ ? ?7.228768] ath: EEPROM regdomain: 0x0
> [ ? ?7.228800] ath: EEPROM indicates default country code should be used
> [ ? ?7.228828] ath: doing EEPROM country->regdmn map search
> [ ? ?7.228865] ath: country maps to regdmn code: 0x3a
> [ ? ?7.228893] ath: Country alpha2 being used: US
> [ ? ?7.228918] ath: Regpair used: 0x3a
> [ ? ?7.230164] ieee80211 phy0: Selected rate control algorithm 'pid'
> [ ? ?7.234204] ath5k phy0: Atheros AR5414 chip found (MAC: 0xa5, PHY: 0x61)
>
> The only significant difference is the line that shows the IRQ.
>
>
> At this point, I'm not sure if this is a problem with the ath5k driver or with
> the something else that changed in the kernel between the two versions, or with
> the CPU board itself.
>
> I have not yet done a bisect to see when the driver stopped working on the LX.
> I plan to do that next.
>
> Any suggestions as to what to look for would be helpful.
>
> Thanks,
> Ben