Commit c47cdb30 authored by Archit Taneja's avatar Archit Taneja

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: default avatarArchit Taneja <archit@ti.com>
parent dd88b7a6
...@@ -300,10 +300,11 @@ void omap_rfbi_write_pixels(const void __iomem *buf, int scr_width, ...@@ -300,10 +300,11 @@ void omap_rfbi_write_pixels(const void __iomem *buf, int scr_width,
} }
EXPORT_SYMBOL(omap_rfbi_write_pixels); EXPORT_SYMBOL(omap_rfbi_write_pixels);
static void rfbi_transfer_area(struct omap_dss_device *dssdev, u16 width, static int rfbi_transfer_area(struct omap_dss_device *dssdev, u16 width,
u16 height, void (*callback)(void *data), void *data) u16 height, void (*callback)(void *data), void *data)
{ {
u32 l; u32 l;
int r;
struct omap_video_timings timings = { struct omap_video_timings timings = {
.hsw = 1, .hsw = 1,
.hfp = 1, .hfp = 1,
...@@ -322,7 +323,9 @@ static void rfbi_transfer_area(struct omap_dss_device *dssdev, u16 width, ...@@ -322,7 +323,9 @@ static void rfbi_transfer_area(struct omap_dss_device *dssdev, u16 width,
dss_mgr_set_timings(dssdev->manager, &timings); dss_mgr_set_timings(dssdev->manager, &timings);
dispc_mgr_enable(dssdev->manager->id, true); r = dss_mgr_enable(dssdev->manager);
if (r)
return r;
rfbi.framedone_callback = callback; rfbi.framedone_callback = callback;
rfbi.framedone_callback_data = data; rfbi.framedone_callback_data = data;
...@@ -335,6 +338,8 @@ static void rfbi_transfer_area(struct omap_dss_device *dssdev, u16 width, ...@@ -335,6 +338,8 @@ static void rfbi_transfer_area(struct omap_dss_device *dssdev, u16 width,
l = FLD_MOD(l, 1, 4, 4); /* ITE */ l = FLD_MOD(l, 1, 4, 4); /* ITE */
rfbi_write_reg(RFBI_CONTROL, l); rfbi_write_reg(RFBI_CONTROL, l);
return 0;
} }
static void framedone_callback(void *data, u32 mask) static void framedone_callback(void *data, u32 mask)
...@@ -814,8 +819,11 @@ int omap_rfbi_update(struct omap_dss_device *dssdev, ...@@ -814,8 +819,11 @@ int omap_rfbi_update(struct omap_dss_device *dssdev,
u16 x, u16 y, u16 w, u16 h, u16 x, u16 y, u16 w, u16 h,
void (*callback)(void *), void *data) void (*callback)(void *), void *data)
{ {
rfbi_transfer_area(dssdev, w, h, callback, data); int r;
return 0;
r = rfbi_transfer_area(dssdev, w, h, callback, data);
return r;
} }
EXPORT_SYMBOL(omap_rfbi_update); EXPORT_SYMBOL(omap_rfbi_update);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment