mini2440 sd卡支持

本文介绍如何为mini2440平台配置SD卡驱动程序。包括添加平台设备私有数据、注册平台设备、修改驱动程序及内核配置等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

内核版本:linux-2.6.32.2        实验平台:mini2440

1. 添加平台设备私有数据定义

static struct s3c24xx_mci_pdata mini2440_mmc_cfg = {
        .gpio_detect    = S3C2410_GPG(8),
        .gpio_wprotect  = S3C2410_GPH(8),
        .set_power      = NULL,
        .ocr_avail      = MMC_VDD_32_33 | MMC_VDD_33_34,
};
在plat-s3c24xx/devs.h中sd卡主控制器的平台设备已经定义好了的,只需要定义一组上面的平台设备私有数据就可以了,然后需要将私有数据赋值给平台设备:
s3c_device_sdi.dev.platform_data = &mini2440_mmc_cfg;


2. 注册sd卡主控制器平台设备

只需要将平台设备添加到mini2440_devices这个数组里面:

static struct platform_device *mini2440_devices[] __initdata = {
        /* ... */
        &s3c_device_sdi,
        /* ... */
};
最后别忘了添加两个头文件:
#include <linux/mmc/host.h>
#include <plat/mci.h>


3. 驱动程序修改

linux-2.6.32.2中s3c2440的sd卡驱动已经很完善了,只需要稍作一点修改:

diff --git a/drivers/mmc/host/s3cmci.c b/drivers/mmc/host/s3cmci.c
index 99b74a3..0c3c229 100644
--- a/drivers/mmc/host/s3cmci.c
+++ b/drivers/mmc/host/s3cmci.c
@@ -22,6 +22,7 @@
 #include <linux/gpio.h>
 #include <linux/irq.h>
 #include <linux/io.h>
+#include <linux/delay.h>
 
 #include <mach/dma.h>
 
@@ -494,6 +495,8 @@ static void pio_tasklet(unsigned long data)
 
        s3cmci_disable_irq(host, true);
 
+       udelay(50);
+
        if (host->pio_active == XFER_WRITE)
                do_pio_write(host);

4. 内核配置

    Device Drivers  --->
        [*] MMC/SD/SDIO card support  --->
                [*]   MMC block device driver
                <*>   Secure Digital Host Controller Interface support
                <*>   Samsung S3C SD/MMC Card Interface support

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值