新路程------imx6的sd 和emmc部分(1)

  首先还是关心device的注册过程

首先在board-mx6q_sabresd.c里

static void __init mx6_sabresd_board_init(void)
{
/* Move sd4 to first because sd4 connect to emmc.
  Mfgtools want emmc is mmcblk0 and other sd card is mmcblk1.
*/
imx6q_add_sdhci_usdhc_imx(3, &mx6q_sabresd_sd4_data);
imx6q_add_sdhci_usdhc_imx(1, &mx6q_sabresd_sd2_data);
imx6q_add_sdhci_usdhc_imx(2, &mx6q_sabresd_sd3_data);

}

然后看这个add函数

devices-imx6q.h
#define imx6q_add_sdhci_usdhc_imx(id, pdata) \
imx_add_sdhci_esdhc_imx(&imx6q_sdhci_usdhc_imx_data[id], pdata)

看看这个数组哪里来的

在Platform-sdhci-esdhc-imx.c里

#ifdef CONFIG_SOC_IMX6Q
const struct imx_sdhci_esdhc_imx_data
imx6q_sdhci_usdhc_imx_data[] __initconst = {
#define imx6q_sdhci_usdhc_imx_data_entry(_id, _hwid) \
imx_sdhci_usdhc_imx_data_entry(MX6Q, _id, _hwid)
imx6q_sdhci_usdhc_imx_data_entry(0, 1),
imx6q_sdhci_usdhc_imx_data_entry(1, 2),
imx6q_sdhci_usdhc_imx_data_entry(2, 3),
imx6q_sdhci_usdhc_imx_data_entry(3, 4),
};
#endif /* ifdef CONFIG_SOC_IMX6Q */
Platform-sdhci-esdhc-imx.c
#define imx_sdhci_usdhc_imx_data_entry(soc, id, hwid) \
[id] = imx_sdhci_usdhc_imx_data_entry_single(soc, id, hwid)

#define imx_sdhci_usdhc_imx_data_entry_single(soc, _id, hwid) \
{ \
.id = _id, \
.iobase = soc ## _USDHC ## hwid ## _BASE_ADDR, \
.irq = soc ## _INT_USDHC ## hwid, \
}

然后看add过程

platform-sdhci-esdhc-imx.c
struct platform_device *__init imx_add_sdhci_esdhc_imx(
const struct imx_sdhci_esdhc_imx_data *data,
const struct esdhc_platform_data *pdata)
{
struct resource res[] = {
{
.start = data->iobase,
.end = data->iobase + SZ_16K - 1,
.flags = IORESOURCE_MEM,
}, {
.start = data->irq,
.end = data->irq,
.flags = IORESOURCE_IRQ,
},
};


return imx_add_platform_device_dmamask("sdhci-esdhc-imx", data->id, res,
ARRAY_SIZE(res), pdata, sizeof(*pdata), DMA_BIT_MASK(32));
}感觉很熟悉,和uart的device注册其实差不多

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值