diff options
author | Archit Taneja <archit@ti.com> | 2012-05-29 02:25:38 -0400 |
---|---|---|
committer | Archit Taneja <archit@ti.com> | 2012-06-29 06:57:59 -0400 |
commit | c47cdb3088581f9d744b03399e8b4e89a56a111b (patch) | |
tree | 60fad5d30aea60dc8eb7dbc9100c9d0c3d805aff /drivers/video | |
parent | dd88b7a67736db931041009886ba5204cdf3de16 (diff) |
OMAPDSS: RFBI: Use dss_mgr_enable to enable the overlay manager
The RFBI driver uses a direct DISPC register write to enable the overlay
manager. Replace this with dss_mgr_enable() which checks if the connected
overlay and managers are correctly configured, and configure DSS for
fifomerge.
Signed-off-by: Archit Taneja <archit@ti.com>
Diffstat (limited to 'drivers/video')
-rw-r--r-- | drivers/video/omap2/dss/rfbi.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/drivers/video/omap2/dss/rfbi.c b/drivers/video/omap2/dss/rfbi.c index cc22426144cb..7c087424b634 100644 --- a/drivers/video/omap2/dss/rfbi.c +++ b/drivers/video/omap2/dss/rfbi.c | |||
@@ -300,10 +300,11 @@ void omap_rfbi_write_pixels(const void __iomem *buf, int scr_width, | |||
300 | } | 300 | } |
301 | EXPORT_SYMBOL(omap_rfbi_write_pixels); | 301 | EXPORT_SYMBOL(omap_rfbi_write_pixels); |
302 | 302 | ||
303 | static void rfbi_transfer_area(struct omap_dss_device *dssdev, u16 width, | 303 | static int rfbi_transfer_area(struct omap_dss_device *dssdev, u16 width, |
304 | u16 height, void (*callback)(void *data), void *data) | 304 | u16 height, void (*callback)(void *data), void *data) |
305 | { | 305 | { |
306 | u32 l; | 306 | u32 l; |
307 | int r; | ||
307 | struct omap_video_timings timings = { | 308 | struct omap_video_timings timings = { |
308 | .hsw = 1, | 309 | .hsw = 1, |
309 | .hfp = 1, | 310 | .hfp = 1, |
@@ -322,7 +323,9 @@ static void rfbi_transfer_area(struct omap_dss_device *dssdev, u16 width, | |||
322 | 323 | ||
323 | dss_mgr_set_timings(dssdev->manager, &timings); | 324 | dss_mgr_set_timings(dssdev->manager, &timings); |
324 | 325 | ||
325 | dispc_mgr_enable(dssdev->manager->id, true); | 326 | r = dss_mgr_enable(dssdev->manager); |
327 | if (r) | ||
328 | return r; | ||
326 | 329 | ||
327 | rfbi.framedone_callback = callback; | 330 | rfbi.framedone_callback = callback; |
328 | rfbi.framedone_callback_data = data; | 331 | rfbi.framedone_callback_data = data; |
@@ -335,6 +338,8 @@ static void rfbi_transfer_area(struct omap_dss_device *dssdev, u16 width, | |||
335 | l = FLD_MOD(l, 1, 4, 4); /* ITE */ | 338 | l = FLD_MOD(l, 1, 4, 4); /* ITE */ |
336 | 339 | ||
337 | rfbi_write_reg(RFBI_CONTROL, l); | 340 | rfbi_write_reg(RFBI_CONTROL, l); |
341 | |||
342 | return 0; | ||
338 | } | 343 | } |
339 | 344 | ||
340 | static void framedone_callback(void *data, u32 mask) | 345 | static void framedone_callback(void *data, u32 mask) |
@@ -814,8 +819,11 @@ int omap_rfbi_update(struct omap_dss_device *dssdev, | |||
814 | u16 x, u16 y, u16 w, u16 h, | 819 | u16 x, u16 y, u16 w, u16 h, |
815 | void (*callback)(void *), void *data) | 820 | void (*callback)(void *), void *data) |
816 | { | 821 | { |
817 | rfbi_transfer_area(dssdev, w, h, callback, data); | 822 | int r; |
818 | return 0; | 823 | |
824 | r = rfbi_transfer_area(dssdev, w, h, callback, data); | ||
825 | |||
826 | return r; | ||
819 | } | 827 | } |
820 | EXPORT_SYMBOL(omap_rfbi_update); | 828 | EXPORT_SYMBOL(omap_rfbi_update); |
821 | 829 | ||