1/* 2 * linux/drivers/mmc/s3cmci.h - Samsung S3C MCI driver 3 * 4 * Copyright (C) 2004-2006 Thomas Kleffel, All Rights Reserved. 5 * 6 * This program is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License version 2 as 8 * published by the Free Software Foundation. 9 */ 10 11enum s3cmci_waitfor { 12 COMPLETION_NONE, 13 COMPLETION_FINALIZE, 14 COMPLETION_CMDSENT, 15 COMPLETION_RSPFIN, 16 COMPLETION_XFERFINISH, 17 COMPLETION_XFERFINISH_RSPFIN, 18}; 19 20struct s3cmci_host { 21 struct platform_device *pdev; 22 struct s3c24xx_mci_pdata *pdata; 23 struct mmc_host *mmc; 24 struct resource *mem; 25 struct clk *clk; 26 void __iomem *base; 27 int irq; 28 int irq_cd; 29 int dma; 30 31 unsigned long clk_rate; 32 unsigned long clk_div; 33 unsigned long real_rate; 34 u8 prescaler; 35 36 int is2440; 37 unsigned sdiimsk; 38 unsigned sdidata; 39 int dodma; 40 int dmatogo; 41 42 bool irq_disabled; 43 bool irq_enabled; 44 bool irq_state; 45 int sdio_irqen; 46 47 struct mmc_request *mrq; 48 int cmd_is_stop; 49 50 spinlock_t complete_lock; 51 enum s3cmci_waitfor complete_what; 52 53 int dma_complete; 54 55 u32 pio_sgptr; 56 u32 pio_bytes; 57 u32 pio_count; 58 u32 *pio_ptr; 59#define XFER_NONE 0 60#define XFER_READ 1 61#define XFER_WRITE 2 62 u32 pio_active; 63 64 int bus_width; 65 66 char dbgmsg_cmd[301]; 67 char dbgmsg_dat[301]; 68 char *status; 69 70 unsigned int ccnt, dcnt; 71 struct tasklet_struct pio_tasklet; 72 73#ifdef CONFIG_DEBUG_FS 74 struct dentry *debug_root; 75 struct dentry *debug_state; 76 struct dentry *debug_regs; 77#endif 78 79#ifdef CONFIG_CPU_FREQ 80 struct notifier_block freq_transition; 81#endif 82}; 83