omap_hsmmc: avoid requesting dma repeatedly
[pandora-kernel.git] / drivers / mmc / host / s3cmci.h
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         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 };