N9: wl1271 sdio card

Detect, configure and enable sdio/wl1271 WLAN card.
Verifed with N9 with wl1271 sdio.
Ported from old kernel version.

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
Signed-off-by: Marek Puzyniak <marek.puzyniak@tieto.com>
N950: wl1271 spi support

Configure and setup WLAN spi card.
Also detect if N9 or N950 and configure
correct bus (SDIO, SPI).

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
wlcore: add power callback for SPI

Add power callback also for SPI.
This will also fix a dump:

[  143.111602] Unable to handle kernel NULL pointer dereference at
virtual address 00000000
[  143.150573] pgd = dda58000
[  143.153472] [00000000] *pgd=9d812831, *pte=00000000, *ppte=00000000
[  143.181091] Internal error: Oops: 80000007 [#1] PREEMPT ARM
[  143.186981] Modules linked in: wlcore_spi(+) wl12xx wlcore mac80211
cfg80211 atmel_mxt pvrsrvkm ipv6
[  143.196655] CPU: 0    Not tainted  (3.5.3-00240-g17ca7c0-dirty #7)
[  143.203186] PC is at 0x0
[  143.206024] LR is at wl12xx_set_power_on+0x24/0xb0 [wlcore]
[  143.211883] pc : [<00000000>]    lr : [<bf162620>]    psr: 60000013
[  143.211883] sp : ddf23db0  ip : 00000002  fp : 00000000
[  143.223968] r10: 00000000  r9 : 00000000  r8 : dddae1a8
[  143.229522] r7 : 00000001  r6 : dddaeb5a  r5 : dddad8e0  r4 : dddad8e0
[  143.236389] r3 : 00000000  r2 : 00000000  r1 : 00000001  r0 : ddfef808
[  143.243255] Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
[  143.250732] Control: 10c5387d  Table: 9da58019  DAC: 00000015
[  143.256774] Process insmod (pid: 442, stack limit = 0xddf222e8)
[  143.263000] Stack: (0xddf23db0 to 0xddf24000)
[  143.267578] 3da0:                                     dddad8e0
dddaeb70 00000008 dddad8e0
[  143.276153] 3dc0: 00000000 bf175ff8 ddfefa50 dddad8e0 ddfef808
c02bd12c 00000000 bf194f24
[  143.284729] 3de0: 00000000 c02be138 c02be124 c02bcf78 c02be318
ddfef808 c02bd12c 00000000
[  143.293304] 3e00: 00000000 c02bb968 de4038d8 dd8bed54 ddfef808
ddfef83c ddfef808 c02bd208
[  143.301879] 3e20: ddfef808 c06a8af0 ddfef808 c02bc394 ddfef808
ddfef810 de700c00 c02bb24c
[  143.310485] 3e40: ddfef810 00000000 00000000 de700c00 00000000
c0259ad4 ddfef800 ddfef800
[  143.319091] 3e60: 00000001 0000001c de700c00 00000000 ddf22000
00000000 00000000 c02be670
[  143.327636] 3e80: 00000000 dda62cc0 c067ea30 00000020 de700c00
bf19a730 de46bb08 00000000
[  143.336212] 3ea0: 00000000 bf19a8a5 00000400 00000000 00000000
00000000 de700c00 de700c34
[  143.344787] 3ec0: bf19a98c bf19a98c c000d804 c030bb5c c030bb44
c02bcf78 00000000 de700c00
[  143.353363] 3ee0: de700c34 bf19a98c 00000000 c02bd108 bf19a98c
c02bd0a0 00000000 c02bb9e8
[  143.361907] 3f00: de46baa8 de53fed0 bf19a98c dd9ff600 c06afb18
c02bc0d0 bf19a8f7 00000000
[  143.370483] 3f20: 00000000 bf19a98c bf19c000 00000000 00000000
c000d804 00000000 c02bd724
[  143.379089] 3f40: bf19a9c4 bf19c000 00000000 00000000 c000d804
c000863c 00000000 00000001
[  143.387664] 3f60: bf19a9c4 b6f7e2f0 00000000 bf19a9c4 b6f7e2f0
00000000 0002dc66 c000d804
[  143.396270] 3f80: ddf22000 c006b5d8 b6d80000 0002dc66 b6f7e2f0
00000000 00000000 00022db8
[  143.404876] 3fa0: 00000080 c000d660 00000000 00000000 b6d80000
0002dc66 b6f7e2f0 b6d80000
[  143.413513] 3fc0: 00000000 00000000 00022db8 00000080 00022d10
0002dc66 b6f7e2f0 00000000
[  143.422088] 3fe0: b6eee200 beaa68d8 b6f74ae4 b6eee210 60000010
b6d80000 fa0e0000 0e000061
[  143.430969] [<bf162620>] (wl12xx_set_power_on+0x24/0xb0 [wlcore])
from [<bf175ff8>] (wlcore_probe+0x3b4/0x678 [wlcore])
[  143.442474] [<bf175ff8>] (wlcore_probe+0x3b4/0x678 [wlcore]) from
[<c02be138>] (platform_drv_probe+0x14/0x18)
[  143.452880] [<c02be138>] (platform_drv_probe+0x14/0x18) from
[<c02bcf78>] (driver_probe_device+0xc8/0x1f0)
[  143.463012] [<c02bcf78>] (driver_probe_device+0xc8/0x1f0) from
[<c02bb968>] (bus_for_each_drv+0x48/0x80)
[  143.472961] [<c02bb968>] (bus_for_each_drv+0x48/0x80) from
[<c02bd208>] (device_attach+0x78/0xa4)
[  143.482269] [<c02bd208>] (device_attach+0x78/0xa4) from
[<c02bc394>] (bus_probe_device+0x28/0x9c)
[  143.491577] [<c02bc394>] (bus_probe_device+0x28/0x9c) from
[<c02bb24c>] (device_add+0x3d8/0x554)
[  143.500823] [<c02bb24c>] (device_add+0x3d8/0x554) from [<c02be670>]
(platform_device_add+0x104/0x160)
[  143.510528] [<c02be670>] (platform_device_add+0x104/0x160) from
[<bf19a730>] (wl1271_probe+0x140/0x19c [wlcore_spi])
[  143.521636] [<bf19a730>] (wl1271_probe+0x140/0x19c [wlcore_spi])
from [<c030bb5c>] (spi_drv_probe+0x18/0x1c)
[  143.531982] [<c030bb5c>] (spi_drv_probe+0x18/0x1c) from
[<c02bcf78>] (driver_probe_device+0xc8/0x1f0)
[  143.541687] [<c02bcf78>] (driver_probe_device+0xc8/0x1f0) from
[<c02bd108>] (__driver_attach+0x68/0x8c)
[  143.551544] [<c02bd108>] (__driver_attach+0x68/0x8c) from
[<c02bb9e8>] (bus_for_each_dev+0x48/0x74)
[  143.561065] [<c02bb9e8>] (bus_for_each_dev+0x48/0x74) from
[<c02bc0d0>] (bus_add_driver+0xa8/0x224)
[  143.570587] [<c02bc0d0>] (bus_add_driver+0xa8/0x224) from
[<c02bd724>] (driver_register+0xa0/0x12c)
[  143.580108] [<c02bd724>] (driver_register+0xa0/0x12c) from
[<c000863c>] (do_one_initcall+0x98/0x16c)
[  143.589721] [<c000863c>] (do_one_initcall+0x98/0x16c) from
[<c006b5d8>] (sys_init_module+0x70/0x18c)
[  143.599395] [<c006b5d8>] (sys_init_module+0x70/0x18c) from
[<c000d660>] (ret_fast_syscall+0x0/0x3c)
[  143.608886] Code: bad PC value
[  144.454803] ---[ end trace ba1722c65a7fd00a ]---

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
wlcore: SPI - fix spi_transfer list

In corner case for wl12xx_spi_raw_write() when
	len == WL1271_AGGR_BUFFER_SIZE
we don't setup correctly spi transfer_list.
Next we will have garbage and strange errors
reported by SPI framework (eg. wrong speed_hz,
failed to transfer one message from queue)
when iterate transfer_list.

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
n9: disable RFKILL in defconfig

Temporary disbale RFKILL for n9_mer_defconfig.
This will allow for easy WLAN testing.

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
Merge pull request #15 from l4mer/master

N9, N950: wlan sdio/spi driver configuration

Works nicely. We have WLAN now. Need to do bit of packaging to get the firmware more easily available. Pulling in.

Signed-off-by: Kalle Jokiniemi <kalle.jokiniemi@jollamobile.com>