linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Arend van Spriel <arend@broadcom.com>
To: "Rafał Miłecki" <zajec5@gmail.com>
Cc: <brcm80211-dev-list@broadcom.com>,
	Brett Rudley <brudley@broadcom.com>,
	"Franky (Zhenhui) Lin" <frankyl@broadcom.com>,
	Hante Meuleman <meuleman@broadcom.com>,
	<linux-wireless@vger.kernel.org>
Subject: Re: [PATCH RFC:rxctl wait timed out] brcmfmac: add BCM43526 USB support
Date: Fri, 8 May 2015 11:28:50 +0200	[thread overview]
Message-ID: <554C81D2.8080602@broadcom.com> (raw)
In-Reply-To: <1431030535-11083-1-git-send-email-zajec5@gmail.com>

On 05/07/15 22:28, Rafał Miłecki wrote:
> Signed-off-by: Rafał Miłecki<zajec5@gmail.com>
> ---
> Hi,
>
> I'm trying to add BCM43526 support. This chipset can be found in:
> 1) Some USB dongles, e.g. Tenda W900U uses revision 2
> 2) Some routers, e.g. Asus RT-AC53U uses revision 3+
>
> Unfortunately attached patch doesn't seem to be enough, brcmfmac doesn't
> work with my Tenda W900U. I keep getting following error:
>> brcmfmac: brcmf_usb_recv_ctl Enter
>> brcmf_usb_rx_ctlpkt: rxctl wait timed out
>> brcmfmac: brcmf_fil_cmd_data Failed: -5
>
> It seems that:
> 1) driver sends TX URB and gets completion callback called
> 2) driver sents RX URB but it never gets completed
>
> This seems to happen for the very first wlioctl send to the firmware
> which is BRCMF_C_GET_VAR. I tried hacking brcmf_c_preinit_dcmds to start
> with BRCMF_C_GET_REVINFO instead, but the result is the same.
> I believe firmware simply doesn't reply to any wlioctl.
>
> I tried extracing firmware from:
> 1) Tenda W900U's bcmwlhigh6.sys
> 2) Tenda W900U's bcmwlhigh664.sys
> 3) DWA-182A1 Vistax64's bcmwlhigh664.sys
> 4) DWA-182A1 Win7x86's bcmwlhigh6.sys
>
> Firmware seems to be OK because extracting 43526b instead of 43526a
> results in:
> brcmf_usb_resetcfg: Cannot talk to Dongle. Firmware is not UP, 1000 ms
>
> Any idea what may be wrong/missing?

Hi Rafał,

Unfortunately this device is a BMAC device. You can tell by the 'high' 
word in the windows driver name. So there is no chance whatsoever to get 
this device going with brcmfmac.

Regards,
Arend

> [29078.703293] brcmfmac: brcmf_usb_probe Enter 0x0a5c:0xbd1d
> [29078.703297] brcmfmac: brcmf_usb_probe Broadcom high speed USB WLAN interface detected
> [29078.703298] brcmfmac: brcmf_usb_probe_cb Enter
> [29078.703299] brcmfmac: brcmf_usb_attach Enter
> [29078.703313] brcmfmac: brcmf_usb_dlneeded Enter
> [29078.704271] brcmfmac: brcmf_usb_dlneeded chip 43526 rev 0x2
> [29078.704276] brcmfmac: brcmf_fw_get_firmwares enter: dev=3-2
> [29078.704524] brcmfmac: brcmf_fw_request_code_done enter: dev=3-2
> [29078.704526] brcmfmac: brcmf_usb_probe_phase2 Start fw downloading
> [29078.704527] brcmfmac: check_file Enter
> [29078.704529] brcmfmac: brcmf_usb_fw_download Enter
> [29078.704530] brcmfmac: brcmf_usb_dlstart Enter
> [29078.704532] brcmfmac: brcmf_usb_dl_writeimage Enter, fw ffffc900050a8000, len 368640
> [29078.807929] brcmfmac: brcmf_usb_dl_writeimage Exit, err=0
> [29078.807932] brcmfmac: brcmf_usb_dlstart Exit, err=0
> [29078.807934] brcmfmac: brcmf_usb_dlrun Enter
> [29078.808624] brcmfmac: brcmf_usb_resetcfg Enter
> [29079.009038] brcmfmac: brcmf_usb_resetcfg postboot chip 0xa123/rev 0x1
> [29079.011264] brcmfmac: brcmf_usb_dlrun Exit
> [29079.011319] brcmfmac: brcmf_attach Enter
> [29079.011352] brcmfmac: brcmf_proto_attach Enter
> [29079.011366] brcmfmac: brcmf_usb_up Enter
> [29079.011368] brcmfmac: brcmf_usb_state_change Enter, current state=2, new state=3
> [29079.011369] brcmfmac: brcmf_usb_state_change DBUS is up
> [29079.011371] brcmfmac: brcmf_bus_change_state 0 ->  1
> [29079.011429] brcmfmac: brcmf_bus_start
> [29079.011431] brcmfmac: brcmf_add_if Enter, idx=0, ifidx=0
> [29079.011432] brcmfmac: brcmf_add_if allocate netdev interface
> [29079.011442] brcmfmac: brcmf_add_if  ==== pid:1495, if:wlan%d (00:00:00:00:00:00) created ===
> [29079.011443] brcmfmac: brcmf_bus_change_state 1 ->  1
> [29079.011446] brcmfmac: brcmf_proto_bcdc_query_dcmd Enter, cmd 262 len 20
> [29079.011447] brcmfmac: brcmf_proto_bcdc_msg Enter
>
> [29079.011449] brcmfmac: brcmf_usb_tx_ctlpkt Enter
> [29079.011450] brcmfmac: brcmf_usb_send_ctl Enter
> [29079.011491] brcmfmac: brcmf_usb_ctlwrite_complete Enter
> [29079.011494] brcmfmac: brcmf_usb_ctl_complete Enter, status=0
>
> [29079.011510] brcmfmac: brcmf_proto_bcdc_cmplt Enter
> [29079.011522] brcmfmac: brcmf_usb_rx_ctlpkt Enter
> [29079.011523] brcmfmac: brcmf_usb_recv_ctl Enter
> [29081.013165] brcmf_usb_rx_ctlpkt: rxctl wait timed out
> [29081.013170] brcmfmac: brcmf_fil_cmd_data Failed: -5
> [29081.013172] brcmfmac: brcmf_fil_iovar_data_get ifidx=0, name=cur_etheraddr, len=6
> [29081.013176] brcmf_c_preinit_dcmds: Retreiving cur_etheraddr failed, -52
> [29081.013177] brcmf_bus_start: failed: -52
> ---
>   drivers/net/wireless/brcm80211/brcmfmac/usb.c        | 12 ++++++++++++
>   drivers/net/wireless/brcm80211/include/brcm_hw_ids.h |  2 ++
>   2 files changed, 14 insertions(+)
>
> diff --git a/drivers/net/wireless/brcm80211/brcmfmac/usb.c b/drivers/net/wireless/brcm80211/brcmfmac/usb.c
> index daba86d..e300c7d 100644
> --- a/drivers/net/wireless/brcm80211/brcmfmac/usb.c
> +++ b/drivers/net/wireless/brcm80211/brcmfmac/usb.c
> @@ -46,6 +46,8 @@
>   #define BRCMF_USB_43143_FW_NAME		"brcm/brcmfmac43143.bin"
>   #define BRCMF_USB_43236_FW_NAME		"brcm/brcmfmac43236b.bin"
>   #define BRCMF_USB_43242_FW_NAME		"brcm/brcmfmac43242a.bin"
> +#define BRCMF_USB_43526A_FW_NAME	"brcm/brcmfmac43526a.bin"
> +#define BRCMF_USB_43526B_FW_NAME	"brcm/brcmfmac43526b.bin"
>   #define BRCMF_USB_43569_FW_NAME		"brcm/brcmfmac43569.bin"
>
>   #define TRX_MAGIC		0x30524448	/* "HDR0" */
> @@ -993,6 +995,8 @@ static bool brcmf_usb_chip_support(int chipid, int chiprev)
>   		return (chiprev == 3);
>   	case BRCM_CC_43242_CHIP_ID:
>   		return true;
> +	case BRCM_CC_43526_CHIP_ID:
> +		return true;
>   	case BRCM_CC_43566_CHIP_ID:
>   	case BRCM_CC_43569_CHIP_ID:
>   		return true;
> @@ -1072,6 +1076,8 @@ static int check_file(const u8 *headers)
>
>   static const char *brcmf_usb_get_fwname(struct brcmf_usbdev_info *devinfo)
>   {
> +	int chiprev = devinfo->bus_pub.chiprev;
> +
>   	switch (devinfo->bus_pub.devid) {
>   	case BRCM_CC_43143_CHIP_ID:
>   		return BRCMF_USB_43143_FW_NAME;
> @@ -1081,6 +1087,11 @@ static const char *brcmf_usb_get_fwname(struct brcmf_usbdev_info *devinfo)
>   		return BRCMF_USB_43236_FW_NAME;
>   	case BRCM_CC_43242_CHIP_ID:
>   		return BRCMF_USB_43242_FW_NAME;
> +	case BRCM_CC_43526_CHIP_ID:
> +		if (chiprev<= 2)
> +			return BRCMF_USB_43526A_FW_NAME;
> +		else
> +			return BRCMF_USB_43526B_FW_NAME;
>   	case BRCM_CC_43566_CHIP_ID:
>   	case BRCM_CC_43569_CHIP_ID:
>   		return BRCMF_USB_43569_FW_NAME;
> @@ -1461,6 +1472,7 @@ static struct usb_device_id brcmf_usb_devid_table[] = {
>   	BRCMF_USB_DEVICE(BRCM_USB_43143_DEVICE_ID),
>   	BRCMF_USB_DEVICE(BRCM_USB_43236_DEVICE_ID),
>   	BRCMF_USB_DEVICE(BRCM_USB_43242_DEVICE_ID),
> +	BRCMF_USB_DEVICE(BRCM_USB_43526_DEVICE_ID),
>   	BRCMF_USB_DEVICE(BRCM_USB_43569_DEVICE_ID),
>   	/* special entry for device with firmware loaded and running */
>   	BRCMF_USB_DEVICE(BRCM_USB_BCMFW_DEVICE_ID),
> diff --git a/drivers/net/wireless/brcm80211/include/brcm_hw_ids.h b/drivers/net/wireless/brcm80211/include/brcm_hw_ids.h
> index 2124a17..56c1948 100644
> --- a/drivers/net/wireless/brcm80211/include/brcm_hw_ids.h
> +++ b/drivers/net/wireless/brcm80211/include/brcm_hw_ids.h
> @@ -39,6 +39,7 @@
>   #define BRCM_CC_4339_CHIP_ID		0x4339
>   #define BRCM_CC_4354_CHIP_ID		0x4354
>   #define BRCM_CC_4356_CHIP_ID		0x4356
> +#define BRCM_CC_43526_CHIP_ID		43526
>   #define BRCM_CC_43566_CHIP_ID		43566
>   #define BRCM_CC_43567_CHIP_ID		43567
>   #define BRCM_CC_43569_CHIP_ID		43569
> @@ -49,6 +50,7 @@
>   #define BRCM_USB_43143_DEVICE_ID	0xbd1e
>   #define BRCM_USB_43236_DEVICE_ID	0xbd17
>   #define BRCM_USB_43242_DEVICE_ID	0xbd1f
> +#define BRCM_USB_43526_DEVICE_ID	0xbd1d
>   #define BRCM_USB_43569_DEVICE_ID	0xbd27
>   #define BRCM_USB_BCMFW_DEVICE_ID	0x0bdc
>


  reply	other threads:[~2015-05-08  9:28 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-07 20:28 [PATCH RFC:rxctl wait timed out] brcmfmac: add BCM43526 USB support Rafał Miłecki
2015-05-08  9:28 ` Arend van Spriel [this message]
2015-05-08  9:53   ` Rafał Miłecki
2015-05-08 10:19     ` Arend van Spriel
2015-05-08 12:22       ` Rafał Miłecki
2015-08-07  3:19         ` Hugo Denizart
2015-08-07  4:00           ` Rafał Miłecki

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=554C81D2.8080602@broadcom.com \
    --to=arend@broadcom.com \
    --cc=brcm80211-dev-list@broadcom.com \
    --cc=brudley@broadcom.com \
    --cc=frankyl@broadcom.com \
    --cc=linux-wireless@vger.kernel.org \
    --cc=meuleman@broadcom.com \
    --cc=zajec5@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).