MTK平台--Android P SD卡检测

本文详细分析了MTK平台在Android P系统中SD卡热插拔检测的问题,从代码层面探讨了检测原理,包括mmc_rescan函数的作用、mmc_detect_change函数的调用以及电源管理的相关代码分析。最终发现由于缺少MSDC_SD_NEED_POWER标志导致SD卡下电,通过在dts中添加sd_need_power属性解决了问题。
摘要由CSDN通过智能技术生成

SD卡检测

前言

   最近公司拿到了Android P的代码,需要在原有的项目基础上将Android 8.1升级为Android 9.0;最为一个职场新人,独挑大梁是不现实的,不过帮大佬"打杂"还是可以的,在配置SD卡的时候,过程比较有意思,学到了一些东西,在此做个记录。

目录

   对于一个Android项目来说,SD卡应该是属于比较简单的一个模块,需要配置的地方也不多,如下:
1、kernel-4.9-lc/arch/arm/boot/dts/[project].dts 
2、kernel-4.9-lc/arch/arm/boot/dts/mtxxx.dts 
3、kernel-4.9-lc/arch/arm/boot/dts/cust_mtxxxx_msdc.dtsi 
4、kernel-4.9-lc/drivers/misc/mediatek/dws/mt6580/[project].dws 
5、vendor/mediatek/proprietary/bootable/bootloader/lk/target/[project]/dct/dct/codegen.dws 
6、vendor/mediatek/proprietary/bootable/bootloader/preloader/custom/[project]/dct/dct/codegen.dws 

代码分析

  
从上面所列代码路径来看,相关的dts文件有三个,[project].dts只作用于特定项目,SD相关代码如下:

&msdc1 {
 	index = /bits/ 8 <1>;
 	clk_src = /bits/ 8 <MSDC1_CLKSRC_187MHZ>;
 	bus-width = <4>;
 	max-frequency = <200000000>;
	sd_need_power;  //是否配置这条属性决定了当mmc_rescan函数没有检测到SD卡时是否下电,就是因为这个属性,让我兜兜转转转了一圈,后面详细说;
	cap-sd-highspeed;
	sd-uhs-sdr12;
	sd-uhs-sdr25;
	sd-uhs-sdr50;
	sd-uhs-sdr104;
	sd-uhs-ddr50;
	no-mmc;   //这两条标明不能作为mmc和sdio;
	no-sdio;

	pinctrl-names = "default","insert_cfg";
	pinctrl-0 = <&mmc1_pins_insert_default>; //insert和中断相关,即检测脚相关
	pinctrl-1 = <&mmc1_pins_insert_cfg>;
	pinctl = <&msdc1_pins_default>;
	pinctl_sdr104 = <&msdc1_pins_sdr104>;
	pinctl_sdr50 = <&msdc1_pins_sdr50>;
	pinctl_ddr50 = <&msdc1_pins_ddr50>;
	register_setting = <&msdc1_register_setting_default>;

	host_function = /bits/ 8 <MSDC_SD>;  //表明被用作sd;
	cd_level = /bits/ 8 <MSDC_CD_HIGH>;  //如果被设置为0,表示低有效(即正确识卡的时候检测脚为低电平);反之则高电平有效;这个由软件和硬件上共同决定
	cd-gpios = <&pio 14 0>;  //设置中断脚为GPIO14;
	vmmc-supply = <&mt_pmic_vmch_ldo_reg>;  //供电,代码中会用到vmmc-supply和vqmmc-supply;
	vqmmc-supply = <&mt_pmic_vmc_ldo_reg>;
}
	
#include <miki8321p2_9709/cust.dtsi
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值