rockchip:lcdc: add set default fb_win_map order at dts

This commit is contained in:
zwl
2014-08-26 20:16:31 +08:00
parent 1084ae8922
commit 026cf2550b
10 changed files with 44 additions and 22 deletions

View File

@@ -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 {

View File

@@ -137,6 +137,7 @@
&lcdc {
status = "okay";
rockchip,fb-win-map = <FB0_WIN1_FB1_WIN0_FB2_WIN2>;
};
&tve {

View File

@@ -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 {

View File

@@ -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;
}

View File

@@ -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;

View File

@@ -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;
}

View File

@@ -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

View File

@@ -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;

View File

@@ -48,6 +48,16 @@
#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

View File

@@ -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;