[U-Boot] [PATCH] MX5: Make IPU display output and pixel format configurable

Signed-off-by: Marek Vasut marek.vasut@gmail.com Cc: Stefano Babic sbabic@denx.de --- drivers/video/mxc_ipuv3_fb.c | 14 ++++++++++++-- 1 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/drivers/video/mxc_ipuv3_fb.c b/drivers/video/mxc_ipuv3_fb.c index a66981c..c4443e8 100644 --- a/drivers/video/mxc_ipuv3_fb.c +++ b/drivers/video/mxc_ipuv3_fb.c @@ -42,6 +42,16 @@
DECLARE_GLOBAL_DATA_PTR;
+/* Use DISP #1 by default. */ +#ifndef CONFIG_VIDEO_MX5_OUTPUT +#define CONFIG_VIDEO_MX5_OUTPUT 0 +#endif + +/* Use RGB666 pixel format by default. */ +#ifndef CONFIG_VIDEO_MX5_PIXFMT +#define CONFIG_VIDEO_MX5_PIXFMT IPU_PIX_FMT_RGB666 +#endif + void *lcd_base; /* Start of framebuffer memory */ void *lcd_console_address; /* Start of console buffer */
@@ -550,7 +560,7 @@ static int mxcfb_probe(u32 interface_pix_fmt, struct fb_videomode *mode) mxcfbi->blank = FB_BLANK_POWERDOWN; }
- mxcfbi->ipu_di = 0; + mxcfbi->ipu_di = CONFIG_VIDEO_MX5_OUTPUT;
ipu_disp_set_global_alpha(mxcfbi->ipu_ch, 1, 0x80); ipu_disp_set_color_key(mxcfbi->ipu_ch, 0, 0); @@ -636,7 +646,7 @@ int mx51_fb_init(struct fb_videomode *mode) lcd_base += 56;
debug("Framebuffer at 0x%x\n", (unsigned int)lcd_base); - ret = mxcfb_probe(IPU_PIX_FMT_RGB666, mode); + ret = mxcfb_probe(CONFIG_VIDEO_MX5_PIXFMT, mode);
return ret; }

Hi Marek,
On Tue, Sep 27, 2011 at 9:09 AM, Marek Vasut marek.vasut@gmail.com wrote:
Signed-off-by: Marek Vasut marek.vasut@gmail.com Cc: Stefano Babic sbabic@denx.de
drivers/video/mxc_ipuv3_fb.c | 14 ++++++++++++-- 1 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/drivers/video/mxc_ipuv3_fb.c b/drivers/video/mxc_ipuv3_fb.c index a66981c..c4443e8 100644 --- a/drivers/video/mxc_ipuv3_fb.c +++ b/drivers/video/mxc_ipuv3_fb.c @@ -42,6 +42,16 @@
DECLARE_GLOBAL_DATA_PTR;
+/* Use DISP #1 by default. */ +#ifndef CONFIG_VIDEO_MX5_OUTPUT +#define CONFIG_VIDEO_MX5_OUTPUT 0 +#endif
What about putting a define for selecting between IPU DI0 or DI1 in the board config file?
There are boards that have DI0 connected as the primary display, others may have DI1.
This way the mxc_ipuv3_fb.c driver could handle both cases depending on the board config.
Regards,
Fabio Estevam

On Tuesday, September 27, 2011 02:22:18 PM Fabio Estevam wrote:
Hi Marek,
On Tue, Sep 27, 2011 at 9:09 AM, Marek Vasut marek.vasut@gmail.com wrote:
Signed-off-by: Marek Vasut marek.vasut@gmail.com Cc: Stefano Babic sbabic@denx.de
drivers/video/mxc_ipuv3_fb.c | 14 ++++++++++++-- 1 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/drivers/video/mxc_ipuv3_fb.c b/drivers/video/mxc_ipuv3_fb.c index a66981c..c4443e8 100644 --- a/drivers/video/mxc_ipuv3_fb.c +++ b/drivers/video/mxc_ipuv3_fb.c @@ -42,6 +42,16 @@
DECLARE_GLOBAL_DATA_PTR;
+/* Use DISP #1 by default. */ +#ifndef CONFIG_VIDEO_MX5_OUTPUT +#define CONFIG_VIDEO_MX5_OUTPUT 0 +#endif
What about putting a define for selecting between IPU DI0 or DI1 in the board config file?
There are boards that have DI0 connected as the primary display, others may have DI1.
This way the mxc_ipuv3_fb.c driver could handle both cases depending on the board config.
Sure, this is a default value for boards which just use the default (most common case). You can define CONFIG... in your board config file and change this.
Regards,
Fabio Estevam

On 09/27/2011 02:09 PM, Marek Vasut wrote:
Signed-off-by: Marek Vasut marek.vasut@gmail.com Cc: Stefano Babic sbabic@denx.de
drivers/video/mxc_ipuv3_fb.c | 14 ++++++++++++-- 1 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/drivers/video/mxc_ipuv3_fb.c b/drivers/video/mxc_ipuv3_fb.c index a66981c..c4443e8 100644 --- a/drivers/video/mxc_ipuv3_fb.c +++ b/drivers/video/mxc_ipuv3_fb.c @@ -42,6 +42,16 @@
DECLARE_GLOBAL_DATA_PTR;
+/* Use DISP #1 by default. */ +#ifndef CONFIG_VIDEO_MX5_OUTPUT +#define CONFIG_VIDEO_MX5_OUTPUT 0 +#endif
+/* Use RGB666 pixel format by default. */ +#ifndef CONFIG_VIDEO_MX5_PIXFMT +#define CONFIG_VIDEO_MX5_PIXFMT IPU_PIX_FMT_RGB666 +#endif
void *lcd_base; /* Start of framebuffer memory */ void *lcd_console_address; /* Start of console buffer */
@@ -550,7 +560,7 @@ static int mxcfb_probe(u32 interface_pix_fmt, struct fb_videomode *mode) mxcfbi->blank = FB_BLANK_POWERDOWN; }
- mxcfbi->ipu_di = 0;
mxcfbi->ipu_di = CONFIG_VIDEO_MX5_OUTPUT;
ipu_disp_set_global_alpha(mxcfbi->ipu_ch, 1, 0x80); ipu_disp_set_color_key(mxcfbi->ipu_ch, 0, 0);
@@ -636,7 +646,7 @@ int mx51_fb_init(struct fb_videomode *mode) lcd_base += 56;
debug("Framebuffer at 0x%x\n", (unsigned int)lcd_base);
- ret = mxcfb_probe(IPU_PIX_FMT_RGB666, mode);
- ret = mxcfb_probe(CONFIG_VIDEO_MX5_PIXFMT, mode);
What about to not use a CONFIG_ ? at the moment, the board code calls mx51_fb_init() to initialize the display parameter. We can add a second parameter (display_id) to the initialization and the board code is responsible to do that. And it is not required to recompile u-boot if the board as the mx51evk more as one display has or can have.
Best regards, Stefano Babic

Signed-off-by: Marek Vasut marek.vasut@gmail.com Cc: Stefano Babic sbabic@denx.de --- board/ttcontrol/vision2/vision2.c | 6 ++++-- drivers/video/mxc_ipuv3_fb.c | 9 +++++---- 2 files changed, 9 insertions(+), 6 deletions(-)
V2: Configure the LCD via mx51_fb_init
diff --git a/board/ttcontrol/vision2/vision2.c b/board/ttcontrol/vision2/vision2.c index ebca7b6..4565d1d 100644 --- a/board/ttcontrol/vision2/vision2.c +++ b/board/ttcontrol/vision2/vision2.c @@ -39,11 +39,13 @@ #include <mc13892.h> #include <linux/fb.h>
+#include <../drivers/video/ipu.h> + DECLARE_GLOBAL_DATA_PTR;
static u32 system_rev;
-extern int mx51_fb_init(struct fb_videomode *mode); +extern int mx51_fb_init(struct fb_videomode *, uint8_t, uint32_t);
static struct fb_videomode nec_nl6448bc26_09c = { "NEC_NL6448BC26-09C", @@ -646,7 +648,7 @@ void lcd_enable(void) gpio_set_value(2, 1); mxc_request_iomux(MX51_PIN_GPIO1_2, IOMUX_CONFIG_ALT0);
- ret = mx51_fb_init(&nec_nl6448bc26_09c); + ret = mx51_fb_init(&nec_nl6448bc26_09c, 0, IPU_PIX_FMT_RGB666); if (ret) puts("LCD cannot be configured\n"); } diff --git a/drivers/video/mxc_ipuv3_fb.c b/drivers/video/mxc_ipuv3_fb.c index a66981c..3fa8b8e 100644 --- a/drivers/video/mxc_ipuv3_fb.c +++ b/drivers/video/mxc_ipuv3_fb.c @@ -526,7 +526,8 @@ static struct fb_info *mxcfb_init_fbinfo(void) * * @return Appropriate error code to the kernel common code */ -static int mxcfb_probe(u32 interface_pix_fmt, struct fb_videomode *mode) +static int mxcfb_probe(u32 interface_pix_fmt, uint8_t disp, + struct fb_videomode *mode) { struct fb_info *fbi; struct mxcfb_info *mxcfbi; @@ -550,7 +551,7 @@ static int mxcfb_probe(u32 interface_pix_fmt, struct fb_videomode *mode) mxcfbi->blank = FB_BLANK_POWERDOWN; }
- mxcfbi->ipu_di = 0; + mxcfbi->ipu_di = disp;
ipu_disp_set_global_alpha(mxcfbi->ipu_ch, 1, 0x80); ipu_disp_set_color_key(mxcfbi->ipu_ch, 0, 0); @@ -625,7 +626,7 @@ void lcd_ctrl_init(void *lcdbase) memset(lcdbase, 0, mem_len); }
-int mx51_fb_init(struct fb_videomode *mode) +int mx51_fb_init(struct fb_videomode *mode, uint8_t disp, uint32_t pixfmt) { int ret;
@@ -636,7 +637,7 @@ int mx51_fb_init(struct fb_videomode *mode) lcd_base += 56;
debug("Framebuffer at 0x%x\n", (unsigned int)lcd_base); - ret = mxcfb_probe(IPU_PIX_FMT_RGB666, mode); + ret = mxcfb_probe(pixfmt, disp, mode);
return ret; }

On 09/27/2011 02:43 PM, Marek Vasut wrote:
Signed-off-by: Marek Vasut marek.vasut@gmail.com Cc: Stefano Babic sbabic@denx.de
board/ttcontrol/vision2/vision2.c | 6 ++++-- drivers/video/mxc_ipuv3_fb.c | 9 +++++---- 2 files changed, 9 insertions(+), 6 deletions(-)
V2: Configure the LCD via mx51_fb_init
You missed to send your patch to Anatolij (video maintainer), too.
diff --git a/board/ttcontrol/vision2/vision2.c b/board/ttcontrol/vision2/vision2.c index ebca7b6..4565d1d 100644 --- a/board/ttcontrol/vision2/vision2.c +++ b/board/ttcontrol/vision2/vision2.c @@ -39,11 +39,13 @@ #include <mc13892.h> #include <linux/fb.h>
+#include <../drivers/video/ipu.h>
DECLARE_GLOBAL_DATA_PTR;
static u32 system_rev;
-extern int mx51_fb_init(struct fb_videomode *mode); +extern int mx51_fb_init(struct fb_videomode *, uint8_t, uint32_t);
static struct fb_videomode nec_nl6448bc26_09c = { "NEC_NL6448BC26-09C", @@ -646,7 +648,7 @@ void lcd_enable(void) gpio_set_value(2, 1); mxc_request_iomux(MX51_PIN_GPIO1_2, IOMUX_CONFIG_ALT0);
- ret = mx51_fb_init(&nec_nl6448bc26_09c);
- ret = mx51_fb_init(&nec_nl6448bc26_09c, 0, IPU_PIX_FMT_RGB666); if (ret) puts("LCD cannot be configured\n");
} diff --git a/drivers/video/mxc_ipuv3_fb.c b/drivers/video/mxc_ipuv3_fb.c index a66981c..3fa8b8e 100644 --- a/drivers/video/mxc_ipuv3_fb.c +++ b/drivers/video/mxc_ipuv3_fb.c @@ -526,7 +526,8 @@ static struct fb_info *mxcfb_init_fbinfo(void)
- @return Appropriate error code to the kernel common code
*/ -static int mxcfb_probe(u32 interface_pix_fmt, struct fb_videomode *mode) +static int mxcfb_probe(u32 interface_pix_fmt, uint8_t disp,
struct fb_videomode *mode)
{ struct fb_info *fbi; struct mxcfb_info *mxcfbi; @@ -550,7 +551,7 @@ static int mxcfb_probe(u32 interface_pix_fmt, struct fb_videomode *mode) mxcfbi->blank = FB_BLANK_POWERDOWN; }
- mxcfbi->ipu_di = 0;
mxcfbi->ipu_di = disp;
ipu_disp_set_global_alpha(mxcfbi->ipu_ch, 1, 0x80); ipu_disp_set_color_key(mxcfbi->ipu_ch, 0, 0);
@@ -625,7 +626,7 @@ void lcd_ctrl_init(void *lcdbase) memset(lcdbase, 0, mem_len); }
-int mx51_fb_init(struct fb_videomode *mode) +int mx51_fb_init(struct fb_videomode *mode, uint8_t disp, uint32_t pixfmt) { int ret;
@@ -636,7 +637,7 @@ int mx51_fb_init(struct fb_videomode *mode) lcd_base += 56;
debug("Framebuffer at 0x%x\n", (unsigned int)lcd_base);
- ret = mxcfb_probe(IPU_PIX_FMT_RGB666, mode);
ret = mxcfb_probe(pixfmt, disp, mode);
return ret;
}
Agree with your changes- only they can conflict with the patch I submitted recently to switch to CONFIG_VIDEO, see
http://patchwork.ozlabs.org/patch/116380/
Best regards, Stefano Babic

On Tuesday, September 27, 2011 02:50:19 PM Stefano Babic wrote:
On 09/27/2011 02:43 PM, Marek Vasut wrote:
Signed-off-by: Marek Vasut marek.vasut@gmail.com Cc: Stefano Babic sbabic@denx.de
board/ttcontrol/vision2/vision2.c | 6 ++++-- drivers/video/mxc_ipuv3_fb.c | 9 +++++---- 2 files changed, 9 insertions(+), 6 deletions(-)
V2: Configure the LCD via mx51_fb_init
You missed to send your patch to Anatolij (video maintainer), too.
Shall I resend or is it fine as it is ? [...]
Agree with your changes- only they can conflict with the patch I submitted recently to switch to CONFIG_VIDEO, see
Can you possibly put this patch prior to your change and then rebase on top of it ?
Cheers
http://patchwork.ozlabs.org/patch/116380/
Best regards, Stefano Babic

On 09/27/2011 02:58 PM, Marek Vasut wrote:
Agree with your changes- only they can conflict with the patch I submitted recently to switch to CONFIG_VIDEO, see
Can you possibly put this patch prior to your change and then rebase on top of it ?
I can do it
Best regards, Stefano Babic

On Tuesday, September 27, 2011 03:07:12 PM Stefano Babic wrote:
On 09/27/2011 02:58 PM, Marek Vasut wrote:
Agree with your changes- only they can conflict with the patch I submitted recently to switch to CONFIG_VIDEO, see
Can you possibly put this patch prior to your change and then rebase on top of it ?
I can do it
Thanks!
Cheers

Dear Marek Vasut,
In message 1317127420-31221-1-git-send-email-marek.vasut@gmail.com you wrote:
Signed-off-by: Marek Vasut marek.vasut@gmail.com Cc: Stefano Babic sbabic@denx.de
board/ttcontrol/vision2/vision2.c | 6 ++++-- drivers/video/mxc_ipuv3_fb.c | 9 +++++---- 2 files changed, 9 insertions(+), 6 deletions(-)
V2: Configure the LCD via mx51_fb_init
Checkpatch says:
total: 0 errors, 1 warnings, 55 lines checked
Please clean up and resubmit. Thanks.
Best regards,
Wolfgang Denk

Hi Wolfgang, Marek,
On Thu, 06 Oct 2011 23:20:33 +0200 Wolfgang Denk wd@denx.de wrote:
Dear Marek Vasut,
In message 1317127420-31221-1-git-send-email-marek.vasut@gmail.com you wrote:
Signed-off-by: Marek Vasut marek.vasut@gmail.com Cc: Stefano Babic sbabic@denx.de
board/ttcontrol/vision2/vision2.c | 6 ++++-- drivers/video/mxc_ipuv3_fb.c | 9 +++++---- 2 files changed, 9 insertions(+), 6 deletions(-)
V2: Configure the LCD via mx51_fb_init
Checkpatch says:
total: 0 errors, 1 warnings, 55 lines checked
Please clean up and resubmit. Thanks.
No, there is no need to resubmit this patch. Stefano resubmitted it as part of another patch set and a cleaned up patch version was already applied.
Thanks, Anatolij
participants (5)
-
Anatolij Gustschin
-
Fabio Estevam
-
Marek Vasut
-
Stefano Babic
-
Wolfgang Denk