diff options
author | Archit Taneja <archit@ti.com> | 2011-09-05 07:18:27 -0400 |
---|---|---|
committer | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2011-09-30 09:16:30 -0400 |
commit | 8af6ff0107f0720b8fbf4feca7031d3e36c2fa11 (patch) | |
tree | 7051173d9638281697aaa695fb9e51e0b898f7c5 /include/video/omapdss.h | |
parent | 18b7d09908fdef8755d934a0c37d709e94e8461a (diff) |
OMAP: DSS2: DSI Video mode support
Add initial support for DSI video mode panels:
- Add a new structure omap_dss_dsi_videomode_data in the member "panel" in
omap_dss_device struct. This allows panel driver to configure dsi video_mode
specific parameters.
- Configure basic DSI video mode timing parameters: HBP, HFP, HSA, VBP, VFP, VSA,
TL and VACT.
- Configure DSI protocol engine registers for video_mode support.
- Introduce functions dsi_video_mode_enable() and dsi_video_mode_disable() which
enable/disable video mode for a given virtual channel and a given pixel format
type.
Things left for later
- Add functions to check for errors in video mode timings provided by panel.
- Configure timing registers required for command mode interleaving.
Signed-off-by: Archit Taneja <archit@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Diffstat (limited to 'include/video/omapdss.h')
-rw-r--r-- | include/video/omapdss.h | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/include/video/omapdss.h b/include/video/omapdss.h index 89a9c290cf5d..44f423ff64bd 100644 --- a/include/video/omapdss.h +++ b/include/video/omapdss.h | |||
@@ -228,6 +228,35 @@ void rfbi_bus_lock(void); | |||
228 | void rfbi_bus_unlock(void); | 228 | void rfbi_bus_unlock(void); |
229 | 229 | ||
230 | /* DSI */ | 230 | /* DSI */ |
231 | |||
232 | struct omap_dss_dsi_videomode_data { | ||
233 | /* DSI video mode blanking data */ | ||
234 | /* Unit: byte clock cycles */ | ||
235 | u16 hsa; | ||
236 | u16 hfp; | ||
237 | u16 hbp; | ||
238 | /* Unit: line clocks */ | ||
239 | u16 vsa; | ||
240 | u16 vfp; | ||
241 | u16 vbp; | ||
242 | |||
243 | /* DSI blanking modes */ | ||
244 | int blanking_mode; | ||
245 | int hsa_blanking_mode; | ||
246 | int hbp_blanking_mode; | ||
247 | int hfp_blanking_mode; | ||
248 | |||
249 | /* Video port sync events */ | ||
250 | int vp_de_pol; | ||
251 | int vp_hsync_pol; | ||
252 | int vp_vsync_pol; | ||
253 | bool vp_vsync_end; | ||
254 | bool vp_hsync_end; | ||
255 | |||
256 | bool ddr_clk_always_on; | ||
257 | int window_sync; | ||
258 | }; | ||
259 | |||
231 | void dsi_bus_lock(struct omap_dss_device *dssdev); | 260 | void dsi_bus_lock(struct omap_dss_device *dssdev); |
232 | void dsi_bus_unlock(struct omap_dss_device *dssdev); | 261 | void dsi_bus_unlock(struct omap_dss_device *dssdev); |
233 | int dsi_vc_dcs_write(struct omap_dss_device *dssdev, int channel, u8 *data, | 262 | int dsi_vc_dcs_write(struct omap_dss_device *dssdev, int channel, u8 *data, |
@@ -258,6 +287,8 @@ int dsi_vc_set_max_rx_packet_size(struct omap_dss_device *dssdev, int channel, | |||
258 | u16 len); | 287 | u16 len); |
259 | int dsi_vc_send_null(struct omap_dss_device *dssdev, int channel); | 288 | int dsi_vc_send_null(struct omap_dss_device *dssdev, int channel); |
260 | int dsi_vc_send_bta_sync(struct omap_dss_device *dssdev, int channel); | 289 | int dsi_vc_send_bta_sync(struct omap_dss_device *dssdev, int channel); |
290 | int dsi_video_mode_enable(struct omap_dss_device *dssdev, int channel); | ||
291 | void dsi_video_mode_disable(struct omap_dss_device *dssdev, int channel); | ||
261 | 292 | ||
262 | /* Board specific data */ | 293 | /* Board specific data */ |
263 | struct omap_dss_board_info { | 294 | struct omap_dss_board_info { |
@@ -505,6 +536,7 @@ struct omap_dss_device { | |||
505 | 536 | ||
506 | enum omap_dss_dsi_pixel_format dsi_pix_fmt; | 537 | enum omap_dss_dsi_pixel_format dsi_pix_fmt; |
507 | enum omap_dss_dsi_mode dsi_mode; | 538 | enum omap_dss_dsi_mode dsi_mode; |
539 | struct omap_dss_dsi_videomode_data dsi_vm_data; | ||
508 | } panel; | 540 | } panel; |
509 | 541 | ||
510 | struct { | 542 | struct { |