Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus
[pandora-kernel.git] / drivers / video / omap2 / dss / display.c
index 94495e4..be331dc 100644 (file)
@@ -45,14 +45,13 @@ static ssize_t display_enabled_store(struct device *dev,
                const char *buf, size_t size)
 {
        struct omap_dss_device *dssdev = to_dss_device(dev);
-       int r, enabled;
+       int r;
+       bool enabled;
 
-       r = kstrtoint(buf, 0, &enabled);
+       r = strtobool(buf, &enabled);
        if (r)
                return r;
 
-       enabled = !!enabled;
-
        if (enabled != (dssdev->state != OMAP_DSS_DISPLAY_DISABLED)) {
                if (enabled) {
                        r = dssdev->driver->enable(dssdev);
@@ -79,17 +78,16 @@ static ssize_t display_tear_store(struct device *dev,
                struct device_attribute *attr, const char *buf, size_t size)
 {
        struct omap_dss_device *dssdev = to_dss_device(dev);
-       int te, r;
+       int r;
+       bool te;
 
        if (!dssdev->driver->enable_te || !dssdev->driver->get_te)
                return -ENOENT;
 
-       r = kstrtoint(buf, 0, &te);
+       r = strtobool(buf, &te);
        if (r)
                return r;
 
-       te = !!te;
-
        r = dssdev->driver->enable_te(dssdev, te);
        if (r)
                return r;
@@ -195,17 +193,16 @@ static ssize_t display_mirror_store(struct device *dev,
                struct device_attribute *attr, const char *buf, size_t size)
 {
        struct omap_dss_device *dssdev = to_dss_device(dev);
-       int mirror, r;
+       int r;
+       bool mirror;
 
        if (!dssdev->driver->set_mirror || !dssdev->driver->get_mirror)
                return -ENOENT;
 
-       r = kstrtoint(buf, 0, &mirror);
+       r = strtobool(buf, &mirror);
        if (r)
                return r;
 
-       mirror = !!mirror;
-
        r = dssdev->driver->set_mirror(dssdev, mirror);
        if (r)
                return r;
@@ -302,11 +299,15 @@ int omapdss_default_get_recommended_bpp(struct omap_dss_device *dssdev)
                        return 16;
 
        case OMAP_DISPLAY_TYPE_DBI:
-       case OMAP_DISPLAY_TYPE_DSI:
                if (dssdev->ctrl.pixel_size == 24)
                        return 24;
                else
                        return 16;
+       case OMAP_DISPLAY_TYPE_DSI:
+               if (dsi_get_pixel_size(dssdev->panel.dsi_pix_fmt) > 16)
+                       return 24;
+               else
+                       return 16;
        case OMAP_DISPLAY_TYPE_VENC:
        case OMAP_DISPLAY_TYPE_SDI:
        case OMAP_DISPLAY_TYPE_HDMI:
@@ -342,9 +343,11 @@ bool dss_use_replication(struct omap_dss_device *dssdev,
                bpp = 24;
                break;
        case OMAP_DISPLAY_TYPE_DBI:
-       case OMAP_DISPLAY_TYPE_DSI:
                bpp = dssdev->ctrl.pixel_size;
                break;
+       case OMAP_DISPLAY_TYPE_DSI:
+               bpp = dsi_get_pixel_size(dssdev->panel.dsi_pix_fmt);
+               break;
        default:
                BUG();
        }