Blame view

include/linux/mfd/tmio.h 2.85 KB
f024ff10b   Dmitry Eremin-Solenikov   [ARM] 5128/1: tc6...
1
2
  #ifndef MFD_TMIO_H
  #define MFD_TMIO_H
b53cde355   Dmitry Eremin-Solenikov   fbdev: add new TM...
3
  #include <linux/fb.h>
64e8867ba   Ian Molton   mfd: tmio_mmc har...
4
5
  #include <linux/io.h>
  #include <linux/platform_device.h>
b53cde355   Dmitry Eremin-Solenikov   fbdev: add new TM...
6

d3a2f7185   Ian Molton   mfd: TMIO MMC str...
7
8
9
10
11
12
13
14
15
16
17
18
19
20
  #define tmio_ioread8(addr) readb(addr)
  #define tmio_ioread16(addr) readw(addr)
  #define tmio_ioread16_rep(r, b, l) readsw(r, b, l)
  #define tmio_ioread32(addr) \
  	(((u32) readw((addr))) | (((u32) readw((addr) + 2)) << 16))
  
  #define tmio_iowrite8(val, addr) writeb((val), (addr))
  #define tmio_iowrite16(val, addr) writew((val), (addr))
  #define tmio_iowrite16_rep(r, b, l) writesw(r, b, l)
  #define tmio_iowrite32(val, addr) \
  	do { \
  	writew((val),       (addr)); \
  	writew((val) >> 16, (addr) + 2); \
  	} while (0)
64e8867ba   Ian Molton   mfd: tmio_mmc har...
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
  #define CNF_CMD     0x04
  #define CNF_CTL_BASE   0x10
  #define CNF_INT_PIN  0x3d
  #define CNF_STOP_CLK_CTL 0x40
  #define CNF_GCLK_CTL 0x41
  #define CNF_SD_CLK_MODE 0x42
  #define CNF_PIN_STATUS 0x44
  #define CNF_PWR_CTL_1 0x48
  #define CNF_PWR_CTL_2 0x49
  #define CNF_PWR_CTL_3 0x4a
  #define CNF_CARD_DETECT_MODE 0x4c
  #define CNF_SD_SLOT 0x50
  #define CNF_EXT_GCLK_CTL_1 0xf0
  #define CNF_EXT_GCLK_CTL_2 0xf1
  #define CNF_EXT_GCLK_CTL_3 0xf9
  #define CNF_SD_LED_EN_1 0xfa
  #define CNF_SD_LED_EN_2 0xfe
  
  #define   SDCREN 0x2   /* Enable access to MMC CTL regs. (flag in COMMAND_REG)*/
  
  #define sd_config_write8(base, shift, reg, val) \
  	tmio_iowrite8((val), (base) + ((reg) << (shift)))
  #define sd_config_write16(base, shift, reg, val) \
  	tmio_iowrite16((val), (base) + ((reg) << (shift)))
  #define sd_config_write32(base, shift, reg, val) \
  	do { \
  		tmio_iowrite16((val), (base) + ((reg) << (shift)));   \
  		tmio_iowrite16((val) >> 16, (base) + ((reg + 2) << (shift))); \
  	} while (0)
ac8fb3e86   Guennadi Liakhovetski   tmio: add a platf...
50
51
  /* tmio MMC platform flags */
  #define TMIO_MMC_WRPROTECT_DISABLE	(1 << 0)
64e8867ba   Ian Molton   mfd: tmio_mmc har...
52
53
54
55
  int tmio_core_mmc_enable(void __iomem *cnf, int shift, unsigned long base);
  int tmio_core_mmc_resume(void __iomem *cnf, int shift, unsigned long base);
  void tmio_core_mmc_pwr(void __iomem *cnf, int shift, int state);
  void tmio_core_mmc_clk_div(void __iomem *cnf, int shift, int state);
42a453397   Guennadi Liakhovetski   mmc: prepare tmio...
56
57
58
59
  struct tmio_mmc_dma {
  	void *chan_priv_tx;
  	void *chan_priv_rx;
  };
f024ff10b   Dmitry Eremin-Solenikov   [ARM] 5128/1: tc6...
60
  /*
f0e46cc49   Philipp Zabel   MFD,mmc: tmio_mmc...
61
62
63
   * data for the MMC controller
   */
  struct tmio_mmc_data {
707f0b2fb   Magnus Damm   tmio_mmc: Remove ...
64
  	unsigned int			hclk;
b741d440a   Yusuke Goda   tmio_mmc: Add MMC...
65
  	unsigned long			capabilities;
ac8fb3e86   Guennadi Liakhovetski   tmio: add a platf...
66
  	unsigned long			flags;
a2b14dc96   Guennadi Liakhovetski   mmc: let MFD's pr...
67
  	u32				ocr_mask;	/* available voltages */
42a453397   Guennadi Liakhovetski   mmc: prepare tmio...
68
  	struct tmio_mmc_dma		*dma;
64e8867ba   Ian Molton   mfd: tmio_mmc har...
69
70
  	void (*set_pwr)(struct platform_device *host, int state);
  	void (*set_clk_div)(struct platform_device *host, int state);
f0e46cc49   Philipp Zabel   MFD,mmc: tmio_mmc...
71
72
73
  };
  
  /*
f024ff10b   Dmitry Eremin-Solenikov   [ARM] 5128/1: tc6...
74
75
76
77
78
79
80
   * data for the NAND controller
   */
  struct tmio_nand_data {
  	struct nand_bbt_descr	*badblock_pattern;
  	struct mtd_partition	*partition;
  	unsigned int		num_partitions;
  };
b53cde355   Dmitry Eremin-Solenikov   fbdev: add new TM...
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
  #define FBIO_TMIO_ACC_WRITE	0x7C639300
  #define FBIO_TMIO_ACC_SYNC	0x7C639301
  
  struct tmio_fb_data {
  	int			(*lcd_set_power)(struct platform_device *fb_dev,
  								bool on);
  	int			(*lcd_mode)(struct platform_device *fb_dev,
  					const struct fb_videomode *mode);
  	int			num_modes;
  	struct fb_videomode	*modes;
  
  	/* in mm: size of screen */
  	int			height;
  	int			width;
  };
f024ff10b   Dmitry Eremin-Solenikov   [ARM] 5128/1: tc6...
96
  #endif