All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hannes Schmelzer <hannes@schmelzer.or.at>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 1/2] drivers/video/am335x-fb: Add support for 16bpp format
Date: Wed, 27 Apr 2016 11:16:05 +0200	[thread overview]
Message-ID: <57208355.5070508@schmelzer.or.at> (raw)
In-Reply-To: <1461712873-6190-1-git-send-email-martin.pietryka@chello.at>

On 04/27/2016 01:21 AM, Martin Pietryka wrote:
> To support 16bpp we just need to change the raster_ctrl register
> accordingly. Also 32bpp mode should work as well, but was not tested.
> According to the TRM the uppermost byte will be ignored when
> LCD_TFT_24BPP_UNPACK is set.
>
> The switch logic is based on the Liunx kernel tilcdc driver:
> drivers/gpu/drm/tilcdc/tilcdc_crtc.c: lines 407 through 419
> (kernel was checked out at commit: bcc981e9ed8)
>
> Signed-off-by: Martin Pietryka <martin.pietryka@chello.at>
> ---
>   drivers/video/am335x-fb.c | 29 +++++++++++++++++++++++------
>   1 file changed, 23 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/video/am335x-fb.c b/drivers/video/am335x-fb.c
> index 0ec843f..f2b4c78 100644
> --- a/drivers/video/am335x-fb.c
> +++ b/drivers/video/am335x-fb.c
> @@ -5,7 +5,7 @@
>    * minimal framebuffer driver for TI's AM335x SoC to be compatible with
>    * Wolfgang Denk's LCD-Framework (CONFIG_LCD, common/lcd.c)
>    *
> - * - supporting only 24bit RGB/TFT raster Mode (not using palette)
> + * - supporting 16/24/32bit RGB/TFT raster Mode (not using palette)
>    * - sets up LCD controller as in 'am335x_lcdpanel' struct given
>    * - starts output DMA from gd->fb_base buffer
>    *
> @@ -106,6 +106,8 @@ int lcd_get_size(int *line_length)
>   
>   int am335xfb_init(struct am335x_lcdpanel *panel)
>   {
> +	u32 raster_ctrl = 0;
> +
>   	if (0 == gd->fb_base) {
>   		printf("ERROR: no valid fb_base stored in GLOBAL_DATA_PTR!\n");
>   		return -1;
> @@ -157,11 +159,26 @@ int am335xfb_init(struct am335x_lcdpanel *panel)
>   				LCD_HBPMSB(panel->hbp) |
>   				LCD_HFPMSB(panel->hfp) |
>   				0x0000FF00;	/* clk cycles for ac-bias */
> -	lcdhw->raster_ctrl =	LCD_TFT_24BPP_MODE |
> -				LCD_TFT_24BPP_UNPACK |
> -				LCD_PALMODE_RAWDATA |
> -				LCD_TFT_MODE |
> -				LCD_RASTER_ENABLE;
> +
> +	raster_ctrl =	LCD_PALMODE_RAWDATA |
> +			LCD_TFT_MODE |
> +			LCD_RASTER_ENABLE;
> +
> +	switch (panel->bpp) {
> +	case 16:
> +		break;
> +	case 32:
> +		raster_ctrl |= LCD_TFT_24BPP_UNPACK;
> +		/* fallthrough */
> +	case 24:
> +		raster_ctrl |= LCD_TFT_24BPP_MODE;
> +		break;
> +	default:
> +		error("am335x-fb: invalid bpp value: %d\n", panel->bpp);
> +		return 1;
please return -1 on error;
I would also suggest to put this switch case above the first hw-access 
or doing anything on lcd,
so the controller and display leaves untouched on wrong parameters.
> +	}
> +
> +	lcdhw->raster_ctrl = raster_ctrl;
>   
>   	gd->fb_base += 0x20;	/* point fb behind palette */
>   
best regards,
Hannes

  parent reply	other threads:[~2016-04-27  9:16 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-26 23:21 [U-Boot] [PATCH 1/2] drivers/video/am335x-fb: Add support for 16bpp format Martin Pietryka
2016-04-26 23:21 ` [U-Boot] [PATCH 2/2] drivers/video/am335x-fb: Properly point framebuffer behind palette Martin Pietryka
2016-04-27  6:43   ` Hannes Schmelzer
2016-04-27  7:31     ` Hannes Schmelzer
2016-04-27  8:36     ` Martin Pietryka
2016-04-27  9:02   ` Hannes Schmelzer
2016-04-27  9:17     ` Martin Pietryka
2016-04-27  9:16 ` Hannes Schmelzer [this message]
2016-04-27  9:42 ` [U-Boot] [PATCH v2 1/2] drivers/video/am335x-fb: Add support for 16bpp format Martin Pietryka
2016-04-27 10:07   ` Hannes Schmelzer
2016-04-27 19:45     ` Martin Pietryka
2016-04-27 19:39 ` [U-Boot] [PATCH v3 " Martin Pietryka
2016-04-27 19:39   ` [U-Boot] [PATCH v3 2/2] drivers/video/am335x-fb: Properly point framebuffer behind palette Martin Pietryka
2016-04-28 14:57     ` Anatolij Gustschin
2016-04-28  4:59   ` [U-Boot] [PATCH v3 1/2] drivers/video/am335x-fb: Add support for 16bpp format Hannes Schmelzer
2016-04-28 14:56   ` Anatolij Gustschin

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=57208355.5070508@schmelzer.or.at \
    --to=hannes@schmelzer.or.at \
    --cc=u-boot@lists.denx.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.