修改tf卡为高电平位有效检测

 

tf卡的电平检测,是根据卡座来的,大部分卡座会是低电平为检测到有卡,但也有个别卡座是高电平才能检测到。

 

1.正常低电平检测:

dts配置如下:

&sdmmc {
    max-frequency = <150000000>;
    no-sdio;
    no-mmc;
    bus-width = <4>;
    cap-mmc-highspeed;
    cap-sd-highspeed;
    disable-wp;
    sd-uhs-sdr104;
    vmmc-supply = <&vcc_3v3_sd_s0>;
    vqmmc-supply = <&vccio_sd_s0>;
    pinctrl-names = "default";
    pinctrl-0 = <&sdmmc_bus4 &sdmmc_clk &sdmmc_cmd &sdmmc_det>;
    status = "okay";
};

这个是默认配置,什么都不需要修改。

 

2.高电平检测卡:

dts配置如下:

&sdmmc {
    max-frequency = <150000000>;
    no-sdio;
    no-mmc;
    bus-width = <4>;
    cap-mmc-highspeed;
    cap-sd-highspeed;
    disable-wp;
    sd-uhs-sdr104;
    vmmc-supply = <&vcc_3v3_sd_s0>;
    vqmmc-supply = <&vccio_sd_s0>;
    pinctrl-names = "default";
    pinctrl-0 = <&sdmmc_bus4 &sdmmc_clk &sdmmc_cmd>;// &sdmmc_det
    cd-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_HIGH>;
    status = "okay";
};

ai解释如下:

image

 对应解析的驱动为:drivers\mmc\core\host.c

image

 

sdmmc 和 jtag 功能复用,通过 sdmmc 检测脚来区分,拉低则复用为 sdmmc 功能,硬件上不拉低,软件上就直接禁用 jtag。还需要修改:

--- a/kernel-6.1/drivers/soc/rockchip/grf.c
+++ b/kernel-6.1/drivers/soc/rockchip/grf.c
@@ -243,9 +243,11 @@ static const struct rockchip_grf_info rk3566_pipegrf __initconst = {
 };
 
 #define RK3588_SYS_GRF_SOC_CON7                0x031c
+#define RK3588_SYS_GRF_SOC_CON6        0x0318
 
 static const struct rockchip_grf_value rk3588_sys_grf_defaults[] __initconst = {
        { "Connect EDP hpd to IO", RK3588_SYS_GRF_SOC_CON7, HIWORD_UPDATE(0x3, 0x3, 14) },
+       { "jtag switching", RK3588_SYS_GRF_SOC_CON6, HIWORD_UPDATE(0, 0x1, 14) },
 }

 

posted @ 2026-05-29 15:45  M-kobe  阅读(12)  评论(0)    收藏  举报