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