summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Krummenacher <max.krummenacher@toradex.com>2014-07-21 14:05:16 +0200
committerMax Krummenacher <max.krummenacher@toradex.com>2014-07-21 14:05:16 +0200
commit8871853b26f83bb9d2b016fb8978e22a66c5d798 (patch)
tree4cac5d0e77736108be83829aeb6e9f487ba065c1
parent0b4191106b32ca91afa759f3620fc470cf61d7c2 (diff)
parent00d207d8f31a5589a2583149723fa1ddc92e1988 (diff)
Merge branch '2014.04-toradex-next' into 2014.04-toradex
-rw-r--r--board/toradex/apalis_imx6/apalis_imx6.c45
-rw-r--r--boards.cfg2
-rw-r--r--drivers/serial/serial_mxc.c10
-rw-r--r--fs/fat/fat_write.c2
-rw-r--r--include/configs/apalis-imx6.h108
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