当前位置: 首页 > news >正文

20251112给荣品RD-RK3588开发板跑Rockchip的原厂Android13系统时适配AP6275P模块的BT蓝牙部分【使用原厂的DTS】

cd /sys/kernel/debug/pinctrl/pinctrl-rockchip-pinctrl
cat pinmux-pins
cd /sys/kernel/debug/
cat gpio

# 检查GPIO状态
adb shell cat /sys/kernel/debug/gpio

# 检查中断统计
adb shell cat /proc/interrupts | grep gt9


20251112给荣品RD-RK3588开发板跑Rockchip的原厂Android13系统时适配AP6275P模块的BT蓝牙部分【使用原厂的DTS】
2025/11/12 11:57


缘起:给荣品RD-RK3588开发板跑Rockchip的原厂Android13系统,在适配AP6275P模块的BT蓝牙部分的时候。
使用荣品的DTS已经通了,使用EVB7的V11版本的DTS,WIFI也通了,但是BT还是不通!
怎么办呢?这种情况很容易知道是DTS中的GPIO的功能配置异常了!
直接打印GPIO口的状态,和好的GPIO一比对,很容易就知道问题在哪里了!
【和SDMMC/SDIO冲突了,但是不要关闭TF卡!^_】


当你把荣品RD-RK3588开发板重新适配一把,就相当于从头做了一个项目:【荣品RD-RK3588开发板】。
当然,开发板的功能都是好的,你免除了调试的过程,也就没有解决相关硬件出错的经验/机会了!


结论:荣品的FAE工程师是真的很忙。
代码写的非常写意/潇洒!
【整个DTS,TAB和空格按键都是混用的!^_有些时候看着很难受的!^_】
DTS中的代码排版真的让人看得很难受!


1、比对GPIO口的状态:

rk3588_t:/sys/kernel/debug # cat gpio
gpiochip0: GPIOs 0-31, parent: platform/fd8a0000.gpio, gpio0:
 gpio-0   (                    |bt_default_reset    ) out lo

 gpio-3   (                    |vsel                ) out lo
 gpio-17  (                    |vsel                ) out lo
 gpio-22  (                    |GTP RST PORT        ) in  hi
 gpio-30  (                    |vsel                ) out lo

gpiochip1: GPIOs 32-63, parent: platform/fec20000.gpio, gpio1:
 gpio-34  (                    |vbus5v0-typec       ) out lo
 gpio-44  (                    |reset               ) out hi
 gpio-52  (                    |headset_gpio        ) in  lo
 gpio-61  (                    |hdmirx-det          ) in  lo ACTIVE LOW

gpiochip2: GPIOs 64-95, parent: platform/fec30000.gpio, gpio2:
 gpio-72  (                    |bt_default_wake_host) in  lo
 gpio-75  (                    |bt_default_wake     ) in  hi

gpiochip3: GPIOs 96-127, parent: platform/fec40000.gpio, gpio3:
 gpio-111 (                    |snps,reset          ) out hi ACTIVE LOW
 gpio-120 (                    |GTP INT IRQ         ) in  hi
 gpio-124 (                    |sbu1-dc             ) out lo
 gpio-125 (                    |sbu2-dc             ) out hi

gpiochip4: GPIOs 128-159, parent: platform/fec50000.gpio, gpio4:
 gpio-130 (                    |reset               ) out hi
 gpio-132 (                    |vdd-5G              ) out hi
 gpio-133 (                    |vcc3v3-pcie30       ) out hi
 gpio-146 (                    |vcc3v3-lcd0-n       ) out hi
 gpio-148 (                    |bt_default_rts      ) in  hi
 gpio-150 (                    |reset               ) out hi ACTIVE LOW

gpiochip5: GPIOs 509-511, parent: platform/rk806-pinctrl.1.auto, rk806-gpio, can sleep:
rk3588_t:/sys/kernel/debug #
rk3588_t:/sys/kernel/debug #


rk3588_t:/sys/kernel/debug/pinctrl/pinctrl-rockchip-pinctrl # cat pinmux-pins

pin 72 (gpio2-8): wireless-bluetooth gpio2:72 function wireless-bluetooth group bt-gpio
pin 73 (gpio2-9): (MUX UNCLAIMED) (GPIO UNCLAIMED)
pin 74 (gpio2-10): (MUX UNCLAIMED) (GPIO UNCLAIMED)
pin 75 (gpio2-11): wireless-bluetooth gpio2:75 function wireless-bluetooth group bt-gpio

修改为:

pin 69 (gpio2-5): (MUX UNCLAIMED) (GPIO UNCLAIMED)
pin 70 (gpio2-6): fe2d0000.mmc (GPIO UNCLAIMED) function sdio group sdiom0-pins
pin 71 (gpio2-7): fe2d0000.mmc (GPIO UNCLAIMED) function sdio group sdiom0-pins
pin 72 (gpio2-8): fe2d0000.mmc (GPIO UNCLAIMED) function sdio group sdiom0-pins
pin 73 (gpio2-9): fe2d0000.mmc (GPIO UNCLAIMED) function sdio group sdiom0-pins
pin 74 (gpio2-10): fe2d0000.mmc (GPIO UNCLAIMED) function sdio group sdiom0-pins
pin 75 (gpio2-11): fe2d0000.mmc (GPIO UNCLAIMED) function sdio group sdiom0-pins

pin 76 (gpio2-12): feac0000.i2c (GPIO UNCLAIMED) function i2c4 group i2c4m1-xfer
pin 77 (gpio2-13): feac0000.i2c (GPIO UNCLAIMED) function i2c4 group i2c4m1-xfer
pin 78 (gpio2-14): (MUX UNCLAIMED) (GPIO UNCLAIMED)


很容易/根据经验可以知道:GPIO72/GPIO75被复用为SDMMC/SDIO之后,导致全部的BT蓝牙的配置都被无效了!


2、查找SDMMC/SDIO:
jinhualong@jinhualong-LEGION-REN7000K-26IRX:~/new_disk_4t/wyb/RD-RK3588/EVB7_RD-RK3588t/kernel-5.10/arch/arm64/boot/dts/rockchip$ grep sdmmc . -R
./rk3588s.dtsi:                pm_qos = <&qos_sdmmc>;
./rk3588s.dtsi:    qos_sdmmc: qos@fdf3d800 {
./rk3588s.dtsi:    sdmmc: mmc@fe2c0000 {
./rk3588s.dtsi:        pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_det &sdmmc_bus4>;
./rk3588-evb7-v11 - 副本 (6).dtsi:    sdmmc {
./rk3588-evb7-v11 - 副本 (6).dtsi:&sdmmc {
./rk3588-evb7-v11.dtsi:    sdmmc {
./rk3588-evb7-v11.dtsi:&sdmmc {

./.rk3588-evb7-v11.dtb.dts.tmp:    pm_qos = <&qos_sdmmc>;
./.rk3588-evb7-v11.dtb.dts.tmp: qos_sdmmc: qos@fdf3d800 {
./.rk3588-evb7-v11.dtb.dts.tmp: sdmmc: mmc@fe2c0000 {
./.rk3588-evb7-v11.dtb.dts.tmp:  pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_det &sdmmc_bus4>;
./.rk3588-evb7-v11.dtb.dts.tmp: sdmmc {
./.rk3588-evb7-v11.dtb.dts.tmp:  sdmmc_bus4: sdmmc-bus4 {
./.rk3588-evb7-v11.dtb.dts.tmp:  sdmmc_clk: sdmmc-clk {
./.rk3588-evb7-v11.dtb.dts.tmp:  sdmmc_cmd: sdmmc-cmd {
./.rk3588-evb7-v11.dtb.dts.tmp:  sdmmc_det: sdmmc-det {
./.rk3588-evb7-v11.dtb.dts.tmp:  sdmmc_pwren: sdmmc-pwren {
./.rk3588-evb7-v11.dtb.dts.tmp:&sdmmc {
./.rk3588-evb7-v11.dtb.dts.tmp: sdmmc {
./.rk3588-evb7-v11.dtb.dts.tmp:&sdmmc {
grep: ./rk3588-evb7-v11.dtb: 匹配到二进制文件
./rk3588-evb7-v11 - 副本 (7).dtsi:    sdmmc {
./rk3588-evb7-v11 - 副本 (7).dtsi:&sdmmc {
./rk3588-evb7-v11 - 副本.dtsi:    sdmmc {
./rk3588-evb7-v11 - 副本.dtsi:&sdmmc {
./rk3588-evb7-v11 - 副本 (5).dtsi:    sdmmc {
./rk3588-evb7-v11 - 副本 (5).dtsi:&sdmmc {
./rk3588-evb7-v11 - 副本 (3).dtsi:    sdmmc {
./rk3588-evb7-v11 - 副本 (3).dtsi:&sdmmc {
./rk3588-evb - 副本.dtsi:&sdmmc {
./rk3588-evb.dtsi:&sdmmc {
./rk3588-evb7-v11 - 副本 (4).dtsi:    sdmmc {
./rk3588-evb7-v11 - 副本 (4).dtsi:&sdmmc {
./rk3588-evb7-v11 - 副本 (2).dtsi:    sdmmc {
./rk3588-evb7-v11 - 副本 (2).dtsi:&sdmmc {
./rk3588s-pinctrl.dtsi:    sdmmc {
./rk3588s-pinctrl.dtsi:        sdmmc_bus4: sdmmc-bus4 {
./rk3588s-pinctrl.dtsi:                /* sdmmc_d0 */
./rk3588s-pinctrl.dtsi:                /* sdmmc_d1 */
./rk3588s-pinctrl.dtsi:                /* sdmmc_d2 */
./rk3588s-pinctrl.dtsi:                /* sdmmc_d3 */
./rk3588s-pinctrl.dtsi:        sdmmc_clk: sdmmc-clk {
./rk3588s-pinctrl.dtsi:                /* sdmmc_clk */
./rk3588s-pinctrl.dtsi:        sdmmc_cmd: sdmmc-cmd {
./rk3588s-pinctrl.dtsi:                /* sdmmc_cmd */
./rk3588s-pinctrl.dtsi:        sdmmc_det: sdmmc-det {
./rk3588s-pinctrl.dtsi:                /* sdmmc_det */
./rk3588s-pinctrl.dtsi:        sdmmc_pwren: sdmmc-pwren {
./rk3588s-pinctrl.dtsi:                /* sdmmc_pwren */
jinhualong@jinhualong-LEGION-REN7000K-26IRX:~/new_disk_4t/wyb/RD-RK3588/EVB7_RD-RK3588t/kernel-5.10/arch/arm64/boot/dts/rockchip$ 


Y:\new_disk_4t\wyb\RD-RK3588\EVB7_RD-RK3588t\kernel-5.10\arch\arm64\boot\dts\rockchip\rk3588-evb7-v11.dtsi
//&sdio {
//    max-frequency = <150000000>;
//    no-sd;
//    no-mmc;
//    bus-width = <4>;
//    disable-wp;
//    cap-sd-highspeed;
//    cap-sdio-irq;
//    keep-power-in-suspend;
//    mmc-pwrseq = <&sdio_pwrseq>;
//    non-removable;
//    pinctrl-names = "default";
//    pinctrl-0 = <&sdiom0_pins>;
//    sd-uhs-sdr104;
//    status = "okay";
//};
//
//&sdmmc {
//    status = "okay";
//    vmmc-supply = <&vcc_3v3_sd_s0>;
//};


/home/jinhualong/new_disk_4t/wyb/RD-RK3588/EVB7_RD-RK3588t
jinhualong@jinhualong-LEGION-REN7000K-26IRX:~/new_disk_4t/wyb/RD-RK3588/EVB7_RD-RK3588t$ 
jinhualong@jinhualong-LEGION-REN7000K-26IRX:~/new_disk_4t/wyb/RD-RK3588/EVB7_RD-RK3588t$ cd kernel-5.10/
jinhualong@jinhualong-LEGION-REN7000K-26IRX:~/new_disk_4t/wyb/RD-RK3588/EVB7_RD-RK3588t/kernel-5.10$ 
jinhualong@jinhualong-LEGION-REN7000K-26IRX:~/new_disk_4t/wyb/RD-RK3588/EVB7_RD-RK3588t/kernel-5.10$ make distclean
  CLEAN   certs
  CLEAN   drivers/scsi
fatal: 不是 git 仓库(或者直至挂载点 /home/jinhualong 的任何父目录)
停止在文件系统边界(未设置 GIT_DISCOVERY_ACROSS_FILESYSTEM)。
  CLEAN   fs/unicode
  CLEAN   kernel
  CLEAN   lib
  CLEAN   net/wireless
  CLEAN   security/selinux
  CLEAN   usr
  CLEAN   vmlinux.symvers modules-only.symvers modules.builtin modules.builtin.modinfo
  CLEAN   scripts/basic
  CLEAN   scripts/dtc
  CLEAN   scripts/genksyms
  CLEAN   scripts/kconfig
  CLEAN   scripts/mod
  CLEAN   scripts/selinux/genheaders
  CLEAN   scripts/selinux/mdp
  CLEAN   scripts
  CLEAN   include/config include/generated .config .config.old .version Module.symvers

#### build completed successfully (4 seconds) ####

jinhualong@jinhualong-LEGION-REN7000K-26IRX:~/new_disk_4t/wyb/RD-RK3588/EVB7_RD-RK3588t/kernel-5.10$ rm *.img
jinhualong@jinhualong-LEGION-REN7000K-26IRX:~/new_disk_4t/wyb/RD-RK3588/EVB7_RD-RK3588t/kernel-5.10$ 
jinhualong@jinhualong-LEGION-REN7000K-26IRX:~/new_disk_4t/wyb/RD-RK3588/EVB7_RD-RK3588t/kernel-5.10$ cd ..
jinhualong@jinhualong-LEGION-REN7000K-26IRX:~/new_disk_4t/wyb/RD-RK3588/EVB7_RD-RK3588t$ 
jinhualong@jinhualong-LEGION-REN7000K-26IRX:~/new_disk_4t/wyb/RD-RK3588/EVB7_RD-RK3588t$ ./build.sh -CKu


3、刷机之后,发现BT蓝牙可以打开了。
但是TF卡也不能识别了!

Y:\new_disk_4t\wyb\RD-RK3588\EVB7_RD-RK3588t\kernel-5.10\arch\arm64\boot\dts\rockchip\rk3588-evb7-v11.dtsi


// 2025/11/12 14:21 wenyuanbo BT
//&sdio {
//    max-frequency = <150000000>;
//    no-sd;
//    no-mmc;
//    bus-width = <4>;
//    disable-wp;
//    cap-sd-highspeed;
//    cap-sdio-irq;
//    keep-power-in-suspend;
//    mmc-pwrseq = <&sdio_pwrseq>;
//    non-removable;
//    pinctrl-names = "default";
//    pinctrl-0 = <&sdiom0_pins>;
//    sd-uhs-sdr104;
//    status = "okay";
//};

// 2025/11/12 14:21 TF Card !!!!
&sdmmc {
    status = "okay";
    vmmc-supply = <&vcc_3v3_sd_s0>;
};

&uart9 {
    status = "okay";
    pinctrl-names = "default";
    pinctrl-0 = <&uart9m0_xfer &uart9m0_ctsn>;
};


4、BT的其他部分:

Y:\new_disk_4t\wyb\RD-RK3588\EVB7_RD-RK3588t\kernel-5.10\arch\arm64\boot\dts\rockchip\rk3588-evb7-v11.dtsi

    vcc_3v3_sd_s0: vcc-3v3-sd-s0-regulator {
        compatible = "regulator-fixed";
        gpio = <&gpio0 RK_PB7 GPIO_ACTIVE_HIGH>;
        pinctrl-names = "default";
        pinctrl-0 = <&sd_s0_pwr>;
        regulator-name = "vcc_3v3_sd_s0";
        enable-active-high;
    };

    wireless_bluetooth: wireless-bluetooth {
        compatible = "bluetooth-platdata";
        clocks = <&hym8563>;
        clock-names = "ext_clock";
        uart_rts_gpios = <&gpio4 RK_PC4 GPIO_ACTIVE_LOW>;
        pinctrl-names = "default", "rts_gpio";
        pinctrl-0 = <&uart9m0_rtsn>, <&bt_gpio>;
        pinctrl-1 = <&uart9_gpios>;
        BT,reset_gpio    = <&gpio0 RK_PA0 GPIO_ACTIVE_HIGH>;
        BT,wake_gpio     = <&gpio2 RK_PB3 GPIO_ACTIVE_HIGH>;
        BT,wake_host_irq = <&gpio2 RK_PB0 GPIO_ACTIVE_HIGH>;
        status = "okay";
    };

    wireless_wlan: wireless-wlan {
        compatible = "wlan-platdata";
        wifi_chip_type = "ap6275p";
        pinctrl-names = "default";
        pinctrl-0 = <&wifi_host_wake_irq>, <&wifi_poweren_gpio>;
        WIFI,host_wake_irq = <&gpio0 RK_PB0 GPIO_ACTIVE_HIGH>;
        WIFI,poweren_gpio = <&gpio0 RK_PB2 GPIO_ACTIVE_HIGH>;
        status = "okay";
    };
};


来源:
Y:\new_disk_4t\wyb\RD-RK3588\EVB7_RD-RK3588t\kernel-5.10\arch\arm64\boot\dts\rockchip84荣品\rp-wifi-bt-ap6275p-rk3588.dtsi

/ {
    wireless_bluetooth: wireless-bluetooth {
        compatible = "bluetooth-platdata";
        clocks = <&hym8563>;
        clock-names = "ext_clock";
        uart_rts_gpios = <&gpio4 RK_PC4 GPIO_ACTIVE_LOW>;
        pinctrl-names = "default", "rts_gpio";
        pinctrl-0 = <&uart9m0_rtsn>, <&bt_gpio>;
        pinctrl-1 = <&uart9_gpios>;
        BT,reset_gpio    = <&gpio0 RK_PA0 GPIO_ACTIVE_HIGH>;
        BT,wake_gpio     = <&gpio2 RK_PB3 GPIO_ACTIVE_HIGH>;
        BT,wake_host_irq = <&gpio2 RK_PB0 GPIO_ACTIVE_HIGH>;
        status = "okay";
    };

    wireless_wlan: wireless-wlan {
        compatible = "wlan-platdata";
        wifi_chip_type = "ap6275p";
        pinctrl-names = "default";
        pinctrl-0 = <&wifi_host_wake_irq>, <&wifi_poweren_gpio>;
        WIFI,host_wake_irq = <&gpio0 RK_PB0 GPIO_ACTIVE_HIGH>;
        WIFI,poweren_gpio = <&gpio0 RK_PB2 GPIO_ACTIVE_HIGH>; //If deep sleep is required, write the pin to rp_power
        status = "okay";
    };
};

不要动:
Y:\new_disk_4t\wyb\RD-RK3588\EVB7_RD-RK3588t\kernel-5.10\arch\arm64\boot\dts\rockchip\rk3588-evb7-v11.dtsi
&pinctrl {


    pcie30x4 {
        pcie30x4_clkreqn_m1: pcie30x4-clkreqn-m1 {
            rockchip,pins = <4 RK_PB4 RK_FUNC_GPIO &pcfg_pull_down>;
        };
    };

    sdio-pwrseq {
        wifi_enable_h: wifi-enable-h {
            rockchip,pins = <0 RK_PC4 RK_FUNC_GPIO &pcfg_pull_up>;
        };
    };

    sdmmc {
        sd_s0_pwr: sd-s0-pwr {
            rockchip,pins = <0 RK_PB7 RK_FUNC_GPIO &pcfg_pull_up>;
        };
    };


    usb-typec {
        usbc0_int: usbc0-int {
            rockchip,pins = <3 RK_PB6 RK_FUNC_GPIO &pcfg_pull_up>;
        };

        typec5v_pwren: typec5v-pwren {
            rockchip,pins = <3 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>;
        };
    };

        wireless-bluetooth {
                uart9_gpios: uart9-gpios {
                        rockchip,pins = <4 RK_PC4 RK_FUNC_GPIO &pcfg_pull_none>;
                };
                bt_gpio: bt-gpio {
                        rockchip,pins =
                                <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>,
                                <2 RK_PB3 RK_FUNC_GPIO &pcfg_pull_up>,
                                <2 RK_PB0 RK_FUNC_GPIO &pcfg_pull_down>;
                };
        };

    wireless-wlan {
        wifi_host_wake_irq: wifi-host-wake-irq {
            rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_down>;
        };
    };
    
    wifi_poweren_gpio: wifi-poweren-gpio {
        rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up>;
    };
};

来源:
&uart9 {
    status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&uart9m0_xfer &uart9m0_ctsn>;
};


&pinctrl {
        wireless-bluetooth {
                uart9_gpios: uart9-gpios {
                        rockchip,pins = <4 RK_PC4 RK_FUNC_GPIO &pcfg_pull_none>;
                };
                bt_gpio: bt-gpio {
                        rockchip,pins =
                                <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>,
                                <2 RK_PB3 RK_FUNC_GPIO &pcfg_pull_up>,
                                <2 RK_PB0 RK_FUNC_GPIO &pcfg_pull_down>;
                };
        };

        wireless-wlan {
                wifi_host_wake_irq: wifi-host-wake-irq {
                        rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_down>;
                };

                wifi_poweren_gpio: wifi-poweren-gpio {
                        rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up>;
                };
        };
};


5、
Y:\new_disk_4t\wyb\RD-RK3588\EVB7_RD-RK3588t\device\rockchip\rk3588\rk3588_t\bt_vendor.conf
Y:\new_disk_4t\wyb\RD-RK3588\orig_RD-rk3588_Android13\device\rockchip\rk3588\rk3588_t\bt_vendor.conf

# UART device port where Bluetooth controller is attached
UartPort = /dev/ttyS8

# Firmware patch file location
FwPatchFilePath = /vendor/etc/firmware/

修改为:

# UART device port where Bluetooth controller is attached
UartPort = /dev/ttyS9

# Firmware patch file location
FwPatchFilePath = /vendor/etc/firmware/

http://www.dtcms.com/a/602189.html

相关文章:

  • MyBatis 专题深度细化解析
  • a做爰视频免费观费网站asp网站如何迁移
  • 网站推广平台wordpress怎么加属性
  • 文创做的好的网站推荐微信公众号属于网站建设
  • 1. Cockpit 管理服务器;2. Linux 软件包管理
  • 【剑斩OFFER】算法的暴力美学——山脉数组的蜂顶索引
  • 关键词挖掘工具有哪些兰州seo优化
  • LeetCode 热题 100——哈希——最长连续序列
  • c语言反编译软件|详细解析c语言反编译工具的使用及其重要性
  • 模板网站更改青海制作网站的公司
  • 牛客:栈的压入、弹出序列
  • 深入解析UDP服务器核心开发机制
  • 阜阳做网站的公司网站开发前端跟后端的区别
  • MongoDB知识点与技巧总结
  • 企业网站 设计国外免费建站网站不用下载
  • LeetCode算法学习之数组中的第K个最大元素
  • 应急调度系统让每一次救援都精准到位
  • RL机器人人库使用简介
  • 北京网络公司建站百度爱采购优化排名软件
  • 长沙微网站开发重庆网站建设及优化公司
  • Java集合框架深度剖析 — 从源码看ArrayList、HashMap的设计与优化
  • 网站关键词排名快速提升thinkphp建站网址
  • JavaScript中??、、||、?.运算的区别
  • 微信公众号网站怎么做上海网站开发报价
  • Python压缩音乐文件大小
  • 用什么软件写网站荷城网站设计
  • 长治哪家公司做网站好怎么做网站教程视频
  • 跟踪导论(三)——滤波的释义位置信息的“观测+修正”
  • 一个电商网站开发周期是多久搜索引擎营销流程是什么?
  • 计算机做网站难吗网站建设费可以走办公费吗