{
u32 val = 0;
int ret = 0;
+#if defined(CONFIG_FB_ROCKCHIP)
+ struct property *prop;
+ int length;
+#endif
memset(dt, 0, sizeof(*dt));
dt->flags |= DISPLAY_FLAGS_DOUBLESCAN;
if (of_property_read_bool(np, "doubleclk"))
dt->flags |= DISPLAY_FLAGS_DOUBLECLK;
+#if defined(CONFIG_FB_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, "refresh-mode", &val))
+ dt->refresh_mode = val;
+ else
+ dt->refresh_mode = 0;
+ 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;
+ if (!of_property_read_u32(np, "screen-width", &val))
+ dt->screen_widt = val;
+ if (!of_property_read_u32(np, "screen-hight", &val))
+ dt->screen_hight = 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);
+ }
+
+ prop = of_find_property(np, "cabc-gamma-base", &length);
+ if (prop) {
+ dt->cabc_gamma_base = kzalloc(length, GFP_KERNEL);
+ if (dt->cabc_gamma_base)
+ ret = of_property_read_u32_array(np,
+ "cabc-gamma-base",
+ dt->cabc_gamma_base,
+ length >> 2);
+ }
+#endif
if (ret) {
pr_err("%s: error reading timing properties\n",