MMC: S3C24XX MMC/SD driver.
This is the latest S3C MMC/SD driver by Thomas Kleffel with cleanups as suggested by AKPM done by Ben Dooks. Signed-off-by: Ben Dooks <ben-linux@fluff.org> Signed-off-by: Thomas Kleffel <tk@maintech.de> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
This commit is contained in:

committed by
Pierre Ossman

parent
8f1934ce78
commit
be518018c6
@@ -143,3 +143,14 @@ config MMC_SPI
|
||||
|
||||
If unsure, or if your system has no SPI master driver, say N.
|
||||
|
||||
config MMC_S3C
|
||||
tristate "Samsung S3C SD/MMC Card Interface support"
|
||||
depends on ARCH_S3C2410 && MMC
|
||||
help
|
||||
This selects a driver for the MCI interface found in
|
||||
Samsung's S3C2410, S3C2412, S3C2440, S3C2442 CPUs.
|
||||
If you have a board based on one of those and a MMC/SD
|
||||
slot, say Y or M here.
|
||||
|
||||
If unsure, say N.
|
||||
|
||||
|
@@ -18,4 +18,4 @@ obj-$(CONFIG_MMC_OMAP) += omap.o
|
||||
obj-$(CONFIG_MMC_AT91) += at91_mci.o
|
||||
obj-$(CONFIG_MMC_TIFM_SD) += tifm_sd.o
|
||||
obj-$(CONFIG_MMC_SPI) += mmc_spi.o
|
||||
|
||||
obj-$(CONFIG_MMC_S3C) += s3cmci.o
|
||||
|
1343
drivers/mmc/host/s3cmci.c
Normal file
1343
drivers/mmc/host/s3cmci.c
Normal file
File diff suppressed because it is too large
Load Diff
69
drivers/mmc/host/s3cmci.h
Normal file
69
drivers/mmc/host/s3cmci.h
Normal file
@@ -0,0 +1,69 @@
|
||||
/*
|
||||
* linux/drivers/mmc/s3cmci.h - Samsung S3C MCI driver
|
||||
*
|
||||
* Copyright (C) 2004-2006 Thomas Kleffel, All Rights Reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
/* FIXME: DMA Resource management ?! */
|
||||
#define S3CMCI_DMA 0
|
||||
|
||||
enum s3cmci_waitfor {
|
||||
COMPLETION_NONE,
|
||||
COMPLETION_FINALIZE,
|
||||
COMPLETION_CMDSENT,
|
||||
COMPLETION_RSPFIN,
|
||||
COMPLETION_XFERFINISH,
|
||||
COMPLETION_XFERFINISH_RSPFIN,
|
||||
};
|
||||
|
||||
struct s3cmci_host {
|
||||
struct platform_device *pdev;
|
||||
struct mmc_host *mmc;
|
||||
struct resource *mem;
|
||||
struct clk *clk;
|
||||
void __iomem *base;
|
||||
int irq;
|
||||
int irq_cd;
|
||||
int dma;
|
||||
|
||||
unsigned long clk_rate;
|
||||
unsigned long clk_div;
|
||||
unsigned long real_rate;
|
||||
u8 prescaler;
|
||||
|
||||
int is2440;
|
||||
unsigned sdiimsk;
|
||||
unsigned sdidata;
|
||||
int dodma;
|
||||
int dmatogo;
|
||||
|
||||
struct mmc_request *mrq;
|
||||
int cmd_is_stop;
|
||||
|
||||
spinlock_t complete_lock;
|
||||
enum s3cmci_waitfor complete_what;
|
||||
|
||||
int dma_complete;
|
||||
|
||||
u32 pio_sgptr;
|
||||
u32 pio_words;
|
||||
u32 pio_count;
|
||||
u32 *pio_ptr;
|
||||
#define XFER_NONE 0
|
||||
#define XFER_READ 1
|
||||
#define XFER_WRITE 2
|
||||
u32 pio_active;
|
||||
|
||||
int bus_width;
|
||||
|
||||
char dbgmsg_cmd[301];
|
||||
char dbgmsg_dat[301];
|
||||
char *status;
|
||||
|
||||
unsigned int ccnt, dcnt;
|
||||
struct tasklet_struct pio_tasklet;
|
||||
};
|
Reference in New Issue
Block a user