> Hi all,
> 
> I am trying to switch from madwifi to ath5k on AR2315 WiSoC (Fon
> 2100A) using patches from Wojciech and Felix but at module loading
> the
> driver is not able to attach the HW. In particular it seems that
> ath5k
> is not capable to recognize the right mac/phy version/revision in the
> ath5k_hw_init()
> 
> ath5k phy0: Couldn't identify radio revision.
> ar231x-wmac ar231x-wmac.0: failed to attach device, err=-19
> 
> I am not sure about the right values for these fields and so I used
> the ones I obtained from madwifi-r3314
> 
> ah_devid 0x86
> ah_subvendorid 0x168c
> ah_macVersion 0xb
> ah_macRev 0x0
> ah_phyRev 0x48
> ah_analog5GhzRev 0x70
> 
> but now the driver hangs in ath5k_hw_post() because it seems it is
> not
> able to write correctly in the defined registers.

Can you check what ath5k_hw_read_srev(ah) (or ath5k_bus_read_srev(ah))
reads from board configuration? It has be valid because we cannot read
registers until we reset and we need to know srev already before.

For reset I have now checked with madwifi and there is a difference
in enabling wmac ahb. Can you try following change and see if it
helps?
I have just copied code for waking up WMAC. 

Br,
Wojtek

---
diff --git a/drivers/net/wireless/ath/ath5k/ahb.c 
b/drivers/net/wireless/ath/ath5k/ahb.c
index 707cde1..06c1b8b 100644
--- a/drivers/net/wireless/ath/ath5k/ahb.c
+++ b/drivers/net/wireless/ath/ath5k/ahb.c
@@ -132,6 +132,21 @@ static int ath_ahb_probe(struct platform_device *pdev)
                reg = __raw_readl((void __iomem *) AR5K_AR2315_BYTESWAP);
                reg |= AR5K_AR2315_BYTESWAP_WMAC;
                __raw_writel(reg, (void __iomem *) AR5K_AR2315_BYTESWAP);
+
+
+               /* wake up the MAC */
+               /* NOTE: for the following write to succeed the
+                * RST_AHB_ARB_CTL should be set to 0. This driver
+                * assumes that the register has been set to 0 by boot loader
+                */
+               reg = __raw_readl((void __iomem *) AR5K_AR2315_PCI_MAC_SCR);
+               reg = (reg & ~AR5K_AR2315_PCI_MAC_SCR_SLMODE_M) |
+                   (AR5K_AR2315_PCI_MAC_SCR_SLM_FWAKE << 
AR5K_AR2315_PCI_MAC_SCR_SLMODE_S);
+               __raw_writel(reg, (void __iomem *) AR5K_AR2315_PCI_MAC_SCR);
+
+               /* wait for the MAC to wakeup */
+               while ( __raw_readl((void __iomem *) 
AR5K_AR2315_PCI_MAC_PCICFG) & AR5K_AR2315_PCI_MAC_PCICFG_SPWR_DN);
+
        } else {
                /* Enable WMAC DMA access (assuming 5312 or 231x*/
                /* TODO: check other platforms */
diff --git a/drivers/net/wireless/ath/ath5k/reg.h 
b/drivers/net/wireless/ath/ath5k/reg.h
index 7ad05d4..9fc63a5 100644
--- a/drivers/net/wireless/ath/ath5k/reg.h
+++ b/drivers/net/wireless/ath/ath5k/reg.h
@@ -2587,3 +2587,12 @@
 
 #define AR5K_AR2315_BYTESWAP   0xb100000c
 #define AR5K_AR2315_BYTESWAP_WMAC      0x00000002
+
+#define AR5K_AR2315_PCI                                0xb0100000
+#define AR5K_AR2315_PCI_MAC_SCR        (AR5K_AR2315_PCI + 0x4004)
+#define AR5K_AR2315_PCI_MAC_SCR_SLMODE_M       0x00030000
+#define AR5K_AR2315_PCI_MAC_SCR_SLMODE_S       16
+#define AR5K_AR2315_PCI_MAC_SCR_SLM_FWAKE      0
+
+#define AR5K_AR2315_PCI_MAC_PCICFG     (AR5K_AR2315_PCI + 0x4010)
+#define AR5K_AR2315_PCI_MAC_PCICFG_SPWR_DN     0x00010000
---



> 
> Any idea about  these issues? I am using OpenWrt trunk,
> compat-wireless-2010-11-20, kernel 2.6.32.26.
> 
> Best regards
> 
> Lorenzo
_______________________________________________
ath5k-devel mailing list
ath5k-devel@lists.ath5k.org
https://lists.ath5k.org/mailman/listinfo/ath5k-devel

Reply via email to