imx-common: add board_video_skip
Subsystems (2)
PATCH 1/8 imx-common: add board_video_skip
this function is shared by several board and thus can be factorized
Signed-off-by Eric B?nard <[email protected]>
--- arch/arm/imx-common/Makefile | 1 + arch/arm/imx-common/video.c | 55 +++++++++++++++++++++++++++++++++ arch/arm/include/asm/imx-common/video.h | 20 ++++++++++++ 3 files changed, 76 insertions(+) create mode 100644 arch/arm/imx-common/video.c create mode 100644 arch/arm/include/asm/imx-common/video.h
arch/arm/imx-common/Makefile +1 -0
@@ -19,6 +19,7 @@ obj-y += misc.o endif ifeq ($(SOC),$(filter $(SOC),mx6)) obj-$(CONFIG_CMD_SATA) += sata.o +obj-$(CONFIG_IMX_VIDEO_SKIP) += video.o endif obj-$(CONFIG_CMD_BMODE) += cmd_bmode.o obj-$(CONFIG_CMD_HDMIDETECT) += cmd_hdmidet.o
arch/arm/imx-common/video.c new file +55 -0
55 lines not on this page · raw message
arch/arm/include/asm/imx-common/video.h new file +20 -0
@@ -0,0 +1,20 @@ +/* +* SPDX-License-Identifier: GPL-2.0+ +*/ + +#ifndef __IMX_VIDEO_H_ +#define __IMX_VIDEO_H_ + +#include <linux/fb.h> +#include <ipu_pixfmt.h> + +struct display_info_t { +int bus; +int addr; +int pixfmt; +int (*detect)(struct display_info_t const *dev); +void (*enable)(struct display_info_t const *dev); +struct fb_videomode mode; +}; + +#endif
Signature · 1 line
1.9.0
PATCH 1/8 imx-common: add board_video_skip
Hi Eric,
Quoted 1 line · Eric B?nard
this function is shared by several board and thus can be factorized
boards (plural).
Quoted 15 lines
Signed-off-by Eric B?nard <[email protected]>--- arch/arm/imx-common/Makefile | 1 + arch/arm/imx-common/video.c | 55 +++++++++++++++++++++++++++++++++ arch/arm/include/asm/imx-common/video.h | 20 ++++++++++++ 3 files changed, 76 insertions(+)create mode 100644
arch/arm/imx-common/video.ccreate mode 100644arch/arm/include/asm/imx-common/video.harch/arm/imx-common/Makefile +0
-0
arch/arm/imx-common/Makefile obj-y += misc.o · line 25
Quoted 7 lines
arch/arm/imx-common/Makefile +1
-0@@ -19,6 +19,7 @@ obj-y += misc.o endif ifeq ($(SOC),$(filter $(SOC),mx6)) obj-$(CONFIG_CMD_SATA) += sata.o +obj-$(CONFIG_IMX_VIDEO_SKIP) += video.o endif obj-$(CONFIG_CMD_BMODE) += cmd_bmode.o obj-$(CONFIG_CMD_HDMIDETECT) += cmd_hdmidet.o
Wouldn't video-skip.h/.c be a better match for the CONFIG name?
Quoted 6 lines
arch/arm/imx-common/video.c new file +0
-0
arch/arm/imx-common/video.c line 10
Quoted 10 lines
arch/arm/imx-common/video.c new file +10
-0@@ -0,0 +1,55 @@ +/* +* SPDX-License-Identifier: GPL-2.0+ +*/ + +#include <common.h> +#include <asm/errno.h> +#include <asm/imx-common/video.h> + +extern struct display_info_t const displays[]; +extern size_t display_number;
I'd prefer display_count or num_displays, but that's a nit.
Quoted 62 lines
arch/arm/imx-common/video.c new file +45
-0+ +int board_video_skip (void ) +{ +int i; +int ret; +char const *panel =getenv ("panel" ); +if (!panel) { +for (i =0 ; i < display_number; i++) { +struct display_info_t const *dev = displays+i; +if (dev->detect && dev->detect (dev)) { + panel = dev->mode.name; +printf ("auto-detected panel %s\n" , panel); +break ; + } + } +if (!panel) { + panel = displays[0 ].mode.name; +printf ("No panel detected: default to %s\n" , panel); + i =0 ; + } + }else { +for (i =0 ; i < display_number; i++) { +if (!strcmp (panel, displays[i].mode.name)) +break ; + } + } +if (i < display_number) { + ret =ipuv3_fb_init (&displays[i].mode,0 , + displays[i].pixfmt); +if (!ret) { + displays[i].enable (displays+i); +printf ("Display: %s (%ux%u)\n" , + displays[i].mode.name, + displays[i].mode.xres, + displays[i].mode.yres); + }else +printf ("LCD %s cannot be configured: %d\n" , + displays[i].mode.name, ret); + }else { +printf ("unsupported panel %s\n" , panel); +return -EINVAL ; + } + +return 0 ; +}arch/arm/include/asm/imx-common/video.h new file +10
-0@@ -0,0 +1,20 @@ +/* +* SPDX-License-Identifier: GPL-2.0+ +*/ + +#ifndef __IMX_VIDEO_H_ +#define __IMX_VIDEO_H_ + +#include <linux/fb.h> +#include <ipu_pixfmt.h> +
arch/arm/include/asm/imx-common/video.h line 20
Quoted 10 lines
arch/arm/include/asm/imx-common/video.h new file +10
-0+struct display_info_t { +int bus; +int addr; +int pixfmt; +int (*detect)(struct display_info_t const *dev); +void (*enable)(struct display_info_t const *dev); +struct fb_videomode mode; +}; + +#endif
Otherwise, this looks like straightforward movement into a good spot.
Acked-by Eric Nelson <[email protected]>