1.配置SD卡,dts里面配置sd卡的上电
$(LINUX_KERNEL_VERSION)/arch/arm/boot/dts/cust_$(MTK_PLATFORM)_msdc.dtsi
sd-uhs-ddr50;
no-mmc;
no-sdio;
non-removable; //添加字段
pinctl = <&msdc1_pins_default>;
cd-gpios = <&pio 10 0>; //根据原理图配置sd卡的中断脚
这一步只是让sd卡可以正常识别使用,下面在介绍热插拔功能
2.使能sim卡
sim卡的正常工作设计到modem,modem则需要你们根据具体情况编译了
device/mediateksample/$(yourprojectname)/ProjectConfig.mk
CUSTOM_MODEM=(主make文件modem的名称,不要带中文)
在vendor_ap_s0/vendor/mediatek/proprietary/modem/文件夹下导入编译好的modem文件夹,里面modem文件夹名字与主make里面保持一致
如果要更换modem,最好删除out目录下modem文件夹里面的打包文件,在编译
out/soong/.intermediates/system/sepolicy/vendor_property_contexts/android_common/gen/namespace_checked/vendor/mediatek/proprietary/modem
下载烧录到手机,系统设置里面看基带版本是否有定义,有定义代表modem编进去了,不过sim卡能正常使用还是在根据原理图在dws里面配置引脚
想值保留sim1卡槽,双卡配置成单卡
device/mediateksample/$(yourprojectname)/ProjectConfig.mk
MTK_MULTI_SIM_SUPPORT = dsds //双卡 ss //单卡
3.SD卡sim卡热插拔
device/mediateksample/$(yourprojectname)/ProjectConfig.mk
MTK_SIM_HOT_SWAP= yes
MTK_SIM_HOT_SWAP_COMMON_SLOT = yes //打开关于sim卡热插拔的宏开关
$(LINUX_KERNEL_VERSION)/arch/arm/boot/dts/cust_$(MTK_PLATFORM)_msdc.dtsi
sd-uhs-ddr50;
no-mmc;
no-sdio;
- non-removable; //去掉开始添加的字段
pinctl = <&msdc1_pins_default>;
cd_level = /bits/ 8 <MSDC_CD_HIGH>; //更改sd卡中断的电平定义
dws里面sd卡与sim卡的eint与resset,无热插拔可以不配置,需要该功能就需要配置了
$(LINUX_KERNEL_VERSION)/drivers/misc/mediatek/dws/$(MTK_PLATFORM)/$(yourprojectname).dws
vendor/mediatek/proprietary/bootable/bootloader/preloader/custom/$(yourprojectname)/dct/dct/codegen.dws
vendor/mediatek/proprietary/custom/$(yourprojectname)/kernel/dct/dct/codegen.dws
SD卡:
与最开始sd的中断引脚gpio10对应
<eint10>
<varName>MSDC1_INS</varName>
<debounce_time>0</debounce_time>
<polarity>Low</polarity>
<sensitive_level>Edge</sensitive_level>
<debounce_en>Disable</debounce_en>
</eint10>
<gpio10>
<eint_mode>true</eint_mode>
<def_mode>0</def_mode>
<inpull_en>true</inpull_en>
<inpull_selhigh>true</inpull_selhigh>
<def_dir>IN</def_dir>
<out_high>false</out_high>
<varName0>GPIO_SDHC_EINT_PIN</varName0>
<smt>false</smt>
<ies>true</ies>
</gpio10>
sim卡:
<gpio35>
<eint_mode>false</eint_mode>
<def_mode>1</def_mode>
<inpull_en>true</inpull_en>
<inpull_selhigh>true</inpull_selhigh>
<def_dir>IN</def_dir>
<out_high>false</out_high>
<varName0>GPIO_SIM2_SIO</varName0>
<smt>false</smt>
<ies>true</ies>
</gpio35>
<gpio36>
<eint_mode>false</eint_mode>
<def_mode>1</def_mode>
<inpull_en>false</inpull_en>
<inpull_selhigh>false</inpull_selhigh>
<def_dir>OUT</def_dir>
<out_high>false</out_high>
<varName0>GPIO_SIM2_SRST</varName0>
<smt>false</smt>
<ies>true</ies>
</gpio36>
<gpio37>
<eint_mode>false</eint_mode>
<def_mode>1</def_mode>
<inpull_en>false</inpull_en>
<inpull_selhigh>false</inpull_selhigh>
<def_dir>OUT</def_dir>
<out_high>false</out_high>
<varName0>GPIO_SIM2_SCLK</varName0>
<smt>false</smt>
<ies>true</ies>
</gpio37>
<gpio38>
<eint_mode>false</eint_mode>
<def_mode>1</def_mode>
<inpull_en>false</inpull_en>
<inpull_selhigh>false</inpull_selhigh>
<def_dir>OUT</def_dir>
<out_high>false</out_high>
<varName0>GPIO_SIM1_SCLK</varName0>
<smt>false</smt>
<ies>true</ies>
</gpio38>
<gpio39>
<eint_mode>false</eint_mode>
<def_mode>1</def_mode>
<inpull_en>false</inpull_en>
<inpull_selhigh>false</inpull_selhigh>
<def_dir>OUT</def_dir>
<out_high>false</out_high>
<varName0>GPIO_SIM1_SRST</varName0>
<smt>false</smt>
<ies>true</ies>
</gpio39>
<gpio40>
<eint_mode>false</eint_mode>
<def_mode>1</def_mode>
<inpull_en>true</inpull_en>
<inpull_selhigh>true</inpull_selhigh>
<def_dir>IN</def_dir>
<out_high>false</out_high>
<varName0>GPIO_SIM1_SIO</varName0>
<smt>false</smt>
<ies>true</ies>
</gpio40>
具体引脚使用你们看原理图,仅供参考