arm64: dts: rk3368-android: enable iep default
[firefly-linux-kernel-4.4.55.git] / drivers / video / rockchip / display-sys.c
index 7b12b59a7c36a9858abb94da3d2bb0a6a1be3682..6db202ae63be451bc698337910865ad80e6d7ce5 100644 (file)
@@ -8,38 +8,38 @@
 static struct list_head main_display_device_list;
 static struct list_head aux_display_device_list;
 
-static ssize_t display_name_show(struct device *dev,
-                                struct device_attribute *attr, char *buf)
+static ssize_t name_show(struct device *dev,
+                        struct device_attribute *attr, char *buf)
 {
        struct rk_display_device *dsp = dev_get_drvdata(dev);
 
        return snprintf(buf, PAGE_SIZE, "%s\n", dsp->name);
 }
 
-static DEVICE_ATTR_RO(display_name);
+static DEVICE_ATTR_RO(name);
 
-static ssize_t display_type_show(struct device *dev,
-                                struct device_attribute *attr, char *buf)
+static ssize_t type_show(struct device *dev,
+                        struct device_attribute *attr, char *buf)
 {
        struct rk_display_device *dsp = dev_get_drvdata(dev);
 
        return snprintf(buf, PAGE_SIZE, "%s\n", dsp->type);
 }
 
-static DEVICE_ATTR_RO(display_type);
+static DEVICE_ATTR_RO(type);
 
-static ssize_t display_property_show(struct device *dev,
-                                    struct device_attribute *attr, char *buf)
+static ssize_t property_show(struct device *dev,
+                            struct device_attribute *attr, char *buf)
 {
        struct rk_display_device *dsp = dev_get_drvdata(dev);
 
        return snprintf(buf, PAGE_SIZE, "%d\n", dsp->property);
 }
 
-static DEVICE_ATTR_RO(display_property);
+static DEVICE_ATTR_RO(property);
 
-static ssize_t display_enable_show(struct device *dev,
-                                  struct device_attribute *attr, char *buf)
+static ssize_t enable_show(struct device *dev,
+                          struct device_attribute *attr, char *buf)
 {
        struct rk_display_device *dsp = dev_get_drvdata(dev);
        int enable;
@@ -51,9 +51,9 @@ static ssize_t display_enable_show(struct device *dev,
        return snprintf(buf, PAGE_SIZE, "%d\n", enable);
 }
 
-static ssize_t display_enable_store(struct device *dev,
-                                   struct device_attribute *attr,
-                                   const char *buf, size_t size)
+static ssize_t enable_store(struct device *dev,
+                           struct device_attribute *attr,
+                           const char *buf, size_t size)
 {
        struct rk_display_device *dsp = dev_get_drvdata(dev);
        int enable;
@@ -65,10 +65,10 @@ static ssize_t display_enable_store(struct device *dev,
        return size;
 }
 
-static DEVICE_ATTR_RW(display_enable);
+static DEVICE_ATTR_RW(enable);
 
-static ssize_t display_connect_show(struct device *dev,
-                                   struct device_attribute *attr, char *buf)
+static ssize_t connect_show(struct device *dev,
+                           struct device_attribute *attr, char *buf)
 {
        struct rk_display_device *dsp = dev_get_drvdata(dev);
        int connect;
@@ -80,7 +80,7 @@ static ssize_t display_connect_show(struct device *dev,
        return snprintf(buf, PAGE_SIZE, "%d\n", connect);
 }
 
-static DEVICE_ATTR_RO(display_connect);
+static DEVICE_ATTR_RO(connect);
 
 static int mode_string(char *buf, unsigned int offset,
                       const struct fb_videomode *mode)
@@ -93,14 +93,6 @@ static int mode_string(char *buf, unsigned int offset,
        }
        if (mode->xres == 0 && mode->yres == 0)
                return snprintf(&buf[offset], PAGE_SIZE - offset, "auto\n");
-/*
-       if (mode->flag & FB_MODE_IS_DETAILED)
-               m = 'D';
-       if (mode->flag & FB_MODE_IS_VESA)
-               m = 'V';
-       if (mode->flag & FB_MODE_IS_STANDARD)
-               m = 'S';
-*/
        if (mode->vmode & FB_VMODE_INTERLACED)
                v = 'i';
        if (mode->vmode & FB_VMODE_DOUBLE)
@@ -115,8 +107,8 @@ static int mode_string(char *buf, unsigned int offset,
                                mode->xres, mode->yres, v, mode->refresh);
 }
 
-static ssize_t display_modes_show(struct device *dev,
-                                 struct device_attribute *attr, char *buf)
+static ssize_t modes_show(struct device *dev,
+                         struct device_attribute *attr, char *buf)
 {
        struct rk_display_device *dsp = dev_get_drvdata(dev);
        struct list_head *modelist, *pos;
@@ -149,10 +141,10 @@ static ssize_t display_modes_show(struct device *dev,
        return i;
 }
 
-static DEVICE_ATTR_RO(display_modes);
+static DEVICE_ATTR_RO(modes);
 
-static ssize_t display_mode_show(struct device *dev,
-                                struct device_attribute *attr, char *buf)
+static ssize_t mode_show(struct device *dev,
+                        struct device_attribute *attr, char *buf)
 {
        struct rk_display_device *dsp = dev_get_drvdata(dev);
        struct fb_videomode mode;
@@ -163,9 +155,9 @@ static ssize_t display_mode_show(struct device *dev,
        return 0;
 }
 
-static ssize_t display_mode_store(struct device *dev,
-                                 struct device_attribute *attr,
-                                 const char *buf, size_t count)
+static ssize_t mode_store(struct device *dev,
+                         struct device_attribute *attr,
+                         const char *buf, size_t count)
 {
        struct rk_display_device *dsp = dev_get_drvdata(dev);
        char mstr[100];
@@ -207,11 +199,11 @@ static ssize_t display_mode_store(struct device *dev,
        return -EINVAL;
 }
 
-static DEVICE_ATTR_RW(display_mode);
+static DEVICE_ATTR_RW(mode);
 
-static ssize_t display_scale_show(struct device *dev,
-                                 struct device_attribute *attr,
-                                 char *buf)
+static ssize_t scale_show(struct device *dev,
+                         struct device_attribute *attr,
+                         char *buf)
 {
        struct rk_display_device *dsp = dev_get_drvdata(dev);
        int xscale, yscale;
@@ -227,9 +219,9 @@ static ssize_t display_scale_show(struct device *dev,
        return -EINVAL;
 }
 
-static ssize_t display_scale_store(struct device *dev,
-                                  struct device_attribute *attr,
-                                  const char *buf, size_t count)
+static ssize_t scale_store(struct device *dev,
+                          struct device_attribute *attr,
+                          const char *buf, size_t count)
 {
        struct rk_display_device *dsp = dev_get_drvdata(dev);
        int scale = 100;
@@ -260,10 +252,10 @@ static ssize_t display_scale_store(struct device *dev,
        return -EINVAL;
 }
 
-static DEVICE_ATTR_RW(display_scale);
+static DEVICE_ATTR_RW(scale);
 
-static ssize_t display_3dmode_show(struct device *dev,
-                                  struct device_attribute *attr, char *buf)
+static ssize_t mode3d_show(struct device *dev,
+                          struct device_attribute *attr, char *buf)
 {
        struct rk_display_device *dsp = dev_get_drvdata(dev);
        struct list_head *modelist, *pos;
@@ -298,10 +290,10 @@ static ssize_t display_3dmode_show(struct device *dev,
                display_modelist = list_entry(pos,
                                              struct display_modelist,
                                              list);
-               if (fb_mode_is_equal(&mode, &display_modelist->mode))
-                       break;
-               else
+               if (!fb_mode_is_equal(&mode, &display_modelist->mode))
                        display_modelist = NULL;
+               else
+                       break;
        }
        if (display_modelist)
                i = snprintf(buf, PAGE_SIZE, "3dmodes=%d\n",
@@ -318,19 +310,19 @@ static ssize_t display_3dmode_show(struct device *dev,
                                              struct display_modelist,
                                              list);
                mode_strlen = mode_string(mode_str, 0,
-                                         &(display_modelist->mode));
-               mode_str[mode_strlen-1] = 0;
+                                         &display_modelist->mode);
+               mode_str[mode_strlen - 1] = 0;
                format_3d = display_modelist->format_3d;
-               i += snprintf(buf+i, PAGE_SIZE, "%s,%d\n",
+               i += snprintf(buf + i, PAGE_SIZE, "%s,%d\n",
                              mode_str, format_3d);
        }
        mutex_unlock(&dsp->lock);
        return i;
 }
 
-static ssize_t display_3dmode_store(struct device *dev,
-                                   struct device_attribute *attr,
-                                   const char *buf, size_t count)
+static ssize_t mode3d_store(struct device *dev,
+                           struct device_attribute *attr,
+                           const char *buf, size_t count)
 {
        struct rk_display_device *dsp = dev_get_drvdata(dev);
        int mode;
@@ -346,10 +338,10 @@ static ssize_t display_3dmode_store(struct device *dev,
        return -EINVAL;
 }
 
-static DEVICE_ATTR_RW(display_3dmode);
+static DEVICE_ATTR_RW(mode3d);
 
-static ssize_t display_color_show(struct device *dev,
-                                 struct device_attribute *attr, char *buf)
+static ssize_t color_show(struct device *dev,
+                         struct device_attribute *attr, char *buf)
 {
        struct rk_display_device *dsp = dev_get_drvdata(dev);
        int ret = 0;
@@ -361,9 +353,9 @@ static ssize_t display_color_show(struct device *dev,
        return ret;
 }
 
-static ssize_t display_color_store(struct device *dev,
-                                  struct device_attribute *attr,
-                                  const char *buf, size_t count)
+static ssize_t color_store(struct device *dev,
+                          struct device_attribute *attr,
+                          const char *buf, size_t count)
 {
        struct rk_display_device *dsp = dev_get_drvdata(dev);
 
@@ -378,11 +370,11 @@ static ssize_t display_color_store(struct device *dev,
        return -EINVAL;
 }
 
-static DEVICE_ATTR_RW(display_color);
+static DEVICE_ATTR_RW(color);
 
-static ssize_t display_sinkaudioinfo_show(struct device *dev,
-                                         struct device_attribute *attr,
-                                         char *buf)
+static ssize_t audioinfo_show(struct device *dev,
+                             struct device_attribute *attr,
+                             char *buf)
 {
        struct rk_display_device *dsp = dev_get_drvdata(dev);
        char audioinfo[200];
@@ -400,10 +392,10 @@ static ssize_t display_sinkaudioinfo_show(struct device *dev,
        return -EINVAL;
 }
 
-static DEVICE_ATTR_RO(display_sinkaudioinfo);
+static DEVICE_ATTR_RO(audioinfo);
 
-static ssize_t display_monspecs_show(struct device *dev,
-                                    struct device_attribute *attr, char *buf)
+static ssize_t monspecs_show(struct device *dev,
+                            struct device_attribute *attr, char *buf)
 {
        struct rk_display_device *dsp = dev_get_drvdata(dev);
        struct fb_monspecs monspecs;
@@ -422,10 +414,10 @@ static ssize_t display_monspecs_show(struct device *dev,
        return -EINVAL;
 }
 
-static DEVICE_ATTR_RO(display_monspecs);
+static DEVICE_ATTR_RO(monspecs);
 
-static ssize_t display_debug_show(struct device *dev,
-                                 struct device_attribute *attr, char *buf)
+static ssize_t debug_show(struct device *dev,
+                         struct device_attribute *attr, char *buf)
 {
        struct rk_display_device *dsp = dev_get_drvdata(dev);
        int ret = -EINVAL;
@@ -437,9 +429,9 @@ static ssize_t display_debug_show(struct device *dev,
        return ret;
 }
 
-static ssize_t display_debug_store(struct device *dev,
-                                  struct device_attribute *attr,
-                                  const char *buf, size_t count)
+static ssize_t debug_store(struct device *dev,
+                          struct device_attribute *attr,
+                          const char *buf, size_t count)
 {
        int cmd, ret = -EINVAL;
        struct rk_display_device *dsp = dev_get_drvdata(dev);
@@ -454,22 +446,39 @@ static ssize_t display_debug_store(struct device *dev,
        return ret;
 }
 
-static DEVICE_ATTR_RW(display_debug);
+static DEVICE_ATTR_RW(debug);
+
+static ssize_t prop_show(struct device *dev,
+                        struct device_attribute *attr, char *buf)
+{
+       struct rk_display_device *dsp = dev_get_drvdata(dev);
+       int ret = -EINVAL;
+
+       mutex_lock(&dsp->lock);
+       if (dsp->ops && dsp->ops->getvrinfo)
+               ret = dsp->ops->getvrinfo(dsp, buf);
+       mutex_unlock(&dsp->lock);
+
+       return ret;
+}
+
+static DEVICE_ATTR_RO(prop);
 
 static struct attribute *display_device_attrs[] = {
-       &dev_attr_display_name.attr,
-       &dev_attr_display_type.attr,
-       &dev_attr_display_property.attr,
-       &dev_attr_display_enable.attr,
-       &dev_attr_display_connect.attr,
-       &dev_attr_display_modes.attr,
-       &dev_attr_display_mode.attr,
-       &dev_attr_display_scale.attr,
-       &dev_attr_display_3dmode.attr,
-       &dev_attr_display_color.attr,
-       &dev_attr_display_sinkaudioinfo.attr,
-       &dev_attr_display_monspecs.attr,
-       &dev_attr_display_debug.attr,
+       &dev_attr_name.attr,
+       &dev_attr_type.attr,
+       &dev_attr_property.attr,
+       &dev_attr_enable.attr,
+       &dev_attr_connect.attr,
+       &dev_attr_modes.attr,
+       &dev_attr_mode.attr,
+       &dev_attr_scale.attr,
+       &dev_attr_mode3d.attr,
+       &dev_attr_color.attr,
+       &dev_attr_audioinfo.attr,
+       &dev_attr_monspecs.attr,
+       &dev_attr_debug.attr,
+       &dev_attr_prop.attr,
        NULL,
 };
 
@@ -547,7 +556,7 @@ void rk_display_device_enable(struct rk_display_device *ddev)
                        dev_enabled = dev;
        }
        /* If no device is connected, enable highest priority device. */
-       if (dev_enable == NULL) {
+       if (!dev_enable) {
                dev->ops->setenable(dev, 1);
                return;
        }
@@ -744,7 +753,7 @@ void rk_display_device_unregister(struct rk_display_device *ddev)
        mutex_lock(&ddev->lock);
        device_unregister(ddev->dev);
        mutex_unlock(&ddev->lock);
-       /* Mark device index as avaliable */
+       /* Mark device index as available */
        mutex_lock(&allocated_dsp_lock);
        idr_remove(&allocated_dsp, ddev->idx);
        mutex_unlock(&allocated_dsp_lock);
@@ -778,7 +787,6 @@ static void __exit rk_display_class_exit(void)
 subsys_initcall(rk_display_class_init);
 module_exit(rk_display_class_exit);
 
-
 MODULE_AUTHOR("zhengyang@rock-chips.com");
 MODULE_DESCRIPTION("Driver for rk display device");
 MODULE_LICENSE("GPL");