From 0a9dfa672fbabc0d3f8804a7c16d51b6334d73d6 Mon Sep 17 00:00:00 2001 From: Troy Kisky <troy.kisky@boundarydevices.com> Date: Thu, 2 Aug 2018 16:56:53 -0700 Subject: [PATCH] nitrogen8m: use CONFIG_CMD_FBPANEL instead of CONFIG_IMX_VIDEO_SKIP Signed-off-by: Troy Kisky <troy.kisky@boundarydevices.com> --- arch/arm/dts/imx8mq-nitrogen8m.dts | 2 +- board/boundary/nitrogen8m/nitrogen8m.c | 127 +++++++++++++++---------- include/configs/nitrogen8m.h | 2 +- 3 files changed, 79 insertions(+), 52 deletions(-) diff --git a/arch/arm/dts/imx8mq-nitrogen8m.dts b/arch/arm/dts/imx8mq-nitrogen8m.dts index bf62ccccd0f..44cfaf9dc28 100644 --- a/arch/arm/dts/imx8mq-nitrogen8m.dts +++ b/arch/arm/dts/imx8mq-nitrogen8m.dts @@ -160,7 +160,7 @@ /* J13 Pin 42, BT_HOST_WAKE */ MX8MQ_IOMUXC_SAI5_MCLK_GPIO3_IO25 0xd6 /* Causes a POR_B */ - MX8MQ_IOMUXC_GPIO1_IO02_GPIO1_IO2 0x19 + MX8MQ_IOMUXC_GPIO1_IO02_GPIO1_IO2 0xc6 /* Clock for both CSI1 and CSI2 */ MX8MQ_IOMUXC_GPIO1_IO15_CCMSRCGPCMIX_CLKO2 0x59 diff --git a/board/boundary/nitrogen8m/nitrogen8m.c b/board/boundary/nitrogen8m/nitrogen8m.c index 4b09e842318..bf3d5b3d961 100644 --- a/board/boundary/nitrogen8m/nitrogen8m.c +++ b/board/boundary/nitrogen8m/nitrogen8m.c @@ -12,6 +12,7 @@ #include <miiphy.h> #include <netdev.h> #include <asm/mach-imx/boot_mode.h> +#include <asm/mach-imx/fbpanel.h> #include <asm/mach-imx/iomux-v3.h> #include <asm-generic/gpio.h> #include <fsl_esdhc.h> @@ -43,10 +44,19 @@ static iomux_v3_cfg_t const init_pads[] = { #if 0 IMX8MQ_PAD_GPIO1_IO02__WDOG1_WDOG_B | MUX_PAD_CTRL(WDOG_PAD_CTRL), #else +#define GP_WATCHDOG IMX_GPIO_NR(1, 2) IMX8MQ_PAD_GPIO1_IO02__GPIO1_IO2 | MUX_PAD_CTRL(WDOG_PAD_CTRL), #endif IMX8MQ_PAD_UART1_RXD__UART1_RX | MUX_PAD_CTRL(UART_PAD_CTRL), IMX8MQ_PAD_UART1_TXD__UART1_TX | MUX_PAD_CTRL(UART_PAD_CTRL), +/* This enables 5V power on LTK080A60A004T mipi display */ +#define GP_LTK08_MIPI_EN IMX_GPIO_NR(1, 1) + IMX8MQ_PAD_GPIO1_IO01__GPIO1_IO1 | MUX_PAD_CTRL(0x16), + +#define GPIRQ_GT911 IMX_GPIO_NR(3, 12) + IMX8MQ_PAD_NAND_DATA06__GPIO3_IO12 | MUX_PAD_CTRL(0xd6), +#define GP_GT911_RESET IMX_GPIO_NR(3, 13) + IMX8MQ_PAD_NAND_DATA07__GPIO3_IO13 | MUX_PAD_CTRL(0x49), #define GP_ARM_DRAM_VSEL IMX_GPIO_NR(3, 24) IMX8MQ_PAD_SAI5_RXD3__GPIO3_IO24 | MUX_PAD_CTRL(0x16), @@ -381,11 +391,67 @@ int board_usb_cleanup(int index, enum usb_init_type init) } #endif +#ifdef CONFIG_CMD_FBPANEL + +int board_detect_hdmi(struct display_info_t const *di) +{ + return 1; +} + +int board_detect_gt911(struct display_info_t const *di) +{ + int ret; + struct udevice *dev, *chip; + + if (di->bus_gp) + gpio_direction_output(di->bus_gp, 1); + gpio_set_value(GP_GT911_RESET, 0); + mdelay(20); + gpio_direction_output(GPIRQ_GT911, di->addr == 0x14 ? 1 : 0); + udelay(100); + gpio_set_value(GP_GT911_RESET, 1); + mdelay(6); + gpio_set_value(GPIRQ_GT911, 0); + mdelay(50); + gpio_direction_input(GPIRQ_GT911); + ret = uclass_get_device(UCLASS_I2C, di->bus_num, &dev); + if (ret) + return 0; + + ret = dm_i2c_probe(dev, di->addr, 0x0, &chip); + if (ret && di->bus_gp) + gpio_direction_input(di->bus_gp); + return (ret == 0); +} + +static const struct display_info_t displays[] = { + /* hdmi */ + VD_1920_1080M_60(HDMI, board_detect_hdmi, 0, 0x50), + VD_1280_720M_60(HDMI, NULL, 0, 0x50), + VD_MIPI_M101NWWB(MIPI, fbp_detect_i2c, 3 | (GP_I2C4_SN65DSI83_EN << 8), 0x2c), + VD_LTK080A60A004T(MIPI, board_detect_gt911, 3 | (GP_LTK08_MIPI_EN << 8), 0x5d), /* Goodix touchscreen */ +}; +#define display_cnt ARRAY_SIZE(displays) +#else +#define displays NULL +#define display_cnt 0 +#endif + int board_init(void) { -#ifdef CONFIG_FEC_MXC + gpio_request(GP_I2C4_SN65DSI83_EN, "sn65dsi83_enable"); + gpio_request(GP_GT911_RESET, "gt911_reset"); + gpio_request(GPIRQ_GT911, "gt911_irq"); + gpio_request(GP_LTK08_MIPI_EN, "lkt08_mipi_en"); + gpio_request(GP_WATCHDOG, "watchdog"); + gpio_direction_output(GP_GT911_RESET, 0); + gpio_direction_output(GP_WATCHDOG, 1); + #ifdef CONFIG_FEC_MXC setup_fec(); #endif +#ifdef CONFIG_CMD_FBPANEL + fbp_setup_display(displays, display_cnt); +#endif return 0; } @@ -430,20 +496,27 @@ static int fastboot_key_pressed(void) void board_late_mmc_env_init(void); void init_usb_clk(int usbno); -void board_set_default_env(void) +static void set_env_vars(void) { #ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG env_set("board", "nitrogen8m"); env_set("soc", "imx8mq"); - env_set("cpu", get_imx_type((get_cpu_rev() & 0xFF000) >> 12)); env_set("imx_cpu", get_imx_type((get_cpu_rev() & 0xFF000) >> 12)); env_set("uboot_defconfig", CONFIG_DEFCONFIG); #endif } +void board_set_default_env(void) +{ + set_env_vars(); +#ifdef CONFIG_CMD_FBPANEL + fbp_setup_env_cmds(); +#endif +} + int board_late_init(void) { - board_set_default_env(); + set_env_vars(); #if defined(CONFIG_USB_FUNCTION_FASTBOOT) || defined(CONFIG_CMD_DFU) addserial_env("serial#"); if (fastboot_key_pressed()) { @@ -461,49 +534,3 @@ int board_late_init(void) init_usb_clk(1); return 0; } - -#if defined(CONFIG_VIDEO_IMXDCSS) - -struct display_info_t const displays[] = {{ - .bus = 0, /* Unused */ - .addr = 0, /* Unused */ - .pixfmt = GDF_32BIT_X888RGB, - .detect = NULL, - .enable = NULL, -#ifndef CONFIG_VIDEO_IMXDCSS_1080P - .mode = { - .name = "HDMI", /* 720P60 */ - .refresh = 60, - .xres = 1280, - .yres = 720, - .pixclock = 13468, /* 74250 kHz */ - .left_margin = 110, - .right_margin = 220, - .upper_margin = 5, - .lower_margin = 20, - .hsync_len = 40, - .vsync_len = 5, - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, - .vmode = FB_VMODE_NONINTERLACED - } -#else - .mode = { - .name = "HDMI", /* 1080P60 */ - .refresh = 60, - .xres = 1920, - .yres = 1080, - .pixclock = 6734, /* 148500 kHz */ - .left_margin = 148, - .right_margin = 88, - .upper_margin = 36, - .lower_margin = 4, - .hsync_len = 44, - .vsync_len = 5, - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, - .vmode = FB_VMODE_NONINTERLACED - } -#endif -} }; -size_t display_count = ARRAY_SIZE(displays); - -#endif /* CONFIG_VIDEO_IMXDCSS */ diff --git a/include/configs/nitrogen8m.h b/include/configs/nitrogen8m.h index 46092ab9918..c4d150664bb 100644 --- a/include/configs/nitrogen8m.h +++ b/include/configs/nitrogen8m.h @@ -170,7 +170,6 @@ #define CONFIG_BMP_16BPP #define CONFIG_VIDEO_LOGO #define CONFIG_VIDEO_BMP_LOGO -#define CONFIG_IMX_VIDEO_SKIP #endif #ifndef BD_CONSOLE @@ -206,6 +205,7 @@ #endif #include <config_distro_bootcmd.h> +#define CONFIG_CMD_FBPANEL #define CONFIG_EXTRA_ENV_SETTINGS \ "console=" BD_CONSOLE "\0" \ -- GitLab