From: Sascha Hauer <s.hauer@pengutronix.de>
To: Juergen Beisert <jbe@pengutronix.de>
Cc: barebox@lists.infradead.org
Subject: Re: [PATCH] imx: Separate framebuffer platformdata and the videomode
Date: Tue, 19 Oct 2010 08:54:58 +0200 [thread overview]
Message-ID: <20101019065458.GQ28242@pengutronix.de> (raw)
In-Reply-To: <201010161546.52848.jbe@pengutronix.de>
Hi Jürgen,
On Sat, Oct 16, 2010 at 03:46:52PM +0200, Juergen Beisert wrote:
> commit 4ac682bf08b61708bc432c48e58a6d1cf9ea3832
> Author: Juergen Beisert <jbe@pengutronix.de>
> Date: Sat Oct 16 15:32:06 2010 +0200
>
> imx: Separate framebuffer platformdata and the videomode
>
> This patch separates the imx platformdata and its videomode in two structures,
> in order to support more than one defined videomode in the boardfile. This
> is intended to support runtime videomode selection later on. It also uses
> now the same videomode setup style than the imx-fpu based systems (like the
> i.MX35).
Multiple displays can have different bpp/pcr values. Shouldn't we build
an array of imx_fb_videomode instead?
Sascha
>
> Signed-off-by: Juergen Beisert <jbe@pengutronix.de>
>
> diff --git a/arch/arm/boards/eukrea_cpuimx25/eukrea_cpuimx25.c b/arch/arm/boards/eukrea_cpuimx25/eukrea_cpuimx25.c
> index c2eb398..b1b9852 100644
> --- a/arch/arm/boards/eukrea_cpuimx25/eukrea_cpuimx25.c
> +++ b/arch/arm/boards/eukrea_cpuimx25/eukrea_cpuimx25.c
> @@ -119,20 +119,22 @@ static struct device_d nand_dev = {
> .platform_data = &nand_info,
> };
>
> +static struct fb_videomode cmo_display = {
> + .name = "CMO-QVGA",
> + .refresh = 60,
> + .xres = 320,
> + .yres = 240,
> + .pixclock = KHZ2PICOS(6500),
> + .hsync_len = 30,
> + .left_margin = 38,
> + .right_margin = 20,
> + .vsync_len = 3,
> + .upper_margin = 15,
> + .lower_margin = 4,
> +};
> +
> static struct imx_fb_videomode imxfb_mode = {
> - .mode = {
> - .name = "CMO-QVGA",
> - .refresh = 60,
> - .xres = 320,
> - .yres = 240,
> - .pixclock = KHZ2PICOS(6500),
> - .hsync_len = 30,
> - .left_margin = 38,
> - .right_margin = 20,
> - .vsync_len = 3,
> - .upper_margin = 15,
> - .lower_margin = 4,
> - },
> + .mode = &cmo_display,
> .pcr = 0xCAD08B80,
> .bpp = 16,
> };
> diff --git a/arch/arm/boards/eukrea_cpuimx27/eukrea_cpuimx27.c b/arch/arm/boards/eukrea_cpuimx27/eukrea_cpuimx27.c
> index 62fc14e..3ea2466 100644
> --- a/arch/arm/boards/eukrea_cpuimx27/eukrea_cpuimx27.c
> +++ b/arch/arm/boards/eukrea_cpuimx27/eukrea_cpuimx27.c
> @@ -186,20 +186,22 @@ static void eukrea_cpuimx27_mmu_init(void)
> #endif
>
> #ifdef CONFIG_DRIVER_VIDEO_IMX
> +static struct fb_videomode cmo_display = {
> + .name = "CMO-QVGA",
> + .refresh = 60,
> + .xres = 320,
> + .yres = 240,
> + .pixclock = 156000,
> + .hsync_len = 30,
> + .left_margin = 38,
> + .right_margin = 20,
> + .vsync_len = 3,
> + .upper_margin = 15,
> + .lower_margin = 4,
> +};
> +
> static struct imx_fb_videomode imxfb_mode = {
> - .mode = {
> - .name = "CMO-QVGA",
> - .refresh = 60,
> - .xres = 320,
> - .yres = 240,
> - .pixclock = 156000,
> - .hsync_len = 30,
> - .left_margin = 38,
> - .right_margin = 20,
> - .vsync_len = 3,
> - .upper_margin = 15,
> - .lower_margin = 4,
> - },
> + .mode = &cmo_display,
> .pcr = 0xFAD08B80,
> .bpp = 16,};
>
> diff --git a/arch/arm/boards/guf-neso/board.c b/arch/arm/boards/guf-neso/board.c
> index 9c85c08..6949675 100644
> --- a/arch/arm/boards/guf-neso/board.c
> +++ b/arch/arm/boards/guf-neso/board.c
> @@ -91,20 +91,22 @@ static struct device_d nand_dev = {
> .platform_data = &nand_info,
> };
>
> +static struct fb_videomode cpt_display = {
> + .name = "CPT CLAA070LC0JCT",
> + .refresh = 60,
> + .xres = 800,
> + .yres = 480,
> + .pixclock = KHZ2PICOS(27000),
> + .hsync_len = 1, /* DE only sync */
> + .left_margin = 50,
> + .right_margin = 50,
> + .vsync_len = 1, /* DE only sync */
> + .upper_margin = 10,
> + .lower_margin = 10,
> +};
> +
> static struct imx_fb_videomode imxfb_mode = {
> - .mode = {
> - .name = "CPT CLAA070LC0JCT",
> - .refresh = 60,
> - .xres = 800,
> - .yres = 480,
> - .pixclock = KHZ2PICOS(27000),
> - .hsync_len = 1, /* DE only sync */
> - .left_margin = 50,
> - .right_margin = 50,
> - .vsync_len = 1, /* DE only sync */
> - .upper_margin = 10,
> - .lower_margin = 10,
> - },
> + .mode = &cpt_display,
> /*
> * - TFT style panel
> * - clk enabled while idle
> diff --git a/arch/arm/boards/imx21ads/imx21ads.c b/arch/arm/boards/imx21ads/imx21ads.c
> index 44d37aa..81006de 100644
> --- a/arch/arm/boards/imx21ads/imx21ads.c
> +++ b/arch/arm/boards/imx21ads/imx21ads.c
> @@ -79,24 +79,26 @@ static struct device_d cs8900_dev = {
> // IRQ is connected to UART3_RTS
> };
>
> +static struct fb_videomode sharp_display = {
> + .name = "Sharp-LQ035Q7",
> + .refresh = 60,
> + .xres = 240,
> + .yres = 320,
> + .pixclock = 188679,
> + .left_margin = 6,
> + .right_margin = 16,
> + .upper_margin = 8,
> + .lower_margin = 10,
> + .hsync_len = 2,
> + .vsync_len = 1,
> + .sync = 0,
> + .vmode = FB_VMODE_NONINTERLACED,
> + .flag = 0,
> +};
> +
> /* Sharp LQ035Q7DB02 QVGA display */
> static struct imx_fb_videomode imx_fb_modedata = {
> - .mode = {
> - .name = "Sharp-LQ035Q7",
> - .refresh = 60,
> - .xres = 240,
> - .yres = 320,
> - .pixclock = 188679,
> - .left_margin = 6,
> - .right_margin = 16,
> - .upper_margin = 8,
> - .lower_margin = 10,
> - .hsync_len = 2,
> - .vsync_len = 1,
> - .sync = 0,
> - .vmode = FB_VMODE_NONINTERLACED,
> - .flag = 0,
> - },
> + .mode = &sharp_display,
> .pcr = 0xfb108bc7,
> .bpp = 16,
> };
> diff --git a/arch/arm/boards/pcm038/pcm038.c b/arch/arm/boards/pcm038/pcm038.c
> index 3a9b413..026e9c0 100644
> --- a/arch/arm/boards/pcm038/pcm038.c
> +++ b/arch/arm/boards/pcm038/pcm038.c
> @@ -127,20 +127,22 @@ static struct device_d nand_dev = {
> .platform_data = &nand_info,
> };
>
> +static struct fb_videomode sharp_display = {
> + .name = "Sharp-LQ035Q7",
> + .refresh = 60,
> + .xres = 240,
> + .yres = 320,
> + .pixclock = 188679, /* in ps (5.3MHz) */
> + .hsync_len = 7,
> + .left_margin = 5,
> + .right_margin = 16,
> + .vsync_len = 1,
> + .upper_margin = 7,
> + .lower_margin = 9,
> +};
> +
> static struct imx_fb_videomode imxfb_mode = {
> - .mode = {
> - .name = "Sharp-LQ035Q7",
> - .refresh = 60,
> - .xres = 240,
> - .yres = 320,
> - .pixclock = 188679, /* in ps (5.3MHz) */
> - .hsync_len = 7,
> - .left_margin = 5,
> - .right_margin = 16,
> - .vsync_len = 1,
> - .upper_margin = 7,
> - .lower_margin = 9,
> - },
> + .mode = &sharp_display,
> /*
> * - HSYNC active high
> * - VSYNC active high
> diff --git a/arch/arm/mach-imx/include/mach/imxfb.h b/arch/arm/mach-imx/include/mach/imxfb.h
> index 16b43ea..7baa244 100644
> --- a/arch/arm/mach-imx/include/mach/imxfb.h
> +++ b/arch/arm/mach-imx/include/mach/imxfb.h
> @@ -50,7 +50,7 @@
> #define DMACR_TM(x) ((x) & 0xf)
>
> struct imx_fb_videomode {
> - struct fb_videomode mode;
> + struct fb_videomode *mode;
> u32 pcr;
> unsigned char bpp;
> };
> diff --git a/drivers/video/imx.c b/drivers/video/imx.c
> index ac51858..6ccd77e 100644
> --- a/drivers/video/imx.c
> +++ b/drivers/video/imx.c
> @@ -555,9 +555,9 @@ static int imxfb_probe(struct device_d *dev)
> fbi->enable = pdata->enable;
> fbi->dev = dev;
> info->priv = fbi;
> - info->mode = &pdata->mode->mode;
> - info->xres = pdata->mode->mode.xres;
> - info->yres = pdata->mode->mode.yres;
> + info->mode = pdata->mode->mode;
> + info->xres = pdata->mode->mode->xres;
> + info->yres = pdata->mode->mode->yres;
> info->bits_per_pixel = pdata->mode->bpp;
> info->fbops = &imxfb_ops;
>
> --
> Pengutronix e.K. | Juergen Beisert |
> Linux Solutions for Science and Industry | Phone: +49-8766-939 228 |
> Vertretung Sued/Muenchen, Germany | Fax: +49-5121-206917-5555 |
> Amtsgericht Hildesheim, HRA 2686 | http://www.pengutronix.de/ |
>
> _______________________________________________
> barebox mailing list
> barebox@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/barebox
>
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
next prev parent reply other threads:[~2010-10-19 6:55 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-10-16 13:46 Juergen Beisert
2010-10-19 6:54 ` Sascha Hauer [this message]
2010-10-19 7:12 ` Juergen Beisert
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20101019065458.GQ28242@pengutronix.de \
--to=s.hauer@pengutronix.de \
--cc=barebox@lists.infradead.org \
--cc=jbe@pengutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox