新路程------imx6的sd 和emmc部分(1)
来源:互联网 发布:java读取文件赋予数组 编辑:程序博客网 时间:2024/06/14 10:49
首先还是关心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注册其实差不多
- 新路程------imx6的sd 和emmc部分(1)
- 新路程------imx6 sd卡部分摘要
- 新路程------imx6 uart和串口(1)
- 新路程------imx6的uart小结(1)
- 新路程------imx6 sd读写测试
- 新路程------imx6 uboot环境变量的初始化(1)
- 新路程------imx6 uart和串口(4)
- 新路程------英飞凌imx6的lvds驱动
- 新路程------imx6 网卡驱动(1)
- 新路程------imx6 lvds ioctl
- 新路程------imx6关闭屏保
- 新路程------imx6 gpio设置
- 新路程------imx6 wtd摘要
- 新路程------imx6的模块编译的Makefile
- 新路程------imx6 uboot环境变量的初始化(2)
- 新路程------imx6 spi cc1101遇到的坑
- imx6 通过SD卡启动后,对emmc进行分区和程序更新
- 新路程------imx6测试网卡phy
- Leetcode第三题python
- Android基础:最易懂的Activity启动模式详解
- ThreadLocal详解
- [Leetcode] 149. Max Points on a Line 解题报告
- Dubbo注册中心启动配置
- 新路程------imx6的sd 和emmc部分(1)
- Spring Boot 常用应用属性配置列表
- 关于代码整洁的一些坑
- Retrofit的个人总结
- Integer.valueOf 返回对象的差别
- 新博客开启
- android 手把手教你实现集成支付宝支付功能
- ubuntu16.04下eclipse使用 jdbc连接本地mysql出现:Communications link failure错误
- centos 6.X 升级Python2.6到python2.7