android SD卡检测和热插拔功能

转载自:http://www.aichengxu.com/android/2476070.htm

最近有个项目不支持SD卡热插拔,且出现SD卡不识别的问题,需要去掉代码里面的SD卡热插拔功能。相关修改代码如下,主要是删除gpio代表的irq。

kernel/arch/arm/boot/dts/msm8909_x37_g101/msm8909-qrd-skuc.dtsi

&sdc2_cd_on {
       /delete-property/  bias-pull-up;
       bias-pull-down;
};
	
&sdc2_cd_off {
       /delete-property/  bias-disable;
       bias-pull-down;
};
	
&sdhc_2 {
       qcom,nonhotplug;
       qcom,no-1p8v;
       qcom,vdd-always-on;
       qcom,vdd-lpm-sup;
	
       qcom,vdd-current-level = <4000 400000>;
	
       /delete-property/ cd-gpios;
};
kernel/arch/arm/boot/dts/msm8909_x37_g101/msm8909-qrd.dtsi

&sdhc_2 {
        #address-cells = <0>;
       interrupt-parent = <&sdhc_2>;
       interrupts = <0 1 2>;
       #interrupt-cells = <1>;
       interrupt-map-mask = <0xffffffff>;
       interrupt-map = <0 &intc 0 125 0
                        1 &intc 0 221 0>;
       interrupt-names = "hc_irq", "pwr_irq";
       /delete-property/ cd-gpios;
		
	
       vdd-supply = <&pm8909_l11>;
 
  
因为我的板子是没有连cd-gpio的,去掉了cd-gpio还是可以支持热插拔,不清楚为什么。。。
一开始修改上面后,可以识别到T卡了,在dev/block/下有mmcblk1p1节点,但是手机上看不到,应该是文件系统没有挂在上去。
后面修改了device/qcom/msm8909_512下的fstab.qcom文件里的/devices/soc.0/7864900.sdhci/mmc_host*        /storage/sdcard1   vfat    nosuid,nodev         wait,voldmanaged=sdcard1:auto,noemulatedsd,encryptable=footer这个后就可以了。
代码中检测SD卡的文件是:kernel/drivers/mmc/core  core.c  sd.c  mmc_attach_sd()函数。

你可能感兴趣的:(Linux,Android,kernel,boot)