diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-08-01 13:45:12 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-08-01 13:45:12 -0400 |
commit | d4fdc32517efaab0493c134d5cc070c252d51275 (patch) | |
tree | 7b70d93a65fa1b74f84af835cd941c3f2c55019a /include | |
parent | 9a51cf28a3377689edfe190b9590da7d46e8f3fb (diff) | |
parent | a0239073fd75489d25575cf3aaf71ab55b416020 (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.h | 3 | ||||
-rw-r--r-- | include/video/omapdss.h | 51 | ||||
-rw-r--r-- | include/video/sh_mobile_lcdc.h | 7 | ||||
-rw-r--r-- | include/video/sh_mobile_meram.h | 71 |
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 | ||
87 | struct lcd_sync_arg { | 90 | struct 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 | ||
52 | struct omap_dss_device; | 56 | struct omap_dss_device; |
53 | struct omap_overlay_manager; | 57 | struct 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 | ||
80 | enum omap_color_mode { | 85 | enum 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 | ||
102 | enum omap_lcd_display_type { | ||
103 | OMAP_DSS_LCD_DISPLAY_STN, | ||
104 | OMAP_DSS_LCD_DISPLAY_TFT, | ||
105 | }; | ||
106 | |||
107 | enum omap_dss_load_mode { | 107 | enum 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 | ||
124 | enum omap_panel_config { | 124 | enum 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, | 129 | enum 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 | ||
135 | enum omap_dss_venc_type { | 135 | enum 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 */ | ||
171 | enum omap_dss_overlay_managers { | ||
172 | OMAP_DSS_OVL_MGR_LCD, | ||
173 | OMAP_DSS_OVL_MGR_TV, | ||
174 | OMAP_DSS_OVL_MGR_LCD2, | ||
175 | }; | ||
176 | |||
177 | enum omap_dss_rotation_type { | 170 | enum 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 | ||
169 | struct sh_mobile_lcdc_overlay_cfg { | ||
170 | int fourcc; | ||
171 | unsigned int max_xres; | ||
172 | unsigned int max_yres; | ||
173 | }; | ||
174 | |||
169 | struct sh_mobile_lcdc_chan_cfg { | 175 | struct 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 { | |||
186 | struct sh_mobile_lcdc_info { | 192 | struct 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 | ||
17 | struct sh_mobile_meram_priv; | 17 | struct sh_mobile_meram_priv; |
18 | struct 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; | |||
24 | struct sh_mobile_meram_info { | 23 | struct 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 | ||
41 | struct module; | 39 | #if defined(CONFIG_FB_SH_MOBILE_MERAM) || \ |
42 | struct sh_mobile_meram_ops { | 40 | defined(CONFIG_FB_SH_MOBILE_MERAM_MODULE) |
43 | struct module *module; | 41 | unsigned 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, | 43 | void 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, | 45 | void *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, | 50 | void sh_mobile_meram_cache_free(struct sh_mobile_meram_info *dev, void *data); |
53 | void *data); | 51 | void 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 | ||
57 | static inline unsigned long | ||
58 | sh_mobile_meram_alloc(struct sh_mobile_meram_info *meram_dev, size_t size) | ||
59 | { | ||
60 | return 0; | ||
61 | } | ||
62 | |||
63 | static inline void | ||
64 | sh_mobile_meram_free(struct sh_mobile_meram_info *meram_dev, | ||
65 | unsigned long mem, size_t size) | ||
66 | { | ||
67 | } | ||
68 | |||
69 | static inline void * | ||
70 | sh_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 | |||
79 | static inline void | ||
80 | sh_mobile_meram_cache_free(struct sh_mobile_meram_info *dev, void *data) | ||
81 | { | ||
82 | } | ||
83 | |||
84 | static inline void | ||
85 | sh_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__ */ |