Hi,
We are back porting wl12xx drivers from latest Compat Wireless package to my Kernel. My kernel version is 2.6.28.2. and platform is NXP LPC313X. We have interfaced WL1271 through SDIO(MMC slot 0)
I always get the "wl12xx: WARNING unsupported chip id: 0x0" error when I run the following command "ifconfig wlan0 up".
My sdio write/read operations are successful.
The log from console
mac80211 add interface type 2 mac c1f48850
sdio write 53 addr 0x1ffc4, 4 bytes
sdio write 53 addr 0x1ffc0, 4 bytes
sdio write 53 addr 0x1ffcc, 4 bytes
sdio write 53 addr 0x1ffc8, 4 bytes
sdio write 53 addr 0x1ffd4, 4 bytes
sdio write 53 addr 0x1ffd0, 4 bytes
sdio write 53 addr 0x1ffd8, 4 bytes
sdio write 52 addr 0x1fffc, byte 0x01
wl12xx: WARNING unsupported chip id: 0x0
sdio write 53 addr 0x1ffc4, 4 bytes
sdio write 53 addr 0x1ffc0, 4 bytes
sdio write 53 addr 0x1ffcc, 4 bytes
sdio write 53 addr 0x1ffc8, 4 bytes
sdio write 53 addr 0x1ffd4, 4 bytes
sdio write 53 addr 0x1ffd0, 4 bytes
sdio write 53 addr 0x1ffd8, 4 bytes
sdio write 52 addr 0x1fffc, byte 0x01
wl12xx: WARNING unsupported chip id: 0x0
sdio write 53 addr 0x1ffc4, 4 bytes
sdio write 53 addr 0x1ffc0, 4 bytes
sdio write 53 addr 0x1ffcc, 4 bytes
sdio write 53 addr 0x1ffc8, 4 bytes
sdio write 53 addr 0x1ffd4, 4 bytes
sdio write 53 addr 0x1ffd0, 4 bytes
sdio write 53 addr 0x1ffd8, 4 bytes
sdio write 52 addr 0x1fffc, byte 0x01
wl12xx: WARNING unsupported chip id: 0x0
wl12xx: ERROR firmware boot failed despite 3 retries
We have done the necessary modifications to load the all the compat wireless related KOs ( compat.ko, rfkill_backport.ko, cfg80211.ko, mac80211.ko, wl12xx.ko and wl12xx_sdio.ko)
The following modifications to sucessfully load the modules
1. Disable all SDIO power management functions in Compat wireless drivers because the our kernel doesn't support SDIO/MMC run time power management functions
2. Modified the check to "if (func->num != 0x01)" from "if (func->num != 0x02)" in wl1271_probe() functions of sdio.c(/compat-wireless-2012-02-26/drivers/net/wireless/wl12xx/sdio.c)
3. The name was modified from "wl12xx_driver" to "wl12xx" in main.c
static struct platform_driver wl12xx_driver = {
.probe = wl12xx_probe,
.remove = __devexit_p(wl12xx_remove),
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30)
.id_table = wl12xx_id_table,
#endif
.driver = {
// .name = "wl12xx_driver",
.name = "wl12xx",
.owner = THIS_MODULE,
}
};\
With the above changes my wl12xx_probe() is being called successfully.
We had issues with writing to "W_ACCESS_ELP_CTRL_REG_ADDR" using "sdio_f0_writeb()" function. We used to error as (-22) EINVAL always for this register
Now we have replaced the "sdio_f0_writeb" & sdio_f0_readb" functions with "sdio_writeb" and "sdio_writeb" and "sdio_readb". now we don't see any sdio read/write failuers.
But the chip id is not being read properly and due to this firmware is not loaded.
Please let us know any suggestions on this
Thanks
Girish