[U-Boot] [PATCH 1/5] board/BuR/tseries: take usage of CONFIG_LCD_ROTATION

We take use of the new LCD_ROTATION feature. The information about how the display is rotated is taken from B&R specific (/factory-settings/rotation) information in the devicetree.
The information there is stored as string (cw, ud, ccw, none) since starting support of this devices and cannot be changed, so we have to convert it into
none = 0 cw = 1 ud = 2 ccw = 3
Signed-off-by: Hannes Petermaier oe5hpm@oevsv.at ---
board/BuR/common/common.c | 23 +++++++++++++++++++++++ include/configs/tseries.h | 8 +++++--- 2 files changed, 28 insertions(+), 3 deletions(-)
diff --git a/board/BuR/common/common.c b/board/BuR/common/common.c index 23a98e4..3036f86 100644 --- a/board/BuR/common/common.c +++ b/board/BuR/common/common.c @@ -52,6 +52,9 @@ int load_lcdtiming(struct am335x_lcdpanel *panel) struct am335x_lcdpanel pnltmp; #ifdef CONFIG_USE_FDT u32 dtbprop; + char buf[32]; + const char *nodep = 0; + int nodeoff;
if (gd->fdt_blob == NULL) { printf("%s: don't have a valid gd->fdt_blob!\n", __func__); @@ -97,6 +100,25 @@ int load_lcdtiming(struct am335x_lcdpanel *panel) dtbprop = FDTPROP(PATHTIM, "de-active"); if (dtbprop == 0) pnltmp.pol |= DE_INVERT; + + nodeoff = fdt_path_offset(gd->fdt_blob, "/factory-settings"); + if (nodeoff >= 0) { + nodep = fdt_getprop(gd->fdt_blob, nodeoff, "rotation", NULL); + if (nodep != 0) { + if (strcmp(nodep, "cw") == 0) + panel_info.vl_rot = 1; + else if (strcmp(nodep, "ud") == 0) + panel_info.vl_rot = 2; + else if (strcmp(nodep, "ccw") == 0) + panel_info.vl_rot = 3; + else + panel_info.vl_rot = 0; + } + } else { + puts("no 'factory-settings / rotation' in dtb!\n"); + } + snprintf(buf, sizeof(buf), "fbcon=rotate:%d", panel_info.vl_rot); + setenv("optargs_rot", buf); #else pnltmp.hactive = getenv_ulong("ds1_hactive", 10, ~0UL); pnltmp.vactive = getenv_ulong("ds1_vactive", 10, ~0UL); @@ -111,6 +133,7 @@ int load_lcdtiming(struct am335x_lcdpanel *panel) pnltmp.pol = getenv_ulong("ds1_pol", 16, ~0UL); pnltmp.pup_delay = getenv_ulong("ds1_pupdelay", 10, ~0UL); pnltmp.pon_delay = getenv_ulong("ds1_tondelay", 10, ~0UL); + panel_info.vl_rot = getenv_ulong("ds1_rotation", 10, 0); #endif if ( ~0UL == (pnltmp.hactive) || diff --git a/include/configs/tseries.h b/include/configs/tseries.h index 1e41a12..4406e6f 100644 --- a/include/configs/tseries.h +++ b/include/configs/tseries.h @@ -17,6 +17,7 @@ #define CONFIG_AM335X_LCD #define CONFIG_LCD #define CONFIG_LCD_NOSTDOUT +#define CONFIG_LCD_ROTATION #define CONFIG_SYS_WHITE_ON_BLACK #define LCD_BPP LCD_COLOR32
@@ -105,6 +106,7 @@ "mtdparts=" MTDPARTS_DEFAULT "\0" \ "nandargs=setenv bootargs console=${console} " \ "${optargs} " \ + "${optargs_rot} " \ "root=mtd6 " \ "rootfstype=jffs2\0" \ "kernelsize=0x400000\0" \ @@ -127,9 +129,9 @@ "bmp display ${loadaddr} 0 0\0" \ "logo1=ext4load mmc 0:1 ${loadaddr} /PPTLogo.bmp.gz && " \ "bmp display ${loadaddr} 0 0\0" \ -"mmcroot0=setenv bootargs ${optargs} console=${console}\0" \ -"mmcroot1=setenv bootargs ${optargs} console=${console} root=/dev/mmcblk0p2 " \ - "rootfstype=ext4\0" \ +"mmcroot0=setenv bootargs ${optargs_rot} ${optargs} console=${console}\0" \ +"mmcroot1=setenv bootargs ${optargs_rot} ${optargs} console=${console} " \ + "root=/dev/mmcblk0p2 rootfstype=ext4\0" \ "mmcboot0=echo booting Updatesystem from mmc (ext4-fs) ...; " \ "ext4load mmc 0:1 ${loadaddr} /${kernel}; " \ "ext4load mmc 0:1 ${ramaddr} /${ramdisk}; " \

the CONFIG_LCD_NOSTDOUT feature never had become mainline in uboot due to the fact that the problem of "not writing out whole console to lcd" can be solved with another way.
So we remove this unnary define.
Signed-off-by: Hannes Petermaier oe5hpm@oevsv.at ---
include/configs/tseries.h | 1 - 1 file changed, 1 deletion(-)
diff --git a/include/configs/tseries.h b/include/configs/tseries.h index 4406e6f..f2df358 100644 --- a/include/configs/tseries.h +++ b/include/configs/tseries.h @@ -16,7 +16,6 @@ /* ------------------------------------------------------------------------- */ #define CONFIG_AM335X_LCD #define CONFIG_LCD -#define CONFIG_LCD_NOSTDOUT #define CONFIG_LCD_ROTATION #define CONFIG_SYS_WHITE_ON_BLACK #define LCD_BPP LCD_COLOR32

On Fri, Apr 24, 2015 at 02:49:36PM +0200, Hannes Petermaier wrote:
the CONFIG_LCD_NOSTDOUT feature never had become mainline in uboot due to the fact that the problem of "not writing out whole console to lcd" can be solved with another way.
So we remove this unnary define.
Signed-off-by: Hannes Petermaier oe5hpm@oevsv.at
Applied to u-boot/master, thanks!

Since the used AM3352 SoC doesn't have GPU it isn't allways necessary to build in complete drm-stuff into linux kernel. In very small applications only we use the simple-framebuffer.
So we have 2 use-cases: - device operating on drm-driver (let simplefb node disabled) - device operating on simplefb-driver (activate simplefb node and reserve mem)
The decision is made by means of "simplefb" environment variable.
simplefb = 0 we don't enable the (maybe) existing simplefb node and all the rest around display is up to the linux-kernel. We just disable the backlight, beceause we do not want see the flicker during take over of drm-driver.
simplefb = 1 we enable the (maybe) existing simplefb node and reserve framebuffers size in memory.
Signed-off-by: Hannes Petermaier oe5hpm@oevsv.at ---
board/BuR/common/common.c | 134 +++++++++++++++++++++++++++++---------------- include/configs/tseries.h | 4 ++ 2 files changed, 90 insertions(+), 48 deletions(-)
diff --git a/board/BuR/common/common.c b/board/BuR/common/common.c index 3036f86..5b356fb 100644 --- a/board/BuR/common/common.c +++ b/board/BuR/common/common.c @@ -34,6 +34,7 @@ #include "bur_common.h" #include "../../../drivers/video/am335x-fb.h" #include <nand.h> +#include <fdt_simplefb.h>
static struct ctrl_dev *cdev = (struct ctrl_dev *)CTRL_DEVICE_BASE;
@@ -47,6 +48,64 @@ DECLARE_GLOBAL_DATA_PTR; /* --------------------------------------------------------------------------*/ #if defined(CONFIG_LCD) && defined(CONFIG_AM335X_LCD) && \ !defined(CONFIG_SPL_BUILD) +void lcdbacklight(int on) +{ +#ifdef CONFIG_USE_FDT + if (gd->fdt_blob == NULL) { + printf("%s: don't have a valid gd->fdt_blob!\n", __func__); + return; + } + unsigned int driver = FDTPROP(PATHINF, "brightdrv"); + unsigned int bright = FDTPROP(PATHINF, "brightdef"); + unsigned int pwmfrq = FDTPROP(PATHINF, "brightfdim"); +#else + unsigned int driver = getenv_ulong("ds1_bright_drv", 16, 0UL); + unsigned int bright = getenv_ulong("ds1_bright_def", 10, 50); + unsigned int pwmfrq = getenv_ulong("ds1_pwmfreq", 10, ~0UL); +#endif + unsigned int tmp; + + struct gptimer *const timerhw = (struct gptimer *)DM_TIMER6_BASE; + + if (on) + bright = bright != ~0UL ? bright : 50; + else + bright = 0; + + switch (driver) { + case 0: /* PMIC LED-Driver */ + /* brightness level */ + tps65217_reg_write(TPS65217_PROT_LEVEL_NONE, + TPS65217_WLEDCTRL2, bright, 0xFF); + /* current sink */ + tps65217_reg_write(TPS65217_PROT_LEVEL_NONE, + TPS65217_WLEDCTRL1, + bright != 0 ? 0x0A : 0x02, + 0xFF); + break; + case 1: /* PWM using timer6 */ + if (pwmfrq != ~0UL) { + timerhw->tiocp_cfg = TCFG_RESET; + udelay(10); + while (timerhw->tiocp_cfg & TCFG_RESET) + ; + tmp = ~0UL-(V_OSCK/pwmfrq); /* bottom value */ + timerhw->tldr = tmp; + timerhw->tcrr = tmp; + tmp = tmp + ((V_OSCK/pwmfrq)/100) * bright; + timerhw->tmar = tmp; + timerhw->tclr = (TCLR_PT | (2 << TCLR_TRG_SHIFT) | + TCLR_CE | TCLR_AR | TCLR_ST); + } else { + puts("invalid pwmfrq in env/dtb! skip PWM-setup.\n"); + } + break; + default: + puts("no suitable backlightdriver in env/dtb!\n"); + break; + } +} + int load_lcdtiming(struct am335x_lcdpanel *panel) { struct am335x_lcdpanel pnltmp; @@ -304,6 +363,32 @@ int ft_board_setup(void *blob, bd_t *bd) puts("set bootloader version 'bl-version' prop. not in dtb!\n"); return -1; } + /* + * if no simplefb is requested through environment, we don't set up + * one, instead we turn off backlight. + */ + if (getenv_ulong("simplefb", 10, 0) == 0) { + lcdbacklight(0); + return 0; + } + /* Setup simplefb devicetree node, also adapt memory-node, + * upper limit for kernel e.g. linux is memtop-framebuffer alligned + * to a full megabyte. + */ + u64 start = gd->bd->bi_dram[0].start; + u64 size = (gd->fb_base - start) & ~0xFFFFF; + int rc = fdt_fixup_memory_banks(blob, &start, &size, 1); + + if (rc) { + puts("cannot setup simplefb: Error reserving memory!\n"); + return rc; + } + rc = lcd_dt_simplefb_enable_existing_node(blob); + if (rc) { + puts("cannot setup simplefb: error enabling simplefb node!\n"); + return rc; + } + return 0; } #else @@ -412,55 +497,8 @@ void lcd_ctrl_init(void *lcdbase)
void lcd_enable(void) { -#ifdef CONFIG_USE_FDT - if (gd->fdt_blob == NULL) { - printf("%s: don't have a valid gd->fdt_blob!\n", __func__); - return; - } - unsigned int driver = FDTPROP(PATHINF, "brightdrv"); - unsigned int bright = FDTPROP(PATHINF, "brightdef"); - unsigned int pwmfrq = FDTPROP(PATHINF, "brightfdim"); -#else - unsigned int driver = getenv_ulong("ds1_bright_drv", 16, 0UL); - unsigned int bright = getenv_ulong("ds1_bright_def", 10, 50); - unsigned int pwmfrq = getenv_ulong("ds1_pwmfreq", 10, ~0UL); -#endif - unsigned int tmp; - struct gptimer *const timerhw = (struct gptimer *)DM_TIMER6_BASE; - - bright = bright != ~0UL ? bright : 50; - - switch (driver) { - case 0: /* PMIC LED-Driver */ - /* brightness level */ - tps65217_reg_write(TPS65217_PROT_LEVEL_NONE, - TPS65217_WLEDCTRL2, bright, 0xFF); - /* turn on light */ - tps65217_reg_write(TPS65217_PROT_LEVEL_NONE, - TPS65217_WLEDCTRL1, 0x0A, 0xFF); - break; - case 1: /* PWM using timer6 */ - if (pwmfrq != ~0UL) { - timerhw->tiocp_cfg = TCFG_RESET; - udelay(10); - while (timerhw->tiocp_cfg & TCFG_RESET) - ; - tmp = ~0UL-(V_OSCK/pwmfrq); /* bottom value */ - timerhw->tldr = tmp; - timerhw->tcrr = tmp; - tmp = tmp + ((V_OSCK/pwmfrq)/100) * bright; - timerhw->tmar = tmp; - timerhw->tclr = (TCLR_PT | (2 << TCLR_TRG_SHIFT) | - TCLR_CE | TCLR_AR | TCLR_ST); - } else { - puts("invalid pwmfrq in env/dtb! skip PWM-setup.\n"); - } - break; - default: - puts("no suitable backlightdriver in env/dtb!\n"); - break; - } br_summaryscreen(); + lcdbacklight(1); } #elif CONFIG_SPL_BUILD #else diff --git a/include/configs/tseries.h b/include/configs/tseries.h index f2df358..c58403f 100644 --- a/include/configs/tseries.h +++ b/include/configs/tseries.h @@ -17,6 +17,7 @@ #define CONFIG_AM335X_LCD #define CONFIG_LCD #define CONFIG_LCD_ROTATION +#define CONFIG_LCD_DT_SIMPLEFB #define CONFIG_SYS_WHITE_ON_BLACK #define LCD_BPP LCD_COLOR32
@@ -115,6 +116,7 @@ "bootz ${loadaddr} - ${dtbaddr}\0" \ "defboot=run nandboot\0" \ "bootlimit=1\0" \ + "simplefb=1\0 " \ "altbootcmd=run usbscript\0" #else #define NANDARGS "" @@ -132,10 +134,12 @@ "mmcroot1=setenv bootargs ${optargs_rot} ${optargs} console=${console} " \ "root=/dev/mmcblk0p2 rootfstype=ext4\0" \ "mmcboot0=echo booting Updatesystem from mmc (ext4-fs) ...; " \ + "setenv simplefb 1; " \ "ext4load mmc 0:1 ${loadaddr} /${kernel}; " \ "ext4load mmc 0:1 ${ramaddr} /${ramdisk}; " \ "run mmcroot0; bootz ${loadaddr} ${ramaddr} ${dtbaddr};\0" \ "mmcboot1=echo booting PPT-OS from mmc (ext4-fs) ...; " \ + "setenv simplefb 0; " \ "ext4load mmc 0:2 ${loadaddr} /boot/${kernel}; " \ "run mmcroot1; bootz ${loadaddr} - ${dtbaddr};\0" \ "defboot=run logo0 || run logo1; " \

On Fri, Apr 24, 2015 at 02:49:37PM +0200, Hannes Petermaier wrote:
Since the used AM3352 SoC doesn't have GPU it isn't allways necessary to build in complete drm-stuff into linux kernel. In very small applications only we use the simple-framebuffer.
So we have 2 use-cases:
- device operating on drm-driver (let simplefb node disabled)
- device operating on simplefb-driver (activate simplefb node and reserve mem)
The decision is made by means of "simplefb" environment variable.
simplefb = 0 we don't enable the (maybe) existing simplefb node and all the rest around display is up to the linux-kernel. We just disable the backlight, beceause we do not want see the flicker during take over of drm-driver.
simplefb = 1 we enable the (maybe) existing simplefb node and reserve framebuffers size in memory.
Signed-off-by: Hannes Petermaier oe5hpm@oevsv.at
Applied to u-boot/master, thanks!

Since we display in future the splash screen out of linux-os, we don't need this support anymore within the common section.
But kwb-target is still using BMP_DISPLAY feature, so we move the related from the common section into the target-specific.
Also the default environment of tseries will be adapted to this.
Signed-off-by: Hannes Petermaier oe5hpm@oevsv.at ---
include/configs/bur_am335x_common.h | 6 ------ include/configs/kwb.h | 8 ++++++++ include/configs/tseries.h | 10 ++-------- 3 files changed, 10 insertions(+), 14 deletions(-)
diff --git a/include/configs/bur_am335x_common.h b/include/configs/bur_am335x_common.h index 240fc46..c74140b 100644 --- a/include/configs/bur_am335x_common.h +++ b/include/configs/bur_am335x_common.h @@ -30,12 +30,6 @@ "setenv stdout nc;setenv stdin nc;setenv stderr nc\0"
#define CONFIG_CMD_TIME -#define CONFIG_VIDEO_BMP_GZIP -#define CONFIG_SYS_VIDEO_LOGO_MAX_SIZE (1366*767*4) -#define CONFIG_CMD_UNZIP -#define CONFIG_CMD_BMP -#define CONFIG_BMP_24BMP -#define CONFIG_BMP_32BPP
#define CONFIG_SYS_GENERIC_BOARD
diff --git a/include/configs/kwb.h b/include/configs/kwb.h index dd30df2..7798b80 100644 --- a/include/configs/kwb.h +++ b/include/configs/kwb.h @@ -19,6 +19,14 @@ #define CONFIG_LCD_NOSTDOUT #define CONFIG_SYS_WHITE_ON_BLACK #define LCD_BPP LCD_COLOR32 + +#define CONFIG_VIDEO_BMP_GZIP +#define CONFIG_SYS_VIDEO_LOGO_MAX_SIZE (1366*767*4) +#define CONFIG_CMD_UNZIP +#define CONFIG_CMD_BMP +#define CONFIG_BMP_24BMP +#define CONFIG_BMP_32BPP + /* Clock Defines */ #define V_OSCK 26000000 /* Clock output from T2 */ #define V_SCLK (V_OSCK) diff --git a/include/configs/tseries.h b/include/configs/tseries.h index c58403f..115fd5b 100644 --- a/include/configs/tseries.h +++ b/include/configs/tseries.h @@ -126,10 +126,6 @@ #define MMCARGS \ "dtbdev=mmc\0" \ "dtbpart=0:1\0" \ -"logo0=ext4load mmc 0:3 ${loadaddr} /PPTLogo.bmp.gz && " \ - "bmp display ${loadaddr} 0 0\0" \ -"logo1=ext4load mmc 0:1 ${loadaddr} /PPTLogo.bmp.gz && " \ - "bmp display ${loadaddr} 0 0\0" \ "mmcroot0=setenv bootargs ${optargs_rot} ${optargs} console=${console}\0" \ "mmcroot1=setenv bootargs ${optargs_rot} ${optargs} console=${console} " \ "root=/dev/mmcblk0p2 rootfstype=ext4\0" \ @@ -142,13 +138,11 @@ "setenv simplefb 0; " \ "ext4load mmc 0:2 ${loadaddr} /boot/${kernel}; " \ "run mmcroot1; bootz ${loadaddr} - ${dtbaddr};\0" \ -"defboot=run logo0 || run logo1; " \ - "ext4load mmc 0:2 ${loadaddr} /boot/PPTImage.md5 && run mmcboot1; " \ +"defboot=ext4load mmc 0:2 ${loadaddr} /boot/PPTImage.md5 && run mmcboot1; " \ "ext4load mmc 0:1 ${dtbaddr} /$dtb && run mmcboot0; " \ "run ramboot; run usbupdate;\0" \ "bootlimit=1\0" \ -"altbootcmd=run logo0 || run logo1; " \ - "run mmcboot0;\0" \ +"altbootcmd=run mmcboot0;\0" \ "upduboot=dhcp; " \ "tftp ${loadaddr} MLO && mmc write ${loadaddr} 100 100; " \ "tftp ${loadaddr} u-boot.img && mmc write ${loadaddr} 300 400;\0"

On Fri, Apr 24, 2015 at 02:49:38PM +0200, Hannes Petermaier wrote:
Since we display in future the splash screen out of linux-os, we don't need this support anymore within the common section.
But kwb-target is still using BMP_DISPLAY feature, so we move the related from the common section into the target-specific.
Also the default environment of tseries will be adapted to this.
Signed-off-by: Hannes Petermaier oe5hpm@oevsv.at
Applied to u-boot/master, thanks!

usbupdate in real does allways load some script from usb-storage and execute it, on all B&R targets.
So we do following 2 things: - rename it to what it really does - move it from boards to common environment
Signed-off-by: Hannes Petermaier oe5hpm@oevsv.at ---
board/BuR/kwb/board.c | 4 ++-- include/configs/bur_am335x_common.h | 1 + include/configs/kwb.h | 6 +----- include/configs/tseries.h | 4 +--- 4 files changed, 5 insertions(+), 10 deletions(-)
diff --git a/board/BuR/kwb/board.c b/board/BuR/kwb/board.c index 6eed7e0..01dd1d9 100644 --- a/board/BuR/kwb/board.c +++ b/board/BuR/kwb/board.c @@ -214,8 +214,8 @@ int board_late_init(void) gpio_get_value(PUSH_KEY) && 1 == cnt) { lcd_position_cursor(1, 8); lcd_puts( - "updating U-BOOT from USB ... "); - setenv("bootcmd", "run usbupdate"); + "starting u-boot script from USB ... "); + setenv("bootcmd", "run usbscript"); cnt = 4; break; } else if ((!gpio_get_value(ESC_KEY) && diff --git a/include/configs/bur_am335x_common.h b/include/configs/bur_am335x_common.h index c74140b..b441fa0 100644 --- a/include/configs/bur_am335x_common.h +++ b/include/configs/bur_am335x_common.h @@ -13,6 +13,7 @@ #define __BUR_AM335X_COMMON_H__ /* ------------------------------------------------------------------------- */ #define BUR_COMMON_ENV \ +"usbscript=usb start && fatload usb 0 0x80000000 usbscript.img && source\0" \ "defaultip=192.168.60.253\0" \ "defaultsip=192.168.60.254\0" \ "netconsole=echo switching to network console ...; " \ diff --git a/include/configs/kwb.h b/include/configs/kwb.h index 7798b80..d1c745e 100644 --- a/include/configs/kwb.h +++ b/include/configs/kwb.h @@ -80,10 +80,6 @@ BUR_COMMON_ENV \ "run loadromfs; " \ "tftp ${loadaddr} arimg && go ${loadaddr}; " \ "puts 'networkboot failed!';\0" \ -"usbupdate=echo updating u-boot from usb ...; " \ - "usb start; " \ - "fatload usb 0 0x80000000 updateubootusb.img && source; " \ - "puts 'usbupdate failed!'\0" \ "netscript=echo running script from network (tftp) ...; " \ "tftp 0x80000000 netscript.img && source; " \ "puts 'netscript load failed!'\0" \ @@ -101,7 +97,7 @@ BUR_COMMON_ENV \ #endif /* !CONFIG_SPL_BUILD*/
#define CONFIG_BOOTCOMMAND \ - "run usbupdate;" + "run usbscript;" #define CONFIG_BOOTDELAY 0
/* undefine command which we not need here */ diff --git a/include/configs/tseries.h b/include/configs/tseries.h index 115fd5b..9218533 100644 --- a/include/configs/tseries.h +++ b/include/configs/tseries.h @@ -140,7 +140,7 @@ "run mmcroot1; bootz ${loadaddr} - ${dtbaddr};\0" \ "defboot=ext4load mmc 0:2 ${loadaddr} /boot/PPTImage.md5 && run mmcboot1; " \ "ext4load mmc 0:1 ${dtbaddr} /$dtb && run mmcboot0; " \ - "run ramboot; run usbupdate;\0" \ + "run ramboot; run usbscript;\0" \ "bootlimit=1\0" \ "altbootcmd=run mmcboot0;\0" \ "upduboot=dhcp; " \ @@ -185,8 +185,6 @@ BUR_COMMON_ENV \ "then; else tftp ${dtbaddr} ${dtb}; fi;" \ "run mmcroot0; " \ "bootz ${loadaddr} ${ramaddr} ${dtbaddr}; fi;\0" \ -"usbupdate=echo Updating UBOOT from USB-Stick ...; " \ - "usb start && fatload usb 0 0x80000000 updateubootusb.img && source\0" \ "netupdate=echo Updating UBOOT from Network (TFTP) ...; " \ "setenv autoload 0; " \ "dhcp && tftp 0x80000000 updateUBOOT.img && source;\0" \

On Fri, Apr 24, 2015 at 02:49:39PM +0200, Hannes Petermaier wrote:
usbupdate in real does allways load some script from usb-storage and execute it, on all B&R targets.
So we do following 2 things:
- rename it to what it really does
- move it from boards to common environment
Signed-off-by: Hannes Petermaier oe5hpm@oevsv.at
Applied to u-boot/master, thanks!

On Fri, Apr 24, 2015 at 02:49:35PM +0200, Hannes Petermaier wrote:
We take use of the new LCD_ROTATION feature. The information about how the display is rotated is taken from B&R specific (/factory-settings/rotation) information in the devicetree.
The information there is stored as string (cw, ud, ccw, none) since starting support of this devices and cannot be changed, so we have to convert it into
none = 0 cw = 1 ud = 2 ccw = 3
Signed-off-by: Hannes Petermaier oe5hpm@oevsv.at
Applied to u-boot/master, thanks!
participants (2)
-
Hannes Petermaier
-
Tom Rini