aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2012-08-01 13:45:12 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2012-08-01 13:45:12 -0400
commitd4fdc32517efaab0493c134d5cc070c252d51275 (patch)
tree7b70d93a65fa1b74f84af835cd941c3f2c55019a /include
parent9a51cf28a3377689edfe190b9590da7d46e8f3fb (diff)
parenta0239073fd75489d25575cf3aaf71ab55b416020 (diff)
Merge tag 'fbdev-updates-for-3.6' of git://github.com/schandinat/linux-2.6
Pull fbdev updates from Florian Tobias Schandinat: - large updates for OMAP - support for LCD3 overlay manager (omap5) - omapdss output cleanup - removal of passive matrix LCD support as there are no drivers for such panels for DSS or DSS2 and nobody complained (cleanup) - large updates for SH Mobile - overlay support - separating MERAM (cache) from framebuffer driver - some updates for Exynos and da8xx-fb - various other small patches * tag 'fbdev-updates-for-3.6' of git://github.com/schandinat/linux-2.6: (78 commits) da8xx-fb: fix compile issue due to missing include fbdev: Make pixel_to_pat() failure mode more friendly da8xx-fb: do not turn ON LCD backlight unless LCDC is enabled fbdev: sh_mobile_lcdc: Fix vertical panning step video: exynos mipi dsi: Fix mipi dsi regulators handling issue video: da8xx-fb: do clock reset of revision 2 LCDC before enabling arm: da850: configure LCDC fifo threshold video: da8xx-fb: configure FIFO threshold to reduce underflow errors video: da8xx-fb: fix flicker due to 1 frame delay in updated frame video: da8xx-fb rev2: fix disabling of palette completion interrupt da8xx-fb: add missing FB_BLANK operations video: exynos_dp: use usleep_range instead of delay video: exynos_dp: check the only INTERLANE_ALIGN_DONE bit during Link Training fb: epson1355fb: Fix section mismatch video: exynos_dp: fix wrong DPCD address during Link Training video/smscufx: fix line counting in fb_write aty128fb: Fix coding style issues fbdev: sh_mobile_lcdc: Fix pan offset computation in YUV mode fbdev: sh_mobile_lcdc: Fix overlay registers update during pan operation fbdev: sh_mobile_lcdc: Support horizontal panning ...
Diffstat (limited to 'include')
-rw-r--r--include/video/da8xx-fb.h3
-rw-r--r--include/video/omapdss.h51
-rw-r--r--include/video/sh_mobile_lcdc.h7
-rw-r--r--include/video/sh_mobile_meram.h71
4 files changed, 87 insertions, 45 deletions
diff --git a/include/video/da8xx-fb.h b/include/video/da8xx-fb.h
index 89d43b3d4cb9..5a0e4f9efb53 100644
--- a/include/video/da8xx-fb.h
+++ b/include/video/da8xx-fb.h
@@ -82,6 +82,9 @@ struct lcd_ctrl_config {
82 82
83 /* Raster Data Order Select: 1=Most-to-least 0=Least-to-most */ 83 /* Raster Data Order Select: 1=Most-to-least 0=Least-to-most */
84 unsigned char raster_order; 84 unsigned char raster_order;
85
86 /* DMA FIFO threshold */
87 int fifo_th;
85}; 88};
86 89
87struct lcd_sync_arg { 90struct lcd_sync_arg {
diff --git a/include/video/omapdss.h b/include/video/omapdss.h
index c8e59b4a3364..a6267a2d292b 100644
--- a/include/video/omapdss.h
+++ b/include/video/omapdss.h
@@ -48,6 +48,10 @@
48#define DISPC_IRQ_FRAMEDONEWB (1 << 23) 48#define DISPC_IRQ_FRAMEDONEWB (1 << 23)
49#define DISPC_IRQ_FRAMEDONETV (1 << 24) 49#define DISPC_IRQ_FRAMEDONETV (1 << 24)
50#define DISPC_IRQ_WBBUFFEROVERFLOW (1 << 25) 50#define DISPC_IRQ_WBBUFFEROVERFLOW (1 << 25)
51#define DISPC_IRQ_FRAMEDONE3 (1 << 26)
52#define DISPC_IRQ_VSYNC3 (1 << 27)
53#define DISPC_IRQ_ACBIAS_COUNT_STAT3 (1 << 28)
54#define DISPC_IRQ_SYNC_LOST3 (1 << 29)
51 55
52struct omap_dss_device; 56struct omap_dss_device;
53struct omap_overlay_manager; 57struct omap_overlay_manager;
@@ -75,6 +79,7 @@ enum omap_channel {
75 OMAP_DSS_CHANNEL_LCD = 0, 79 OMAP_DSS_CHANNEL_LCD = 0,
76 OMAP_DSS_CHANNEL_DIGIT = 1, 80 OMAP_DSS_CHANNEL_DIGIT = 1,
77 OMAP_DSS_CHANNEL_LCD2 = 2, 81 OMAP_DSS_CHANNEL_LCD2 = 2,
82 OMAP_DSS_CHANNEL_LCD3 = 3,
78}; 83};
79 84
80enum omap_color_mode { 85enum omap_color_mode {
@@ -99,11 +104,6 @@ enum omap_color_mode {
99 OMAP_DSS_COLOR_XRGB16_1555 = 1 << 18, /* xRGB16 - 1555 */ 104 OMAP_DSS_COLOR_XRGB16_1555 = 1 << 18, /* xRGB16 - 1555 */
100}; 105};
101 106
102enum omap_lcd_display_type {
103 OMAP_DSS_LCD_DISPLAY_STN,
104 OMAP_DSS_LCD_DISPLAY_TFT,
105};
106
107enum omap_dss_load_mode { 107enum omap_dss_load_mode {
108 OMAP_DSS_LOAD_CLUT_AND_FRAME = 0, 108 OMAP_DSS_LOAD_CLUT_AND_FRAME = 0,
109 OMAP_DSS_LOAD_CLUT_ONLY = 1, 109 OMAP_DSS_LOAD_CLUT_ONLY = 1,
@@ -121,15 +121,15 @@ enum omap_rfbi_te_mode {
121 OMAP_DSS_RFBI_TE_MODE_2 = 2, 121 OMAP_DSS_RFBI_TE_MODE_2 = 2,
122}; 122};
123 123
124enum omap_panel_config { 124enum omap_dss_signal_level {
125 OMAP_DSS_LCD_IVS = 1<<0, 125 OMAPDSS_SIG_ACTIVE_HIGH = 0,
126 OMAP_DSS_LCD_IHS = 1<<1, 126 OMAPDSS_SIG_ACTIVE_LOW = 1,
127 OMAP_DSS_LCD_IPC = 1<<2, 127};
128 OMAP_DSS_LCD_IEO = 1<<3,
129 OMAP_DSS_LCD_RF = 1<<4,
130 OMAP_DSS_LCD_ONOFF = 1<<5,
131 128
132 OMAP_DSS_LCD_TFT = 1<<20, 129enum omap_dss_signal_edge {
130 OMAPDSS_DRIVE_SIG_OPPOSITE_EDGES,
131 OMAPDSS_DRIVE_SIG_RISING_EDGE,
132 OMAPDSS_DRIVE_SIG_FALLING_EDGE,
133}; 133};
134 134
135enum omap_dss_venc_type { 135enum omap_dss_venc_type {
@@ -167,13 +167,6 @@ enum omap_dss_audio_state {
167 OMAP_DSS_AUDIO_PLAYING, 167 OMAP_DSS_AUDIO_PLAYING,
168}; 168};
169 169
170/* XXX perhaps this should be removed */
171enum omap_dss_overlay_managers {
172 OMAP_DSS_OVL_MGR_LCD,
173 OMAP_DSS_OVL_MGR_TV,
174 OMAP_DSS_OVL_MGR_LCD2,
175};
176
177enum omap_dss_rotation_type { 170enum omap_dss_rotation_type {
178 OMAP_DSS_ROT_DMA = 1 << 0, 171 OMAP_DSS_ROT_DMA = 1 << 0,
179 OMAP_DSS_ROT_VRFB = 1 << 1, 172 OMAP_DSS_ROT_VRFB = 1 << 1,
@@ -268,9 +261,6 @@ struct omap_dss_dsi_videomode_data {
268 int hfp_blanking_mode; 261 int hfp_blanking_mode;
269 262
270 /* Video port sync events */ 263 /* Video port sync events */
271 int vp_de_pol;
272 int vp_hsync_pol;
273 int vp_vsync_pol;
274 bool vp_vsync_end; 264 bool vp_vsync_end;
275 bool vp_hsync_end; 265 bool vp_hsync_end;
276 266
@@ -346,6 +336,19 @@ struct omap_video_timings {
346 u16 vfp; /* Vertical front porch */ 336 u16 vfp; /* Vertical front porch */
347 /* Unit: line clocks */ 337 /* Unit: line clocks */
348 u16 vbp; /* Vertical back porch */ 338 u16 vbp; /* Vertical back porch */
339
340 /* Vsync logic level */
341 enum omap_dss_signal_level vsync_level;
342 /* Hsync logic level */
343 enum omap_dss_signal_level hsync_level;
344 /* Interlaced or Progressive timings */
345 bool interlace;
346 /* Pixel clock edge to drive LCD data */
347 enum omap_dss_signal_edge data_pclk_edge;
348 /* Data enable logic level */
349 enum omap_dss_signal_level de_level;
350 /* Pixel clock edges to drive HSYNC and VSYNC signals */
351 enum omap_dss_signal_edge sync_pclk_edge;
349}; 352};
350 353
351#ifdef CONFIG_OMAP2_DSS_VENC 354#ifdef CONFIG_OMAP2_DSS_VENC
@@ -559,8 +562,6 @@ struct omap_dss_device {
559 /* Unit: line clocks */ 562 /* Unit: line clocks */
560 int acb; /* ac-bias pin frequency */ 563 int acb; /* ac-bias pin frequency */
561 564
562 enum omap_panel_config config;
563
564 enum omap_dss_dsi_pixel_format dsi_pix_fmt; 565 enum omap_dss_dsi_pixel_format dsi_pix_fmt;
565 enum omap_dss_dsi_mode dsi_mode; 566 enum omap_dss_dsi_mode dsi_mode;
566 struct omap_dss_dsi_videomode_data dsi_vm_data; 567 struct omap_dss_dsi_videomode_data dsi_vm_data;
diff --git a/include/video/sh_mobile_lcdc.h b/include/video/sh_mobile_lcdc.h
index 7571b27a0ba1..ff43ffc1aab2 100644
--- a/include/video/sh_mobile_lcdc.h
+++ b/include/video/sh_mobile_lcdc.h
@@ -166,6 +166,12 @@ struct sh_mobile_lcdc_bl_info {
166 int (*get_brightness)(void); 166 int (*get_brightness)(void);
167}; 167};
168 168
169struct sh_mobile_lcdc_overlay_cfg {
170 int fourcc;
171 unsigned int max_xres;
172 unsigned int max_yres;
173};
174
169struct sh_mobile_lcdc_chan_cfg { 175struct sh_mobile_lcdc_chan_cfg {
170 int chan; 176 int chan;
171 int fourcc; 177 int fourcc;
@@ -186,6 +192,7 @@ struct sh_mobile_lcdc_chan_cfg {
186struct sh_mobile_lcdc_info { 192struct sh_mobile_lcdc_info {
187 int clock_source; 193 int clock_source;
188 struct sh_mobile_lcdc_chan_cfg ch[2]; 194 struct sh_mobile_lcdc_chan_cfg ch[2];
195 struct sh_mobile_lcdc_overlay_cfg overlays[4];
189 struct sh_mobile_meram_info *meram_dev; 196 struct sh_mobile_meram_info *meram_dev;
190}; 197};
191 198
diff --git a/include/video/sh_mobile_meram.h b/include/video/sh_mobile_meram.h
index 29b2fd3b147e..062e6e7f955c 100644
--- a/include/video/sh_mobile_meram.h
+++ b/include/video/sh_mobile_meram.h
@@ -15,7 +15,6 @@ enum {
15 15
16 16
17struct sh_mobile_meram_priv; 17struct sh_mobile_meram_priv;
18struct sh_mobile_meram_ops;
19 18
20/* 19/*
21 * struct sh_mobile_meram_info - MERAM platform data 20 * struct sh_mobile_meram_info - MERAM platform data
@@ -24,7 +23,6 @@ struct sh_mobile_meram_ops;
24struct sh_mobile_meram_info { 23struct sh_mobile_meram_info {
25 int addr_mode; 24 int addr_mode;
26 u32 reserved_icbs; 25 u32 reserved_icbs;
27 struct sh_mobile_meram_ops *ops;
28 struct sh_mobile_meram_priv *priv; 26 struct sh_mobile_meram_priv *priv;
29 struct platform_device *pdev; 27 struct platform_device *pdev;
30}; 28};
@@ -38,26 +36,59 @@ struct sh_mobile_meram_cfg {
38 struct sh_mobile_meram_icb_cfg icb[2]; 36 struct sh_mobile_meram_icb_cfg icb[2];
39}; 37};
40 38
41struct module; 39#if defined(CONFIG_FB_SH_MOBILE_MERAM) || \
42struct sh_mobile_meram_ops { 40 defined(CONFIG_FB_SH_MOBILE_MERAM_MODULE)
43 struct module *module; 41unsigned long sh_mobile_meram_alloc(struct sh_mobile_meram_info *meram_dev,
44 /* register usage of meram */ 42 size_t size);
45 void *(*meram_register)(struct sh_mobile_meram_info *meram_dev, 43void sh_mobile_meram_free(struct sh_mobile_meram_info *meram_dev,
46 const struct sh_mobile_meram_cfg *cfg, 44 unsigned long mem, size_t size);
47 unsigned int xres, unsigned int yres, 45void *sh_mobile_meram_cache_alloc(struct sh_mobile_meram_info *dev,
48 unsigned int pixelformat, 46 const struct sh_mobile_meram_cfg *cfg,
49 unsigned int *pitch); 47 unsigned int xres, unsigned int yres,
50 48 unsigned int pixelformat,
51 /* unregister usage of meram */ 49 unsigned int *pitch);
52 void (*meram_unregister)(struct sh_mobile_meram_info *meram_dev, 50void sh_mobile_meram_cache_free(struct sh_mobile_meram_info *dev, void *data);
53 void *data); 51void sh_mobile_meram_cache_update(struct sh_mobile_meram_info *dev, void *data,
54 52 unsigned long base_addr_y,
55 /* update meram settings */ 53 unsigned long base_addr_c,
56 void (*meram_update)(struct sh_mobile_meram_info *meram_dev, void *data, 54 unsigned long *icb_addr_y,
55 unsigned long *icb_addr_c);
56#else
57static inline unsigned long
58sh_mobile_meram_alloc(struct sh_mobile_meram_info *meram_dev, size_t size)
59{
60 return 0;
61}
62
63static inline void
64sh_mobile_meram_free(struct sh_mobile_meram_info *meram_dev,
65 unsigned long mem, size_t size)
66{
67}
68
69static inline void *
70sh_mobile_meram_cache_alloc(struct sh_mobile_meram_info *dev,
71 const struct sh_mobile_meram_cfg *cfg,
72 unsigned int xres, unsigned int yres,
73 unsigned int pixelformat,
74 unsigned int *pitch)
75{
76 return ERR_PTR(-ENODEV);
77}
78
79static inline void
80sh_mobile_meram_cache_free(struct sh_mobile_meram_info *dev, void *data)
81{
82}
83
84static inline void
85sh_mobile_meram_cache_update(struct sh_mobile_meram_info *dev, void *data,
57 unsigned long base_addr_y, 86 unsigned long base_addr_y,
58 unsigned long base_addr_c, 87 unsigned long base_addr_c,
59 unsigned long *icb_addr_y, 88 unsigned long *icb_addr_y,
60 unsigned long *icb_addr_c); 89 unsigned long *icb_addr_c)
61}; 90{
91}
92#endif
62 93
63#endif /* __VIDEO_SH_MOBILE_MERAM_H__ */ 94#endif /* __VIDEO_SH_MOBILE_MERAM_H__ */