介绍
蓝牙控制器上电驱动程序和蓝牙 HCI 驱动程序被设计用来支持蓝牙模块。
架构
蓝牙 HCI 驱动程序架构在下图中进行了总结。
实现
蓝牙控制器上电驱动程序
Realtek 的蓝牙控制器上电驱动程序是在以下文件中实现的:
驱动程序位置 |
介绍 |
---|---|
<linux>/drivers/rtkdrivers/bluetooth/realtek-bt.c |
包含 Realtek 的蓝牙控制器上电功能 |
static int rtk_bt_cdev_set_power(struct rtk_bt_power_info *info)
蓝牙 HCI 驱动程序
Linux 蓝牙子系统支持原生蓝牙网络。
蓝牙 HCI UART 驱动程序在以下文件中实现:
驱动程序位置 |
介绍 |
---|---|
<linux>/drivers/bluetooth/Kconfig |
蓝牙 HCI 驱动程序 Kconfig |
<linux>/drivers/bluetooth/Makefile |
蓝牙 HCI 驱动程序 Makefile |
<linux>/drivers/bluetooth/hci_h4.c |
HCI UART 协议相关函数 |
<linux>/drivers/bluetooth/hci_ldisc.c |
HCI UART TTY 行规函数 |
<linux>/drivers/bluetooth/rtk_coex.c |
HCI UART 共存处理函数 |
配置
设备树配置
蓝牙 HCI 驱动程序
UART3 是专用于蓝牙的 UART。设备树节点在 <dts>/rtl8730e-ocp.dtsi
中定义。
uart3: serial@41007000 {
compatible = "realtek,ameba-uart";
reg = <0x41007000 0x100>;
clocks = <&rcc RTK_CKE_UART3>;
interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
};
其中:
- compatible:
用于匹配驱动程序和设备的 ID,不可配置。
- reg:
寄存器资源,不可配置。
- clocks:
UART 时钟节点,不可配置。
- interrupts:
SPI 中断,不可配置。
编译配置
蓝牙控制器上电驱动程序
选择
。
蓝牙 OTP 读写驱动程序
选择
。
蓝牙 HCI 驱动程序
选择
。选择
。