2010-12-17 08:59:54

by Arik Nemtsov

[permalink] [raw]
Subject: Problem bringing up wlan0 interface up with mainline wl1271 drivers

[ resending to list since it rejects html subparts ]

Hey Elvis,

>
> On Fri, Dec 17, 2010 at 10:36, Elvis Dowson <[email protected]> wrote:
>>
>> Hi,
>>
>> On Dec 17, 2010, at 9:11 AM, panduranga wrote:
>>
>> # ifconfig wlan0 hw ether 11:22:33:44:55:66
>> SIOCSIFHWADDR: Cannot assign requested address
>>
>> Even trying to assign an IP address doesn't work.
>>
>> # ifconfig wlan0 inet 192.168.1.105 netmask 255.255.255.0
>> SIOCSIFFLAGS: Cannot assign requested address
>>
>

Ethernet addresses with the LSB of the first octet turned on are
considered multicast addresses. Please try:

ifconfig wlan0 hw ether 00:22:33:44:55:66

Regards,
Arik


2010-12-17 10:34:59

by Arik Nemtsov

[permalink] [raw]
Subject: Re: Problem bringing up wlan0 interface up with mainline wl1271 drivers

On Fri, Dec 17, 2010 at 12:25, Elvis Dowson <[email protected]> wrote:
> Hi Arik,
>
> On Dec 17, 2010, at 2:12 PM, Arik Nemtsov wrote:
>>
>> The firmware file should be called wl1271-fw.bin and the nvs file
>> should be called wl1271-nvs.bin. Both should reside in /etc/firmware
>> (if you're running a standard linux).
>
> I got the files from this git repo
>
> git clone git://git.kernel.org/pub/scm/linux/kernel/git/dwmw2/linux-firmware.git
>
> and copied them over to /etc/firmware
>
> /etc/firmware# ls -l
> total 276
> -r--r--r-- 1 root root 271712 Dec 17 ?2010 wl1271-fw.bin
> -rw-rw-r-- 1 root root ? ?912 Dec 17 ?2010 wl1271-nvs.bin
>
> But I still get a error saying the the nvs file could not be found:
>
> [ ? 63.852264] wl1271: ERROR could not get nvs file: -2
> [ ? 63.906250] wl1271: loaded
> [ ? 63.909271] wl1271: initialized
>
> Best regards,
>
> Elvis Dowson
>

Sorry Elvis I gave you the wrong path :)
Its /lib/firmware in a regular linux. Its /etc/firmware in android.

Regards,
Arik

2010-12-17 10:26:19

by Elvis Dowson

[permalink] [raw]
Subject: Re: Problem bringing up wlan0 interface up with mainline wl1271 drivers

Hi Arik,

On Dec 17, 2010, at 2:12 PM, Arik Nemtsov wrote:
>
> The firmware file should be called wl1271-fw.bin and the nvs file
> should be called wl1271-nvs.bin. Both should reside in /etc/firmware
> (if you're running a standard linux).

I got the files from this git repo

git clone git://git.kernel.org/pub/scm/linux/kernel/git/dwmw2/linux-firmware.git

and copied them over to /etc/firmware

/etc/firmware# ls -l
total 276
-r--r--r-- 1 root root 271712 Dec 17 2010 wl1271-fw.bin
-rw-rw-r-- 1 root root 912 Dec 17 2010 wl1271-nvs.bin

But I still get a error saying the the nvs file could not be found:

[ 63.852264] wl1271: ERROR could not get nvs file: -2
[ 63.906250] wl1271: loaded
[ 63.909271] wl1271: initialized

Best regards,

Elvis Dowson

2010-12-17 11:12:48

by Elvis Dowson

[permalink] [raw]
Subject: Re: Problem bringing up wlan0 interface up with mainline wl1271 drivers

Hi Arik,
Its working now.

[ 0.000000] wlan_mux_init: Configuring mux settings for wl1271 wlan module
[ 2.143035] mmc1: mmc_rescan: trying to init card at 400000 Hz
[ 2.292175] mmc1: card claims to support voltages below the defined range. These will be ignored.
[ 2.337158] mmc1: queuing unknown CIS tuple 0x91 (3 bytes)
[ 2.359710] mmc1: new SDIO card at address 0001
Starting udev
[ 3.948883] udev: starting version 151
[ 3.957519] udevd (550): /proc/550/oom_adj is deprecated, please use /proc/550/oom_score_adj instead.
[ 5.156890] wl1271: loaded
[ 5.159942] wl1271: initialized

# ifconfig -a
lo Link encap:Local Loopback
LOOPBACK MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

wlan0 Link encap:Ethernet HWaddr DE:AD:BE:EF:00:00
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

# ifconfig wlan0 up

# wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf
CTRL-EVENT-SCAN-RESULTS
Trying to associate with 68:7f:74:1c:e4:7c (SSID='Olympus2' freq=2437 MHz)
Associated with 68:7f:74:1c:e4:7c
WPA: Key negotiation completed with 68:7f:74:1c:e4:7c [PTK=CCMP GTK=TKIP]
CTRL-EVENT-CONNECTED - Connection to 68:7f:74:1c:e4:7c completed (auth) [id=0 id_str=]


^Z[1] + Stopped wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf

# ifconfig -a
lo Link encap:Local Loopback
LOOPBACK MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

wlan0 Link encap:Ethernet HWaddr DE:AD:BE:EF:00:00
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2 errors:0 dropped:0 overruns:0 frame:0
TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:328 (328.0 b) TX bytes:288 (288.0 b)


# ifconfig wlan0 inet 192.168.1.105 netmask 255.255.255.0

# ping 192.168.1.1

PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=66.1 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=27.8 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=34.7 ms
64 bytes from 192.168.1.1: icmp_seq=4 ttl=64 time=37.7 ms
64 bytes from 192.168.1.1: icmp_seq=5 ttl=64 time=31.2 ms
^Z[2] + Stopped ping 192.168.1.1

# [ 263.148956] cfg80211: Calling CRDA to update world regulatory domain


Best regards,

Elvis Dowson


2010-12-17 10:36:50

by Luciano Coelho

[permalink] [raw]
Subject: Re: Problem bringing up wlan0 interface up with mainline wl1271 drivers

Hi Elvis,

On Fri, 2010-12-17 at 14:25 +0400, ext Elvis Dowson wrote:
> Hi Arik,
>
> On Dec 17, 2010, at 2:12 PM, Arik Nemtsov wrote:
> >
> > The firmware file should be called wl1271-fw.bin and the nvs file
> > should be called wl1271-nvs.bin. Both should reside in /etc/firmware
> > (if you're running a standard linux).
>
> I got the files from this git repo
>
> git clone git://git.kernel.org/pub/scm/linux/kernel/git/dwmw2/linux-firmware.git
>
> and copied them over to /etc/firmware
>
> /etc/firmware# ls -l
> total 276
> -r--r--r-- 1 root root 271712 Dec 17 2010 wl1271-fw.bin
> -rw-rw-r-- 1 root root 912 Dec 17 2010 wl1271-nvs.bin
>
> But I still get a error saying the the nvs file could not be found:
>
> [ 63.852264] wl1271: ERROR could not get nvs file: -2
> [ 63.906250] wl1271: loaded
> [ 63.909271] wl1271: initialized

You need to start udevd. The driver gets the firmware via udev.


--
Cheers,
Luca.


2010-12-17 09:34:00

by Elvis Dowson

[permalink] [raw]
Subject: Re: Problem bringing up wlan0 interface up with mainline wl1271 drivers

Hi,

On Dec 17, 2010, at 9:11 AM, panduranga wrote:

> add the following patch (http://www.spinics.net/lists/linux-wireless/msg59391.html) by Arik Nemtsov.
>
> diff --git a/drivers/net/wireless/wl12xx/main.c b/drivers/net/wireless/wl12xx/main.c
> index 708b699..e5fbbb6 100644
> --- a/drivers/net/wireless/wl12xx/main.c
> +++ b/drivers/net/wireless/wl12xx/main.c
> @@ -2987,6 +2987,18 @@ int wl1271_register_hw(struct wl1271 *wl)
> if (wl->mac80211_registered)
> return 0;
>
> + ret = wl1271_fetch_nvs(wl);
> + if (ret == 0) {
> + u8 *nvs_ptr = (u8 *)wl->nvs->nvs;
> +
> + wl->mac_addr[0] = nvs_ptr[11];
> + wl->mac_addr[1] = nvs_ptr[10];
> + wl->mac_addr[2] = nvs_ptr[6];
> + wl->mac_addr[3] = nvs_ptr[5];
> + wl->mac_addr[4] = nvs_ptr[4];
> + wl->mac_addr[5] = nvs_ptr[3];
> + }
> +
> SET_IEEE80211_PERM_ADDR(wl->hw, wl->mac_addr);
>
> ret = ieee80211_register_hw(wl->hw);

Where should the firmware file be located? What name should I give the firmware file : firmware.bin ?

I get the following error after adding the following patch:

[ 62.835174] wl1271: ERROR could not get nvs file: -2
[ 62.887786] wl1271: loaded
[ 62.890655] wl1271: initialized


Elvis Dowson

2010-12-17 08:36:21

by Elvis Dowson

[permalink] [raw]
Subject: Re: Problem bringing up wlan0 interface up with mainline wl1271 drivers

Hi,

On Dec 17, 2010, at 9:11 AM, panduranga wrote:

> This because you havent set the mac address for wlan0
>
> wlan0 Link encap:Ethernet HWaddr 00:00:00:00:00:00
>
> You can do by using the following command:
> ifconfig wlan0 hw ether 11:22:33:44:55:66

I tried that earlier, but got the same results.

# ifconfig wlan0 hw ether 11:22:33:44:55:66
SIOCSIFHWADDR: Cannot assign requested address

Even trying to assign an IP address doesn't work.

# ifconfig wlan0 inet 192.168.1.105 netmask 255.255.255.0
SIOCSIFFLAGS: Cannot assign requested address


Here's how my modified board-omap3beagle.c looks like, for the mainline wl1271 drivers. (The modifications for the board file and the board-wifi for the TI proprietary drivers are different, and that is a separate issue that I'm working on in parallel for android-2.6.32 kernel).

>From e84ded71b45aecd340ec6030a540d0305c43c82d Mon Sep 17 00:00:00 2001
From: Elvis Dowson <[email protected]>
Date: Fri, 17 Dec 2010 12:27:23 +0400
Subject: [PATCH] Add support for Murata wl1271 wlan module.

---
arch/arm/mach-omap2/Makefile | 1 +
arch/arm/mach-omap2/board-beagle20-wifi.c | 64 ++++++++++++++++++++++++++
arch/arm/mach-omap2/board-beagle20-wifi.h | 24 ++++++++++
arch/arm/mach-omap2/board-omap3beagle.c | 62 +++++++++++++++++++++++++
4 files changed, 151 insertions(+), 0 deletions(-)
create mode 100644 arch/arm/mach-omap2/board-beagle20-wifi.c
create mode 100644 arch/arm/mach-omap2/board-beagle20-wifi.h

diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile
index 60e51bc..36f2b69 100644
--- a/arch/arm/mach-omap2/Makefile
+++ b/arch/arm/mach-omap2/Makefile
@@ -119,6 +119,7 @@ obj-$(CONFIG_MACH_OMAP_2430SDP) += board-2430sdp.o \
hsmmc.o
obj-$(CONFIG_MACH_OMAP_APOLLON) += board-apollon.o
obj-$(CONFIG_MACH_OMAP3_BEAGLE) += board-omap3beagle.o \
+ board-beagle20-wifi.o \
hsmmc.o
obj-$(CONFIG_MACH_DEVKIT8000) += board-devkit8000.o \
hsmmc.o
diff --git a/arch/arm/mach-omap2/board-beagle20-wifi.c b/arch/arm/mach-omap2/board-beagle20-wifi.c
new file mode 100644
index 0000000..4f75e2d
--- /dev/null
+++ b/arch/arm/mach-omap2/board-beagle20-wifi.c
@@ -0,0 +1,64 @@
+/*
+ * linux/arch/arm/mach-omap2/board-beagle20-wifi.c
+ *
+ *
+ *
+ * Copyright (C) 2010 Texas Instruments Inc.
+ *
+ * Author :
+ * Elvis Dowson <[email protected]>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/platform_device.h>
+#include <linux/clk.h>
+#include <linux/debugfs.h>
+#include <linux/delay.h>
+#include <linux/err.h>
+
+#include <linux/mmc/host.h>
+#include <linux/mmc/sdio_ids.h>
+
+#include <linux/gpio.h>
+
+#include "board-beagle20-wifi.h"
+#include "mux.h"
+
+void wlan_mux_init(void)
+{
+ pr_info("%s: Configuring mux settings for wl1271 wlan module\n", __func__);
+
+ /* OMAP_BEAGLE20_WIFI_PMENA_GPIO and OMAP_BEAGLE20_WIFI_IRQ_GPIO */
+ omap_mux_init_gpio(OMAP_BEAGLE20_WIFI_PMENA_GPIO, OMAP_PIN_OUTPUT);
+ omap_mux_init_gpio(OMAP_BEAGLE20_WIFI_IRQ_GPIO, OMAP_PIN_INPUT_PULLUP);
+
+ /*
+ * MMC2 pin mux settings.
+ *
+ * The pix mux strings can be found in /arch/arm/mach-omap2/mux34xx.c
+ *
+ * Refer the TI OMAP 35x Technical Reference Manual (Rev.D), page 840
+ * for the following example.
+ *
+ * If the string name is ?xxx.yyy?
+ * xxx ? is the name of the default mode of the pad, usually Mode 0
+ * as described in the TRM.
+ * yyy ? is the pin on that pad you want to select.
+ *
+ * For example, MMC3 CLK line ("sdmmc3_clk") can be brought out in
+ * 2 places ("mcspi1_cs2" and "etk_clk").
+ *
+ */
+ omap_mux_init_signal("sdmmc2_clk.sdmmc2_clk", OMAP_PIN_INPUT_PULLUP);
+ omap_mux_init_signal("sdmmc2_cmd.sdmmc2_cmd", OMAP_PIN_INPUT_PULLUP);
+ omap_mux_init_signal("sdmmc2_dat0.sdmmc2_dat0", OMAP_PIN_INPUT_PULLUP);
+ omap_mux_init_signal("sdmmc2_dat1.sdmmc2_dat1", OMAP_PIN_INPUT_PULLUP);
+ omap_mux_init_signal("sdmmc2_dat2.sdmmc2_dat2", OMAP_PIN_INPUT_PULLUP);
+ omap_mux_init_signal("sdmmc2_dat3.sdmmc2_dat3", OMAP_PIN_INPUT_PULLUP);
+}
+
diff --git a/arch/arm/mach-omap2/board-beagle20-wifi.h b/arch/arm/mach-omap2/board-beagle20-wifi.h
new file mode 100644
index 0000000..5ce7df2
--- /dev/null
+++ b/arch/arm/mach-omap2/board-beagle20-wifi.h
@@ -0,0 +1,24 @@
+/*
+ * linux/arch/arm/mach-omap2/board-beagle20-wifi.h
+ *
+ *
+ *
+ * Copyright (C) 2010 Texas Instruments Inc.
+ *
+ * Author :
+ * Elvis Dowson <[email protected]>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#ifndef BOARD_BEAGLE20_WIFI_H_
+#define BOARD_BEAGLE20_WIFI_H_
+
+#define OMAP_BEAGLE20_WIFI_PMENA_GPIO 94 /* Murata TI WL1271 WLAN module enable GPIO */
+#define OMAP_BEAGLE20_WIFI_IRQ_GPIO 97 /* Murata TI WL1271 WLAN module IRQ GPIO */
+
+void wlan_mux_init(void);
+
+#endif /* BOARD_BEAGLE20_WIFI_H_ */
diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
index 50af879..6d1fcd6 100644
--- a/arch/arm/mach-omap2/board-omap3beagle.c
+++ b/arch/arm/mach-omap2/board-omap3beagle.c
@@ -30,7 +30,9 @@
#include <linux/mmc/host.h>

#include <linux/regulator/machine.h>
+#include <linux/regulator/fixed.h>
#include <linux/i2c/twl.h>
+#include <linux/wl12xx.h>

#include <mach/hardware.h>
#include <asm/mach-types.h>
@@ -45,6 +47,7 @@
#include <plat/nand.h>
#include <plat/usb.h>

+#include "board-beagle20-wifi.h"
#include "mux.h"
#include "hsmmc.h"
#include "timer-gp.h"
@@ -166,6 +169,14 @@ static struct omap2_hsmmc_info mmc[] = {
.gpio_cd = -EINVAL,
.gpio_wp = -EINVAL,
},
+ {
+ .name = "wl1271",
+ .mmc = 2,
+ .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_POWER_OFF_CARD,
+ .gpio_wp = -EINVAL,
+ .gpio_cd = -EINVAL,
+ .nonremovable = true,
+ },
{} /* Terminator */
};

@@ -177,6 +188,10 @@ static struct regulator_consumer_supply beagle_vsim_supply = {
.supply = "vmmc_aux",
};

+static struct regulator_consumer_supply beagle_vmmc2_supply = {
+ .supply = "vmmc",
+};
+
static struct gpio_led gpio_leds[];

static int beagle_twl_gpio_setup(struct device *dev,
@@ -187,6 +202,7 @@ static int beagle_twl_gpio_setup(struct device *dev,
/* link regulators to MMC adapters */
beagle_vmmc1_supply.dev = mmc[0].dev;
beagle_vsim_supply.dev = mmc[0].dev;
+ beagle_vmmc2_supply.dev = mmc[1].dev;

return 0;
}
@@ -217,6 +233,21 @@ static struct regulator_init_data beagle_vmmc1 = {
.consumer_supplies = &beagle_vmmc1_supply,
};

+/* VMMC2 for MMC2 card */
+static struct regulator_init_data beagle_vmmc2 = {
+ .constraints = {
+ .min_uV = 1850000,
+ .max_uV = 1850000,
+ .apply_uV = true,
+ .valid_modes_mask = REGULATOR_MODE_NORMAL
+ | REGULATOR_MODE_STANDBY,
+ .valid_ops_mask = REGULATOR_CHANGE_MODE
+ | REGULATOR_CHANGE_STATUS,
+ },
+ .num_consumer_supplies = 1,
+ .consumer_supplies = &beagle_vmmc2_supply,
+};
+
/* VSIM for MMC1 pins DAT4..DAT7 (2 mA, plus card == max 50 mA) */
static struct regulator_init_data beagle_vsim = {
.constraints = {
@@ -261,6 +292,31 @@ static struct regulator_init_data beagle_vpll2 = {
.consumer_supplies = &beagle_vdvi_supply,
};

+/* Fixed voltage regulator for wlan module */
+static struct fixed_voltage_config beagle_vwlan = {
+ .supply_name = "vwl1271",
+ .microvolts = 1850000, /* 1.8V */
+ .gpio = OMAP_BEAGLE20_WIFI_PMENA_GPIO,
+ .startup_delay = 70000, /* 70msec */
+ .enable_high = 1,
+ .enabled_at_boot = 0,
+ .init_data = &beagle_vmmc2,
+};
+
+static struct platform_device omap_vwlan_device = {
+ .name = "reg-fixed-voltage",
+ .id = 1,
+ .dev = {
+ .platform_data = &beagle_vwlan,
+ },
+};
+
+struct wl12xx_platform_data omap_beagle_wlan_data __initdata = {
+ .irq = OMAP_GPIO_IRQ(OMAP_BEAGLE20_WIFI_IRQ_GPIO),
+ /* ZOOM ref clock is 26 MHz */
+ .board_ref_clock = 1,
+};
+
static struct twl4030_usb_data beagle_usb_data = {
.usb_mode = T2_USB_MODE_ULPI,
};
@@ -455,6 +511,12 @@ static void __init omap3_beagle_init(void)
omap_mux_init_signal("sdrc_cke1", OMAP_PIN_OUTPUT);

beagle_display_init();
+
+ /* wl12xx wlan module */
+ wlan_mux_init();
+ if (wl12xx_set_platform_data(&omap_beagle_wlan_data))
+ pr_err("error setting wl12xx data\n");
+ platform_device_register(&omap_vwlan_device);
}

MACHINE_START(OMAP3_BEAGLE, "Custom BeagleBoard 2.0")
--
1.7.0.4


2010-12-17 09:44:42

by Elvis Dowson

[permalink] [raw]
Subject: Re: Problem bringing up wlan0 interface up with mainline wl1271 drivers


On Dec 17, 2010, at 12:51 PM, Arik Nemtsov wrote:

> Ethernet addresses with the LSB of the first octet turned on are considered multicast addresses. Please try:
>
> ifconfig wlan0 hw ether 00:22:33:44:55:66

That worked, now the only thing is to put the firmware file in the appropriate place, I guess:

# ifconfig wlan0 hw ether 00:22:33:44:55:66

# ifconfig wlan0 up

[ 153.843597] wl1271: ERROR could not get firmware: -2

Where should the firmware file be located? /etc/firmware ?

Elvis Dowson

2010-12-17 10:12:41

by Arik Nemtsov

[permalink] [raw]
Subject: Re: Problem bringing up wlan0 interface up with mainline wl1271 drivers

On Fri, Dec 17, 2010 at 11:44, Elvis Dowson <[email protected]> wrote:
>
> On Dec 17, 2010, at 12:51 PM, Arik Nemtsov wrote:
>
>> Ethernet addresses with the LSB of the first octet turned on are considered multicast addresses. Please try:
>>
>> ifconfig wlan0 hw ether 00:22:33:44:55:66
>
> That worked, now the only thing is to put the firmware file in the appropriate place, I guess:
>
> # ifconfig wlan0 hw ether 00:22:33:44:55:66
>
> # ifconfig wlan0 up
>
> [ ?153.843597] wl1271: ERROR could not get firmware: -2
>
> Where should the firmware file be located? /etc/firmware ?
>
> Elvis Dowson
>

The firmware file should be called wl1271-fw.bin and the nvs file
should be called wl1271-nvs.bin. Both should reside in /etc/firmware
(if you're running a standard linux).

Regards,
Arik

2010-12-17 05:12:01

by panduranga

[permalink] [raw]
Subject: Re: Problem bringing up wlan0 interface up with mainline wl1271 drivers

Hi Elvis,

This because you havent set the mac address for wlan0

wlan0 Link encap:Ethernet HWaddr 00:00:00:00:00:00

You can do by using the following command:
ifconfig wlan0 hw ether 11:22:33:44:55:66

OR

add the following patch
(http://www.spinics.net/lists/linux-wireless/msg59391.html) by Arik Nemtsov.

diff --git a/drivers/net/wireless/wl12xx/main.c
b/drivers/net/wireless/wl12xx/main.c
index 708b699..e5fbbb6 100644
--- a/drivers/net/wireless/wl12xx/main.c
+++ b/drivers/net/wireless/wl12xx/main.c
@@ -2987,6 +2987,18 @@ int wl1271_register_hw(struct wl1271 *wl)
if (wl->mac80211_registered)
return 0;

+ ret = wl1271_fetch_nvs(wl);
+ if (ret == 0) {
+ u8 *nvs_ptr = (u8 *)wl->nvs->nvs;
+
+ wl->mac_addr[0] = nvs_ptr[11];
+ wl->mac_addr[1] = nvs_ptr[10];
+ wl->mac_addr[2] = nvs_ptr[6];
+ wl->mac_addr[3] = nvs_ptr[5];
+ wl->mac_addr[4] = nvs_ptr[4];
+ wl->mac_addr[5] = nvs_ptr[3];
+ }
+
SET_IEEE80211_PERM_ADDR(wl->hw, wl->mac_addr);

ret = ieee80211_register_hw(wl->hw);
--

Regards,
Pandu.

----- Original Message -----
From: "Elvis Dowson" <[email protected]>
To: "Ohad Ben-Cohen" <[email protected]>
Cc: "Linux Wireless Mailing List" <[email protected]>;
"Mallireddy, Panduranga" <[email protected]>; "Jara, Pedro" <[email protected]>
Sent: Friday, December 17, 2010 5:53 AM
Subject: Problem bringing up wlan0 interface up with mainline wl1271 drivers


Hi,

On Dec 12, 2010, at 1:24 AM, Ohad Ben-Cohen wrote:

>> When I build the TI WiLink drivers from the ti rowboat hardware/ti/wlan
>> project
>
> The linux-omap community can help you with mainline drivers, but no so
> much with proprietary ones. Why don't you use the upstream wl12xx
> driver ?

I've built linux kernel 2.6.37-rc6, and patched board-omap3beagle.c to
interface with MMC2 SDIO controller,
but I'm unable to bring the wlan0 interface up.

Here are the messages during kernel boot:

[ 0.000000] wlan_mux_init: Configuring mux settings for wl1271 wlan
module
[ 0.077117] regulator: vwl1271: 1850 mV normal standby
[ 2.171813] mmc1: mmc_rescan: trying to init card at 400000 Hz
[ 2.323120] mmc1: card claims to support voltages below the defined
range. These will be ignored.
[ 2.368865] mmc1: queuing unknown CIS tuple 0x91 (3 bytes)
[ 2.392150] mmc1: new SDIO card at address 0001
[ 2.787597] wl1271: loaded
[ 2.790802] wl1271: initialized

# ifconfig -a
lo Link encap:Local Loopback
LOOPBACK MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

wlan0 Link encap:Ethernet HWaddr 00:00:00:00:00:00
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

# ifconfig wlan0 up
SIOCSIFFLAGS: Cannot assign requested address

What could the reason be?

Elvis Dowson


2010-12-17 10:37:34

by Elvis Dowson

[permalink] [raw]
Subject: Re: Problem bringing up wlan0 interface up with mainline wl1271 drivers

Hi Arik,

On Dec 17, 2010, at 2:34 PM, Arik Nemtsov wrote:
>
> Sorry Elvis I gave you the wrong path :)
> Its /lib/firmware in a regular linux. Its /etc/firmware in android.

:-) Ok, that's understandable!! My final aim is to get this working with android-2.2.1. Have you done a port of the android kernel to 2.6.37 already ?

Best regards,

Elvis Dowson

2011-08-10 11:40:11

by [email protected]

[permalink] [raw]
Subject: Re: Problem bringing up wlan0 interface up with mainline wl1271 drivers


> >
> > [ 63.852264] wl1271: ERROR could not get nvs file: -2
> > [ 63.906250] wl1271: loaded
> > [ 63.909271] wl1271: initialized
>
> You need to start udevd. The driver gets the firmware via udev.
>

Hi Elvis, and Arik,

i am also having same problem , and i dont' know how to start udevd on
Panda Board.. can you help me ...