1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * linux/drivers/mmc/s3cmci.h - Samsung S3C MCI driver 4 * 5 * Copyright (C) 2004-2006 Thomas Kleffel, All Rights Reserved. 6 */ 7 8 enum s3cmci_waitfor { 9 COMPLETION_NONE, 10 COMPLETION_FINALIZE, 11 COMPLETION_CMDSENT, 12 COMPLETION_RSPFIN, 13 COMPLETION_XFERFINISH, 14 COMPLETION_XFERFINISH_RSPFIN, 15 }; 16 17 struct s3cmci_host { 18 struct platform_device *pdev; 19 struct s3c24xx_mci_pdata *pdata; 20 struct mmc_host *mmc; 21 struct resource *mem; 22 struct clk *clk; 23 void __iomem *base; 24 int irq; 25 int irq_cd; 26 struct dma_chan *dma; 27 28 unsigned long clk_rate; 29 unsigned long clk_div; 30 unsigned long real_rate; 31 u8 prescaler; 32 33 int is2440; 34 unsigned sdiimsk; 35 unsigned sdidata; 36 37 bool irq_disabled; 38 bool irq_enabled; 39 bool irq_state; 40 int sdio_irqen; 41 42 struct mmc_request *mrq; 43 int cmd_is_stop; 44 45 spinlock_t complete_lock; 46 enum s3cmci_waitfor complete_what; 47 48 int dma_complete; 49 50 u32 pio_sgptr; 51 u32 pio_bytes; 52 u32 pio_count; 53 u32 *pio_ptr; 54 #define XFER_NONE 0 55 #define XFER_READ 1 56 #define XFER_WRITE 2 57 u32 pio_active; 58 59 int bus_width; 60 61 char dbgmsg_cmd[301]; 62 char dbgmsg_dat[301]; 63 char *status; 64 65 unsigned int ccnt, dcnt; 66 struct tasklet_struct pio_tasklet; 67 68 #ifdef CONFIG_DEBUG_FS 69 struct dentry *debug_root; 70 #endif 71 72 #ifdef CONFIG_ARM_S3C24XX_CPUFREQ 73 struct notifier_block freq_transition; 74 #endif 75 }; 76