Merge tag 'lsk-v3.10-android-15.02'
[firefly-linux-kernel-4.4.55.git] / drivers / video / of_display_timing.c
index 56009bc02b02475b525966ee9b8239d4a779b56d..6522edabfa51d0f8b7ad831a01303d43f5e9017f 100644 (file)
@@ -61,7 +61,10 @@ static struct display_timing *of_get_display_timing(struct device_node *np)
        struct display_timing *dt;
        u32 val = 0;
        int ret = 0;
-
+#if defined(CONFIG_FB_ROCKCHIP) || defined(CONFIG_DRM_ROCKCHIP)
+       struct property *prop;
+       int length;
+#endif
        dt = kzalloc(sizeof(*dt), GFP_KERNEL);
        if (!dt) {
                pr_err("%s: could not allocate display_timing struct\n",
@@ -98,6 +101,39 @@ static struct display_timing *of_get_display_timing(struct device_node *np)
        if (of_property_read_bool(np, "doublescan"))
                dt->flags |= DISPLAY_FLAGS_DOUBLESCAN;
 
+#if defined(CONFIG_FB_ROCKCHIP) || defined(CONFIG_DRM_ROCKCHIP)
+       if (!of_property_read_u32(np, "swap-rg", &val))
+               dt->flags |= val ? DISPLAY_FLAGS_SWAP_RG : 0;
+       if (!of_property_read_u32(np, "swap-gb", &val))
+               dt->flags |= val ? DISPLAY_FLAGS_SWAP_GB : 0;
+       if (!of_property_read_u32(np, "swap-rb", &val))
+               dt->flags |= val ? DISPLAY_FLAGS_SWAP_RB : 0;
+       if (!of_property_read_u32(np, "screen-type", &val))
+               dt->screen_type = val;
+       if (!of_property_read_u32(np, "lvds-format", &val))
+               dt->lvds_format = val;
+       if (!of_property_read_u32(np, "out-face", &val))
+               dt->face = val;
+       if (!of_property_read_u32(np, "color-mode", &val))
+                dt->color_mode = val;
+       prop = of_find_property(np, "dsp-lut", &length);
+       if (prop) {
+               dt->dsp_lut = kzalloc(length, GFP_KERNEL);
+               if (dt->dsp_lut)
+                       ret = of_property_read_u32_array(np,
+                               "dsp-lut",dt->dsp_lut, length >> 2);
+       }
+       prop = of_find_property(np, "cabc-lut", &length);
+       if (prop) {
+               dt->cabc_lut = kzalloc(length, GFP_KERNEL);
+               if (dt->cabc_lut)
+                       ret = of_property_read_u32_array(np,
+                                                        "cabc-lut",
+                                                        dt->cabc_lut,
+                                                        length >> 2);
+       }
+#endif
+
        if (ret) {
                pr_err("%s: error reading timing properties\n",
                        of_node_full_name(np));