OMAP: DSS2: move get_resolution()
authorTomi Valkeinen <tomi.valkeinen@nokia.com>
Mon, 11 Jan 2010 11:54:33 +0000 (13:54 +0200)
committerTomi Valkeinen <tomi.valkeinen@nokia.com>
Wed, 24 Feb 2010 12:31:27 +0000 (14:31 +0200)
Move get_resolution() 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/core.c
drivers/video/omap2/dss/display.c
drivers/video/omap2/dss/dsi.c
drivers/video/omap2/dss/overlay.c
drivers/video/omap2/dss/venc.c
drivers/video/omap2/omapfb/omapfb-ioctl.c
drivers/video/omap2/omapfb/omapfb-main.c

index f05098dd5d5c2dff5fe993de84d2bb2d9cb86711..70a9dd318ef9dea3678ceaf24df1846c017c0fa0 100644 (file)
@@ -470,8 +470,6 @@ struct omap_dss_device {
        int (*suspend)(struct omap_dss_device *dssdev);
        int (*resume)(struct omap_dss_device *dssdev);
 
-       void (*get_resolution)(struct omap_dss_device *dssdev,
-                       u16 *xres, u16 *yres);
        int (*get_recommended_bpp)(struct omap_dss_device *dssdev);
 
        int (*check_timings)(struct omap_dss_device *dssdev,
@@ -529,6 +527,9 @@ struct omap_dss_driver {
        int (*memory_read)(struct omap_dss_device *dssdev,
                        void *buf, size_t size,
                        u16 x, u16 y, u16 w, u16 h);
+
+       void (*get_resolution)(struct omap_dss_device *dssdev,
+                       u16 *xres, u16 *yres);
 };
 
 int omap_dss_register_driver(struct omap_dss_driver *);
@@ -553,6 +554,8 @@ struct omap_overlay_manager *omap_dss_get_overlay_manager(int num);
 int omap_dss_get_num_overlays(void);
 struct omap_overlay *omap_dss_get_overlay(int num);
 
+void omapdss_default_get_resolution(struct omap_dss_device *dssdev,
+               u16 *xres, u16 *yres);
 typedef void (*omap_dispc_isr_t) (void *arg, u32 mask);
 int omap_dispc_register_isr(omap_dispc_isr_t isr, void *arg, u32 mask);
 int omap_dispc_unregister_isr(omap_dispc_isr_t isr, void *arg, u32 mask);
index 8f90de0d2b4bed4177203f221becb4e351c68470..11d69b67a903a7d53ddc97dedec5ca0fb9e701d5 100644 (file)
@@ -517,7 +517,6 @@ static int taal_probe(struct omap_dss_device *dssdev)
        dev_set_drvdata(&dssdev->dev, td);
 
        dssdev->get_timings = taal_get_timings;
-       dssdev->get_resolution = taal_get_resolution;
 
        /* if no platform set_backlight() defined, presume DSI backlight
         * control */
@@ -990,6 +989,7 @@ static struct omap_dss_driver taal_driver = {
        .resume         = taal_resume,
 
        .setup_update   = taal_setup_update,
+       .get_resolution = taal_get_resolution,
        .enable_te      = taal_enable_te,
        .wait_for_te    = taal_wait_te,
        .set_rotate     = taal_rotate,
index 39b1a20a298c8ddd1bfe60627da60fbe415a5dc6..2e6ce835ae5cde2b6271b318e3a6089a62d59f4a 100644 (file)
@@ -811,6 +811,10 @@ int omap_dss_register_driver(struct omap_dss_driver *dssdriver)
        dssdriver->driver.bus = &dss_bus_type;
        dssdriver->driver.probe = dss_driver_probe;
        dssdriver->driver.remove = dss_driver_remove;
+
+       if (dssdriver->get_resolution == NULL)
+               dssdriver->get_resolution = omapdss_default_get_resolution;
+
        return driver_register(&dssdriver->driver);
 }
 EXPORT_SYMBOL(omap_dss_register_driver);
index 80b67d1c9d03ddb795d7b774a3df2c2a0c344f4a..3888c191c8a7310b98463e4321bb02da7f3c7a4d 100644 (file)
@@ -303,12 +303,13 @@ static struct device_attribute *display_sysfs_attrs[] = {
        NULL
 };
 
-static void default_get_resolution(struct omap_dss_device *dssdev,
+void omapdss_default_get_resolution(struct omap_dss_device *dssdev,
                        u16 *xres, u16 *yres)
 {
        *xres = dssdev->panel.timings.x_res;
        *yres = dssdev->panel.timings.y_res;
 }
+EXPORT_SYMBOL(omapdss_default_get_resolution);
 
 void default_get_overlay_fifo_thresholds(enum omap_plane plane,
                u32 fifo_size, enum omap_burst_size *burst_size,
@@ -412,7 +413,6 @@ void dss_init_device(struct platform_device *pdev,
                return;
        }
 
-       dssdev->get_resolution = default_get_resolution;
        dssdev->get_recommended_bpp = default_get_recommended_bpp;
 
        switch (dssdev->type) {
index b478a506e0389256832b501afbe238f91e7da354..abc66f2c070534ad1cd75d2a7f15fe4b56d8ed54 100644 (file)
@@ -2868,7 +2868,7 @@ static int dsi_set_update_mode(struct omap_dss_device *dssdev,
 
                        DSSDBG("starting auto update\n");
 
-                       dssdev->get_resolution(dssdev, &w, &h);
+                       dssdev->driver->get_resolution(dssdev, &w, &h);
 
                        dsi_set_update_region(dssdev, 0, 0, w, h);
 
@@ -3422,7 +3422,7 @@ static int dsi_display_update(struct omap_dss_device *dssdev,
        if (dssdev->state != OMAP_DSS_DISPLAY_ACTIVE)
                goto end;
 
-       dssdev->get_resolution(dssdev, &dw, &dh);
+       dssdev->driver->get_resolution(dssdev, &dw, &dh);
 
        if  (x > dw || y > dh)
                goto end;
index b7f9a73398428384511e6f8385cd7b55fc872299..0c5bea263ac6f09df328050c14a76c01fb3dfb8a 100644 (file)
@@ -350,7 +350,7 @@ int dss_check_overlay(struct omap_overlay *ovl, struct omap_dss_device *dssdev)
                return -EINVAL;
        }
 
-       dssdev->get_resolution(dssdev, &dw, &dh);
+       dssdev->driver->get_resolution(dssdev, &dw, &dh);
 
        DSSDBG("check_overlay %d: (%d,%d %dx%d -> %dx%d) disp (%dx%d)\n",
                        ovl->id,
index 4e6bd1dc80210a1007d2df6610e8aaa9fc51d6a7..65514f0f52fd5880ac7e3ed5f827dbb012aeca12 100644 (file)
@@ -459,6 +459,8 @@ static struct omap_dss_driver venc_driver = {
        .suspend        = venc_panel_suspend,
        .resume         = venc_panel_resume,
 
+       .get_resolution = omapdss_default_get_resolution,
+
        .driver         = {
                .name   = "venc",
                .owner  = THIS_MODULE,
index 36afab30921ea4946053abc3d78f28bf375b3729..6deabb94fd312e936d05961514d111e59b3a125b 100644 (file)
@@ -167,7 +167,7 @@ static int omapfb_update_window_nolock(struct fb_info *fbi,
        if (w == 0 || h == 0)
                return 0;
 
-       display->get_resolution(display, &dw, &dh);
+       display->driver->get_resolution(display, &dw, &dh);
 
        if (x + w > dw || y + h > dh)
                return -EINVAL;
@@ -752,7 +752,7 @@ int omapfb_ioctl(struct fb_info *fbi, unsigned int cmd, unsigned long arg)
                        break;
                }
 
-               display->get_resolution(display, &xres, &yres);
+               display->driver->get_resolution(display, &xres, &yres);
 
                p.display_info.xres = xres;
                p.display_info.yres = yres;
index 6a383ab2bef283d98e06a466ba4beca42cc0fd52..212d2efb380cac89975773ba2434e78cbe40efce 100644 (file)
@@ -1254,7 +1254,7 @@ exit:
 
        if (r == 0 && do_update && display->update) {
                u16 w, h;
-               display->get_resolution(display, &w, &h);
+               display->driver->get_resolution(display, &w, &h);
 
                r = display->update(display, 0, 0, w, h);
        }
@@ -1427,7 +1427,7 @@ static int omapfb_alloc_fbmem_display(struct fb_info *fbi, unsigned long size,
        if (!size) {
                u16 w, h;
 
-               display->get_resolution(display, &w, &h);
+               display->driver->get_resolution(display, &w, &h);
 
                if (ofbi->rotation_type == OMAP_DSS_ROT_VRFB) {
                        size = max(omap_vrfb_min_phys_size(w, h, bytespp),
@@ -1745,7 +1745,7 @@ static int omapfb_fb_init(struct omapfb2_device *fbdev, struct fb_info *fbi)
                u16 w, h;
                int rotation = (var->rotate + ofbi->rotation[0]) % 4;
 
-               display->get_resolution(display, &w, &h);
+               display->driver->get_resolution(display, &w, &h);
 
                if (rotation == FB_ROTATE_CW ||
                                rotation == FB_ROTATE_CCW) {
@@ -2197,7 +2197,8 @@ static int omapfb_probe(struct platform_device *pdev)
                                def_display->set_update_mode(def_display,
                                                OMAP_DSS_UPDATE_MANUAL);
 
-                       def_display->get_resolution(def_display, &w, &h);
+                       def_display->driver->get_resolution(def_display,
+                                       &w, &h);
                        def_display->update(def_display, 0, 0, w, h);
 #endif
                } else {