diff mbox

prepatch: work around broken brf6150 PM code

Message ID 20090530182513.214244z6d3s8cb9c@lidskialf.net (mailing list archive)
State Superseded, archived
Headers show

Commit Message

Andrew de Quincey May 30, 2009, 5:25 p.m. UTC
Hi, this patch took a while to track down. The brf6150.c from the  
original Nokia n770 kernel source (kernel-source-2.6.16-2.6.16-osso29)  
works. However, the brf6150.c that was added to the linux-omap tree on  
the 8th feb 2006 (commit 9f43ca7f2eca4de6f145bc1d165df4a415546258)  
does not (for this n770 anyway :).

In the linux-omap commit, there is a lot of new neat power management  
code that uses two GPIOs: one for the host to signal the brf6150 when  
to wake up and one for the brf6150 to signal the host to wake up.

The problem is that on the hardware I'm using these GPIOs do not  
change, so the host never "wakes up", and consequently never schedules  
packets to be transferred to the brf6150. I've tested the platform  
GPIO library is working properly and appears to be.

The n770 code is configured to use the following brf6510 GPIOS:  
reset:4, hostwake:61, btwake:194.

The attached patch forces this schedule, but isn't really a good patch  
as the (non-functional) PM stuff is still in there.

Can anyone shed any light on this situation? Note that I am using the  
brf6150fw.bin firmware binary from the  
SU-18_2006SE_1.2006.26-8_PR_F5_MR0_ARM OS release.

The bluetooth firmware from SU-18_2006SE_2.2006.39-14_PR_F5_MR0_ARM is  
corrupt (has loads of zero bytes at the start, which the code reveals  
is invalid).

The bluetooth firmware from SU-18_2006SE_3.2006.49-2_PR_F5_MR0_ARM is  
ALSO corrupt; this time its been truncated to 8192 bytes so the loader  
runs off the end.

If this can't be resolved, and since I don't have any docs on the  
brf6150 or newer firmware images, I'd be tempted to simply kill the PM  
code since its not actually doing anything useful. I'd prefer to get  
it to work though....

Comments

Andrew de Quincey May 31, 2009, 1:47 a.m. UTC | #1
Quoting Andrew de Quincey <adq_dvb@lidskialf.net>:

> Hi, this patch took a while to track down. The brf6150.c from the   
> original Nokia n770 kernel source  
> (kernel-source-2.6.16-2.6.16-osso29)  works. However, the brf6150.c  
> that was added to the linux-omap tree on  the 8th feb 2006 (commit  
> 9f43ca7f2eca4de6f145bc1d165df4a415546258)  does not (for this n770  
> anyway :).
>
> In the linux-omap commit, there is a lot of new neat power  
> management  code that uses two GPIOs: one for the host to signal the  
> brf6150 when  to wake up and one for the brf6150 to signal the host  
> to wake up.
>
> The problem is that on the hardware I'm using these GPIOs do not   
> change, so the host never "wakes up", and consequently never  
> schedules  packets to be transferred to the brf6150. I've tested the  
> platform  GPIO library is working properly and appears to be.
>
> The n770 code is configured to use the following brf6510 GPIOS:   
> reset:4, hostwake:61, btwake:194.
>
> The attached patch forces this schedule, but isn't really a good  
> patch  as the (non-functional) PM stuff is still in there.
>
> Can anyone shed any light on this situation? Note that I am using  
> the  brf6150fw.bin firmware binary from the   
> SU-18_2006SE_1.2006.26-8_PR_F5_MR0_ARM OS release.
>
> The bluetooth firmware from SU-18_2006SE_2.2006.39-14_PR_F5_MR0_ARM  
> is  corrupt (has loads of zero bytes at the start, which the code  
> reveals  is invalid).
>
> The bluetooth firmware from SU-18_2006SE_3.2006.49-2_PR_F5_MR0_ARM  
> is  ALSO corrupt; this time its been truncated to 8192 bytes so the  
> loader  runs off the end.
>
> If this can't be resolved, and since I don't have any docs on the   
> brf6150 or newer firmware images, I'd be tempted to simply kill the  
> PM  code since its not actually doing anything useful. I'd prefer to  
> get  it to work though....

Hi, its been pointed out that the firmware extraction method I was  
using was corrupting the firmware. Extracting it /properly/ makes the  
bluetooth chip work correctly with the PM code! So, the second  
prepatch ain't necessary any more.

Next up: fix N770 sound.

--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

commit 3dd6f369919225473c77db006a60af0d1ca66ce4
Author: Andrew de Quincey <adq@lidskialf.net>
Date:   Sat May 30 18:04:24 2009 +0100

    schedule tx when packet submitted due to non-working power management GPIOs

diff --git a/drivers/bluetooth/brf6150.c b/drivers/bluetooth/brf6150.c
index 4f0112a..50caa74 100644
--- a/drivers/bluetooth/brf6150.c
+++ b/drivers/bluetooth/brf6150.c
@@ -187,6 +187,7 @@  static void brf6150_disable_pm_tx(struct brf6150_info *info)
 	}
 	if (gpio_get_value(info->btinfo->host_wakeup_gpio))
 		tasklet_schedule(&info->tx_task);
+	tasklet_schedule(&info->tx_task);
 }
 
 static void brf6150_pm_timer(unsigned long data)