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 11 enum s3cmci_waitfor { 12 COMPLETION_NONE, 13 COMPLETION_FINALIZE, 14 COMPLETION_CMDSENT, 15 COMPLETION_RSPFIN, 16 COMPLETION_XFERFINISH, 17 COMPLETION_XFERFINISH_RSPFIN, 18 }; 19 20 struct 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 struct dma_chan *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 40 bool irq_disabled; 41 bool irq_enabled; 42 bool irq_state; 43 int sdio_irqen; 44 45 struct mmc_request *mrq; 46 int cmd_is_stop; 47 48 spinlock_t complete_lock; 49 enum s3cmci_waitfor complete_what; 50 51 int dma_complete; 52 53 u32 pio_sgptr; 54 u32 pio_bytes; 55 u32 pio_count; 56 u32 *pio_ptr; 57 #define XFER_NONE 0 58 #define XFER_READ 1 59 #define XFER_WRITE 2 60 u32 pio_active; 61 62 int bus_width; 63 64 char dbgmsg_cmd[301]; 65 char dbgmsg_dat[301]; 66 char *status; 67 68 unsigned int ccnt, dcnt; 69 struct tasklet_struct pio_tasklet; 70 71 #ifdef CONFIG_DEBUG_FS 72 struct dentry *debug_root; 73 struct dentry *debug_state; 74 struct dentry *debug_regs; 75 #endif 76 77 #ifdef CONFIG_CPU_FREQ 78 struct notifier_block freq_transition; 79 #endif 80 }; 81