首先在mach-mini6410.c中添加sdio控制器:
static struct platform_device *mini6410_devices[] __initdata = {
&s3c_device_hsmmc0,
&s3c_device_hsmmc1,
};
同时,由于我们的开发板硬件上面的hsmmc0接口连接的是SD卡,而SDIO WIFI连接在hsmmc1上面,但是根据Tiny6410-1107.pdf,实际上只有hsmmc0接口引出了CD检测线。所以,对于hsmmc1,必须忽略他的检测线,否则会影响到hsmmc0的正常使用,打开/arch/arm/plat-samsung/dev-hsmmc1.c,修改:
struct s3c_sdhci_platdata s3c_hsmmc1_def_platdata = {
.max_width = 4,
.host_caps = (MMC_CAP_4_BIT_DATA |
MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED),
.clk_type = S3C_SDHCI_CLK_DIV_INTERNAL,
.cd_type = S3C_SDHCI_CD_PERMANENT,/* 添加这一行 */
};
修改内核配置:
-> Device Drivers
-> MMC/SD/SDIO card support
【*】 MMC block device driver
(8) Number of minors per block device
【*】 Use bounce buffer for simple hosts
编译完成后,可以看到
/dev/mmcblk0
热插拔:
在/etc/mdev.conf文件中添加:
mmcblk0p1 0:0 777 * /etc/hotplug_shell/sdcard_hotplug.sh
创建sdcard_hotplug.sh脚本,内容为:
#!/bin/sh
if [ $ACTION = "add" ];
then
echo "SD CARD Insert.Mounting at /mnt/sd.";
mount -t vfat -o codepage=936,iocharset=utf8 /dev/$MDEV /mnt/sd;
else
echo "SD CARD Disconnected.Unmount /mnt/sd.";
umount /mnt/sd;
fi
最后添加执行权限即可:
chmod +x sdcard_hotplug.sh