• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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