All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nikita Kiryanov <nikita@compulab.co.il>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v3 4/4] common/lcd_console: introduce display/framebuffer rotation
Date: Wed, 25 Mar 2015 18:24:26 +0200	[thread overview]
Message-ID: <5512E13A.8000902@compulab.co.il> (raw)
In-Reply-To: <1426754263-29073-5-git-send-email-oe5hpm@oevsv.at>

Hi Hannes,

This is almost an Acked-By from me, just a few final comments:

On 03/19/2015 10:37 AM, Hannes Petermaier wrote:
> From: Hannes Petermaier <hannes.petermaier@br-automation.com>
>
> Sometimes, for example if the display is mounted in portrait mode or even if it
> mounted landscape but rotated by 180 degrees, we need to rotate our content of
> the display respectively the framebuffer, so that user can read the messages
> who are printed out.
>
> For this we introduce the feature called "CONFIG_LCD_ROTATION", this may be
> defined in the board-configuration if needed. After this the lcd_console will
> be initialized with a given rotation from "vl_rot" out of "vidinfo_t" which is
> provided by the board specific code.
>
> If CONFIG_LCD_ROTATION is not defined, the console will be initialized with
> 0 degrees rotation.
>
> Signed-off-by: Hannes Petermaier <hannes.petermaier@br-automation.com>
> Signed-off-by: Hannes Petermaier <oe5hpm@oevsv.at>
> ---
>
> Changes in v3:
> - rename lcd_address to fbbase for better readability.
> - remove empty line lcd_console.c
> - use printf instead puts to inform about invalid-fb rotation.
> - avoid code-duplication (move define of fbptr_t into lcd.h)
>
> Changes in v2:
> - cleanup README text for feature
> - don't make code cleanups (lcd_console.c) within this patch
> - remove (unnary) comment in lcd_console.h
> - update year to 2015 within copyright in lcd_console.c
> - move rotation related code into separate file lcd_console_rotation.c
> - rework rotation code
> - change meaning of vl_rot to match fbcon=rotate:<n> from the linux-kernel
>
>   README                        |   22 +++++
>   common/Makefile               |    1 +
>   common/lcd.c                  |   15 ++-
>   common/lcd_console.c          |  161 +++++++++++++++++--------------
>   common/lcd_console_rotation.c |  208 +++++++++++++++++++++++++++++++++++++++++
>   include/lcd.h                 |    9 ++
>   include/lcd_console.h         |   18 +++-
>   7 files changed, 349 insertions(+), 85 deletions(-)
>   create mode 100644 common/lcd_console_rotation.c
>
> diff --git a/README b/README
> index b0124d6..c649de1 100644
> --- a/README
> +++ b/README
> @@ -1947,6 +1947,28 @@ CBFS (Coreboot Filesystem) support
>   		the console jump but can help speed up operation when scrolling
>   		is slow.
>
> +		CONFIG_LCD_ROTATION
> +
> +		Sometimes, for example if the display is mounted in portrait
> +		mode or even if it mounted landscape but rotated by 180degree,

s/if it/if it's/

> +		we need to rotate our content of the display respectively the

s/respectively the/relative to the/

> +		framebuffer, so that user can read the messages who are printed

s/who are printed/which are printed/

> +		out.
> +		For this we introduce the feature called "CONFIG_LCD_ROTATION",
> +		this may be defined in the board-configuration if needed.  After
> +		this the lcd_console will be initialized with a given rotation

"this may be defined in the board-configuration if needed"
This is true for all config options in general, no need to mention this.
Also, "For this we introduce" is good for a commit message, but doesn't look good
once committed.
How about just "Once CONFIG_LCD_ROTATION is defined, the lcd_console will be..."

> +		from "vl_rot" out of "vidinfo_t" which is provided by the board
> +		specific code.
> +		The value for vl_rot is coded as following (matching to
> +		fbcon=rotate:<n> linux-kernel commandline):
> +		0 = no rotation respectively 0 degree
> +		1 = 90 degree rotation
> +		2 = 180 degree rotation
> +		3 = 270 degree rotation
> +
> +		If CONFIG_LCD_ROTATION is not defined, the console will be
> +		initialized with 0degree rotation.
> +
>   		CONFIG_LCD_BMP_RLE8
>
>   		Support drawing of RLE8-compressed bitmaps on the LCD.

[...]

> +static void console_calc_rowcol(struct console_t *pcons)
> +{
> +	pcons->cols = pcons->lcdsizex / VIDEO_FONT_WIDTH;
> +#if defined(CONFIG_LCD_LOGO) && !defined(CONFIG_LCD_INFO_BELOW_LOGO)
> +	pcons->rows = (pcons->lcdsizey - BMP_LOGO_HEIGHT);
> +	pcons->rows /= VIDEO_FONT_HEIGHT;
> +#else
> +	pcons->rows = pcons->lcdsizey / VIDEO_FONT_HEIGHT;
> +#endif
> +}

[...]

> @@ -235,4 +253,3 @@ U_BOOT_CMD(
>   	"print string on lcd-framebuffer",
>   	"    <string>"
>   );
> -

Looks like part of the cleanup from the previous series slipped through...

> diff --git a/common/lcd_console_rotation.c b/common/lcd_console_rotation.c
> new file mode 100644
> index 0000000..dd9dadf
> --- /dev/null
> +++ b/common/lcd_console_rotation.c

[...]

> +static void console_calc_rowcol_rot(struct console_t *pcons)
> +{
> +	u32 cols, rows;
> +
> +	if (pcons->lcdrot == 1 || pcons->lcdrot == 3) {
> +		cols = pcons->lcdsizey;
> +		rows = pcons->lcdsizex;
> +	} else {
> +		cols = pcons->lcdsizex;
> +		rows = pcons->lcdsizey;
> +	}
> +
> +	pcons->cols = cols / VIDEO_FONT_WIDTH;
> +#if defined(CONFIG_LCD_LOGO) && !defined(CONFIG_LCD_INFO_BELOW_LOGO)
> +	pcons->rows = (rows - BMP_LOGO_HEIGHT);
> +	pcons->rows /= VIDEO_FONT_HEIGHT;
> +#else
> +	pcons->rows = rows / VIDEO_FONT_HEIGHT;
> +#endif

This duplication with console_calc_rowcol() exists because the lcdsizey and
lcdsizex data is expected by the functions to be already in pcons. If you
change console_calc_rowcol() to accept both variables as additional
arguments, then console_calc_rowcol() could be reused in
console_calc_rowcol_rot() and we'll get rid of the code duplication.

-- 
Regards,
Nikita Kiryanov

  reply	other threads:[~2015-03-25 16:24 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-18  7:37 [U-Boot] [PATCH v2 0/4] common/lcd_console: introduce display/framebuffer rotation Hannes Petermaier
2015-03-18  7:37 ` [U-Boot] [PATCH v2 1/4] common/lcd_console: cleanup lcd_drawchars/lcd_putc_xy Hannes Petermaier
2015-03-19  8:37   ` [U-Boot] [PATCH v3 0/4] common/lcd_console: introduce display/framebuffer rotation Hannes Petermaier
2015-03-19  8:37     ` [U-Boot] [PATCH v3 1/4] common/lcd_console: cleanup lcd_drawchars/lcd_putc_xy Hannes Petermaier
2015-03-19  8:37     ` [U-Boot] [PATCH v3 2/4] common/lcd_console: ask only one-time for bg/fg-color per call Hannes Petermaier
2015-03-19  8:37     ` [U-Boot] [PATCH v3 3/4] common/lcd_console: move single static variables into common (static) structure Hannes Petermaier
2015-03-19  8:37     ` [U-Boot] [PATCH v3 4/4] common/lcd_console: introduce display/framebuffer rotation Hannes Petermaier
2015-03-25 16:24       ` Nikita Kiryanov [this message]
2015-03-25 21:24         ` Hannes Petermaier
2015-03-26 16:32           ` Nikita Kiryanov
2015-03-18  7:37 ` [U-Boot] [PATCH v2 2/4] common/lcd_console: ask only one-time for bg/fg-color per call Hannes Petermaier
2015-03-18  7:37 ` [U-Boot] [PATCH v2 3/4] common/lcd_console: move single static variables into common (static) structure Hannes Petermaier
2015-03-18 12:11   ` Igor Grinberg
2015-03-18 12:14     ` Hannes Petermaier
2015-03-18 12:47       ` Igor Grinberg
2015-03-18 15:07         ` Hannes Petermaier
2015-03-18 15:23           ` Igor Grinberg
2015-03-18  7:37 ` [U-Boot] [PATCH v2 4/4] common/lcd_console: introduce display/framebuffer rotation Hannes Petermaier
2015-03-18 12:56   ` Igor Grinberg
2015-03-18 14:59     ` Hannes Petermaier
2015-03-18 15:27       ` Igor Grinberg

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=5512E13A.8000902@compulab.co.il \
    --to=nikita@compulab.co.il \
    --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.