《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 其他 > Linux设备驱动程序架构分析之MMC/SD(七)

Linux设备驱动程序架构分析之MMC/SD(七)

2015-04-29
关键词: s3cmci_host

1374行,由mmc_host取得s3cmci_host

1375行,取得s3c24xx_mci_pdata,其它保存着SDI的平台数据。

1378行,如果s3c24xx_mci_pdata.no_wprotect为1,表明没有写保护开关,直接退出。例如MMC卡就没有写保护开关,只有SD卡才有写保护开关。

1381行,读取gpio_wprotect引脚电平,对于Mini2440,即GPH8引脚。

1382行,与pdata->wprotect_invert执行异或操作,即反转上步得到GPH8引脚电平值。

s3cmci_card_present函数定义在drivers/mmc/host/s3cmci.c文件中:

捕获.PNG

1256行,由mmc_host取得s3cmci_host。

1257行,取得s3c24xx_mci_pdata,其它保存着SDI的平台数据。

1260行,如果s3c24xx_mci_pdata.no_detect为1,表明没有卡探测引脚,直接退出。

1263行,读取gpio_detect引脚电平值,对于Mini2440,即GPG8引脚。

1264行,与pdata->detect_invert进行异或操作,即反转上步得到的GPG8引脚电平值。

s3cmci_enable_sdio_irq函数定义在drivers/mmc/host/s3cmci.c文件中:

捕获.PNG

1389行,由mmc_host取得s3cmci_host。

1395行,读取SDICON即SDI控制寄存器的内容,保存在con中。

1396行,我觉得这一行不应该存在,因为这一行将参数enable的值赋值给host->sdio_irqen,但是1398行又接着判断enable与host->sdio_irqen是否相等,如果相等就退出了。

1401-1408行,enable为1,使能SDIO中断。

1402行,S3C2410_SDICON_SDIOIRQ定义在drivers/mmc/host/s3cmci.c文件中:

57#define S3C2410_SDICON_SDIOIRQ      (1 << 3)

对照S3C2440 Datasheet,可知这个宏用来设置SDICON寄存器的第3位,该位决定是否接收SDIO中断。

1403行,S3C2410_SDIIMSK_SDIOIRQ定义在drivers/mmc/host/s3cmci.c文件中:

105#define S3C2410_SDIIMSK_SDIOIRQ     (1 << 12)

对照S3C2440 Datasheet,可知这个宏用来设置SDIIntMsk寄存器的第13位,该位决定当read wait request发生时,SDI是否产生一个中断。

enable_imask函数定义在drivers/mmc/host/s3cmci.c文件中:

捕获.PNG

该函数用来设置SDIIntMsk寄存器。

1409-1416行,enable为0,禁用SDIO中断。

1419行,用新的con设置SDICON即SDI控制寄存器。

s3cmci_set_ios函数定义在drivers/mmc/host/s3cmci.c文件中:

捕获.PNG

捕获.PNG

1306行,参数ios是structmmc_ios类型指针。struct mmc_ios定义在include/linux/mmc/host.h文件中:

捕获.PNG

捕获.PNG

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。