[prev in list] [next in list] [prev in thread] [next in thread] 

List:       linux-omap
Subject:    prepatch: work around broken brf6150 PM code
From:       Andrew de Quincey <adq_dvb () lidskialf ! net>
Date:       2009-05-30 17:25:13
Message-ID: 20090530182513.214244z6d3s8cb9c () lidskialf ! net
[Download RAW message or body]

This message is in MIME format.


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....

["brf6150-fix-tx.patch" (text/x-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)

--
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


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic