/* * 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 s3c24xx_mci_pdata *pdata; 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; bool irq_disabled; bool irq_enabled; bool irq_state; int sdio_irqen; 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_bytes; 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; #ifdef CONFIG_DEBUG_FS struct dentry *debug_root; struct dentry *debug_state; struct dentry *debug_regs; #endif #ifdef CONFIG_CPU_FREQ struct notifier_block freq_transition; #endif };