diff options
author | Max Krummenacher <max.krummenacher@toradex.com> | 2014-07-21 14:05:16 +0200 |
---|---|---|
committer | Max Krummenacher <max.krummenacher@toradex.com> | 2014-07-21 14:05:16 +0200 |
commit | 8871853b26f83bb9d2b016fb8978e22a66c5d798 (patch) | |
tree | 4cac5d0e77736108be83829aeb6e9f487ba065c1 | |
parent | 0b4191106b32ca91afa759f3620fc470cf61d7c2 (diff) | |
parent | 00d207d8f31a5589a2583149723fa1ddc92e1988 (diff) |
Merge branch '2014.04-toradex-next' into 2014.04-toradex
-rw-r--r-- | board/toradex/apalis_imx6/apalis_imx6.c | 45 | ||||
-rw-r--r-- | boards.cfg | 2 | ||||
-rw-r--r-- | drivers/serial/serial_mxc.c | 10 | ||||
-rw-r--r-- | fs/fat/fat_write.c | 2 | ||||
-rw-r--r-- | include/configs/apalis-imx6.h | 108 |
5 files changed, 118 insertions, 49 deletions
diff --git a/board/toradex/apalis_imx6/apalis_imx6.c b/board/toradex/apalis_imx6/apalis_imx6.c index c4afd9fea2..0cce5e1f22 100644 --- a/board/toradex/apalis_imx6/apalis_imx6.c +++ b/board/toradex/apalis_imx6/apalis_imx6.c @@ -83,14 +83,13 @@ int dram_init(void) /* Apalis UART1 */ iomux_v3_cfg_t const uart1_pads[] = { +#ifndef CONFIG_MXC_UART_DTE MX6_PAD_CSI0_DAT10__UART1_TX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL), MX6_PAD_CSI0_DAT11__UART1_RX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL), -}; - -/* Apalis UART2 */ -iomux_v3_cfg_t const uart2_pads[] = { - MX6_PAD_SD4_DAT4__UART2_RX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL), - MX6_PAD_SD4_DAT7__UART2_TX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL), +#else + MX6_PAD_CSI0_DAT10__UART1_RX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL), + MX6_PAD_CSI0_DAT11__UART1_TX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL), +#endif }; #define PC MUX_PAD_CTRL(I2C_PAD_CTRL) @@ -256,12 +255,35 @@ iomux_v3_cfg_t const usb_pads[] = { MX6_PAD_GPIO_0__GPIO1_IO00 | MUX_PAD_CTRL(NO_PAD_CTRL), /* USB_VBUS_DET */ MX6_PAD_EIM_D28__GPIO3_IO28 | MUX_PAD_CTRL(NO_PAD_CTRL), + /* USBO1_ID */ + MX6_PAD_ENET_RX_ER__USB_OTG_ID | MUX_PAD_CTRL(WEAK_PULLUP), + /* USBO1_EN */ + MX6_PAD_EIM_D22__GPIO3_IO22 | MUX_PAD_CTRL(NO_PAD_CTRL), }; +/* if UARTs are used in DTE mode, so switch the mode on all UARTs before + * any pinmuxing connects a (DCE) output to a transceiver output. + */ +#define UFCR 0x90 /* FIFO Control Register */ +#define UFCR_DCEDTE (1<<6) /* DCE=0 */ +#define SET_DCEDTE(p) (writel( (readl((u32 *) (p)) | UFCR_DCEDTE), (u32 *) (p))) + +#ifdef CONFIG_MXC_UART_DTE +static void setup_dtemode_uart(void) +{ + SET_DCEDTE(UART1_BASE + UFCR); + SET_DCEDTE(UART2_BASE + UFCR); + SET_DCEDTE(UART4_BASE + UFCR); + SET_DCEDTE(UART5_BASE + UFCR); +} +#endif + static void setup_iomux_uart(void) { +#ifdef CONFIG_MXC_UART_DTE + setup_dtemode_uart(); +#endif imx_iomux_v3_setup_multiple_pads(uart1_pads, ARRAY_SIZE(uart1_pads)); - imx_iomux_v3_setup_multiple_pads(uart2_pads, ARRAY_SIZE(uart2_pads)); } #ifdef CONFIG_USB_EHCI_MX6 @@ -278,6 +300,15 @@ int board_ehci_hcd_init(int port) return 0; } + +int board_ehci_power(int port, int on) +{ + if (port != 0) + return 0; + /* control OTG power */ + gpio_set_value(IMX_GPIO_NR(3, 22), on); + return 0; +} #endif #ifdef CONFIG_FSL_ESDHC diff --git a/boards.cfg b/boards.cfg index 49f8347051..edc64493bd 100644 --- a/boards.cfg +++ b/boards.cfg @@ -328,7 +328,7 @@ Active arm armv7 mx6 gateworks gw_ventana Active arm armv7 mx6 gateworks gw_ventana gwventanaq1g gw_ventana:IMX_CONFIG=board/gateworks/gw_ventana/gw_ventana.cfg,MX6Q,DDR_MB=1024 Tim Harvey <tharvey@gateworks.com> Active arm armv7 mx6 gateworks gw_ventana gwventanaq1gspi gw_ventana:IMX_CONFIG=board/gateworks/gw_ventana/gw_ventana.cfg,MX6Q,DDR_MB=1024,SPI_FLASH Tim Harvey <tharvey@gateworks.com> Active arm armv7 mx6 solidrun hummingboard hummingboard_solo hummingboard:IMX_CONFIG=board/solidrun/hummingboard/solo.cfg,MX6S,DDR_MB=512 Jon Nettleton <jon.nettleton@gmail.com> -Active arm armv7 mx6 toradex apalis_imx6 apalis_imx6q1g apalis-imx6:IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6q.cfg,MX6Q,DDR_MB=1024 +Active arm armv7 mx6 toradex apalis_imx6 apalis_imx6q1g apalis-imx6:IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6q.cfg,MX6Q,DDR_MB=1024 Max Krummenacher <max.krummenacher@toradex.com> Active arm armv7 omap3 - overo omap3_overo - Steve Sakoman <sakoman@gmail.com> Active arm armv7 omap3 - pandora omap3_pandora - Grazvydas Ignotas <notasas@gmail.com> Active arm armv7 omap3 8dtech eco5pk eco5pk - Raphael Assenat <raph@8d.com> diff --git a/drivers/serial/serial_mxc.c b/drivers/serial/serial_mxc.c index 56bee55208..bfc473bf66 100644 --- a/drivers/serial/serial_mxc.c +++ b/drivers/serial/serial_mxc.c @@ -96,6 +96,7 @@ #define UCR4_OREN (1<<1) /* Receiver overrun interrupt enable */ #define UCR4_DREN (1<<0) /* Recv data ready interrupt enable */ #define UFCR_RXTL_SHF 0 /* Receiver trigger level shift */ +#define UFCR_DCEDTE (1<<6) /* DCE=0 */ #define UFCR_RFDIV (7<<7) /* Reference freq divider mask */ #define UFCR_TXTL_SHF 10 /* Transmitter trigger level shift */ #define USR1_PARITYERR (1<<15) /* Parity error interrupt flag */ @@ -137,7 +138,7 @@ static void mxc_serial_setbrg(void) if (!gd->baudrate) gd->baudrate = CONFIG_BAUDRATE; - __REG(UART_PHYS + UFCR) = 4 << 7; /* divide input clock by 2 */ + __REG(UART_PHYS + UFCR) = (__REG(UART_PHYS + UFCR) & ~UFCR_RFDIV) | (4 << 7); /* divide input clock by 2 */ __REG(UART_PHYS + UBIR) = 0xf; __REG(UART_PHYS + UBMR) = clk / (2 * gd->baudrate); @@ -193,6 +194,13 @@ static int mxc_serial_init(void) __REG(UART_PHYS + UTS) = 0x0; + __REG(UART_PHYS + UFCR) = +#ifdef CONFIG_MXC_UART_DTE + UFCR_DCEDTE; +#else + 0; +#endif + serial_setbrg(); __REG(UART_PHYS + UCR2) = UCR2_WS | UCR2_IRTS | UCR2_RXEN | UCR2_TXEN | UCR2_SRST; diff --git a/fs/fat/fat_write.c b/fs/fat/fat_write.c index 9f5e911852..cef138ec96 100644 --- a/fs/fat/fat_write.c +++ b/fs/fat/fat_write.c @@ -952,7 +952,7 @@ static int do_fat_write(const char *filename, void *buffer, } mydata->fatbufnum = -1; - mydata->fatbuf = malloc(FATBUFSIZE); + mydata->fatbuf = memalign(ARCH_DMA_MINALIGN, FATBUFSIZE); if (mydata->fatbuf == NULL) { debug("Error: allocating memory\n"); return -1; diff --git a/include/configs/apalis-imx6.h b/include/configs/apalis-imx6.h index e1f00e8bb0..0770ac0f83 100644 --- a/include/configs/apalis-imx6.h +++ b/include/configs/apalis-imx6.h @@ -42,6 +42,11 @@ #define CONFIG_MXC_UART #define CONFIG_MXC_UART_BASE UART1_BASE +//#define CONFIG_MXC_UART_DTE /* use the uart in DTE mode */ + +/* Make the HW version stuff available in u-boot env */ +#define CONFIG_VERSION_VARIABLE /* ver environment variable */ +#define CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG /* I2C Configs */ #define CONFIG_CMD_I2C @@ -112,13 +117,13 @@ #define CONFIG_USB_HOST_ETHER #define CONFIG_USB_ETHER_ASIX #define CONFIG_USB_ETHER_SMSC95XX -#define CONFIG_MXC_USB_PORT 1 +#define CONFIG_USB_MAX_CONTROLLER_COUNT 2 +#define CONFIG_EHCI_HCD_INIT_AFTER_RESET /* For OTG port */ #define CONFIG_MXC_USB_PORTSC (PORT_PTS_UTMI | PORT_PTS_PTW) #define CONFIG_MXC_USB_FLAGS 0 #define CONFIG_USB_KEYBOARD #ifdef CONFIG_USB_KEYBOARD #define CONFIG_SYS_USB_EVENT_POLL -/* #define CONFIG_PREBOOT "usb start" */ /* put this in a failed bootcmd to save the USB enumeration? */ #endif /* CONFIG_USB_KEYBOARD */ /* Miscellaneous commands */ @@ -159,8 +164,6 @@ #undef CONFIG_SERVERIP #define CONFIG_SERVERIP 192.168.10.1 -//TODO #define CONFIG_PREBOOT "" - #define CONFIG_LOADADDR 0x12000000 #define CONFIG_SYS_TEXT_BASE 0x17800000 @@ -178,58 +181,85 @@ #define CONFIG_DRIVE_TYPES CONFIG_DRIVE_SATA CONFIG_DRIVE_MMC -#define EMMC_BOOTCMD \ - "run setup; " \ - "setenv bootargs ${defargs} ${mmcargs} ${setupargs} " \ - "${vidargs};" \ - "echo Booting from internal eMMC chip...; " \ - "fatload mmc 0:1 10800000 uImage && bootm 10800000" -#define NFS_BOOTCMD \ - "run setup; " \ - "setenv bootargs ${defargs} ${nfsargs} ${setupargs} " \ - "${vidargs}; " \ - "echo Booting via DHCP/TFTP/NFS...; " \ - "dhcp && bootm" +#define EMMC_BOOTCMD \ + "emmcargs=ip=off root=/dev/mmcblk0p2 rw,noatime rootfstype=ext3 " \ + "rootwait\0" \ + "emmcboot=run setup; " \ + "setenv bootargs ${defargs} ${emmcargs} ${setupargs} " \ + "${vidargs}; echo Booting from internal eMMC chip...; " \ + "run emmcdtbload; fatload mmc 0:1 ${kernel_addr_r} " \ + "${boot_file} && bootm ${kernel_addr_r} ${dtbparam}\0" \ + "emmcdtbload=setenv dtbparam; fatload mmc 0:1 ${fdt_addr_r} " \ + "${fdt_file} && setenv dtbparam \" - ${fdt_addr_r}\" && true\0" + +#define MEM_LAYOUT_ENV_SETTINGS \ + "fdt_addr_r=0x12000000\0" \ + "kernel_addr_r=0x10800000\0" \ + "ramdisk_addr_r=0x10900000\0" + +#define NFS_BOOTCMD \ + "nfsargs=ip=:::::eth0:on root=/dev/nfs rw netdevwait\0" \ + "nfsboot=run setup; " \ + "setenv bootargs ${defargs} ${nfsargs} ${setupargs} " \ + "${vidargs}; echo Booting via DHCP/TFTP/NFS...; " \ + "run nfsdtbload; dhcp ${kernel_addr_r} " \ + "&& bootm ${kernel_addr_r} ${dtbparam}\0" \ + "nfsdtbload=setenv dtbparam; tftp ${fdt_addr_r} ${fdt_file} " \ + "&& setenv dtbparam \" - ${fdt_addr_r}\" && true\0" + #define SD_BOOTCMD \ - "run setup; " \ - "setenv bootargs ${defargs} ${mmcargs} ${setupargs} " \ - "${vidargs};" \ - "echo Booting from SD card in 8bit slot...; " \ - "fatload mmc 1:1 10800000 uImage && bootm 10800000" + "sdargs=ip=off root=/dev/mmcblk1p2 rw,noatime rootfstype=ext3 " \ + "rootwait\0" \ + "sdboot=" "run setup; " \ + "setenv bootargs ${defargs} ${sdargs} ${setupargs} " \ + "${vidargs}; echo Booting from SD card in 8bit slot...; " \ + "run sddtbload; fatload mmc 1:1 ${kernel_addr_r} " \ + "${boot_file} && bootm ${kernel_addr_r} ${dtbparam}\0" \ + "sddtbload=setenv dtbparam; fatload mmc 1:1 ${fdt_addr_r} " \ + "${fdt_file} && setenv dtbparam \" - ${fdt_addr_r}\" && true\0" #define CONFIG_EXTRA_ENV_SETTINGS \ "bootcmd=run emmcboot ; echo ; echo emmcboot failed ; " \ "run nfsboot ; echo ; echo nfsboot failed ; " \ "usb start ;" \ "setenv stdout serial,vga ; setenv stdin serial,usbkbd\0" \ - "bootscript=fatload mmc 1:1 10008000 6x_bootscript && source 10008000\0" \ + "boot_file=uImage\0" \ + "bootscript=fatload mmc 1:1 ${kernel_addr_r} 6x_bootscript && " \ + "source ${kernel_addr_r}\0" \ "console=ttymxc0\0" \ "defargs=enable_wait_mode=off vmalloc=400M\0" \ - "emmcboot=" EMMC_BOOTCMD "\0" \ - "mmcargs=ip=off root=/dev/mmcblk0p2 rw,noatime rootfstype=ext3 " \ - "rootwait\0" \ - "mmc_kernel_size=0x4000\0" \ - "nfsargs=ip=:::::eth0:on root=/dev/nfs rw netdevwait\0" \ - "nfsboot=" NFS_BOOTCMD "\0" \ - "sdboot=" SD_BOOTCMD "\0" \ + EMMC_BOOTCMD \ + "fdt_file=imx6q-apalis-eval.dtb\0" \ + MEM_LAYOUT_ENV_SETTINGS \ + NFS_BOOTCMD \ + SD_BOOTCMD \ "setup=setenv setupargs fec_mac=${ethaddr} " \ "consoleblank=0 no_console_suspend=1 console=tty1 " \ - "console=ttymxc0,${baudrate}n8 " \ - "fbcon=map:1\0 " \ - "setupdate=fatload mmc 1:1 ${loadaddr} flash_mmc.img; source \0 " \ - "vidargs=video=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24 " \ + "console=ttymxc0,${baudrate}n8\0 " \ + "setupdate=setenv drive 1; fatload mmc ${drive}:1 ${kernel_addr_r} " \ + "flash_mmc.img || setenv drive 2; fatload mmc ${drive}:1 " \ + "${kernel_addr_r} flash_mmc.img && source ${kernel_addr_r}\0" \ + "vidargs=mxc_hdmi.only_cea=1 " \ + "video=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24 " \ "video=mxcfb1:off video=mxcfb2:off video=mxcfb3:off " \ "fbmem=32M\0 " \ - "vidargs_hdmi_lvds=video=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24 " \ - "video=mxcfb1:dev=ldb,LDB-LG_LP156WF1,if=RGB666,ldb=spl1 " \ - "video=mxcfb2:off video=mxcfb3:off " \ + "vidargs_edt=video=mxcfb0:dev=lcd,EDT-WVGA,if=RGB24 " \ + "video=mxcfb1:off video=mxcfb2:off video=mxcfb3:off " \ "fbmem=32M\0 " \ - "vidargs_hdmi_cea_only=mxc_hdmi.only_cea=1 video=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24 " \ + "vidargs_hdmi_cea_only=mxc_hdmi.only_cea=1 " \ + "video=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24 " \ "video=mxcfb1:off video=mxcfb2:off video=mxcfb3:off " \ "fbmem=32M\0 " \ - "vidargs_edt=video=mxcfb0:dev=lcd,EDT-WVGA,if=RGB24 " \ - "video=mxcfb1:off video=mxcfb2:off video=mxcfb3:off" \ + "vidargs_hdmi_lvds=mxc_hdmi.only_cea=1 " \ + "video=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24 " \ + "video=mxcfb1:dev=ldb,LDB-LG_LP156WF1,if=RGB666 ldb=spl1 " \ + "video=mxcfb2:off video=mxcfb3:off " \ + "fbmem=32M\0 " \ + "vidargs_lvds=video=mxcfb0:dev=ldb,800x600M@60,if=RGB666 ldb=sin0 " \ + "video=mxcfb1:off video=mxcfb2:off video=mxcfb3:off " \ "fbmem=32M\0 " \ + "vidargs_vdac=video=mxcfb0:dev=vdac,1280x720M@60,if=RGB565 " \ + "video=mxcfb1:off video=mxcfb2:off video=mxcfb3:off fbmem=32M" /* Miscellaneous configurable options */ #define CONFIG_SYS_LONGHELP |