xref: /OK3568_Linux_fs/kernel/include/linux/mfd/tc6393xb.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * Toshiba TC6393XB SoC support
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * Copyright(c) 2005-2006 Chris Humbert
6*4882a593Smuzhiyun  * Copyright(c) 2005 Dirk Opfer
7*4882a593Smuzhiyun  * Copyright(c) 2005 Ian Molton <spyro@f2s.com>
8*4882a593Smuzhiyun  * Copyright(c) 2007 Dmitry Baryshkov
9*4882a593Smuzhiyun  *
10*4882a593Smuzhiyun  * Based on code written by Sharp/Lineo for 2.4 kernels
11*4882a593Smuzhiyun  * Based on locomo.c
12*4882a593Smuzhiyun  */
13*4882a593Smuzhiyun 
14*4882a593Smuzhiyun #ifndef MFD_TC6393XB_H
15*4882a593Smuzhiyun #define MFD_TC6393XB_H
16*4882a593Smuzhiyun 
17*4882a593Smuzhiyun #include <linux/fb.h>
18*4882a593Smuzhiyun 
19*4882a593Smuzhiyun /* Also one should provide the CK3P6MI clock */
20*4882a593Smuzhiyun struct tc6393xb_platform_data {
21*4882a593Smuzhiyun 	u16	scr_pll2cr;	/* PLL2 Control */
22*4882a593Smuzhiyun 	u16	scr_gper;	/* GP Enable */
23*4882a593Smuzhiyun 
24*4882a593Smuzhiyun 	int	(*enable)(struct platform_device *dev);
25*4882a593Smuzhiyun 	int	(*disable)(struct platform_device *dev);
26*4882a593Smuzhiyun 	int	(*suspend)(struct platform_device *dev);
27*4882a593Smuzhiyun 	int	(*resume)(struct platform_device *dev);
28*4882a593Smuzhiyun 
29*4882a593Smuzhiyun 	int	irq_base;	/* base for subdevice irqs */
30*4882a593Smuzhiyun 	int	gpio_base;
31*4882a593Smuzhiyun 	int	(*setup)(struct platform_device *dev);
32*4882a593Smuzhiyun 	void	(*teardown)(struct platform_device *dev);
33*4882a593Smuzhiyun 
34*4882a593Smuzhiyun 	struct tmio_nand_data	*nand_data;
35*4882a593Smuzhiyun 	struct tmio_fb_data	*fb_data;
36*4882a593Smuzhiyun 
37*4882a593Smuzhiyun 	unsigned resume_restore : 1; /* make special actions
38*4882a593Smuzhiyun 					to preserve the state
39*4882a593Smuzhiyun 					on suspend/resume */
40*4882a593Smuzhiyun };
41*4882a593Smuzhiyun 
42*4882a593Smuzhiyun extern int tc6393xb_lcd_mode(struct platform_device *fb,
43*4882a593Smuzhiyun 			     const struct fb_videomode *mode);
44*4882a593Smuzhiyun extern int tc6393xb_lcd_set_power(struct platform_device *fb, bool on);
45*4882a593Smuzhiyun 
46*4882a593Smuzhiyun /*
47*4882a593Smuzhiyun  * Relative to irq_base
48*4882a593Smuzhiyun  */
49*4882a593Smuzhiyun #define	IRQ_TC6393_NAND		0
50*4882a593Smuzhiyun #define	IRQ_TC6393_MMC		1
51*4882a593Smuzhiyun #define	IRQ_TC6393_OHCI		2
52*4882a593Smuzhiyun #define	IRQ_TC6393_FB		4
53*4882a593Smuzhiyun 
54*4882a593Smuzhiyun #define	TC6393XB_NR_IRQS	8
55*4882a593Smuzhiyun 
56*4882a593Smuzhiyun #endif
57