mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-08 11:50:43 +09:00
rockchip:lcdc: add set default fb_win_map order at dts
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -137,6 +137,7 @@
|
||||
|
||||
&lcdc {
|
||||
status = "okay";
|
||||
rockchip,fb-win-map = <FB0_WIN1_FB1_WIN0_FB2_WIN2>;
|
||||
};
|
||||
|
||||
&tve {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user