OMAPDSS: RFBI: Use dss_mgr_enable to enable the overlay manager
authorArchit Taneja <archit@ti.com>
Tue, 29 May 2012 06:25:38 +0000 (11:55 +0530)
committerArchit Taneja <archit@ti.com>
Fri, 29 Jun 2012 10:57:59 +0000 (16:27 +0530)
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>
drivers/video/omap2/dss/rfbi.c

index cc22426144cb5dd13ad61acc039e0ae973c9368b..7c087424b63428d33cd2bbb1560cb476dfefab38 100644 (file)
@@ -300,10 +300,11 @@ void omap_rfbi_write_pixels(const void __iomem *buf, int scr_width,
 }
 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)
 {
        u32 l;
+       int r;
        struct omap_video_timings timings = {
                .hsw            = 1,
                .hfp            = 1,
@@ -322,7 +323,9 @@ static void rfbi_transfer_area(struct omap_dss_device *dssdev, u16 width,
 
        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_data = data;
@@ -335,6 +338,8 @@ static void rfbi_transfer_area(struct omap_dss_device *dssdev, u16 width,
                l = FLD_MOD(l, 1, 4, 4); /* ITE */
 
        rfbi_write_reg(RFBI_CONTROL, l);
+
+       return 0;
 }
 
 static void framedone_callback(void *data, u32 mask)
@@ -814,8 +819,11 @@ int omap_rfbi_update(struct omap_dss_device *dssdev,
                u16 x, u16 y, u16 w, u16 h,
                void (*callback)(void *), void *data)
 {
-       rfbi_transfer_area(dssdev, w, h, callback, data);
-       return 0;
+       int r;
+
+       r = rfbi_transfer_area(dssdev, w, h, callback, data);
+
+       return r;
 }
 EXPORT_SYMBOL(omap_rfbi_update);