emmc
emmc驱动在drivers/mmc/host/dw_mmc-exynos.c
static const struct of_device_id dw_mci_exynos_match[] = {
{ .compatible = "samsung,exynos4412-dw-mshc",
.data = &exynos_drv_data, },
{ .compatible = "samsung,exynos5250-dw-mshc",
.data = &exynos_drv_data, },
{ .compatible = "samsung,exynos5420-dw-mshc",
.data = &exynos_drv_data, },
{ .compatible = "samsung,exynos5420-dw-mshc-smu",
.data = &exynos_drv_data, },
{ .compatible = "samsung,exynos7-dw-mshc",
.data = &exynos_drv_data, },
{ .compatible = "samsung,exynos7-dw-mshc-smu",
.data = &exynos_drv_data, },
{},
};
在vim arch/arm/boot/dts/exynos4412.dtsi
mshc_0: mmc@12550000 {
compatible = "samsung,exynos4412-dw-mshc";
reg = <0x12550000 0x1000>;
interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>;
#size-cells = <0>;
fifo-depth = <0x80>;
clocks = <&clock CLK_SDMMC4>, <&clock CLK_SCLK_MMC4>;
clock-names = "biu", "ciu";
status = "disabled";
};
而参考exynos4412-origen.dts
&mshc_0 {
pinctrl-0 = <&sd4_clk &sd4_cmd &sd4_bus4 &sd4_bus8>;
pinctrl-names = "default";
status = "okay";
broken-cd;
card-detect-delay = <200>;
samsung,dw-mshc-ciu-div = <3>;
samsung,dw-mshc-sdr-timing = <2 3>;
samsung,dw-mshc-ddr-timing = <1 2>;
bus-width = <8>;
cap-mmc-highspeed;
};
因此我们在exynos4412-tiny4412.dts也添加如上内容
此外,make menuconfig配置添加
Device Drivers --->
<*> MMC/SD/SDIO card support --->
<*> MMC block device driver (NEW)
<*> Synopsys DesignWare Memory Card Interface
<*> Exynos specific extensions for Synopsys DW Memory Card Interface
启动后
/ # fdisk -l
Disk /dev/mmcblk0: 15.7 GB, 15707668480 bytes
255 heads, 63 sectors/track, 1909 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/mmcblk0p1 20 1910 15184896 c Win95 FAT32 (LBA)
Disk /dev/mmcblk1: 7818 MB, [ 181.275363] dma-pl330 12680000.pdma: Reset Channel-1 CS-20000f FTC-20000
83 Linux
Partition table entries are not in disk order
/ # ls /dev/mmcblk0
/dev/mmcblk0