* Broadcom brcmfmac vs bcmdhd on Android @ 2013-04-23 15:41 Bruno Randolf 2013-04-23 21:10 ` Arend van Spriel 0 siblings, 1 reply; 7+ messages in thread From: Bruno Randolf @ 2013-04-23 15:41 UTC (permalink / raw) To: linux-wireless, frankyl, arend, meuleman, brudley, brcm80211-dev-list Hello! I know this is the Linux kernel wireless list, and not Android, but due to the lack of better places, I'm going to ask here... I am trying to make IBSS mode work on Android. As I'm finding problems with "bcmdhd", I am wondering if using the "brcmfmac" under Android would be the better way to go? I succeeded to compile brcmfmac from recent compat-drivers against the "tuna" (Galaxy Nexus) kernel, the modules load, but no device is recognized. Has anyone succeeded doing this? Is there any chance it can work? Also I'm wondering what is the relation between the "bcmdhd" driver on Android and "brcmfmac" in the standard Linux kernel. Is there any official maintainer of "bcmdhd", any place where to submit patches? Will "bcmdhd" and "brcmfmac" merge eventually? Thanks for any hints, bruno ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Broadcom brcmfmac vs bcmdhd on Android 2013-04-23 15:41 Broadcom brcmfmac vs bcmdhd on Android Bruno Randolf @ 2013-04-23 21:10 ` Arend van Spriel 2013-04-24 15:18 ` Bruno Randolf 0 siblings, 1 reply; 7+ messages in thread From: Arend van Spriel @ 2013-04-23 21:10 UTC (permalink / raw) To: Bruno Randolf Cc: linux-wireless, frankyl, meuleman, brudley, brcm80211-dev-list On 04/23/2013 05:41 PM, Bruno Randolf wrote: > Hello! > > I know this is the Linux kernel wireless list, and not Android, but due > to the lack of better places, I'm going to ask here... The lines are less drawn than they used to be (at least for me). > I am trying to make IBSS mode work on Android. As I'm finding problems > with "bcmdhd", I am wondering if using the "brcmfmac" under Android > would be the better way to go? I am working mainly on brcmfmac. IBSS should work, but reading the commit message of your patch I guess it may be a firmware issue so using brcmfmac will not make a difference. > I succeeded to compile brcmfmac from recent compat-drivers against the > "tuna" (Galaxy Nexus) kernel, the modules load, but no device is > recognized. Has anyone succeeded doing this? Is there any chance it can > work? That is how we did it and with success. What do you mean by 'no device is recognized'? Do you have any traces to look at? > Also I'm wondering what is the relation between the "bcmdhd" driver on > Android and "brcmfmac" in the standard Linux kernel. Is there any > official maintainer of "bcmdhd", any place where to submit patches? Will > "bcmdhd" and "brcmfmac" merge eventually? bcmdhd is what broadcom open-sourced for android. Separately, we started working on brcmfmac for the mainline linux kernel. Both drivers come from the same proprietary driver. The goal is to have brcmfmac work on Android as well and we have most features on board for that. Regards ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Broadcom brcmfmac vs bcmdhd on Android 2013-04-23 21:10 ` Arend van Spriel @ 2013-04-24 15:18 ` Bruno Randolf 2013-04-25 18:39 ` Bruno Randolf 0 siblings, 1 reply; 7+ messages in thread From: Bruno Randolf @ 2013-04-24 15:18 UTC (permalink / raw) To: Arend van Spriel Cc: linux-wireless, frankyl, meuleman, brudley, brcm80211-dev-list, 海藻敬之 On 04/23/2013 10:10 PM, Arend van Spriel wrote: > I am working mainly on brcmfmac. IBSS should work, but reading the > commit message of your patch I guess it may be a firmware issue so using > brcmfmac will not make a difference. I would like to try that to confirm it. And from your message I conclude the brcmfmac is the way to go forward... >> I succeeded to compile brcmfmac from recent compat-drivers against the >> "tuna" (Galaxy Nexus) kernel, the modules load, but no device is >> recognized. Has anyone succeeded doing this? Is there any chance it can >> work? > > That is how we did it and with success. What do you mean by 'no device > is recognized'? Do you have any traces to look at? Good to know. What I did is I compiled the "tuna" kernel (3.0.31) without bcmdhd, then brcmfmac from compat-drivers, loaded the brcmfmac module (+ dependencies), but then nothing happens. It looks like the device is not recognized on SDIO. Is there anything special I need to do to activate the chip? Anyhow I'll debug this further and send you more info later. Thanks, bruno ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Broadcom brcmfmac vs bcmdhd on Android 2013-04-24 15:18 ` Bruno Randolf @ 2013-04-25 18:39 ` Bruno Randolf 2013-04-25 21:12 ` Franky Lin 0 siblings, 1 reply; 7+ messages in thread From: Bruno Randolf @ 2013-04-25 18:39 UTC (permalink / raw) To: Arend van Spriel Cc: linux-wireless, frankyl, meuleman, brudley, brcm80211-dev-list, 海藻敬之 On 04/24/2013 04:18 PM, Bruno Randolf wrote: >>> I succeeded to compile brcmfmac from recent compat-drivers against the >>> "tuna" (Galaxy Nexus) kernel, the modules load, but no device is >>> recognized. Has anyone succeeded doing this? Is there any chance it can >>> work? >> >> That is how we did it and with success. What do you mean by 'no device >> is recognized'? Do you have any traces to look at? > > Good to know. What I did is I compiled the "tuna" kernel (3.0.31) > without bcmdhd, then brcmfmac from compat-drivers, loaded the brcmfmac > module (+ dependencies), but then nothing happens. It looks like the > device is not recognized on SDIO. Is there anything special I need to do > to activate the chip? I spent some more time tracing the problem, without much success. Still it simply looks like no SDIO device is detected. Please see below for what I found, maybe something rings a bell for you? Enabling tracing in the brcmfmac driver shows me "brcmfmac: brcmf_sdio_init: Enter", nothing more. Then, I enabled function tracing, here are the relevant parts: sdio_register_driver <-brcmf_sdio_init driver_register <-sdio_register_driver driver_find <-driver_register bus_add_driver <-driver_register driver_attach <-bus_add_driver bus_for_each_dev <-driver_attach module_add_driver <-bus_add_driver The rest is sysfs file registration, nothing more interesting, but I can send you the full dump if you want... No driver probe functions are called. I see a strange problem with the brcmf_sdmmc_ids: {SDIO_DEVICE(SDIO_VENDOR_ID_BROADCOM, SDIO_DEVICE_ID_BROADCOM_43241)}, {SDIO_DEVICE(SDIO_VENDOR_ID_BROADCOM, SDIO_DEVICE_ID_BROADCOM_4329)}, {SDIO_DEVICE(SDIO_VENDOR_ID_BROADCOM, SDIO_DEVICE_ID_BROADCOM_4330)}, {SDIO_DEVICE(SDIO_VENDOR_ID_BROADCOM, SDIO_DEVICE_ID_BROADCOM_4334)}, On the Galaxy Nexus modinfo just shows: alias: sdio:c*v02D0d4334* alias: sdio:c*v02D0d4329* I.e. every second device, while on my host the modinfo list looks OK. I manually changed the list to only include 4330 and that way modinfo shows it correctly also on the device, but maybe this is part of the problem? How did you get it to work? Which device did you use (Galaxy Nexus?)? Do I need to activate CONFIG_BRCMFMAC_SDIO_OOB (I tried with no difference)? Thank you for any hints, bruno ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Broadcom brcmfmac vs bcmdhd on Android 2013-04-25 18:39 ` Bruno Randolf @ 2013-04-25 21:12 ` Franky Lin 2013-04-25 21:36 ` Bruno Randolf 2013-05-17 19:10 ` Bruno Randolf 0 siblings, 2 replies; 7+ messages in thread From: Franky Lin @ 2013-04-25 21:12 UTC (permalink / raw) To: Bruno Randolf Cc: Arend van Spriel, linux-wireless, meuleman, brudley, brcm80211-dev-list, 海藻敬之 On 04/25/2013 11:39 AM, Bruno Randolf wrote: > I manually changed the list to only include 4330 and that way modinfo > shows it correctly also on the device, but maybe this is part of the > problem? > > How did you get it to work? Which device did you use (Galaxy Nexus?)? > Do I need to activate CONFIG_BRCMFMAC_SDIO_OOB (I tried with no > difference)? > It looks like the device is not powered up. Do you see the wifi chip get enumerated by SDIO bus? There should be something like mmc0:0001:1 under /sys/bus/sdio/devices Franky ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Broadcom brcmfmac vs bcmdhd on Android 2013-04-25 21:12 ` Franky Lin @ 2013-04-25 21:36 ` Bruno Randolf 2013-05-17 19:10 ` Bruno Randolf 1 sibling, 0 replies; 7+ messages in thread From: Bruno Randolf @ 2013-04-25 21:36 UTC (permalink / raw) To: Franky Lin Cc: Arend van Spriel, linux-wireless, meuleman, brudley, brcm80211-dev-list, 海藻敬之 On 04/25/2013 10:12 PM, Franky Lin wrote: > It looks like the device is not powered up. Do you see the wifi chip get > enumerated by SDIO bus? There should be something like mmc0:0001:1 under > /sys/bus/sdio/devices No, /sys/bus/sdio/devices is empty. How can I power it up? Any reference in bcmdhd? bruno ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Broadcom brcmfmac vs bcmdhd on Android 2013-04-25 21:12 ` Franky Lin 2013-04-25 21:36 ` Bruno Randolf @ 2013-05-17 19:10 ` Bruno Randolf 1 sibling, 0 replies; 7+ messages in thread From: Bruno Randolf @ 2013-05-17 19:10 UTC (permalink / raw) To: Franky Lin Cc: Bruno Randolf, Arend van Spriel, linux-wireless, meuleman, brudley, brcm80211-dev-list, 海藻敬之 On 04/25/2013 10:12 PM, Franky Lin wrote: > It looks like the device is not powered up. Do you see the wifi chip get > enumerated by SDIO bus? There should be something like mmc0:0001:1 under > /sys/bus/sdio/devices Just for public reference, this was the problem. I made it work with the following patch, which adds the platform_driver as used by bcmdhd to power up the wifi chip. bruno diff -Nurb compat-drivers-3.9-rc4-2-su/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh_sdmmc.c compat-drivers-3.9-rc4-2-su-brcm/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh_sdmmc.c --- compat-drivers-3.9-rc4-2-su/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh_sdmmc.c 2013-03-29 06:03:35.000000000 +0000 +++ compat-drivers-3.9-rc4-2-su-brcm/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh_sdmmc.c 2013-04-29 20:17:13.686085551 +0100 @@ -27,6 +27,7 @@ #include <linux/module.h> #include <linux/platform_device.h> #include <net/cfg80211.h> +#include <linux/wlan_plat.h> #include <defs.h> #include <brcm_hw_ids.h> @@ -664,11 +665,80 @@ brcmf_err("platform_driver_register failed: %d\n", ret); } #else + +static struct wifi_platform_data *wifi_control_data = NULL; + +int wifi_set_power(int on, unsigned long msec) +{ + printk("%s = %d\n", __FUNCTION__, on); + if (wifi_control_data && wifi_control_data->set_power) { + wifi_control_data->set_power(on); + } + if (msec) + msleep(msec); + return 0; +} + +static int wifi_set_carddetect(int on) +{ + printk("%s = %d\n", __FUNCTION__, on); + if (wifi_control_data && wifi_control_data->set_carddetect) { + wifi_control_data->set_carddetect(on); + } + return 0; +} + +static int wifi_probe(struct platform_device *pdev) +{ + int ret; + struct wifi_platform_data *wifi_ctrl = + (struct wifi_platform_data *)(pdev->dev.platform_data); + + printk("## %s\n", __FUNCTION__); + //wifi_irqres = platform_get_resource_byname(pdev, IORESOURCE_IRQ, "bcmdhd_wlan_irq"); + wifi_control_data = wifi_ctrl; + + wifi_set_power(1, 0); /* Power On */ + wifi_set_carddetect(1); /* CardDetect (0->1) */ + + ret = sdio_register_driver(&brcmf_sdmmc_driver); + if (ret) + brcmf_err("sdio_register_driver failed: %d\n", ret); + + return 0; +} + +static int wifi_remove(struct platform_device *pdev) +{ + struct wifi_platform_data *wifi_ctrl = + (struct wifi_platform_data *)(pdev->dev.platform_data); + + printk("## %s\n", __FUNCTION__); + wifi_control_data = wifi_ctrl; + + wifi_set_power(0, 0); /* Power Off */ + wifi_set_carddetect(0); /* CardDetect (1->0) */ + + //up(&wifi_control_sem); + return 0; +} + +static struct platform_driver wifi_device = { + .probe = wifi_probe, + .remove = wifi_remove, +// .suspend = wifi_suspend, +// .resume = wifi_resume, + .driver = { + .name = "bcmdhd_wlan", + } +}; + void brcmf_sdio_exit(void) { brcmf_dbg(TRACE, "Enter\n"); sdio_unregister_driver(&brcmf_sdmmc_driver); + platform_driver_unregister(&wifi_device); } void brcmf_sdio_init(void) @@ -677,9 +747,8 @@ brcmf_dbg(TRACE, "Enter\n"); - ret = sdio_register_driver(&brcmf_sdmmc_driver); + printk("SDIO init\n"); - if (ret) - brcmf_err("sdio_register_driver failed: %d\n", ret); + platform_driver_register(&wifi_device); } #endif /* CONFIG_BRCMFMAC_SDIO_OOB */ ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2013-05-17 19:10 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2013-04-23 15:41 Broadcom brcmfmac vs bcmdhd on Android Bruno Randolf 2013-04-23 21:10 ` Arend van Spriel 2013-04-24 15:18 ` Bruno Randolf 2013-04-25 18:39 ` Bruno Randolf 2013-04-25 21:12 ` Franky Lin 2013-04-25 21:36 ` Bruno Randolf 2013-05-17 19:10 ` Bruno Randolf
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).