rockchip:lcdc: add set default fb_win_map order at dts
authorzwl <zwl@rockchips.com>
Tue, 26 Aug 2014 12:16:31 +0000 (20:16 +0800)
committerzwl <zwl@rockchips.com>
Tue, 26 Aug 2014 14:11:42 +0000 (22:11 +0800)
arch/arm/boot/dts/rk3126-sdk.dts
arch/arm/boot/dts/rk3128-box.dts
arch/arm/boot/dts/rk3128-sdk.dts
drivers/video/rockchip/lcdc/rk3036_lcdc.c
drivers/video/rockchip/lcdc/rk312x_lcdc.c
drivers/video/rockchip/lcdc/rk3188_lcdc.c
drivers/video/rockchip/lcdc/rk3288_lcdc.c
drivers/video/rockchip/rk_fb.c
include/dt-bindings/rkfb/rk_fb.h
include/linux/rk_fb.h

index c0a933148e21d47a4bffb28d69a54f8fddb13b6f..4cfa11e8f3f59bfaffd6ede5ed9e73aa52929bb1 100755 (executable)
@@ -56,6 +56,8 @@
        pinctrl-0 = <&lcdc0_lcdc>;
        pinctrl-1 = <&lcdc0_gpio>;
 
+       rockchip,fb-win-map = <FB_DEFAULT_ORDER>;
+
        power_ctr: power_ctr {
                rockchip,debug = <0>;
                lcd_en: lcd_en {
index 79f5ac6dd7ad11ef863cbf3e4dd1c9e308070821..9eaf8a89edbcb9398556da57acfb19478bf89682 100755 (executable)
 
 &lcdc {
        status = "okay";
+       rockchip,fb-win-map = <FB0_WIN1_FB1_WIN0_FB2_WIN2>;
 };
 
 &tve {
index 42363b928c426fb4a3a778ab5a85e2710ec4ffa4..68447b0704e637a0bec49b910d5aa606126c35b2 100755 (executable)
@@ -41,6 +41,7 @@
        pinctrl-0 = <&lcdc0_lcdc>;
        pinctrl-1 = <&lcdc0_gpio>;
 
+       rockchip,fb-win-map = <FB_DEFAULT_ORDER>;
        power_ctr: power_ctr {
                rockchip,debug = <0>;
                lcd_cs: lcd_cs {
index 0c6ddb4f9075ab280f56d76fe9457b48b07962fd..aed0180bc6c885a29aedda9ded4822608c87f0d6 100755 (executable)
@@ -1237,8 +1237,7 @@ static int rk3036_lcdc_set_overscan(struct rk_lcdc_driver *dev_drv,
        return 0;
 }
 
-static int rk3036_fb_win_remap(struct rk_lcdc_driver *dev_drv,
-                              enum fb_win_map_order order)
+static int rk3036_fb_win_remap(struct rk_lcdc_driver *dev_drv, u16 order)
 {
        mutex_lock(&dev_drv->fb_win_id_mutex);
        if (order == FB_DEFAULT_ORDER)
@@ -1409,10 +1408,10 @@ static struct rk_lcdc_drv_ops lcdc_drv_ops = {
 
 static int rk3036_lcdc_parse_dt(struct lcdc_device *lcdc_dev)
 {
-#if defined(CONFIG_ROCKCHIP_IOMMU)
        struct device_node *np = lcdc_dev->dev->of_node;
        int val;
 
+#if defined(CONFIG_ROCKCHIP_IOMMU)
        if (of_property_read_u32(np, "rockchip,iommu-enabled", &val))
                lcdc_dev->driver.iommu_enabled = 0;
        else
@@ -1420,6 +1419,11 @@ static int rk3036_lcdc_parse_dt(struct lcdc_device *lcdc_dev)
 #else
        lcdc_dev->driver.iommu_enabled = 0;
 #endif
+       if (of_property_read_u32(np, "rockchip,fb-win-map", &val))
+               lcdc_dev->driver.fb_win_map = FB_DEFAULT_ORDER;
+       else
+               lcdc_dev->driver.fb_win_map = val;
+
        return 0;
 }
 
index 136cae9456123a1ed6af50e73cf778116bbf1b4d..eb05976dcdf3da625d0c785480eea02b745bb7c5 100755 (executable)
@@ -1676,8 +1676,7 @@ static int rk312x_lcdc_open_bcsh(struct rk_lcdc_driver *dev_drv, bool open)
        return 0;
 }
 
-static int rk312x_fb_win_remap(struct rk_lcdc_driver *dev_drv,
-                              enum fb_win_map_order order)
+static int rk312x_fb_win_remap(struct rk_lcdc_driver *dev_drv, u16 order)
 {
        mutex_lock(&dev_drv->fb_win_id_mutex);
        if (order == FB_DEFAULT_ORDER)
@@ -2039,6 +2038,12 @@ static int rk312x_lcdc_parse_dt(struct lcdc_device *lcdc_dev)
 #else
        lcdc_dev->driver.iommu_enabled = 0;
 #endif
+
+       if (of_property_read_u32(np, "rockchip,fb-win-map", &val))
+               lcdc_dev->driver.fb_win_map = FB_DEFAULT_ORDER;
+       else
+               lcdc_dev->driver.fb_win_map = val;
+
         match = of_match_node(rk312x_lcdc_dt_ids, np);
         if (match) {
                 lcdc_drvdata = (const struct rk_lcdc_drvdata *)match->data;
index 7ed1718393f0853a48227e97261a4d5ada9b30b6..ff2dcb638a2ccde49c2a806e86cba1391f1cc016 100755 (executable)
@@ -1300,8 +1300,7 @@ static int rk3188_lcdc_fps_mgr(struct rk_lcdc_driver *dev_drv, int fps,
        return fps;
 }
 
-static int rk3188_fb_win_remap(struct rk_lcdc_driver *dev_drv,
-                              enum fb_win_map_order order)
+static int rk3188_fb_win_remap(struct rk_lcdc_driver *dev_drv, u16 order)
 {
        mutex_lock(&dev_drv->fb_win_id_mutex);
        if (order == FB_DEFAULT_ORDER)
@@ -1524,6 +1523,12 @@ static int rk3188_lcdc_parse_dt(struct lcdc_device *lcdc_dev)
                lcdc_dev->pwr18 = false;        /*default set it as 3.xv power supply */
        else
                lcdc_dev->pwr18 = (val ? true : false);
+
+       if (of_property_read_u32(np, "rockchip,fb-win-map", &val))
+               lcdc_dev->driver.fb_win_map = FB_DEFAULT_ORDER;
+       else
+               lcdc_dev->driver.fb_win_map = val;
+
        return 0;
 }
 
index cfc6e7c83ea46b1679eb7f58b11ae2923040bd15..95386b82dcc656ef54a6af9fd67ab85c04c0919f 100755 (executable)
@@ -2963,8 +2963,7 @@ static int rk3288_lcdc_fps_mgr(struct rk_lcdc_driver *dev_drv, int fps,
        return fps;
 }
 
-static int rk3288_fb_win_remap(struct rk_lcdc_driver *dev_drv,
-                              enum fb_win_map_order order)
+static int rk3288_fb_win_remap(struct rk_lcdc_driver *dev_drv, u16 order)
 {
        mutex_lock(&dev_drv->fb_win_id_mutex);
        if (order == FB_DEFAULT_ORDER)
@@ -3605,6 +3604,11 @@ static int rk3288_lcdc_parse_dt(struct lcdc_device *lcdc_dev)
        else
                lcdc_dev->pwr18 = (val ? true : false);
 
+       if (of_property_read_u32(np, "rockchip,fb-win-map", &val))
+               dev_drv->fb_win_map = FB_DEFAULT_ORDER;
+       else
+               dev_drv->fb_win_map = val;
+
        if (of_property_read_u32(np, "rockchip,bcsh-en", &val))
                dev_drv->bcsh.enable = false;
        else
index eea56c3ddc9d528b7bd3832adbae4a3b40cf12d2..0c412dcb8459a66ade61164c7201d24a0692457d 100755 (executable)
@@ -3569,7 +3569,7 @@ static int init_lcdc_device_driver(struct rk_fb *rk_fb,
        init_completion(&dev_drv->frame_done);
        spin_lock_init(&dev_drv->cpl_lock);
        mutex_init(&dev_drv->fb_win_id_mutex);
-       dev_drv->ops->fb_win_remap(dev_drv, FB_DEFAULT_ORDER);
+       dev_drv->ops->fb_win_remap(dev_drv, dev_drv->fb_win_map);
        dev_drv->first_frame = 1;
        dev_drv->overscan.left = 100;
        dev_drv->overscan.top = 100;
index 4ee91d4bc0d313383c3491a7f2b87a73680e7141..03e4016772cf25b447560f57087199110ff2c137 100755 (executable)
 #define COLOR_RGB      0
 #define COLOR_YCBCR    1
 
+/* fb win map */
+#define FB_DEFAULT_ORDER               0
+#define FB0_WIN2_FB1_WIN1_FB2_WIN0     12
+#define FB0_WIN1_FB1_WIN2_FB2_WIN0     21
+#define FB0_WIN2_FB1_WIN0_FB2_WIN1     102
+#define FB0_WIN0_FB1_WIN2_FB2_WIN1     120
+#define FB0_WIN0_FB1_WIN1_FB2_WIN2     210
+#define FB0_WIN1_FB1_WIN0_FB2_WIN2     201
+#define FB0_WIN0_FB1_WIN1_FB2_WIN2_FB3_WIN3    3210
+
 /*             lvds connect config       
  *                                        
  *             LVDS_8BIT_1    LVDS_8BIT_2     LVDS_8BIT_3     LVDS_6BIT
index f86ffbbbb0ccc7c2c7c77b843358aba16600c9c8..be9762f6bb8172608df2432e47b65251023f28a1 100755 (executable)
@@ -214,17 +214,6 @@ enum data_format {
        YUV444_A,       
 };
 
-enum fb_win_map_order {
-       FB_DEFAULT_ORDER = 0,
-       FB0_WIN2_FB1_WIN1_FB2_WIN0 = 12,
-       FB0_WIN1_FB1_WIN2_FB2_WIN0 = 21,
-       FB0_WIN2_FB1_WIN0_FB2_WIN1 = 102,
-       FB0_WIN0_FB1_WIN2_FB2_WIN1 = 120,
-       FB0_WIN0_FB1_WIN1_FB2_WIN2 = 210,
-       FB0_WIN1_FB1_WIN0_FB2_WIN2 = 201,
-       FB0_WIN0_FB1_WIN1_FB2_WIN2_FB3_WIN3 = 3210,
-};
-
 enum
 {
        SCALE_NONE = 0x0,
@@ -427,7 +416,7 @@ struct rk_lcdc_drv_ops {
        int (*fps_mgr) (struct rk_lcdc_driver *dev_drv, int fps, bool set);
        int (*fb_get_win_id) (struct rk_lcdc_driver *dev_drv, const char *id);  /*find layer for fb*/
        int (*fb_win_remap) (struct rk_lcdc_driver *dev_drv,
-                              enum fb_win_map_order order);
+                            u16 fb_win_map_order);
        int (*set_dsp_lut) (struct rk_lcdc_driver *dev_drv, int *lut);
        int (*read_dsp_lut) (struct rk_lcdc_driver *dev_drv, int *lut);
        int (*lcdc_hdmi_process) (struct rk_lcdc_driver *dev_drv, int mode);    /*some lcdc need to some process in hdmi mode*/
@@ -559,6 +548,7 @@ struct rk_lcdc_driver {
        u16 overlay_mode;
        u16 output_color;
 
+       u16 fb_win_map;
        char fb0_win_id;
        char fb1_win_id;
        char fb2_win_id;