s3cmci.h revision f87e6d00fbd367f2d61fd600b5f8bd6e39d63f3f
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/* FIXME: DMA Resource management ?! */
12#define S3CMCI_DMA 0
13
14enum s3cmci_waitfor {
15	COMPLETION_NONE,
16	COMPLETION_FINALIZE,
17	COMPLETION_CMDSENT,
18	COMPLETION_RSPFIN,
19	COMPLETION_XFERFINISH,
20	COMPLETION_XFERFINISH_RSPFIN,
21};
22
23struct s3cmci_host {
24	struct platform_device	*pdev;
25	struct s3c24xx_mci_pdata *pdata;
26	struct mmc_host		*mmc;
27	struct resource		*mem;
28	struct clk		*clk;
29	void __iomem		*base;
30	int			irq;
31	int			irq_cd;
32	int			dma;
33
34	unsigned long		clk_rate;
35	unsigned long		clk_div;
36	unsigned long		real_rate;
37	u8			prescaler;
38
39	int			is2440;
40	unsigned		sdiimsk;
41	unsigned		sdidata;
42	int			dodma;
43	int			dmatogo;
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_words;
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_CPU_FREQ
72	struct notifier_block	freq_transition;
73#endif
74};
75