Add writeback as a sysfs attribute. This can be used to show and store the dummy
writeback panel that the manager can connect to.

Add checks so that in the store functions so that a display store cant set a
writeback device and vice versa.

Signed-off-by: Archit Taneja <[email protected]>
---
 drivers/video/omap2/dss/manager.c |   38 +++++++++++++++++++++++++++++++++++++
 1 files changed, 38 insertions(+), 0 deletions(-)

diff --git a/drivers/video/omap2/dss/manager.c 
b/drivers/video/omap2/dss/manager.c
index fb7c1e6..a064656 100644
--- a/drivers/video/omap2/dss/manager.c
+++ b/drivers/video/omap2/dss/manager.c
@@ -129,6 +129,41 @@ static ssize_t manager_display_store(struct 
omap_overlay_manager *mgr,
        if (r)
                return r;
 
+       if (dssdev->wbdev) {
+               r = -EINVAL;
+               return r;
+       }
+
+       r = dss_mgr_set_output(mgr, dssdev);
+       if (r)
+               return r;
+
+       return size;
+}
+
+static ssize_t manager_writeback_show(struct omap_overlay_manager *mgr, char 
*buf)
+{
+       struct omap_dss_device *wb_device = mgr->get_writeback(mgr);
+
+       return snprintf(buf, PAGE_SIZE, "%s\n", wb_device ?
+                       wb_device->name : "<none>");
+}
+
+static ssize_t manager_writeback_store(struct omap_overlay_manager *mgr,
+               const char *buf, size_t size)
+{
+       int r;
+       struct omap_dss_device *dssdev;
+
+       r = dss_find_device_buf(&dssdev, buf, size);
+       if (r)
+               return r;
+
+       if (!dssdev->wbdev) {
+               r = -EINVAL;
+               return r;
+       }
+
        r = dss_mgr_set_output(mgr, dssdev);
        if (r)
                return r;
@@ -452,6 +487,8 @@ struct manager_attribute {
 static MANAGER_ATTR(name, S_IRUGO, manager_name_show, NULL);
 static MANAGER_ATTR(display, S_IRUGO|S_IWUSR,
                manager_display_show, manager_display_store);
+static MANAGER_ATTR(writeback, S_IRUGO|S_IWUSR,
+               manager_writeback_show, manager_writeback_store);
 static MANAGER_ATTR(default_color, S_IRUGO|S_IWUSR,
                manager_default_color_show, manager_default_color_store);
 static MANAGER_ATTR(trans_key_type, S_IRUGO|S_IWUSR,
@@ -475,6 +512,7 @@ static MANAGER_ATTR(cpr_coef, S_IRUGO|S_IWUSR,
 static struct attribute *manager_sysfs_attrs[] = {
        &manager_attr_name.attr,
        &manager_attr_display.attr,
+       &manager_attr_writeback.attr,
        &manager_attr_default_color.attr,
        &manager_attr_trans_key_type.attr,
        &manager_attr_trans_key_value.attr,
-- 
1.7.4.1

--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to