[U-Boot] [PATCH 02/12] arm: mx6: cm-fx6: make it possible to not init display

Stefano Babic
2015-08-02T08:53:30Z

On 23/07/2015 16:19, Nikita Kiryanov wrote:
> Implement a cm-fx6 specific board_video_skip() to provide the option to not
> initialize the display.
>
> The new function does not init display if the environment variable "panel" is
> not defined, or if it is set to an unsupported value.
>
> Collateral changes:
> - Don't use the global displays array (it's CONFIG_IMX_VIDEO_SKIP specific).
> - Don't use detect_hdmi(), since env controlled init makes it unnecessary.
>
> Cc: Stefano Babic <sbabic@denx.de>
> Cc: Igor Grinberg <grinberg@compulab.co.il>
> Signed-off-by: Nikita Kiryanov <nikita@compulab.co.il>
> Signed-off-by: Igor Grinberg <grinberg@compulab.co.il>
> ---
> board/compulab/cm_fx6/cm_fx6.c | 72 ++++++++++++++++++++++++++++--------------
> include/configs/cm_fx6.h | 1 -
> 2 files changed, 48 insertions(+), 25 deletions(-)
>
> diff --git a/board/compulab/cm_fx6/cm_fx6.c b/board/compulab/cm_fx6/cm_fx6.c
> index b500f91..2fb8db5 100644
> --- a/board/compulab/cm_fx6/cm_fx6.c
> +++ b/board/compulab/cm_fx6/cm_fx6.c
> @@ -13,6 +13,7 @@
> #include <fsl_esdhc.h>
> #include <miiphy.h>
> #include <netdev.h>
> +#include <errno.h>
> #include <fdt_support.h>
> #include <sata.h>
> #include <splash.h>
> @@ -54,31 +55,27 @@ static void cm_fx6_enable_hdmi(struct display_info_t const *dev)
> imx_enable_hdmi_phy();
> }
>
> -struct display_info_t const displays[] = {
> - {
> - .bus = -1,
> - .addr = 0,
> - .pixfmt = IPU_PIX_FMT_RGB24,
> - .detect = detect_hdmi,
> - .enable = cm_fx6_enable_hdmi,
> - .mode = {
> - .name = "HDMI",
> - .refresh = 60,
> - .xres = 1024,
> - .yres = 768,
> - .pixclock = 40385,
> - .left_margin = 220,
> - .right_margin = 40,
> - .upper_margin = 21,
> - .lower_margin = 7,
> - .hsync_len = 60,
> - .vsync_len = 10,
> - .sync = FB_SYNC_EXT,
> - .vmode = FB_VMODE_NONINTERLACED,
> - }
> - },
> +static struct display_info_t preset_hdmi_1024X768 = {
> + .bus = -1,
> + .addr = 0,
> + .pixfmt = IPU_PIX_FMT_RGB24,
> + .enable = cm_fx6_enable_hdmi,
> + .mode = {
> + .name = "HDMI",
> + .refresh = 60,
> + .xres = 1024,
> + .yres = 768,
> + .pixclock = 40385,
> + .left_margin = 220,
> + .right_margin = 40,
> + .upper_margin = 21,
> + .lower_margin = 7,
> + .hsync_len = 60,
> + .vsync_len = 10,
> + .sync = FB_SYNC_EXT,
> + .vmode = FB_VMODE_NONINTERLACED,
> + }
> };
> -size_t display_count = ARRAY_SIZE(displays);
>
> static void cm_fx6_setup_display(void)
> {
> @@ -93,6 +90,33 @@ static void cm_fx6_setup_display(void)
> writel(reg, &mxc_ccm->CCGR3);
> clrbits_le32(&iomuxc_regs->gpr[3], MXC_CCM_CCGR3_IPU1_IPU_DI0_MASK);
> }
> +
> +int board_video_skip(void)
> +{
> + int ret;
> + struct display_info_t *preset;
> + char const *panel = getenv("panel");
> +
> + if (!panel)
> + return -ENOENT;
> +
> + if (!strcmp(panel, "HDMI"))
> + preset = &preset_hdmi_1024X768;
> + else
> + return -EINVAL;
> +
> + ret = ipuv3_fb_init(&preset->mode, 0, preset->pixfmt);
> + if (ret) {
> + printf("Can't init display %s: %d\n", preset->mode.name, ret);
> + return ret;
> + }
> +
> + preset->enable(preset);
> + printf("Display: %s (%ux%u)\n", preset->mode.name, preset->mode.xres,
> + preset->mode.yres);
> +
> + return 0;
> +}
> #else
> static inline void cm_fx6_setup_display(void) {}
> #endif /* CONFIG_VIDEO_IPUV3 */
> diff --git a/include/configs/cm_fx6.h b/include/configs/cm_fx6.h
> index 231f4ba..f23ef8b 100644
> --- a/include/configs/cm_fx6.h
> +++ b/include/configs/cm_fx6.h
> @@ -258,7 +258,6 @@
> #define CONFIG_VIDEO_IPUV3
> #define CONFIG_IPUV3_CLK 260000000
> #define CONFIG_IMX_HDMI
> -#define CONFIG_IMX_VIDEO_SKIP
> #define CONFIG_CFB_CONSOLE
> #define CONFIG_VGA_AS_SINGLE_DEVICE
> #define CONFIG_SYS_CONSOLE_IS_IN_ENV
>
Applied to u-boot-imx, thanks !

Best regards,
Stefano Babic

--
=====================================================================
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================