Merge tag 's390-4.21-1' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux
[sfrench/cifs-2.6.git] / include / video / pxa168fb.h
1 /*
2  *  Copyright (C) 2009 Marvell International Ltd.
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License version 2 as
6  * published by the Free Software Foundation.
7  */
8
9 #ifndef __ASM_MACH_PXA168FB_H
10 #define __ASM_MACH_PXA168FB_H
11
12 #include <linux/fb.h>
13 #include <linux/interrupt.h>
14
15 /* Dumb interface */
16 #define PIN_MODE_DUMB_24                0
17 #define PIN_MODE_DUMB_18_SPI            1
18 #define PIN_MODE_DUMB_18_GPIO           2
19 #define PIN_MODE_DUMB_16_SPI            3
20 #define PIN_MODE_DUMB_16_GPIO           4
21 #define PIN_MODE_DUMB_12_SPI_GPIO       5
22 #define PIN_MODE_SMART_18_SPI           6
23 #define PIN_MODE_SMART_16_SPI           7
24 #define PIN_MODE_SMART_8_SPI_GPIO       8
25
26 /* Dumb interface pin allocation */
27 #define DUMB_MODE_RGB565                0
28 #define DUMB_MODE_RGB565_UPPER          1
29 #define DUMB_MODE_RGB666                2
30 #define DUMB_MODE_RGB666_UPPER          3
31 #define DUMB_MODE_RGB444                4
32 #define DUMB_MODE_RGB444_UPPER          5
33 #define DUMB_MODE_RGB888                6
34
35 /* default fb buffer size WVGA-32bits */
36 #define DEFAULT_FB_SIZE (800 * 480 * 4)
37
38 /*
39  * Buffer pixel format
40  * bit0 is for rb swap.
41  * bit12 is for Y UorV swap
42  */
43 #define PIX_FMT_RGB565          0
44 #define PIX_FMT_BGR565          1
45 #define PIX_FMT_RGB1555         2
46 #define PIX_FMT_BGR1555         3
47 #define PIX_FMT_RGB888PACK      4
48 #define PIX_FMT_BGR888PACK      5
49 #define PIX_FMT_RGB888UNPACK    6
50 #define PIX_FMT_BGR888UNPACK    7
51 #define PIX_FMT_RGBA888         8
52 #define PIX_FMT_BGRA888         9
53 #define PIX_FMT_YUV422PACK      10
54 #define PIX_FMT_YVU422PACK      11
55 #define PIX_FMT_YUV422PLANAR    12
56 #define PIX_FMT_YVU422PLANAR    13
57 #define PIX_FMT_YUV420PLANAR    14
58 #define PIX_FMT_YVU420PLANAR    15
59 #define PIX_FMT_PSEUDOCOLOR     20
60 #define PIX_FMT_UYVY422PACK     (0x1000|PIX_FMT_YUV422PACK)
61
62 /*
63  * PXA LCD controller private state.
64  */
65 struct pxa168fb_info {
66         struct device           *dev;
67         struct clk              *clk;
68         struct fb_info          *info;
69
70         void __iomem            *reg_base;
71         dma_addr_t              fb_start_dma;
72         u32                     pseudo_palette[16];
73
74         int                     pix_fmt;
75         unsigned                is_blanked:1;
76         unsigned                panel_rbswap:1;
77         unsigned                active:1;
78 };
79
80 /*
81  * PXA fb machine information
82  */
83 struct pxa168fb_mach_info {
84         char    id[16];
85
86         int             num_modes;
87         struct fb_videomode *modes;
88
89         /*
90          * Pix_fmt
91          */
92         unsigned        pix_fmt;
93
94         /*
95          * I/O pin allocation.
96          */
97         unsigned        io_pin_allocation_mode:4;
98
99         /*
100          * Dumb panel -- assignment of R/G/B component info to the 24
101          * available external data lanes.
102          */
103         unsigned        dumb_mode:4;
104         unsigned        panel_rgb_reverse_lanes:1;
105
106         /*
107          * Dumb panel -- GPIO output data.
108          */
109         unsigned        gpio_output_mask:8;
110         unsigned        gpio_output_data:8;
111
112         /*
113          * Dumb panel -- configurable output signal polarity.
114          */
115         unsigned        invert_composite_blank:1;
116         unsigned        invert_pix_val_ena:1;
117         unsigned        invert_pixclock:1;
118         unsigned        panel_rbswap:1;
119         unsigned        active:1;
120         unsigned        enable_lcd:1;
121 };
122
123 #endif /* __ASM_MACH_PXA168FB_H */