首頁(yè) 收藏 QQ群
 網(wǎng)站導(dǎo)航

ZNDS智能電視網(wǎng) 推薦當(dāng)貝市場(chǎng)

TV應(yīng)用下載 / 資源分享區(qū)

軟件下載 | 游戲 | 討論 | 電視計(jì)算器

綜合交流 / 評(píng)測(cè) / 活動(dòng)區(qū)

交流區(qū) | 測(cè)硬件 | 網(wǎng)站活動(dòng) | Z幣中心

新手入門 / 進(jìn)階 / 社區(qū)互助

新手 | 你問我答 | 免費(fèi)刷機(jī)救磚 | ROM固件

查看: 21527|回復(fù): 2
上一主題 下一主題
[分享]

轉(zhuǎn)個(gè)藍(lán)牙修改帖--Android BCM4330 藍(lán)牙BT驅(qū)動(dòng)調(diào)試記錄

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2014-2-25 16:24 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式 | 來自浙江
網(wǎng)上關(guān)于BT的驅(qū)動(dòng)很少,所以我在開發(fā)過程中把其中的步驟記錄下來。供大家相互學(xué)習(xí)討論。

一、關(guān)于BT driver的移植:

1. Enablebluetootch in BoadConfig.mk
       BOARD_HAVE_BLUETOOTH := true

2.實(shí)現(xiàn)BT電源管理rfkill驅(qū)動(dòng)。
Kernel/driver/bluetooth/bluetooth-power.c    高通的這個(gè)文件基本上不用動(dòng)。
在kernel\arch\arm\mach_msm7x27.c: static int bluetooth_power(int on)中
實(shí)現(xiàn):上電:把bt_reset pin 和bt_reg_on pin 拉低
                mdelay(10);
              把bt_resetpin 和bt_reg_on pin 拉高
              mdelay(150)
      下電:把bt_reset pin 和bt_reg_on pin 拉低      

3. RebuildAndroid image and reboot
命令行測(cè)試:
echo 0 >/sys/class/rfkill/rfkill0/state   //BT下電
echo 1 >/sys/class/rfkill/rfkill0/state   //BT上電
brcm_patchram_plus-d --patchram /etc/firmware/BCM4329B1_002.002.023.0061.0062.hcd/dev/ttyHS0
hciattach -s115200 /dev/ttyHS0 any
沒任何錯(cuò)誤提示是可以用以下測(cè)試
hciconfig hci0up
hcitool scan

4.實(shí)現(xiàn)BT睡眠喚醒機(jī)制
Kernel\drivers\bluetooth\bluesleep.c一般來說這個(gè)文件改動(dòng)比較少,但可能邏輯上會(huì)有些問題。需要小的改動(dòng)。
在kernel\arch\arm\mach_xxx/board_xxx.c:bluesleep_resources中定義gpio_host_wake(BT喚醒host腳)、gpio_ext_wake(host喚醒BT腳)、host_wake(BT喚醒host的中斷號(hào))。
注:各個(gè)平臺(tái)的board_xxx.c文件名字不同,請(qǐng)客戶確認(rèn)

5.系統(tǒng)集成
1)在init.qcom.rc中確認(rèn)有下面的內(nèi)容:
service hciattach/system/bin/sh /system/etc/init.qcom.bt.sh
    user bluetooth
    group qcom_oncrpc bluetooth net_bt_admin
    disabled
    oneshot

2)修改init.qcom.bt.sh
確認(rèn)有:
BLUETOOTH_SLEEP_PATH=/proc/bluetooth/sleep/proto
echo 1 >$BLUETOOTH_SLEEP_PATH
/system/bin/hciattach-n /dev/ttyHS0 any 3000000 flow & 改為:
./brcm_patchram_plus--enable_lpm –enable_hci --patchram /system/etc/wifi/BCM4329BT.hcd --baudrate3000000 /dev/ttyHS0 &
注掉:高通下載firmware的命令。

6.重新編譯system。此時(shí)BT應(yīng)該能運(yùn)行了。

二、BT的休眠喚醒配置

BT的休眠在driver/bluetooth/bluesleep.c中,首先驅(qū)動(dòng)的名字叫“bluesleep”與arch/arm/mach-msm/board-msm7x30.c相匹配就執(zhí)行platform_driver_probe(&bluesleep_driver, bluesleep_probe)然后調(diào)用static int __init bluesleep_probe(struct platform_device *pdev),這里會(huì)配置兩個(gè)引腳HOST_WAKE_BT & BT_WAKE_HOST
bsi = kzalloc(sizeof(struct bluesleep_info), GFP_KERNEL);
        if (!bsi)
                return -ENOMEM;

        res = platform_get_resource_byname(pdev, IORESOURCE_IO,
                                "gpio_host_wake");
        if (!res) {
                BT_ERR("couldn't find host_wake gpio\n");
                ret = -ENODEV;
                goto free_bsi;
        }
        bsi->host_wake = res->start;
        //[SIMT-zhangmin-111230] change the configuration of BT sleep gpio from bt_power to here {
        gpio_tlmm_config(GPIO_CFG(bsi->host_wake, 0, GPIO_CFG_INPUT, GPIO_CFG_NO_PULL, GPIO_CFG_2MA),GPIO_CFG_ENABLE);
        //[SIMT-zhangmin-111230] }
        ret = gpio_request(bsi->host_wake, "bt_host_wake");
        if (ret)
                goto free_bsi;
        ret = gpio_direction_input(bsi->host_wake);
bsi->host_wake_irq = platform_get_irq_byname(pdev, "host_wake");
如上代碼所示,主要將HOST_WAKE_BT設(shè)置為輸出腳,BT_WAKE_HOST 設(shè)置為輸入腳并也設(shè)置為中斷腳,等待BT芯片的喚醒。
然后再bluesleep_init函數(shù)中建立BT目錄/proc/bluetooth/sleep/讀btwake中HOST_WAKE_BT的狀態(tài)。讀出的狀態(tài)值為0或1。
或在BT目錄/proc/bluetooth/sleep/寫btwake中HOST_WAKE_BT的狀態(tài)。寫出狀態(tài)值為0或1。


上一篇:喵王為華為秘盒供電測(cè)試,秘盒果然很省電!
下一篇:終于完成用秘盒做成家庭的文件電影中心了
沙發(fā)
發(fā)表于 2014-3-16 11:30 | 只看該作者 | 來自福建
雖不明,但覺厲!
板凳
發(fā)表于 2014-3-20 08:09 | 只看該作者 | 來自湖北
雖不明,但覺厲!

本版積分規(guī)則

Archiver|新帖|標(biāo)簽|軟件|Sitemap|ZNDS智能電視網(wǎng) ( 蘇ICP備2023012627號(hào) )

網(wǎng)絡(luò)信息服務(wù)信用承諾書 | 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證:蘇B2-20221768 丨 蘇公網(wǎng)安備 32011402011373號(hào)

GMT+8, 2024-9-25 13:17 , Processed in 0.059910 second(s), 13 queries , Redis On.

Powered by Discuz!

監(jiān)督舉報(bào):report#znds.com (請(qǐng)將#替換為@)

© 2007-2024 ZNDS.Com

快速回復(fù) 返回頂部 返回列表