* [U-Boot] [PATCH 00/13] video: exynos: Add DT support for exynos_fb and exynos_dp drivers
@ 2013-02-22 9:52 Ajay Kumar
2013-02-22 9:52 ` [U-Boot] [PATCH 01/13] video: exynos_fb: Remove callbacks from the driver Ajay Kumar
` (14 more replies)
0 siblings, 15 replies; 19+ messages in thread
From: Ajay Kumar @ 2013-02-22 9:52 UTC (permalink / raw)
To: u-boot
Ajay Kumar (13):
[PATCH 01/13] video: exynos_fb: Remove callbacks from the driver
[PATCH 02/13] video: exynos_dp: Remove callbacks from the driver
[PATCH 03/13] video: exynos_fb: Make fimd_ctrl global
[PATCH 04/13] EXYNOS: FDT: Add compatible strings for FIMD
[PATCH 05/13] video: exynos_fb: add DT support for FIMD driver
[PATCH 06/13] EXYNOS5: Add device node for FIMD
[PATCH 07/13] SMDK5250: Add device node for FIMD
[PATCH 08/13] video: exynos_dp: Make dp_regs global
[PATCH 09/13] EXYNOS5: FDT: Add compatible strings for FIMD
[PATCH 10/13] video: exynos_dp: Add function to parse DP DT node
[PATCH 11/13] EXYNOS5: Add device node for DP
[PATCH 12/13] SMDK5250: Add device node for DP
[PATCH 13/13] SMDK5250: Use statically defined structures only in non DT case
arch/arm/dts/exynos5250.dtsi | 13 ++
arch/arm/include/asm/arch-exynos/dp_info.h | 1 -
board/samsung/dts/exynos5250-smdk5250.dts | 40 +++++
board/samsung/smdk5250/smdk5250.c | 16 +-
board/samsung/trats/trats.c | 6 +-
board/samsung/universal_c210/universal.c | 23 +--
doc/device-tree-bindings/video/exynos-dp.txt | 69 ++++++++
doc/device-tree-bindings/video/exynos-fb.txt | 92 +++++++++++
drivers/video/exynos_dp.c | 76 ++++++++-
drivers/video/exynos_dp_lowlevel.c | 69 +++-----
drivers/video/exynos_dp_lowlevel.h | 1 +
drivers/video/exynos_fb.c | 230 +++++++++++++++++++++++++--
drivers/video/exynos_fimd.c | 44 +++--
include/fdtdec.h | 2 +
include/lcd.h | 9 --
lib/fdtdec.c | 2 +
16 files changed, 574 insertions(+), 119 deletions(-)
create mode 100644 doc/device-tree-bindings/video/exynos-dp.txt
create mode 100644 doc/device-tree-bindings/video/exynos-fb.txt
--
1.8.0
^ permalink raw reply [flat|nested] 19+ messages in thread
* [U-Boot] [PATCH 01/13] video: exynos_fb: Remove callbacks from the driver
2013-02-22 9:52 [U-Boot] [PATCH 00/13] video: exynos: Add DT support for exynos_fb and exynos_dp drivers Ajay Kumar
@ 2013-02-22 9:52 ` Ajay Kumar
2013-03-13 0:13 ` Simon Glass
2013-02-22 9:52 ` [U-Boot] [PATCH 02/13] video: exynos_dp: " Ajay Kumar
` (13 subsequent siblings)
14 siblings, 1 reply; 19+ messages in thread
From: Ajay Kumar @ 2013-02-22 9:52 UTC (permalink / raw)
To: u-boot
Replaced the functionality of callbacks by using a standard set of functions.
Instead of implementing and hooking up a callback, put the same code in one of
the standard set of functions by overriding it.
This patch is tested only on SMDK5250.
For Trats and universal_c210 board, it is only compile tested.
Signed-off-by: Ajay Kumar <ajaykumar.rs@samsung.com>
---
board/samsung/smdk5250/smdk5250.c | 6 +--
board/samsung/trats/trats.c | 6 +--
board/samsung/universal_c210/universal.c | 23 ++++++-----
drivers/video/exynos_fb.c | 67 ++++++++++++++++++++++++--------
include/lcd.h | 9 -----
5 files changed, 66 insertions(+), 45 deletions(-)
diff --git a/board/samsung/smdk5250/smdk5250.c b/board/samsung/smdk5250/smdk5250.c
index ffc5ee5..43673a5 100644
--- a/board/samsung/smdk5250/smdk5250.c
+++ b/board/samsung/smdk5250/smdk5250.c
@@ -391,7 +391,7 @@ int board_early_init_f(void)
#endif
#ifdef CONFIG_LCD
-void cfg_lcd_gpio(void)
+void exynos_cfg_lcd_gpio(void)
{
struct exynos5_gpio_part1 *gpio1 =
(struct exynos5_gpio_part1 *) samsung_get_base_gpio_part1();
@@ -431,10 +431,6 @@ vidinfo_t panel_info = {
.vl_cmd_allow_len = 0xf,
.win_id = 3,
- .cfg_gpio = cfg_lcd_gpio,
- .backlight_on = NULL,
- .lcd_power_on = NULL,
- .reset_lcd = NULL,
.dual_lcd_enabled = 0,
.init_delay = 0,
diff --git a/board/samsung/trats/trats.c b/board/samsung/trats/trats.c
index 88d193d..657ba41 100644
--- a/board/samsung/trats/trats.c
+++ b/board/samsung/trats/trats.c
@@ -634,7 +634,7 @@ int board_early_init_f(void)
return 0;
}
-static void lcd_reset(void)
+void exynos_reset_lcd(void)
{
struct exynos4_gpio_part2 *gpio2 =
(struct exynos4_gpio_part2 *)samsung_get_base_gpio_part2();
@@ -754,10 +754,6 @@ vidinfo_t panel_info = {
.vl_cmd_allow_len = 0xf,
.win_id = 3,
- .cfg_gpio = NULL,
- .backlight_on = NULL,
- .lcd_power_on = NULL, /* lcd_power_on in mipi dsi driver */
- .reset_lcd = lcd_reset,
.dual_lcd_enabled = 0,
.init_delay = 0,
diff --git a/board/samsung/universal_c210/universal.c b/board/samsung/universal_c210/universal.c
index e742707..9b2770f 100644
--- a/board/samsung/universal_c210/universal.c
+++ b/board/samsung/universal_c210/universal.c
@@ -384,7 +384,7 @@ static void init_pmic_lcd(void)
puts("LCD pmic initialisation error!\n");
}
-static void lcd_cfg_gpio(void)
+void exynos_cfg_lcd_gpio(void)
{
unsigned int i, f3_end = 4;
@@ -423,7 +423,7 @@ static void lcd_cfg_gpio(void)
spi_init();
}
-static void reset_lcd(void)
+void exynos_reset_lcd(void)
{
s5p_gpio_set_value(&gpio2->y4, 5, 1);
udelay(10000);
@@ -433,7 +433,7 @@ static void reset_lcd(void)
udelay(100);
}
-static void lcd_power_on(void)
+void exynos_lcd_power_on(void)
{
struct pmic *p = pmic_get("MAX8998_PMIC");
@@ -471,10 +471,6 @@ vidinfo_t panel_info = {
.vl_cmd_allow_len = 0xf,
.win_id = 0,
- .cfg_gpio = lcd_cfg_gpio,
- .backlight_on = NULL,
- .lcd_power_on = lcd_power_on,
- .reset_lcd = reset_lcd,
.dual_lcd_enabled = 0,
.init_delay = 0,
@@ -484,6 +480,16 @@ vidinfo_t panel_info = {
.mipi_enabled = 0,
};
+void exynos_cfg_ldo(void)
+{
+ ld9040_cfg_ldo();
+}
+
+void exynos_enable_ldo(unsigned int onoff)
+{
+ ld9040_enable_ldo(onoff);
+}
+
void init_panel_info(vidinfo_t *vid)
{
vid->logo_on = 1;
@@ -498,9 +504,6 @@ void init_panel_info(vidinfo_t *vid)
vid->pclk_name = 1; /* MPLL */
vid->sclk_div = 1;
- vid->cfg_ldo = ld9040_cfg_ldo;
- vid->enable_ldo = ld9040_enable_ldo;
-
setenv("lcdinfo", "lcd=ld9040");
}
diff --git a/drivers/video/exynos_fb.c b/drivers/video/exynos_fb.c
index ee0ed06..a2637df 100644
--- a/drivers/video/exynos_fb.c
+++ b/drivers/video/exynos_fb.c
@@ -93,37 +93,72 @@ static void draw_logo(void)
}
#endif
+void __exynos_cfg_lcd_gpio(void)
+{
+}
+void exynos_cfg_lcd_gpio(void)
+ __attribute__((weak, alias("__exynos_cfg_lcd_gpio")));
+
+void __exynos_backlight_on(unsigned int onoff)
+{
+}
+void exynos_backlight_on(unsigned int onoff)
+ __attribute__((weak, alias("__exynos_cfg_lcd_gpio")));
+
+void __exynos_reset_lcd(void)
+{
+}
+void exynos_reset_lcd(void)
+ __attribute__((weak, alias("__exynos_reset_lcd")));
+
+void __exynos_lcd_power_on(void)
+{
+}
+void exynos_lcd_power_on(void)
+ __attribute__((weak, alias("__exynos_lcd_power_on")));
+
+void __exynos_cfg_ldo(void)
+{
+}
+void exynos_cfg_ldo(void)
+ __attribute__((weak, alias("__exynos_cfg_ldo")));
+
+void __exynos_enable_ldo(unsigned int onoff)
+{
+}
+void exynos_enable_ldo(unsigned int onoff)
+ __attribute__((weak, alias("__exynos_enable_ldo")));
+
+void __exynos_backlight_reset(void)
+{
+}
+void exynos_backlight_reset(void)
+ __attribute__((weak, alias("__exynos_backlight_reset")));
+
static void lcd_panel_on(vidinfo_t *vid)
{
udelay(vid->init_delay);
- if (vid->backlight_reset)
- vid->backlight_reset();
+ exynos_backlight_reset();
- if (vid->cfg_gpio)
- vid->cfg_gpio();
+ exynos_cfg_lcd_gpio();
- if (vid->lcd_power_on)
- vid->lcd_power_on();
+ exynos_lcd_power_on();
udelay(vid->power_on_delay);
if (vid->dp_enabled)
exynos_init_dp();
- if (vid->reset_lcd) {
- vid->reset_lcd();
- udelay(vid->reset_delay);
- }
+ exynos_reset_lcd();
+
+ udelay(vid->reset_delay);
- if (vid->backlight_on)
- vid->backlight_on(1);
+ exynos_backlight_on(1);
- if (vid->cfg_ldo)
- vid->cfg_ldo();
+ exynos_cfg_ldo();
- if (vid->enable_ldo)
- vid->enable_ldo(1);
+ exynos_enable_ldo(1);
if (vid->mipi_enabled)
exynos_mipi_dsi_init();
diff --git a/include/lcd.h b/include/lcd.h
index c24164a..13bd01e 100644
--- a/include/lcd.h
+++ b/include/lcd.h
@@ -233,15 +233,6 @@ typedef struct vidinfo {
u_char vl_vbpd; /* Wait end of frame */
u_char vl_cmd_allow_len; /* Wait end of frame */
- void (*cfg_gpio)(void);
- void (*backlight_on)(unsigned int onoff);
- void (*reset_lcd)(void);
- void (*lcd_power_on)(void);
- void (*cfg_ldo)(void);
- void (*enable_ldo)(unsigned int onoff);
- void (*mipi_power)(void);
- void (*backlight_reset)(void);
-
unsigned int win_id;
unsigned int init_delay;
unsigned int power_on_delay;
--
1.8.0
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [U-Boot] [PATCH 02/13] video: exynos_dp: Remove callbacks from the driver
2013-02-22 9:52 [U-Boot] [PATCH 00/13] video: exynos: Add DT support for exynos_fb and exynos_dp drivers Ajay Kumar
2013-02-22 9:52 ` [U-Boot] [PATCH 01/13] video: exynos_fb: Remove callbacks from the driver Ajay Kumar
@ 2013-02-22 9:52 ` Ajay Kumar
2013-02-22 9:52 ` [U-Boot] [PATCH 03/13] video: exynos_fb: Make fimd_ctrl global Ajay Kumar
` (12 subsequent siblings)
14 siblings, 0 replies; 19+ messages in thread
From: Ajay Kumar @ 2013-02-22 9:52 UTC (permalink / raw)
To: u-boot
Replaced the functionality of callbacks by using a standard set of functions.
Instead of implementing and hooking up a callback, put the same code in one of
the standard set of functions by overriding it.
Signed-off-by: Ajay Kumar <ajaykumar.rs@samsung.com>
---
arch/arm/include/asm/arch-exynos/dp_info.h | 1 -
board/samsung/smdk5250/smdk5250.c | 6 +++++-
drivers/video/exynos_dp.c | 9 +++++++--
3 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/arch/arm/include/asm/arch-exynos/dp_info.h b/arch/arm/include/asm/arch-exynos/dp_info.h
index 102b709..ff16361 100644
--- a/arch/arm/include/asm/arch-exynos/dp_info.h
+++ b/arch/arm/include/asm/arch-exynos/dp_info.h
@@ -199,7 +199,6 @@ enum {
struct exynos_dp_platform_data {
struct edp_device_info *edp_dev_info;
- void (*phy_enable)(unsigned int);
};
#ifdef CONFIG_EXYNOS_DP
diff --git a/board/samsung/smdk5250/smdk5250.c b/board/samsung/smdk5250/smdk5250.c
index 43673a5..9e1e5db 100644
--- a/board/samsung/smdk5250/smdk5250.c
+++ b/board/samsung/smdk5250/smdk5250.c
@@ -440,6 +440,11 @@ vidinfo_t panel_info = {
.dp_enabled = 1,
};
+void exynos_set_dp_phy(unsigned int onoff)
+{
+ set_dp_phy_ctrl(onoff);
+}
+
static struct edp_device_info edp_info = {
.disp_info = {
.h_res = 2560,
@@ -470,7 +475,6 @@ static struct edp_device_info edp_info = {
};
static struct exynos_dp_platform_data dp_platform_data = {
- .phy_enable = set_dp_phy_ctrl,
.edp_dev_info = &edp_info,
};
diff --git a/drivers/video/exynos_dp.c b/drivers/video/exynos_dp.c
index d72fa56..b2accc7 100644
--- a/drivers/video/exynos_dp.c
+++ b/drivers/video/exynos_dp.c
@@ -32,6 +32,12 @@
static struct exynos_dp_platform_data *dp_pd;
+void __exynos_set_dp_phy(unsigned int onoff)
+{
+}
+void exynos_set_dp_phy(unsigned int onoff)
+ __attribute__((weak, alias("__exynos_set_dp_phy")));
+
static void exynos_dp_disp_info(struct edp_disp_info *disp_info)
{
disp_info->h_total = disp_info->h_res + disp_info->h_sync_width +
@@ -872,8 +878,7 @@ unsigned int exynos_init_dp(void)
exynos_dp_disp_info(&edp_info->disp_info);
- if (dp_pd->phy_enable)
- dp_pd->phy_enable(1);
+ exynos_set_dp_phy(1);
ret = exynos_dp_init_dp();
if (ret != EXYNOS_DP_SUCCESS) {
--
1.8.0
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [U-Boot] [PATCH 03/13] video: exynos_fb: Make fimd_ctrl global
2013-02-22 9:52 [U-Boot] [PATCH 00/13] video: exynos: Add DT support for exynos_fb and exynos_dp drivers Ajay Kumar
2013-02-22 9:52 ` [U-Boot] [PATCH 01/13] video: exynos_fb: Remove callbacks from the driver Ajay Kumar
2013-02-22 9:52 ` [U-Boot] [PATCH 02/13] video: exynos_dp: " Ajay Kumar
@ 2013-02-22 9:52 ` Ajay Kumar
2013-02-22 9:53 ` [U-Boot] [PATCH 04/13] EXYNOS: FDT: Add compatible strings for FIMD Ajay Kumar
` (11 subsequent siblings)
14 siblings, 0 replies; 19+ messages in thread
From: Ajay Kumar @ 2013-02-22 9:52 UTC (permalink / raw)
To: u-boot
fimd_ctrl variable was redundantly defined across all the functions in
the driver even though it contains just the same address. We make it
global and initialize it in exynos_fimd_lcd_init. From then on, other
funtions can use the data in the global variable.
Signed-off-by: Ajay Kumar <ajaykumar.rs@samsung.com>
---
drivers/video/exynos_fimd.c | 27 ++-------------------------
1 file changed, 2 insertions(+), 25 deletions(-)
diff --git a/drivers/video/exynos_fimd.c b/drivers/video/exynos_fimd.c
index 2efe6a6..675d9e1 100644
--- a/drivers/video/exynos_fimd.c
+++ b/drivers/video/exynos_fimd.c
@@ -32,6 +32,7 @@
static unsigned long *lcd_base_addr;
static vidinfo_t *pvid;
+static struct exynos_fb *fimd_ctrl;
void exynos_fimd_lcd_init_mem(u_long screen_base, u_long fb_size,
u_long palette_size)
@@ -41,8 +42,6 @@ void exynos_fimd_lcd_init_mem(u_long screen_base, u_long fb_size,
static void exynos_fimd_set_dualrgb(unsigned int enabled)
{
- struct exynos_fb *fimd_ctrl =
- (struct exynos_fb *)samsung_get_base_fimd();
unsigned int cfg = 0;
if (enabled) {
@@ -59,9 +58,6 @@ static void exynos_fimd_set_dualrgb(unsigned int enabled)
static void exynos_fimd_set_dp_clkcon(unsigned int enabled)
{
-
- struct exynos_fb *fimd_ctrl =
- (struct exynos_fb *)samsung_get_base_fimd();
unsigned int cfg = 0;
if (enabled)
@@ -73,8 +69,6 @@ static void exynos_fimd_set_dp_clkcon(unsigned int enabled)
static void exynos_fimd_set_par(unsigned int win_id)
{
unsigned int cfg = 0;
- struct exynos_fb *fimd_ctrl =
- (struct exynos_fb *)samsung_get_base_fimd();
/* set window control */
cfg = readl((unsigned int)&fimd_ctrl->wincon0 +
@@ -126,8 +120,6 @@ static void exynos_fimd_set_par(unsigned int win_id)
static void exynos_fimd_set_buffer_address(unsigned int win_id)
{
unsigned long start_addr, end_addr;
- struct exynos_fb *fimd_ctrl =
- (struct exynos_fb *)samsung_get_base_fimd();
start_addr = (unsigned long)lcd_base_addr;
end_addr = start_addr + ((pvid->vl_col * (NBITS(pvid->vl_bpix) / 8)) *
@@ -144,8 +136,6 @@ static void exynos_fimd_set_clock(vidinfo_t *pvid)
unsigned int cfg = 0, div = 0, remainder, remainder_div;
unsigned long pixel_clock;
unsigned long long src_clock;
- struct exynos_fb *fimd_ctrl =
- (struct exynos_fb *)samsung_get_base_fimd();
if (pvid->dual_lcd_enabled) {
pixel_clock = pvid->vl_freq *
@@ -197,8 +187,6 @@ static void exynos_fimd_set_clock(vidinfo_t *pvid)
void exynos_set_trigger(void)
{
unsigned int cfg = 0;
- struct exynos_fb *fimd_ctrl =
- (struct exynos_fb *)samsung_get_base_fimd();
cfg = readl(&fimd_ctrl->trigcon);
@@ -211,8 +199,6 @@ int exynos_is_i80_frame_done(void)
{
unsigned int cfg = 0;
int status;
- struct exynos_fb *fimd_ctrl =
- (struct exynos_fb *)samsung_get_base_fimd();
cfg = readl(&fimd_ctrl->trigcon);
@@ -226,8 +212,6 @@ int exynos_is_i80_frame_done(void)
static void exynos_fimd_lcd_on(void)
{
unsigned int cfg = 0;
- struct exynos_fb *fimd_ctrl =
- (struct exynos_fb *)samsung_get_base_fimd();
/* display on */
cfg = readl(&fimd_ctrl->vidcon0);
@@ -238,8 +222,6 @@ static void exynos_fimd_lcd_on(void)
static void exynos_fimd_window_on(unsigned int win_id)
{
unsigned int cfg = 0;
- struct exynos_fb *fimd_ctrl =
- (struct exynos_fb *)samsung_get_base_fimd();
/* enable window */
cfg = readl((unsigned int)&fimd_ctrl->wincon0 +
@@ -256,8 +238,6 @@ static void exynos_fimd_window_on(unsigned int win_id)
void exynos_fimd_lcd_off(void)
{
unsigned int cfg = 0;
- struct exynos_fb *fimd_ctrl =
- (struct exynos_fb *)samsung_get_base_fimd();
cfg = readl(&fimd_ctrl->vidcon0);
cfg &= (EXYNOS_VIDCON0_ENVID_DISABLE | EXYNOS_VIDCON0_ENVID_F_DISABLE);
@@ -267,8 +247,6 @@ void exynos_fimd_lcd_off(void)
void exynos_fimd_window_off(unsigned int win_id)
{
unsigned int cfg = 0;
- struct exynos_fb *fimd_ctrl =
- (struct exynos_fb *)samsung_get_base_fimd();
cfg = readl((unsigned int)&fimd_ctrl->wincon0 +
EXYNOS_WINCON(win_id));
@@ -286,8 +264,7 @@ void exynos_fimd_lcd_init(vidinfo_t *vid)
{
unsigned int cfg = 0, rgb_mode;
unsigned int offset;
- struct exynos_fb *fimd_ctrl =
- (struct exynos_fb *)samsung_get_base_fimd();
+ fimd_ctrl = (struct exynos_fb *)samsung_get_base_fimd();
offset = exynos_fimd_get_base_offset();
--
1.8.0
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [U-Boot] [PATCH 04/13] EXYNOS: FDT: Add compatible strings for FIMD
2013-02-22 9:52 [U-Boot] [PATCH 00/13] video: exynos: Add DT support for exynos_fb and exynos_dp drivers Ajay Kumar
` (2 preceding siblings ...)
2013-02-22 9:52 ` [U-Boot] [PATCH 03/13] video: exynos_fb: Make fimd_ctrl global Ajay Kumar
@ 2013-02-22 9:53 ` Ajay Kumar
2013-02-22 9:53 ` [U-Boot] [PATCH 05/13] video: exynos_fb: add DT support for FIMD driver Ajay Kumar
` (10 subsequent siblings)
14 siblings, 0 replies; 19+ messages in thread
From: Ajay Kumar @ 2013-02-22 9:53 UTC (permalink / raw)
To: u-boot
Add required compatible information for FIMD.
Signed-off-by: Ajay Kumar <ajaykumar.rs@samsung.com>
---
include/fdtdec.h | 1 +
lib/fdtdec.c | 1 +
2 files changed, 2 insertions(+)
diff --git a/include/fdtdec.h b/include/fdtdec.h
index 77f244f..b9d1270 100644
--- a/include/fdtdec.h
+++ b/include/fdtdec.h
@@ -81,6 +81,7 @@ enum fdt_compat_id {
COMPAT_SAMSUNG_EXYNOS_EHCI, /* Exynos EHCI controller */
COMPAT_SAMSUNG_EXYNOS_USB_PHY, /* Exynos phy controller for usb2.0 */
COMPAT_MAXIM_MAX77686_PMIC, /* MAX77686 PMIC */
+ COMPAT_SAMSUNG_EXYNOS_FIMD, /* Exynos Display controller */
COMPAT_COUNT,
};
diff --git a/lib/fdtdec.c b/lib/fdtdec.c
index 3ae348d..4f01c7d 100644
--- a/lib/fdtdec.c
+++ b/lib/fdtdec.c
@@ -56,6 +56,7 @@ static const char * const compat_names[COMPAT_COUNT] = {
COMPAT(SAMSUNG_EXYNOS_EHCI, "samsung,exynos-ehci"),
COMPAT(SAMSUNG_EXYNOS_USB_PHY, "samsung,exynos-usb-phy"),
COMPAT(MAXIM_MAX77686_PMIC, "maxim,max77686_pmic"),
+ COMPAT(SAMSUNG_EXYNOS_FIMD, "samsung,exynos-fimd"),
};
const char *fdtdec_get_compatible(enum fdt_compat_id id)
--
1.8.0
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [U-Boot] [PATCH 05/13] video: exynos_fb: add DT support for FIMD driver
2013-02-22 9:52 [U-Boot] [PATCH 00/13] video: exynos: Add DT support for exynos_fb and exynos_dp drivers Ajay Kumar
` (3 preceding siblings ...)
2013-02-22 9:53 ` [U-Boot] [PATCH 04/13] EXYNOS: FDT: Add compatible strings for FIMD Ajay Kumar
@ 2013-02-22 9:53 ` Ajay Kumar
2013-02-22 9:53 ` [U-Boot] [PATCH 06/13] EXYNOS5: Add device node for FIMD Ajay Kumar
` (9 subsequent siblings)
14 siblings, 0 replies; 19+ messages in thread
From: Ajay Kumar @ 2013-02-22 9:53 UTC (permalink / raw)
To: u-boot
Add function to parse FIMD data from device tree.
The driver still supports non-DT case.
Define panel_info statically in some file if you are not using DT.
If you have defined DT node for FIMD, panel_info will be filled
using the bindings of FIMD DT node.
Signed-off-by: Ajay Kumar <ajaykumar.rs@samsung.com>
---
drivers/video/exynos_fb.c | 163 ++++++++++++++++++++++++++++++++++++++++++++
drivers/video/exynos_fimd.c | 17 +++++
2 files changed, 180 insertions(+)
diff --git a/drivers/video/exynos_fb.c b/drivers/video/exynos_fb.c
index a2637df..dfe329f 100644
--- a/drivers/video/exynos_fb.c
+++ b/drivers/video/exynos_fb.c
@@ -23,6 +23,8 @@
#include <config.h>
#include <common.h>
#include <lcd.h>
+#include <fdtdec.h>
+#include <libfdt.h>
#include <asm/io.h>
#include <asm/arch/cpu.h>
#include <asm/arch/clock.h>
@@ -30,9 +32,12 @@
#include <asm/arch/mipi_dsim.h>
#include <asm/arch/dp_info.h>
#include <asm/arch/system.h>
+#include <asm-generic/errno.h>
#include "exynos_fb.h"
+DECLARE_GLOBAL_DATA_PTR;
+
int lcd_line_length;
int lcd_color_fg;
int lcd_color_bg;
@@ -45,6 +50,20 @@ short console_row;
static unsigned int panel_width, panel_height;
+/*
+ * board_init_f(arch/arm/lib/board.c) calls lcd_setmem() which needs
+ * panel_info.vl_col, panel_info.vl_row and panel_info.vl_bpix to reserve
+ * FB memory at a very early stage, i.e even before exynos_fimd_parse_dt()
+ * is called. So, we are forced to statically assign it.
+ */
+#ifdef CONFIG_OF_CONTROL
+vidinfo_t panel_info = {
+ .vl_col = LCD_XRES,
+ .vl_row = LCD_YRES,
+ .vl_bpix = LCD_COLOR16,
+};
+#endif
+
static void exynos_lcd_init_mem(void *lcdbase, vidinfo_t *vid)
{
unsigned long palette_size;
@@ -164,11 +183,155 @@ static void lcd_panel_on(vidinfo_t *vid)
exynos_mipi_dsi_init();
}
+#ifdef CONFIG_OF_CONTROL
+int exynos_fimd_parse_dt(const void *blob)
+{
+ unsigned int node;
+ node = fdtdec_next_compatible(blob, 0, COMPAT_SAMSUNG_EXYNOS_FIMD);
+ if (node <= 0) {
+ debug("exynos_fb: Can't get device node for fimd\n");
+ return -ENODEV;
+ }
+
+ panel_info.vl_col = fdtdec_get_int(blob, node, "samsung,vl-col", 0);
+ if (panel_info.vl_col == 0) {
+ debug("Can't get XRES\n");
+ return -ENXIO;
+ }
+
+ panel_info.vl_row = fdtdec_get_int(blob, node, "samsung,vl-row", 0);
+ if (panel_info.vl_row == 0) {
+ debug("Can't get YRES\n");
+ return -ENXIO;
+ }
+
+ panel_info.vl_width = fdtdec_get_int(blob, node,
+ "samsung,vl-width", 0);
+
+ panel_info.vl_height = fdtdec_get_int(blob, node,
+ "samsung,vl-height", 0);
+
+ panel_info.vl_freq = fdtdec_get_int(blob, node, "samsung,vl-freq", 0);
+ if (panel_info.vl_freq == 0) {
+ debug("Can't get refresh rate\n");
+ return -ENXIO;
+ }
+
+ if (fdtdec_get_bool(blob, node, "samsung,vl-clkp"))
+ panel_info.vl_clkp = CONFIG_SYS_LOW;
+
+ if (fdtdec_get_bool(blob, node, "samsung,vl-oep"))
+ panel_info.vl_oep = CONFIG_SYS_LOW;
+
+ if (fdtdec_get_bool(blob, node, "samsung,vl-hsp"))
+ panel_info.vl_hsp = CONFIG_SYS_LOW;
+
+ if (fdtdec_get_bool(blob, node, "samsung,vl-vsp"))
+ panel_info.vl_vsp = CONFIG_SYS_LOW;
+
+ if (fdtdec_get_bool(blob, node, "samsung,vl-dp"))
+ panel_info.vl_dp = CONFIG_SYS_LOW;
+
+ panel_info.vl_bpix = fdtdec_get_int(blob, node, "samsung,vl-bpix", 0);
+ if (panel_info.vl_bpix == 0) {
+ debug("Can't get bits per pixel\n");
+ return -ENXIO;
+ }
+
+ panel_info.vl_hspw = fdtdec_get_int(blob, node, "samsung,vl-hspw", 0);
+ if (panel_info.vl_hspw == 0) {
+ debug("Can't get hsync width\n");
+ return -ENXIO;
+ }
+
+ panel_info.vl_hfpd = fdtdec_get_int(blob, node, "samsung,vl-hfpd", 0);
+ if (panel_info.vl_hfpd == 0) {
+ debug("Can't get right margin\n");
+ return -ENXIO;
+ }
+
+ panel_info.vl_hbpd = (u_char)fdtdec_get_int(blob, node,
+ "samsung,vl-hbpd", 0);
+ if (panel_info.vl_hbpd == 0) {
+ debug("Can't get left margin\n");
+ return -ENXIO;
+ }
+
+ panel_info.vl_vspw = (u_char)fdtdec_get_int(blob, node,
+ "samsung,vl-vspw", 0);
+ if (panel_info.vl_vspw == 0) {
+ debug("Can't get vsync width\n");
+ return -ENXIO;
+ }
+
+ panel_info.vl_vfpd = fdtdec_get_int(blob, node,
+ "samsung,vl-vfpd", 0);
+ if (panel_info.vl_vfpd == 0) {
+ debug("Can't get lower margin\n");
+ return -ENXIO;
+ }
+
+ panel_info.vl_vbpd = fdtdec_get_int(blob, node, "samsung,vl-vbpd", 0);
+ if (panel_info.vl_vbpd == 0) {
+ debug("Can't get upper margin\n");
+ return -ENXIO;
+ }
+
+ panel_info.vl_cmd_allow_len = fdtdec_get_int(blob, node,
+ "samsung,vl-cmd-allow-len", 0);
+
+ panel_info.win_id = fdtdec_get_int(blob, node, "samsung,winid", 0);
+ panel_info.init_delay = fdtdec_get_int(blob, node,
+ "samsung,init-delay", 0);
+ panel_info.power_on_delay = fdtdec_get_int(blob, node,
+ "samsung,power-on-delay", 0);
+ panel_info.reset_delay = fdtdec_get_int(blob, node,
+ "samsung,reset-delay", 0);
+ panel_info.interface_mode = fdtdec_get_int(blob, node,
+ "samsung,interface-mode", 0);
+ panel_info.mipi_enabled = fdtdec_get_int(blob, node,
+ "samsung,mipi-enabled", 0);
+ panel_info.dp_enabled = fdtdec_get_int(blob, node,
+ "samsung,dp-enabled", 0);
+ panel_info.cs_setup = fdtdec_get_int(blob, node,
+ "samsung,cs-setup", 0);
+ panel_info.wr_setup = fdtdec_get_int(blob, node,
+ "samsung,wr-setup", 0);
+ panel_info.wr_act = fdtdec_get_int(blob, node, "samsung,wr-act", 0);
+ panel_info.wr_hold = fdtdec_get_int(blob, node, "samsung,wr-hold", 0);
+
+ panel_info.logo_on = fdtdec_get_int(blob, node, "samsung,logo-on", 0);
+ if (panel_info.logo_on) {
+ panel_info.logo_width = fdtdec_get_int(blob, node,
+ "samsung,logo-width", 0);
+ panel_info.logo_height = fdtdec_get_int(blob, node,
+ "samsung,logo-height", 0);
+ panel_info.logo_addr = fdtdec_get_int(blob, node,
+ "samsung,logo-addr", 0);
+ }
+
+ panel_info.rgb_mode = fdtdec_get_int(blob, node,
+ "samsung,rgb-mode", 0);
+ panel_info.pclk_name = fdtdec_get_int(blob, node,
+ "samsung,pclk-name", 0);
+ panel_info.sclk_div = fdtdec_get_int(blob, node,
+ "samsung,sclk-div", 0);
+ panel_info.dual_lcd_enabled = fdtdec_get_int(blob, node,
+ "samsung,dual-lcd-enabled", 0);
+
+ return 0;
+}
+#endif
+
void lcd_ctrl_init(void *lcdbase)
{
set_system_display_ctrl();
set_lcd_clk();
+#ifdef CONFIG_OF_CONTROL
+ if (exynos_fimd_parse_dt(gd->fdt_blob))
+ debug("Can't get proper panel info\n");
+#endif
/* initialize parameters which is specific to panel. */
init_panel_info(&panel_info);
diff --git a/drivers/video/exynos_fimd.c b/drivers/video/exynos_fimd.c
index 675d9e1..3359949 100644
--- a/drivers/video/exynos_fimd.c
+++ b/drivers/video/exynos_fimd.c
@@ -25,11 +25,15 @@
#include <asm/io.h>
#include <lcd.h>
#include <div64.h>
+#include <fdtdec.h>
+#include <libfdt.h>
#include <asm/arch/clk.h>
#include <asm/arch/clock.h>
#include <asm/arch/cpu.h>
#include "exynos_fb.h"
+DECLARE_GLOBAL_DATA_PTR;
+
static unsigned long *lcd_base_addr;
static vidinfo_t *pvid;
static struct exynos_fb *fimd_ctrl;
@@ -264,6 +268,19 @@ void exynos_fimd_lcd_init(vidinfo_t *vid)
{
unsigned int cfg = 0, rgb_mode;
unsigned int offset;
+#ifdef CONFIG_OF_CONTROL
+ unsigned int node;
+
+ node = fdtdec_next_compatible(gd->fdt_blob,
+ 0, COMPAT_SAMSUNG_EXYNOS_FIMD);
+ if (node <= 0)
+ debug("exynos_fb: Can't get device node for fimd\n");
+
+ fimd_ctrl = (struct exynos_fb *)fdtdec_get_addr(gd->fdt_blob,
+ node, "reg");
+ if (fimd_ctrl == NULL)
+ debug("Can't get the FIMD base address\n");
+#endif
fimd_ctrl = (struct exynos_fb *)samsung_get_base_fimd();
offset = exynos_fimd_get_base_offset();
--
1.8.0
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [U-Boot] [PATCH 06/13] EXYNOS5: Add device node for FIMD
2013-02-22 9:52 [U-Boot] [PATCH 00/13] video: exynos: Add DT support for exynos_fb and exynos_dp drivers Ajay Kumar
` (4 preceding siblings ...)
2013-02-22 9:53 ` [U-Boot] [PATCH 05/13] video: exynos_fb: add DT support for FIMD driver Ajay Kumar
@ 2013-02-22 9:53 ` Ajay Kumar
2013-02-22 9:53 ` [U-Boot] [PATCH 07/13] SMDK5250: " Ajay Kumar
` (8 subsequent siblings)
14 siblings, 0 replies; 19+ messages in thread
From: Ajay Kumar @ 2013-02-22 9:53 UTC (permalink / raw)
To: u-boot
Add DT node and bindings documentation for FIMD.
Signed-off-by: Ajay Kumar <ajaykumar.rs@samsung.com>
---
arch/arm/dts/exynos5250.dtsi | 6 ++
doc/device-tree-bindings/video/exynos-fb.txt | 92 ++++++++++++++++++++++++++++
2 files changed, 98 insertions(+)
create mode 100644 doc/device-tree-bindings/video/exynos-fb.txt
diff --git a/arch/arm/dts/exynos5250.dtsi b/arch/arm/dts/exynos5250.dtsi
index ed8c8dd..3d8f747 100644
--- a/arch/arm/dts/exynos5250.dtsi
+++ b/arch/arm/dts/exynos5250.dtsi
@@ -151,4 +151,10 @@
};
};
+ fimd at 14400000 {
+ compatible = "samsung,exynos-fimd";
+ reg = <0x14400000 0x10000>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+ };
};
diff --git a/doc/device-tree-bindings/video/exynos-fb.txt b/doc/device-tree-bindings/video/exynos-fb.txt
new file mode 100644
index 0000000..bb7441c
--- /dev/null
+++ b/doc/device-tree-bindings/video/exynos-fb.txt
@@ -0,0 +1,92 @@
+Exynos Display Controller
+=========================
+Required properties:
+SOC specific:
+ compatible: should be "samsung,exynos-fimd"
+ reg: Base address of FIMD IP.
+
+Board(panel specific):
+ samsung,vl-col: X resolution of the panel
+ samsung,vl-row: Y resolution of the panel
+ samsung,vl-freq: Refresh rate
+ samsung,vl-bpix: Bits per pixel
+ samsung,vl-hspw: Hsync value
+ samsung,vl-hfpd: Right margin
+ samsung,vl-hbpd: Left margin
+ samsung,vl-vspw: Vsync value
+ samsung,vl-vfpd: Lower margin
+ samsung,vl-vbpd: Upper margin
+
+Optional properties:
+Board(panel specific):
+ samsung,vl-width: width of display area in mm
+ samsung,vl-height: Height of display area in mm
+
+ samsung,vl-clkp: Clock polarity
+ CONFIG_SYS_LOW if defined, else CONFIG_SYS_HIGH
+ samsung,vl-oep: Output Enable polarity
+ CONFIG_SYS_LOW if defined, else CONFIG_SYS_HIGH
+ samsung,vl-hsp: Horizontal Sync polarity
+ CONFIG_SYS_LOW if defined, else CONFIG_SYS_HIGH
+ samsung,vl-vsp: Vertical Sync polarity
+ CONFIG_SYS_LOW if defined, else CONFIG_SYS_HIGH
+ samsung,vl-dp: Data polarity
+ CONFIG_SYS_LOW if defined, else CONFIG_SYS_HIGH
+
+ samsung,vl-cmd-allow-len: Wait end of frame
+ samsung,winid: Window number on which data is to be displayed
+ samsung,init-delay: Delay before LCD initialization starts
+ samsung,power-on-delay: Delay after LCD is powered on
+ samsung,reset-delay: Delay after LCD is reset
+ samsung,interface-mode: 1(FIMD_RGB_INTERFACE), 2(FIMD_CPU_INTERFACE)
+ samsung,mipi-enabled: 1 if you want to use MIPI, else 0
+ samsung,dp-enabled: 1is you want to use DP, else 0
+ samsung,cs-setup: cs_setup value in FIMD_CPU_INTERFACE mode.
+ samsung,wr-setup: wr_setup value in FIMD_CPU_INTERFACE mode.
+ samsung,wr-act: wr_act value in FIMD_CPU_INTERFACE mode.
+ samsung,wr-hold: wr_hold value in FIMD_CPU_INTERFACE mode.
+ samsung,logo-on: 1 if you want to use custom logo.
+ 0 if you want LCD console.
+ samsung,logo-width: pixel width of logo image. Valid if logo_on = 1
+ samsung,logo-height: pixel height of logo image. Valid if logo_on = 1
+ samsung,logo-addr: Address of logo image. Valid if logo_on = 1
+ samsung,rgb-mode: 0(MODE_RGB_P), 1(MODE_BGR_P),
+ 2(MODE_RGB_S), 3(MODE_BGR_S)
+ samsung,pclk-name: parent clock identifier: 1(MPLL), 2(EPLL), 3(VPLL)
+ samsung,sclk-div: parent_clock/source_clock ratio
+ samsung,dual-lcd-enabled: 1 if you support two LCD, else 0
+
+Example:
+SOC specific part:
+ fimd at 14400000 {
+ compatible = "samsung,exynos-fimd";
+ reg = <0x14400000 0x10000>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+ };
+
+Board specific part:
+ fimd at 14400000 {
+ samsung,vl-freq = <60>;
+ samsung,vl-col = <2560>;
+ samsung,vl-row = <1600>;
+ samsung,vl-width = <2560>;
+ samsung,vl-height = <1600>;
+
+ samsung,vl-clkp;
+ samsung,vl-dp;
+ samsung,vl-bpix = <4>;
+
+ samsung,vl-hspw = <32>;
+ samsung,vl-hbpd = <80>;
+ samsung,vl-hfpd = <48>;
+ samsung,vl-vspw = <6>;
+ samsung,vl-vbpd = <37>;
+ samsung,vl-vfpd = <3>;
+ samsung,vl-cmd-allow-len = <0xf>;
+
+ samsung,winid = <3>;
+ samsung,interface-mode = <1>;
+ samsung,dp-enabled = <1>;
+ samsung,dual-lcd-enabled = <0>;
+ };
--
1.8.0
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [U-Boot] [PATCH 07/13] SMDK5250: Add device node for FIMD
2013-02-22 9:52 [U-Boot] [PATCH 00/13] video: exynos: Add DT support for exynos_fb and exynos_dp drivers Ajay Kumar
` (5 preceding siblings ...)
2013-02-22 9:53 ` [U-Boot] [PATCH 06/13] EXYNOS5: Add device node for FIMD Ajay Kumar
@ 2013-02-22 9:53 ` Ajay Kumar
2013-02-22 9:53 ` [U-Boot] [PATCH 08/13] video: exynos_dp: Make dp_regs global Ajay Kumar
` (7 subsequent siblings)
14 siblings, 0 replies; 19+ messages in thread
From: Ajay Kumar @ 2013-02-22 9:53 UTC (permalink / raw)
To: u-boot
Add DT bindings for FIMD supporting an eDP panel of size 2560x1600.
Signed-off-by: Ajay Kumar <ajaykumar.rs@samsung.com>
---
board/samsung/dts/exynos5250-smdk5250.dts | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/board/samsung/dts/exynos5250-smdk5250.dts b/board/samsung/dts/exynos5250-smdk5250.dts
index cbfab6f..e682d8b 100644
--- a/board/samsung/dts/exynos5250-smdk5250.dts
+++ b/board/samsung/dts/exynos5250-smdk5250.dts
@@ -66,4 +66,29 @@
compatible = "maxim,max77686_pmic";
};
};
+
+ fimd at 14400000 {
+ samsung,vl-freq = <60>;
+ samsung,vl-col = <2560>;
+ samsung,vl-row = <1600>;
+ samsung,vl-width = <2560>;
+ samsung,vl-height = <1600>;
+
+ samsung,vl-clkp;
+ samsung,vl-dp;
+ samsung,vl-bpix = <4>;
+
+ samsung,vl-hspw = <32>;
+ samsung,vl-hbpd = <80>;
+ samsung,vl-hfpd = <48>;
+ samsung,vl-vspw = <6>;
+ samsung,vl-vbpd = <37>;
+ samsung,vl-vfpd = <3>;
+ samsung,vl-cmd-allow-len = <0xf>;
+
+ samsung,winid = <3>;
+ samsung,interface-mode = <1>;
+ samsung,dp-enabled = <1>;
+ samsung,dual-lcd-enabled = <0>;
+ };
};
--
1.8.0
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [U-Boot] [PATCH 08/13] video: exynos_dp: Make dp_regs global
2013-02-22 9:52 [U-Boot] [PATCH 00/13] video: exynos: Add DT support for exynos_fb and exynos_dp drivers Ajay Kumar
` (6 preceding siblings ...)
2013-02-22 9:53 ` [U-Boot] [PATCH 07/13] SMDK5250: " Ajay Kumar
@ 2013-02-22 9:53 ` Ajay Kumar
2013-02-22 9:53 ` [U-Boot] [PATCH 09/13] EXYNOS5: FDT: Add compatible strings for FIMD Ajay Kumar
` (6 subsequent siblings)
14 siblings, 0 replies; 19+ messages in thread
From: Ajay Kumar @ 2013-02-22 9:53 UTC (permalink / raw)
To: u-boot
dp_regs variable was redundantly defined across all the functions in
the driver even though it contains just the same address. We make it
global and initialize it once using exynos_dp_set_base_addr().
^ permalink raw reply [flat|nested] 19+ messages in thread
* [U-Boot] [PATCH 09/13] EXYNOS5: FDT: Add compatible strings for FIMD
2013-02-22 9:52 [U-Boot] [PATCH 00/13] video: exynos: Add DT support for exynos_fb and exynos_dp drivers Ajay Kumar
` (7 preceding siblings ...)
2013-02-22 9:53 ` [U-Boot] [PATCH 08/13] video: exynos_dp: Make dp_regs global Ajay Kumar
@ 2013-02-22 9:53 ` Ajay Kumar
2013-02-22 9:53 ` [U-Boot] [PATCH 10/13] video: exynos_dp: Add function to parse DP DT node Ajay Kumar
` (5 subsequent siblings)
14 siblings, 0 replies; 19+ messages in thread
From: Ajay Kumar @ 2013-02-22 9:53 UTC (permalink / raw)
To: u-boot
Add required compatible information for FIMD.
Signed-off-by: Ajay Kumar <ajaykumar.rs@samsung.com>
---
include/fdtdec.h | 1 +
lib/fdtdec.c | 1 +
2 files changed, 2 insertions(+)
diff --git a/include/fdtdec.h b/include/fdtdec.h
index b9d1270..31fb959 100644
--- a/include/fdtdec.h
+++ b/include/fdtdec.h
@@ -82,6 +82,7 @@ enum fdt_compat_id {
COMPAT_SAMSUNG_EXYNOS_USB_PHY, /* Exynos phy controller for usb2.0 */
COMPAT_MAXIM_MAX77686_PMIC, /* MAX77686 PMIC */
COMPAT_SAMSUNG_EXYNOS_FIMD, /* Exynos Display controller */
+ COMPAT_SAMSUNG_EXYNOS5_DP, /* Exynos Display port controller */
COMPAT_COUNT,
};
diff --git a/lib/fdtdec.c b/lib/fdtdec.c
index 4f01c7d..1ad00a8 100644
--- a/lib/fdtdec.c
+++ b/lib/fdtdec.c
@@ -57,6 +57,7 @@ static const char * const compat_names[COMPAT_COUNT] = {
COMPAT(SAMSUNG_EXYNOS_USB_PHY, "samsung,exynos-usb-phy"),
COMPAT(MAXIM_MAX77686_PMIC, "maxim,max77686_pmic"),
COMPAT(SAMSUNG_EXYNOS_FIMD, "samsung,exynos-fimd"),
+ COMPAT(SAMSUNG_EXYNOS5_DP, "samsung,exynos5-dp"),
};
const char *fdtdec_get_compatible(enum fdt_compat_id id)
--
1.8.0
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [U-Boot] [PATCH 10/13] video: exynos_dp: Add function to parse DP DT node
2013-02-22 9:52 [U-Boot] [PATCH 00/13] video: exynos: Add DT support for exynos_fb and exynos_dp drivers Ajay Kumar
` (8 preceding siblings ...)
2013-02-22 9:53 ` [U-Boot] [PATCH 09/13] EXYNOS5: FDT: Add compatible strings for FIMD Ajay Kumar
@ 2013-02-22 9:53 ` Ajay Kumar
2013-02-22 9:53 ` [U-Boot] [PATCH 11/13] EXYNOS5: Add device node for DP Ajay Kumar
` (4 subsequent siblings)
14 siblings, 0 replies; 19+ messages in thread
From: Ajay Kumar @ 2013-02-22 9:53 UTC (permalink / raw)
To: u-boot
Add function to parse the required platform data fron DP DT node
and fill the edp_info structure.
Signed-off-by: Ajay Kumar <ajaykumar.rs@samsung.com>
---
drivers/video/exynos_dp.c | 65 ++++++++++++++++++++++++++++++++++++++
drivers/video/exynos_dp_lowlevel.c | 17 ++++++++++
2 files changed, 82 insertions(+)
diff --git a/drivers/video/exynos_dp.c b/drivers/video/exynos_dp.c
index 5f4f25e..87bb907 100644
--- a/drivers/video/exynos_dp.c
+++ b/drivers/video/exynos_dp.c
@@ -27,9 +27,13 @@
#include <asm/arch/cpu.h>
#include <asm/arch/dp_info.h>
#include <asm/arch/dp.h>
+#include <fdtdec.h>
+#include <libfdt.h>
#include "exynos_dp_lowlevel.h"
+DECLARE_GLOBAL_DATA_PTR;
+
static struct exynos_dp_platform_data *dp_pd;
void __exynos_set_dp_phy(unsigned int onoff)
@@ -859,6 +863,62 @@ static unsigned int exynos_dp_config_video(struct edp_device_info *edp_info)
return ret;
}
+#ifdef CONFIG_OF_CONTROL
+int exynos_dp_parse_dt(const void *blob, struct edp_device_info *edp_info)
+{
+ unsigned int node = fdtdec_next_compatible(blob, 0,
+ COMPAT_SAMSUNG_EXYNOS5_DP);
+ if (node <= 0) {
+ debug("exynos_dp: Can't get device node for dp\n");
+ return -ENODEV;
+ }
+
+ edp_info->disp_info.h_res = fdtdec_get_int(blob, node,
+ "samsung,h-res", 0);
+ edp_info->disp_info.h_sync_width = fdtdec_get_int(blob, node,
+ "samsung,h-sync-width", 0);
+ edp_info->disp_info.h_back_porch = fdtdec_get_int(blob, node,
+ "samsung,h-back-porch", 0);
+ edp_info->disp_info.h_front_porch = fdtdec_get_int(blob, node,
+ "samsung,h-front-porch", 0);
+ edp_info->disp_info.v_res = fdtdec_get_int(blob, node,
+ "samsung,v-res", 0);
+ edp_info->disp_info.v_sync_width = fdtdec_get_int(blob, node,
+ "samsung,v-sync-width", 0);
+ edp_info->disp_info.v_back_porch = fdtdec_get_int(blob, node,
+ "samsung,v-back-porch", 0);
+ edp_info->disp_info.v_front_porch = fdtdec_get_int(blob, node,
+ "samsung,v-front-porch", 0);
+ edp_info->disp_info.v_sync_rate = fdtdec_get_int(blob, node,
+ "samsung,v-sync-rate", 0);
+
+ edp_info->lt_info.lt_status = fdtdec_get_int(blob, node,
+ "samsung,lt-status", 0);
+
+ edp_info->video_info.master_mode = fdtdec_get_int(blob, node,
+ "samsung,master-mode", 0);
+ edp_info->video_info.bist_mode = fdtdec_get_int(blob, node,
+ "samsung,bist-mode", 0);
+ edp_info->video_info.bist_pattern = fdtdec_get_int(blob, node,
+ "samsung,bist-pattern", 0);
+ edp_info->video_info.h_sync_polarity = fdtdec_get_int(blob, node,
+ "samsung,h-sync-polarity", 0);
+ edp_info->video_info.v_sync_polarity = fdtdec_get_int(blob, node,
+ "samsung,v-sync-polarity", 0);
+ edp_info->video_info.interlaced = fdtdec_get_int(blob, node,
+ "samsung,interlaced", 0);
+ edp_info->video_info.color_space = fdtdec_get_int(blob, node,
+ "samsung,color-space", 0);
+ edp_info->video_info.dynamic_range = fdtdec_get_int(blob, node,
+ "samsung,dynamic-range", 0);
+ edp_info->video_info.ycbcr_coeff = fdtdec_get_int(blob, node,
+ "samsung,ycbcr-coeff", 0);
+ edp_info->video_info.color_depth = fdtdec_get_int(blob, node,
+ "samsung,color-depth", 0);
+ return 0;
+}
+#endif
+
unsigned int exynos_init_dp(void)
{
unsigned int ret;
@@ -870,11 +930,16 @@ unsigned int exynos_init_dp(void)
return -EFAULT;
}
+#ifdef CONFIG_OF_CONTROL
+ if (exynos_dp_parse_dt(gd->fdt_blob, edp_info))
+ debug("unable to parse DP DT node\n");
+#else
edp_info = dp_pd->edp_dev_info;
if (edp_info == NULL) {
debug("failed to get edp_info data.\n");
return -EFAULT;
}
+#endif
exynos_dp_set_base_addr();
diff --git a/drivers/video/exynos_dp_lowlevel.c b/drivers/video/exynos_dp_lowlevel.c
index 0be91a5..748d9b8 100644
--- a/drivers/video/exynos_dp_lowlevel.c
+++ b/drivers/video/exynos_dp_lowlevel.c
@@ -25,12 +25,29 @@
#include <asm/arch/cpu.h>
#include <asm/arch/dp_info.h>
#include <asm/arch/dp.h>
+#include <fdtdec.h>
+#include <libfdt.h>
+
+/* Declare global data pointer */
+DECLARE_GLOBAL_DATA_PTR;
struct exynos_dp *dp_regs;
void exynos_dp_set_base_addr(void)
{
+#ifdef CONFIG_OF_CONTROL
+ unsigned int node = fdtdec_next_compatible(gd->fdt_blob,
+ 0, COMPAT_SAMSUNG_EXYNOS5_DP);
+ if (node <= 0)
+ debug("exynos_dp: Can't get device node for dp\n");
+
+ dp_regs = (struct exynos_dp *)fdtdec_get_addr(gd->fdt_blob,
+ node, "reg");
+ if (dp_regs == NULL)
+ debug("Can't get the DP base address\n");
+#else
dp_regs = (struct exynos_dp *)samsung_get_base_dp();
+#endif
}
static void exynos_dp_enable_video_input(unsigned int enable)
--
1.8.0
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [U-Boot] [PATCH 11/13] EXYNOS5: Add device node for DP
2013-02-22 9:52 [U-Boot] [PATCH 00/13] video: exynos: Add DT support for exynos_fb and exynos_dp drivers Ajay Kumar
` (9 preceding siblings ...)
2013-02-22 9:53 ` [U-Boot] [PATCH 10/13] video: exynos_dp: Add function to parse DP DT node Ajay Kumar
@ 2013-02-22 9:53 ` Ajay Kumar
2013-02-22 9:53 ` [U-Boot] [PATCH 12/13] SMDK5250: " Ajay Kumar
` (3 subsequent siblings)
14 siblings, 0 replies; 19+ messages in thread
From: Ajay Kumar @ 2013-02-22 9:53 UTC (permalink / raw)
To: u-boot
Add DT node and bindings documentaion for DP.
Signed-off-by: Ajay Kumar <ajaykumar.rs@samsung.com>
---
arch/arm/dts/exynos5250.dtsi | 7 +++
doc/device-tree-bindings/video/exynos-dp.txt | 69 ++++++++++++++++++++++++++++
2 files changed, 76 insertions(+)
create mode 100644 doc/device-tree-bindings/video/exynos-dp.txt
diff --git a/arch/arm/dts/exynos5250.dtsi b/arch/arm/dts/exynos5250.dtsi
index 3d8f747..1c2037a 100644
--- a/arch/arm/dts/exynos5250.dtsi
+++ b/arch/arm/dts/exynos5250.dtsi
@@ -157,4 +157,11 @@
#address-cells = <1>;
#size-cells = <1>;
};
+
+ dp at 145b0000 {
+ compatible = "samsung,exynos5-dp";
+ reg = <0x145b0000 0x1000>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+ };
};
diff --git a/doc/device-tree-bindings/video/exynos-dp.txt b/doc/device-tree-bindings/video/exynos-dp.txt
new file mode 100644
index 0000000..464a853
--- /dev/null
+++ b/doc/device-tree-bindings/video/exynos-dp.txt
@@ -0,0 +1,69 @@
+Exynos Display port controller
+==============================
+
+Required properties:
+SOC specific:
+ compatible: should be "samsung,exynos5-dp"
+ reg: Base address of DP IP
+
+Optional properties:
+ samsung,h-res: X resolution of the panel
+ samsung,h-sync-width: hsync value
+ samsung,h-back-porch: left margin
+ samsung,h-front-porch right margin
+ samsung,v-res: Y resolution of the panel
+ samsung,v-sync-width: vsync value
+ samsung,v-back-porch: upper margin
+ samsung,v-front-porch: lower margin
+ samsung,v-sync-rate: refresh rate
+
+ samsung,lt-status: Link training status
+ 0(DP_LT_NONE), 1(DP_LT_START), 2(DP_LT_CR), 3(DP_LT_ET),
+ 4(DP_LT_FINISHED), 5(DP_LT_FAIL)
+
+ samsung,master-mode: 1 if you want to run DP as master, else 0
+ samsung,bist-mode: 1 to enable video bist mode, else 0
+ samsung,bist-pattern: bist mode pattern type
+ 0(NO_PATTERN), 1(COLOR_RAMP), 2(BALCK_WHITE_V_LINES),
+ 3(COLOR_SQUARE), 4(INVALID_PATTERN), 5(COLORBAR_32),
+ 6(COLORBAR_64),7(WHITE_GRAY_BALCKBAR_32),
+ 8(WHITE_GRAY_BALCKBAR_64),9(MOBILE_WHITEBAR_32),
+ 10(MOBILE_WHITEBAR_64)
+ samsung,h-sync-polarity: Horizontal Sync polarity
+ CONFIG_SYS_LOW if defined, else CONFIG_SYS_HIGH
+ samsung,v-sync-polarity: Vertical Sync polarity
+ CONFIG_SYS_LOW if defined, else CONFIG_SYS_HIGH
+ samsung,interlaced: Progressive if 0, else Interlaced
+ samsung,color-space: input video data format
+ COLOR_RGB = 0, COLOR_YCBCR422 = 1, COLOR_YCBCR444 = 2
+ samsung,dynamic-range: dynamic range for input video data
+ VESA = 0, CEA = 1
+ samsung,ycbcr-coeff: YCbCr co-efficients for input video
+ COLOR_YCBCR601 = 0, COLOR_YCBCR709 = 1
+ samsung,color-depth: number of bits per colour component
+ COLOR_6 = 0, COLOR_8 = 1, COLOR_10 = 2, COLOR_12 = 3
+
+Example:
+SOC specific part:
+ dp at 145b0000 {
+ compatible = "samsung,exynos5-dp";
+ reg = <0x145b0000 0x1000>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+ };
+
+Board(panel) specific part:
+ dp at 145b0000 {
+ samsung,lt-status = <0>;
+
+ samsung,master-mode = <0>;
+ samsung,bist-mode = <0>;
+ samsung,bist-pattern = <0>;
+ samsung,h-sync-polarity = <0>;
+ samsung,v-sync-polarity = <0>;
+ samsung,interlaced = <0>;
+ samsung,color-space = <0>;
+ samsung,dynamic-range = <0>;
+ samsung,ycbcr-coeff = <0>;
+ samsung,color-depth = <1>;
+ };
--
1.8.0
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [U-Boot] [PATCH 12/13] SMDK5250: Add device node for DP
2013-02-22 9:52 [U-Boot] [PATCH 00/13] video: exynos: Add DT support for exynos_fb and exynos_dp drivers Ajay Kumar
` (10 preceding siblings ...)
2013-02-22 9:53 ` [U-Boot] [PATCH 11/13] EXYNOS5: Add device node for DP Ajay Kumar
@ 2013-02-22 9:53 ` Ajay Kumar
2013-02-22 9:53 ` [U-Boot] [PATCH 13/13] SMDK5250: Use statically defined structures only in non DT case Ajay Kumar
` (2 subsequent siblings)
14 siblings, 0 replies; 19+ messages in thread
From: Ajay Kumar @ 2013-02-22 9:53 UTC (permalink / raw)
To: u-boot
Add DT bindings for DP supporting an eDP panel of size 2560x1600.
Signed-off-by: Ajay Kumar <ajaykumar.rs@samsung.com>
---
board/samsung/dts/exynos5250-smdk5250.dts | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/board/samsung/dts/exynos5250-smdk5250.dts b/board/samsung/dts/exynos5250-smdk5250.dts
index e682d8b..bdeeb11 100644
--- a/board/samsung/dts/exynos5250-smdk5250.dts
+++ b/board/samsung/dts/exynos5250-smdk5250.dts
@@ -91,4 +91,19 @@
samsung,dp-enabled = <1>;
samsung,dual-lcd-enabled = <0>;
};
+
+ dp at 145b0000 {
+ samsung,lt-status = <0>;
+
+ samsung,master-mode = <0>;
+ samsung,bist-mode = <0>;
+ samsung,bist-pattern = <0>;
+ samsung,h-sync-polarity = <0>;
+ samsung,v-sync-polarity = <0>;
+ samsung,interlaced = <0>;
+ samsung,color-space = <0>;
+ samsung,dynamic-range = <0>;
+ samsung,ycbcr-coeff = <0>;
+ samsung,color-depth = <1>;
+ };
};
--
1.8.0
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [U-Boot] [PATCH 13/13] SMDK5250: Use statically defined structures only in non DT case
2013-02-22 9:52 [U-Boot] [PATCH 00/13] video: exynos: Add DT support for exynos_fb and exynos_dp drivers Ajay Kumar
` (11 preceding siblings ...)
2013-02-22 9:53 ` [U-Boot] [PATCH 12/13] SMDK5250: " Ajay Kumar
@ 2013-02-22 9:53 ` Ajay Kumar
2013-03-12 1:55 ` [U-Boot] [PATCH 00/13] video: exynos: Add DT support for exynos_fb and exynos_dp drivers Minkyu Kang
2013-03-27 12:26 ` Minkyu Kang
14 siblings, 0 replies; 19+ messages in thread
From: Ajay Kumar @ 2013-02-22 9:53 UTC (permalink / raw)
To: u-boot
Since we have DT support in exynos_fb and exynos_dp drivers now,
we need not define any static structure or platform data related to
display in the board file smdk5250.c.
So, we place the already existing structures inside #ifndef CONFIG_OF_CONTROL block.
Signed-off-by: Ajay Kumar <ajaykumar.rs@samsung.com>
---
board/samsung/smdk5250/smdk5250.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/board/samsung/smdk5250/smdk5250.c b/board/samsung/smdk5250/smdk5250.c
index 9e1e5db..1563bec 100644
--- a/board/samsung/smdk5250/smdk5250.c
+++ b/board/samsung/smdk5250/smdk5250.c
@@ -408,6 +408,12 @@ void exynos_cfg_lcd_gpio(void)
s5p_gpio_cfg_pin(&gpio1->x0, 7, GPIO_FUNC(0x3));
}
+void exynos_set_dp_phy(unsigned int onoff)
+{
+ set_dp_phy_ctrl(onoff);
+}
+
+#ifndef CONFIG_OF_CONTROL
vidinfo_t panel_info = {
.vl_freq = 60,
.vl_col = 2560,
@@ -440,11 +446,6 @@ vidinfo_t panel_info = {
.dp_enabled = 1,
};
-void exynos_set_dp_phy(unsigned int onoff)
-{
- set_dp_phy_ctrl(onoff);
-}
-
static struct edp_device_info edp_info = {
.disp_info = {
.h_res = 2560,
@@ -478,10 +479,13 @@ static struct exynos_dp_platform_data dp_platform_data = {
.edp_dev_info = &edp_info,
};
+#endif
void init_panel_info(vidinfo_t *vid)
{
+#ifndef CONFIG_OF_CONTROL
vid->rgb_mode = MODE_RGB_P,
exynos_set_dp_platform_data(&dp_platform_data);
+#endif
}
#endif
--
1.8.0
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [U-Boot] [PATCH 00/13] video: exynos: Add DT support for exynos_fb and exynos_dp drivers
2013-02-22 9:52 [U-Boot] [PATCH 00/13] video: exynos: Add DT support for exynos_fb and exynos_dp drivers Ajay Kumar
` (12 preceding siblings ...)
2013-02-22 9:53 ` [U-Boot] [PATCH 13/13] SMDK5250: Use statically defined structures only in non DT case Ajay Kumar
@ 2013-03-12 1:55 ` Minkyu Kang
2013-03-27 12:26 ` Minkyu Kang
14 siblings, 0 replies; 19+ messages in thread
From: Minkyu Kang @ 2013-03-12 1:55 UTC (permalink / raw)
To: u-boot
Dear Donghwa,
On 22/02/13 18:52, Ajay Kumar wrote:
> Ajay Kumar (13):
> [PATCH 01/13] video: exynos_fb: Remove callbacks from the driver
> [PATCH 02/13] video: exynos_dp: Remove callbacks from the driver
> [PATCH 03/13] video: exynos_fb: Make fimd_ctrl global
> [PATCH 04/13] EXYNOS: FDT: Add compatible strings for FIMD
> [PATCH 05/13] video: exynos_fb: add DT support for FIMD driver
> [PATCH 06/13] EXYNOS5: Add device node for FIMD
> [PATCH 07/13] SMDK5250: Add device node for FIMD
> [PATCH 08/13] video: exynos_dp: Make dp_regs global
> [PATCH 09/13] EXYNOS5: FDT: Add compatible strings for FIMD
> [PATCH 10/13] video: exynos_dp: Add function to parse DP DT node
> [PATCH 11/13] EXYNOS5: Add device node for DP
> [PATCH 12/13] SMDK5250: Add device node for DP
> [PATCH 13/13] SMDK5250: Use statically defined structures only in non DT case
>
> arch/arm/dts/exynos5250.dtsi | 13 ++
> arch/arm/include/asm/arch-exynos/dp_info.h | 1 -
> board/samsung/dts/exynos5250-smdk5250.dts | 40 +++++
> board/samsung/smdk5250/smdk5250.c | 16 +-
> board/samsung/trats/trats.c | 6 +-
> board/samsung/universal_c210/universal.c | 23 +--
> doc/device-tree-bindings/video/exynos-dp.txt | 69 ++++++++
> doc/device-tree-bindings/video/exynos-fb.txt | 92 +++++++++++
> drivers/video/exynos_dp.c | 76 ++++++++-
> drivers/video/exynos_dp_lowlevel.c | 69 +++-----
> drivers/video/exynos_dp_lowlevel.h | 1 +
> drivers/video/exynos_fb.c | 230 +++++++++++++++++++++++++--
> drivers/video/exynos_fimd.c | 44 +++--
> include/fdtdec.h | 2 +
> include/lcd.h | 9 --
> lib/fdtdec.c | 2 +
> 16 files changed, 574 insertions(+), 119 deletions(-)
> create mode 100644 doc/device-tree-bindings/video/exynos-dp.txt
> create mode 100644 doc/device-tree-bindings/video/exynos-fb.txt
>
Could you please test this patchset?
Thanks,
Minkyu Kang.
^ permalink raw reply [flat|nested] 19+ messages in thread
* [U-Boot] [PATCH 01/13] video: exynos_fb: Remove callbacks from the driver
2013-02-22 9:52 ` [U-Boot] [PATCH 01/13] video: exynos_fb: Remove callbacks from the driver Ajay Kumar
@ 2013-03-13 0:13 ` Simon Glass
2013-03-13 13:44 ` Ajay kumar
0 siblings, 1 reply; 19+ messages in thread
From: Simon Glass @ 2013-03-13 0:13 UTC (permalink / raw)
To: u-boot
Hi,
On Fri, Feb 22, 2013 at 1:52 AM, Ajay Kumar <ajaykumar.rs@samsung.com> wrote:
> Replaced the functionality of callbacks by using a standard set of functions.
> Instead of implementing and hooking up a callback, put the same code in one of
> the standard set of functions by overriding it.
>
> This patch is tested only on SMDK5250.
> For Trats and universal_c210 board, it is only compile tested.
Can I ask please why you are doing this? It seems like the existing
interface is better.
Regards,
Simon
^ permalink raw reply [flat|nested] 19+ messages in thread
* [U-Boot] [PATCH 01/13] video: exynos_fb: Remove callbacks from the driver
2013-03-13 0:13 ` Simon Glass
@ 2013-03-13 13:44 ` Ajay kumar
2013-03-14 3:13 ` Simon Glass
0 siblings, 1 reply; 19+ messages in thread
From: Ajay kumar @ 2013-03-13 13:44 UTC (permalink / raw)
To: u-boot
Hi Simon,
The idea was to move out panel_info structure from board files, and
passing the same info from the device tree.
The first obstacle towards this were the callback hooks in the
panel_info structure.
This is just a workaround for such function pointers.
Regards,
Ajay Kumar
On Wed, Mar 13, 2013 at 9:13 AM, Simon Glass <sjg@chromium.org> wrote:
> Hi,
>
> On Fri, Feb 22, 2013 at 1:52 AM, Ajay Kumar <ajaykumar.rs@samsung.com> wrote:
>> Replaced the functionality of callbacks by using a standard set of functions.
>> Instead of implementing and hooking up a callback, put the same code in one of
>> the standard set of functions by overriding it.
>>
>> This patch is tested only on SMDK5250.
>> For Trats and universal_c210 board, it is only compile tested.
>
> Can I ask please why you are doing this? It seems like the existing
> interface is better.
>
> Regards,
> Simon
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
^ permalink raw reply [flat|nested] 19+ messages in thread
* [U-Boot] [PATCH 01/13] video: exynos_fb: Remove callbacks from the driver
2013-03-13 13:44 ` Ajay kumar
@ 2013-03-14 3:13 ` Simon Glass
0 siblings, 0 replies; 19+ messages in thread
From: Simon Glass @ 2013-03-14 3:13 UTC (permalink / raw)
To: u-boot
Hi Ajay,
On Wed, Mar 13, 2013 at 6:44 AM, Ajay kumar <ajaynumb@gmail.com> wrote:
> Hi Simon,
>
> The idea was to move out panel_info structure from board files, and
> passing the same info from the device tree.
> The first obstacle towards this were the callback hooks in the
> panel_info structure.
> This is just a workaround for such function pointers.
OK, understood, that makes sense.
Regards,
Simon
>
> Regards,
> Ajay Kumar
>
> On Wed, Mar 13, 2013 at 9:13 AM, Simon Glass <sjg@chromium.org> wrote:
>> Hi,
>>
>> On Fri, Feb 22, 2013 at 1:52 AM, Ajay Kumar <ajaykumar.rs@samsung.com> wrote:
>>> Replaced the functionality of callbacks by using a standard set of functions.
>>> Instead of implementing and hooking up a callback, put the same code in one of
>>> the standard set of functions by overriding it.
>>>
>>> This patch is tested only on SMDK5250.
>>> For Trats and universal_c210 board, it is only compile tested.
>>
>> Can I ask please why you are doing this? It seems like the existing
>> interface is better.
>>
>> Regards,
>> Simon
>> _______________________________________________
>> U-Boot mailing list
>> U-Boot at lists.denx.de
>> http://lists.denx.de/mailman/listinfo/u-boot
^ permalink raw reply [flat|nested] 19+ messages in thread
* [U-Boot] [PATCH 00/13] video: exynos: Add DT support for exynos_fb and exynos_dp drivers
2013-02-22 9:52 [U-Boot] [PATCH 00/13] video: exynos: Add DT support for exynos_fb and exynos_dp drivers Ajay Kumar
` (13 preceding siblings ...)
2013-03-12 1:55 ` [U-Boot] [PATCH 00/13] video: exynos: Add DT support for exynos_fb and exynos_dp drivers Minkyu Kang
@ 2013-03-27 12:26 ` Minkyu Kang
14 siblings, 0 replies; 19+ messages in thread
From: Minkyu Kang @ 2013-03-27 12:26 UTC (permalink / raw)
To: u-boot
On 22/02/13 18:52, Ajay Kumar wrote:
> Ajay Kumar (13):
> [PATCH 01/13] video: exynos_fb: Remove callbacks from the driver
> [PATCH 02/13] video: exynos_dp: Remove callbacks from the driver
> [PATCH 03/13] video: exynos_fb: Make fimd_ctrl global
> [PATCH 04/13] EXYNOS: FDT: Add compatible strings for FIMD
> [PATCH 05/13] video: exynos_fb: add DT support for FIMD driver
> [PATCH 06/13] EXYNOS5: Add device node for FIMD
> [PATCH 07/13] SMDK5250: Add device node for FIMD
> [PATCH 08/13] video: exynos_dp: Make dp_regs global
> [PATCH 09/13] EXYNOS5: FDT: Add compatible strings for FIMD
> [PATCH 10/13] video: exynos_dp: Add function to parse DP DT node
> [PATCH 11/13] EXYNOS5: Add device node for DP
> [PATCH 12/13] SMDK5250: Add device node for DP
> [PATCH 13/13] SMDK5250: Use statically defined structures only in non DT case
>
> arch/arm/dts/exynos5250.dtsi | 13 ++
> arch/arm/include/asm/arch-exynos/dp_info.h | 1 -
> board/samsung/dts/exynos5250-smdk5250.dts | 40 +++++
> board/samsung/smdk5250/smdk5250.c | 16 +-
> board/samsung/trats/trats.c | 6 +-
> board/samsung/universal_c210/universal.c | 23 +--
> doc/device-tree-bindings/video/exynos-dp.txt | 69 ++++++++
> doc/device-tree-bindings/video/exynos-fb.txt | 92 +++++++++++
> drivers/video/exynos_dp.c | 76 ++++++++-
> drivers/video/exynos_dp_lowlevel.c | 69 +++-----
> drivers/video/exynos_dp_lowlevel.h | 1 +
> drivers/video/exynos_fb.c | 230 +++++++++++++++++++++++++--
> drivers/video/exynos_fimd.c | 44 +++--
> include/fdtdec.h | 2 +
> include/lcd.h | 9 --
> lib/fdtdec.c | 2 +
> 16 files changed, 574 insertions(+), 119 deletions(-)
> create mode 100644 doc/device-tree-bindings/video/exynos-dp.txt
> create mode 100644 doc/device-tree-bindings/video/exynos-fb.txt
>
applied to u-boot-samsung.
Thanks,
Minkyu Kang.
^ permalink raw reply [flat|nested] 19+ messages in thread
end of thread, other threads:[~2013-03-27 12:26 UTC | newest]
Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-02-22 9:52 [U-Boot] [PATCH 00/13] video: exynos: Add DT support for exynos_fb and exynos_dp drivers Ajay Kumar
2013-02-22 9:52 ` [U-Boot] [PATCH 01/13] video: exynos_fb: Remove callbacks from the driver Ajay Kumar
2013-03-13 0:13 ` Simon Glass
2013-03-13 13:44 ` Ajay kumar
2013-03-14 3:13 ` Simon Glass
2013-02-22 9:52 ` [U-Boot] [PATCH 02/13] video: exynos_dp: " Ajay Kumar
2013-02-22 9:52 ` [U-Boot] [PATCH 03/13] video: exynos_fb: Make fimd_ctrl global Ajay Kumar
2013-02-22 9:53 ` [U-Boot] [PATCH 04/13] EXYNOS: FDT: Add compatible strings for FIMD Ajay Kumar
2013-02-22 9:53 ` [U-Boot] [PATCH 05/13] video: exynos_fb: add DT support for FIMD driver Ajay Kumar
2013-02-22 9:53 ` [U-Boot] [PATCH 06/13] EXYNOS5: Add device node for FIMD Ajay Kumar
2013-02-22 9:53 ` [U-Boot] [PATCH 07/13] SMDK5250: " Ajay Kumar
2013-02-22 9:53 ` [U-Boot] [PATCH 08/13] video: exynos_dp: Make dp_regs global Ajay Kumar
2013-02-22 9:53 ` [U-Boot] [PATCH 09/13] EXYNOS5: FDT: Add compatible strings for FIMD Ajay Kumar
2013-02-22 9:53 ` [U-Boot] [PATCH 10/13] video: exynos_dp: Add function to parse DP DT node Ajay Kumar
2013-02-22 9:53 ` [U-Boot] [PATCH 11/13] EXYNOS5: Add device node for DP Ajay Kumar
2013-02-22 9:53 ` [U-Boot] [PATCH 12/13] SMDK5250: " Ajay Kumar
2013-02-22 9:53 ` [U-Boot] [PATCH 13/13] SMDK5250: Use statically defined structures only in non DT case Ajay Kumar
2013-03-12 1:55 ` [U-Boot] [PATCH 00/13] video: exynos: Add DT support for exynos_fb and exynos_dp drivers Minkyu Kang
2013-03-27 12:26 ` Minkyu Kang
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox