I won’t claim success until I actually transfer data, but so far, it looks like wl12xx SDIO support is baked:
[ 111.247063] cfg80211: Using static regulatory domain info [ 111.253472] cfg80211: Regulatory domain: US [ 111.262810] (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp) [ 111.271568] (2402000 KHz - 2472000 KHz @ 40000 KHz), (600 mBi, 2700 mBm) [ 111.279472] (5170000 KHz - 5190000 KHz @ 40000 KHz), (600 mBi, 2300 mBm) [ 111.287254] (5190000 KHz - 5210000 KHz @ 40000 KHz), (600 mBi, 2300 mBm) [ 111.294975] (5210000 KHz - 5230000 KHz @ 40000 KHz), (600 mBi, 2300 mBm) [ 111.302482] (5230000 KHz - 5330000 KHz @ 40000 KHz), (600 mBi, 2300 mBm) [ 111.310264] (5735000 KHz - 5835000 KHz @ 40000 KHz), (600 mBi, 3000 mBm) [ 111.317894] cfg80211: Calling CRDA for country: US [ 112.684807] lib80211: common routines for IEEE802.11 drivers [ 112.690972] lib80211_crypt: registered algorithm 'NULL' [ 112.744713] lib80211_crypt: registered algorithm 'TKIP' [ 112.787467] lib80211_crypt: registered algorithm 'WEP' [ 112.845267] lib80211_crypt: registered algorithm 'CCMP' [ 113.251671] wl12xx: registering driver [ 113.256462] wifi_probe [ 113.259208] trout_wifi_power: 1 [ 113.569452] trout_wifi_reset: 0 [ 113.623681] trout_wifi_set_carddetect: 1 [ 113.628290] mmc0: card_present 1 [ 113.631921] mmc0: Slot status change detected (0 -> 1) [ 113.653283] mmc0: Command timeout [ 113.664788] mmc0: card claims to support voltages below the defined range. These will be ignored. [ 113.678429] mmc0: SDIO card claims to support the incompletely defined 'low voltage range'. This will be ignored. [ 113.692773] mmc0: new SDIO card at address 0001 [ 113.702813] wl12xx: in probe [ 113.728844] phy0: Selected rate control algorithm 'minstrel' [ 113.738915] wl12xx: loaded [ 113.743919] wl12xx: initialized
Unfortunately, I can’t really test it yet because the wpa_supplicant already on the phone doesn’t support -Dwext or -Dnl80211, and there are no wireless-tools. So I need to cross-compile those before attempting to associate. In the meantime, here’s a very rough patch that implements the goods from wireless-testing wl12xx. I need to work on read() and write() – right now they are a copy of what is in the google driver because it appears the host driver has issues with RW_EXTENDED. I don’t believe the readb/writeb fallbacks should be strictly necessary. Ditto with the platform code, that needs a slightly better solution.