diff options
-rw-r--r-- | arch/arm/cpu/armv7/mx6/soc.c | 1 | ||||
-rw-r--r-- | arch/arm/imx-common/video.c | 3 | ||||
-rw-r--r-- | arch/arm/include/asm/imx-common/spi.h | 17 | ||||
-rw-r--r-- | arch/arm/include/asm/imx-common/video.h | 5 | ||||
-rw-r--r-- | arch/arm/lib/bootm.c | 5 | ||||
-rw-r--r-- | board/bachmann/ot1200/Kconfig | 5 | ||||
-rw-r--r-- | board/bachmann/ot1200/ot1200.c | 10 | ||||
-rw-r--r-- | board/boundary/nitrogen6x/nitrogen6x.c | 1 | ||||
-rw-r--r-- | board/compulab/cm_fx6/common.c | 1 | ||||
-rw-r--r-- | board/embest/mx6boards/mx6boards.c | 1 | ||||
-rw-r--r-- | board/freescale/mx6qsabreauto/mx6qsabreauto.c | 61 | ||||
-rw-r--r-- | board/freescale/mx6slevk/mx6slevk.c | 1 | ||||
-rw-r--r-- | board/gateworks/gw_ventana/gw_ventana.c | 1 | ||||
-rw-r--r-- | board/genesi/mx51_efikamx/efikamx.c | 1 | ||||
-rw-r--r-- | board/ttcontrol/vision2/vision2.c | 1 | ||||
-rw-r--r-- | drivers/spi/mxc_spi.c | 1 | ||||
-rw-r--r-- | include/configs/mx6sabre_common.h | 17 | ||||
-rw-r--r-- | include/configs/mx6sabresd.h | 17 | ||||
-rw-r--r-- | include/configs/ot1200.h | 2 |
19 files changed, 123 insertions, 28 deletions
diff --git a/arch/arm/cpu/armv7/mx6/soc.c b/arch/arm/cpu/armv7/mx6/soc.c index a202b03..dd5aaa2 100644 --- a/arch/arm/cpu/armv7/mx6/soc.c +++ b/arch/arm/cpu/armv7/mx6/soc.c @@ -21,6 +21,7 @@ #include <stdbool.h> #include <asm/arch/mxc_hdmi.h> #include <asm/arch/crm_regs.h> +#include <asm/bootm.h> enum ldo_reg { LDO_ARM, diff --git a/arch/arm/imx-common/video.c b/arch/arm/imx-common/video.c index 0121cd7..8651b80 100644 --- a/arch/arm/imx-common/video.c +++ b/arch/arm/imx-common/video.c @@ -6,9 +6,6 @@ #include <asm/errno.h> #include <asm/imx-common/video.h> -extern struct display_info_t const displays[]; -extern size_t display_count; - int board_video_skip(void) { int i; diff --git a/arch/arm/include/asm/imx-common/spi.h b/arch/arm/include/asm/imx-common/spi.h new file mode 100644 index 0000000..1d4473a --- /dev/null +++ b/arch/arm/include/asm/imx-common/spi.h @@ -0,0 +1,17 @@ +/* + * Copyright 2011 Freescale Semiconductor, Inc. + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#ifndef __MXC_SPI_H_ +#define __MXC_SPI_H_ + +/* + * Board-level chip-select callback + * Should return GPIO # to be used for chip-select + */ + +int board_spi_cs_gpio(unsigned bus, unsigned cs); + +#endif diff --git a/arch/arm/include/asm/imx-common/video.h b/arch/arm/include/asm/imx-common/video.h index 2d94850..1a907d4 100644 --- a/arch/arm/include/asm/imx-common/video.h +++ b/arch/arm/include/asm/imx-common/video.h @@ -21,4 +21,9 @@ struct display_info_t { extern int detect_hdmi(struct display_info_t const *dev); #endif +#ifdef CONFIG_IMX_VIDEO_SKIP +extern struct display_info_t const displays[]; +extern size_t display_count; +#endif + #endif diff --git a/arch/arm/lib/bootm.c b/arch/arm/lib/bootm.c index 0d19c8a..cdb1975 100644 --- a/arch/arm/lib/bootm.c +++ b/arch/arm/lib/bootm.c @@ -23,6 +23,8 @@ #include <asm/bootm.h> #include <asm/secure.h> #include <linux/compiler.h> +#include <bootm.h> +#include <vxworks.h> #if defined(CONFIG_ARMV7_NONSEC) || defined(CONFIG_ARMV7_VIRT) #include <asm/armv7.h> @@ -300,7 +302,8 @@ static void boot_jump_linux(bootm_headers_t *images, int flag) * DIFFERENCE: Instead of calling prep and go at the end * they are called if subcommand is equal 0. */ -int do_bootm_linux(int flag, int argc, char *argv[], bootm_headers_t *images) +int do_bootm_linux(int flag, int argc, char * const argv[], + bootm_headers_t *images) { /* No need for those on ARM */ if (flag & BOOTM_STATE_OS_BD_T || flag & BOOTM_STATE_OS_CMDLINE) diff --git a/board/bachmann/ot1200/Kconfig b/board/bachmann/ot1200/Kconfig index 55a825d..6cf2573 100644 --- a/board/bachmann/ot1200/Kconfig +++ b/board/bachmann/ot1200/Kconfig @@ -1,23 +1,18 @@ if TARGET_OT1200 config SYS_CPU - string default "armv7" config SYS_BOARD - string default "ot1200" config SYS_VENDOR - string default "bachmann" config SYS_SOC - string default "mx6" config SYS_CONFIG_NAME - string default "ot1200" endif diff --git a/board/bachmann/ot1200/ot1200.c b/board/bachmann/ot1200/ot1200.c index 0d5ede5..acf95cb 100644 --- a/board/bachmann/ot1200/ot1200.c +++ b/board/bachmann/ot1200/ot1200.c @@ -12,6 +12,7 @@ #include <malloc.h> #include <asm/arch/mx6-pins.h> #include <asm/imx-common/iomux-v3.h> +#include <asm/imx-common/sata.h> #include <asm/imx-common/mxc_i2c.h> #include <asm/imx-common/boot_mode.h> #include <asm/arch/crm_regs.h> @@ -98,6 +99,11 @@ static void setup_iomux_spi(void) imx_iomux_v3_setup_multiple_pads(ecspi1_pads, ARRAY_SIZE(ecspi1_pads)); } +int board_spi_cs_gpio(unsigned bus, unsigned cs) +{ + return (bus == 2 && cs == 0) ? (IMX_GPIO_NR(1, 3)) : -1; +} + int board_early_init_f(void) { setup_iomux_uart(); @@ -225,6 +231,10 @@ int board_init(void) /* enable ecspi3 clocks */ enable_cspi_clock(1, 2); +#ifdef CONFIG_CMD_SATA + setup_sata(); +#endif + return 0; } diff --git a/board/boundary/nitrogen6x/nitrogen6x.c b/board/boundary/nitrogen6x/nitrogen6x.c index 951b820..fcd4d82 100644 --- a/board/boundary/nitrogen6x/nitrogen6x.c +++ b/board/boundary/nitrogen6x/nitrogen6x.c @@ -18,6 +18,7 @@ #include <asm/imx-common/iomux-v3.h> #include <asm/imx-common/mxc_i2c.h> #include <asm/imx-common/sata.h> +#include <asm/imx-common/spi.h> #include <asm/imx-common/boot_mode.h> #include <asm/imx-common/video.h> #include <mmc.h> diff --git a/board/compulab/cm_fx6/common.c b/board/compulab/cm_fx6/common.c index 1f39679..59c9d1a 100644 --- a/board/compulab/cm_fx6/common.c +++ b/board/compulab/cm_fx6/common.c @@ -11,6 +11,7 @@ #include <common.h> #include <asm/arch/sys_proto.h> #include <asm/gpio.h> +#include <asm/imx-common/spi.h> #include <fsl_esdhc.h> #include "common.h" diff --git a/board/embest/mx6boards/mx6boards.c b/board/embest/mx6boards/mx6boards.c index a725f15..02fb3fa 100644 --- a/board/embest/mx6boards/mx6boards.c +++ b/board/embest/mx6boards/mx6boards.c @@ -23,6 +23,7 @@ #include <asm/imx-common/iomux-v3.h> #include <asm/imx-common/boot_mode.h> #include <asm/imx-common/mxc_i2c.h> +#include <asm/imx-common/spi.h> #include <asm/imx-common/video.h> #include <i2c.h> #include <mmc.h> diff --git a/board/freescale/mx6qsabreauto/mx6qsabreauto.c b/board/freescale/mx6qsabreauto/mx6qsabreauto.c index 1cb7561..0dc0160 100644 --- a/board/freescale/mx6qsabreauto/mx6qsabreauto.c +++ b/board/freescale/mx6qsabreauto/mx6qsabreauto.c @@ -17,12 +17,16 @@ #include <asm/imx-common/iomux-v3.h> #include <asm/imx-common/mxc_i2c.h> #include <asm/imx-common/boot_mode.h> +#include <asm/imx-common/spi.h> #include <mmc.h> #include <fsl_esdhc.h> #include <miiphy.h> #include <netdev.h> #include <asm/arch/sys_proto.h> #include <i2c.h> +#include <asm/arch/mxc_hdmi.h> +#include <asm/imx-common/video.h> +#include <asm/arch/crm_regs.h> DECLARE_GLOBAL_DATA_PTR; @@ -234,10 +238,65 @@ u32 get_board_rev(void) return (get_cpu_rev() & ~(0xF << 8)) | rev; } +#if defined(CONFIG_VIDEO_IPUV3) +static void do_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 = do_enable_hdmi, + .mode = { + .name = "HDMI", + .refresh = 60, + .xres = 1024, + .yres = 768, + .pixclock = 15385, + .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 setup_display(void) +{ + struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR; + int reg; + + enable_ipu_clock(); + imx_setup_hdmi(); + + reg = readl(&mxc_ccm->chsccdr); + reg |= (CHSCCDR_CLK_SEL_LDB_DI0 + << MXC_CCM_CHSCCDR_IPU1_DI0_CLK_SEL_OFFSET); + writel(reg, &mxc_ccm->chsccdr); +} +#endif /* CONFIG_VIDEO_IPUV3 */ + +/* + * Do not overwrite the console + * Use always serial for U-Boot console + */ +int overwrite_console(void) +{ + return 1; +} + int board_early_init_f(void) { setup_iomux_uart(); - +#ifdef CONFIG_VIDEO_IPUV3 + setup_display(); +#endif return 0; } diff --git a/board/freescale/mx6slevk/mx6slevk.c b/board/freescale/mx6slevk/mx6slevk.c index a0832f4..a500133 100644 --- a/board/freescale/mx6slevk/mx6slevk.c +++ b/board/freescale/mx6slevk/mx6slevk.c @@ -13,6 +13,7 @@ #include <asm/arch/sys_proto.h> #include <asm/gpio.h> #include <asm/imx-common/iomux-v3.h> +#include <asm/imx-common/spi.h> #include <asm/io.h> #include <linux/sizes.h> #include <common.h> diff --git a/board/gateworks/gw_ventana/gw_ventana.c b/board/gateworks/gw_ventana/gw_ventana.c index 1038d9d..df491a8 100644 --- a/board/gateworks/gw_ventana/gw_ventana.c +++ b/board/gateworks/gw_ventana/gw_ventana.c @@ -20,6 +20,7 @@ #include <asm/imx-common/mxc_i2c.h> #include <asm/imx-common/boot_mode.h> #include <asm/imx-common/sata.h> +#include <asm/imx-common/spi.h> #include <asm/imx-common/video.h> #include <jffs2/load_kernel.h> #include <hwconfig.h> diff --git a/board/genesi/mx51_efikamx/efikamx.c b/board/genesi/mx51_efikamx/efikamx.c index 137e4ed..6ba55cd 100644 --- a/board/genesi/mx51_efikamx/efikamx.c +++ b/board/genesi/mx51_efikamx/efikamx.c @@ -14,6 +14,7 @@ #include <asm/arch/sys_proto.h> #include <asm/arch/crm_regs.h> #include <asm/arch/clock.h> +#include <asm/imx-common/spi.h> #include <i2c.h> #include <mmc.h> #include <fsl_esdhc.h> diff --git a/board/ttcontrol/vision2/vision2.c b/board/ttcontrol/vision2/vision2.c index b5249e7..247991d 100644 --- a/board/ttcontrol/vision2/vision2.c +++ b/board/ttcontrol/vision2/vision2.c @@ -15,6 +15,7 @@ #include <asm/arch/iomux-mx51.h> #include <asm/gpio.h> #include <asm/arch/sys_proto.h> +#include <asm/imx-common/spi.h> #include <i2c.h> #include <mmc.h> #include <power/pmic.h> diff --git a/drivers/spi/mxc_spi.c b/drivers/spi/mxc_spi.c index 026f680..be10269 100644 --- a/drivers/spi/mxc_spi.c +++ b/drivers/spi/mxc_spi.c @@ -12,6 +12,7 @@ #include <asm/gpio.h> #include <asm/arch/imx-regs.h> #include <asm/arch/clock.h> +#include <asm/imx-common/spi.h> #ifdef CONFIG_MX27 /* i.MX27 has a completely wrong register layout and register definitions in the diff --git a/include/configs/mx6sabre_common.h b/include/configs/mx6sabre_common.h index 2d93d6c..c81e9e9 100644 --- a/include/configs/mx6sabre_common.h +++ b/include/configs/mx6sabre_common.h @@ -260,4 +260,21 @@ #define CONFIG_CMD_CACHE #endif +/* Framebuffer */ +#define CONFIG_VIDEO +#define CONFIG_VIDEO_IPUV3 +#define CONFIG_CFB_CONSOLE +#define CONFIG_VGA_AS_SINGLE_DEVICE +#define CONFIG_SYS_CONSOLE_IS_IN_ENV +#define CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE +#define CONFIG_VIDEO_BMP_RLE8 +#define CONFIG_SPLASH_SCREEN +#define CONFIG_SPLASH_SCREEN_ALIGN +#define CONFIG_BMP_16BPP +#define CONFIG_VIDEO_LOGO +#define CONFIG_VIDEO_BMP_LOGO +#define CONFIG_IPUV3_CLK 260000000 +#define CONFIG_IMX_HDMI +#define CONFIG_IMX_VIDEO_SKIP + #endif /* __MX6QSABRE_COMMON_CONFIG_H */ diff --git a/include/configs/mx6sabresd.h b/include/configs/mx6sabresd.h index e666ebb..938030d 100644 --- a/include/configs/mx6sabresd.h +++ b/include/configs/mx6sabresd.h @@ -32,23 +32,6 @@ #define CONFIG_SYS_MMC_ENV_DEV 1 /* SDHC3 */ #endif -/* Framebuffer */ -#define CONFIG_VIDEO -#define CONFIG_VIDEO_IPUV3 -#define CONFIG_CFB_CONSOLE -#define CONFIG_VGA_AS_SINGLE_DEVICE -#define CONFIG_SYS_CONSOLE_IS_IN_ENV -#define CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE -#define CONFIG_VIDEO_BMP_RLE8 -#define CONFIG_SPLASH_SCREEN -#define CONFIG_SPLASH_SCREEN_ALIGN -#define CONFIG_BMP_16BPP -#define CONFIG_VIDEO_LOGO -#define CONFIG_VIDEO_BMP_LOGO -#define CONFIG_IPUV3_CLK 260000000 -#define CONFIG_IMX_HDMI -#define CONFIG_IMX_VIDEO_SKIP - #define CONFIG_CMD_PCI #ifdef CONFIG_CMD_PCI #define CONFIG_PCI diff --git a/include/configs/ot1200.h b/include/configs/ot1200.h index 071880f..d7696bd 100644 --- a/include/configs/ot1200.h +++ b/include/configs/ot1200.h @@ -47,7 +47,7 @@ #define CONFIG_SPI_FLASH_SST #define CONFIG_MXC_SPI #define CONFIG_SF_DEFAULT_BUS 2 -#define CONFIG_SF_DEFAULT_CS (0|(IMX_GPIO_NR(1, 3)<<8)) +#define CONFIG_SF_DEFAULT_CS 0 #define CONFIG_SF_DEFAULT_SPEED 25000000 #define CONFIG_SF_DEFAULT_MODE (SPI_MODE_0) |