OMAP: DSS2: move memory_read()
authorTomi Valkeinen <tomi.valkeinen@nokia.com>
Fri, 8 Jan 2010 14:56:44 +0000 (16:56 +0200)
committerTomi Valkeinen <tomi.valkeinen@nokia.com>
Wed, 24 Feb 2010 12:31:27 +0000 (14:31 +0200)
Move memory_read() from omap_dss_device to omap_dss_driver.

This is part of a larger patch-set, which moves the control from omapdss
driver to the display driver.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
arch/arm/plat-omap/include/plat/display.h
drivers/video/omap2/displays/panel-taal.c
drivers/video/omap2/dss/dsi.c
drivers/video/omap2/omapfb/omapfb-ioctl.c

index fa27d68..a336384 100644 (file)
@@ -495,10 +495,6 @@ struct omap_dss_device {
        bool (*get_mirror)(struct omap_dss_device *dssdev);
        int (*set_mirror)(struct omap_dss_device *dssdev, bool enable);
 
-       int (*memory_read)(struct omap_dss_device *dssdev,
-                       void *buf, size_t size,
-                       u16 x, u16 y, u16 w, u16 h);
-
        int (*set_wss)(struct omap_dss_device *dssdev, u32 wss);
        u32 (*get_wss)(struct omap_dss_device *dssdev);
 
index e6d0954..5f78d38 100644 (file)
@@ -847,6 +847,10 @@ static int taal_memory_read(struct omap_dss_device *dssdev,
        int first = 1;
        int plen;
        unsigned buf_used = 0;
+       struct taal_data *td = dev_get_drvdata(&dssdev->dev);
+
+       if (!td->enabled)
+               return -ENODEV;
 
        if (size < w * h * 3)
                return -ENOMEM;
@@ -855,6 +859,8 @@ static int taal_memory_read(struct omap_dss_device *dssdev,
                        dssdev->panel.timings.x_res *
                        dssdev->panel.timings.y_res * 3);
 
+       dsi_bus_lock();
+
        /* plen 1 or 2 goes into short packet. until checksum error is fixed,
         * use short packets. plen 32 works, but bigger packets seem to cause
         * an error. */
@@ -863,11 +869,11 @@ static int taal_memory_read(struct omap_dss_device *dssdev,
        else
                plen = 2;
 
-       taal_setup_update(dssdev, x, y, w, h);
+       taal_set_update_window(x, y, w, h);
 
        r = dsi_vc_set_max_rx_packet_size(TCH, plen);
        if (r)
-               return r;
+               goto err0;
 
        while (buf_used < size) {
                u8 dcs_cmd = first ? 0x2e : 0x3e;
@@ -900,7 +906,8 @@ static int taal_memory_read(struct omap_dss_device *dssdev,
 
 err:
        dsi_vc_set_max_rx_packet_size(TCH, 1);
-
+err0:
+       dsi_bus_unlock();
        return r;
 }
 
index f01c9ca..638d8c2 100644 (file)
@@ -3584,34 +3584,6 @@ static bool dsi_display_get_mirror(struct omap_dss_device *dssdev)
        return dssdev->driver->get_mirror(dssdev);
 }
 
-static int dsi_display_memory_read(struct omap_dss_device *dssdev,
-               void *buf, size_t size,
-               u16 x, u16 y, u16 w, u16 h)
-{
-       int r;
-
-       DSSDBGF("");
-
-       if (!dssdev->driver->memory_read)
-               return -EINVAL;
-
-       if (dssdev->state != OMAP_DSS_DISPLAY_ACTIVE)
-               return -EIO;
-
-       dsi_bus_lock();
-
-       r = dssdev->driver->memory_read(dssdev, buf, size,
-                       x, y, w, h);
-
-       /* Memory read usually changes the update area. This will
-        * force the next update to re-set the update area */
-       dsi.active_update_region.dirty = true;
-
-       dsi_bus_unlock();
-
-       return r;
-}
-
 void dsi_get_overlay_fifo_thresholds(enum omap_plane plane,
                u32 fifo_size, enum omap_burst_size *burst_size,
                u32 *fifo_low, u32 *fifo_high)
@@ -3646,8 +3618,6 @@ int dsi_init_display(struct omap_dss_device *dssdev)
        dssdev->get_mirror = dsi_display_get_mirror;
        dssdev->set_mirror = dsi_display_set_mirror;
 
-       dssdev->memory_read = dsi_display_memory_read;
-
        /* XXX these should be figured out dynamically */
        dssdev->caps = OMAP_DSS_DISPLAY_CAP_MANUAL_UPDATE |
                OMAP_DSS_DISPLAY_CAP_TEAR_ELIM;
index 6dc9b5c..6e0186e 100644 (file)
@@ -374,7 +374,7 @@ static int omapfb_memory_read(struct fb_info *fbi,
        void *buf;
        int r;
 
-       if (!display || !display->memory_read)
+       if (!display || !display->driver->memory_read)
                return -ENOENT;
 
        if (!access_ok(VERIFY_WRITE, mr->buffer, mr->buffer_size))
@@ -389,7 +389,7 @@ static int omapfb_memory_read(struct fb_info *fbi,
                return -ENOMEM;
        }
 
-       r = display->memory_read(display, buf, mr->buffer_size,
+       r = display->driver->memory_read(display, buf, mr->buffer_size,
                        mr->x, mr->y, mr->w, mr->h);
 
        if (r > 0) {