diff options
| author | Fabio Estevam <fabio.estevam@freescale.com> | 2012-09-24 08:09:33 +0000 | 
|---|---|---|
| committer | Tom Rini <trini@ti.com> | 2012-10-15 11:54:09 -0700 | 
| commit | 7dd6545da75d9194b4e59a183012c1117e6241cc (patch) | |
| tree | e947cff0b92c9dc416f0ac5e57254220816b1ed0 | |
| parent | bcfc71186e1d0d392384cf3a7a936431cb005bba (diff) | |
| download | olio-uboot-2014.01-7dd6545da75d9194b4e59a183012c1117e6241cc.tar.xz olio-uboot-2014.01-7dd6545da75d9194b4e59a183012c1117e6241cc.zip | |
mx6q: Add basic support for mx6qsabreauto
mx6qsabreauto is a board based on mx6q SoC with the following features:
- 2GB of DDR3
- 2 USB ports
- 1 HDMI output port
- SPI NOR
- 2 LVDS LCD ports
- Gigabit Ethernet
- Camera
- eMMC and SD card slot
- Multichannel Audio
- CAN
- SATA
- NAND
- PCIE
- Video Input
Add very basic support for it.
Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
| -rw-r--r-- | MAINTAINERS | 1 | ||||
| -rw-r--r-- | board/freescale/mx6qsabreauto/Makefile | 41 | ||||
| -rw-r--r-- | board/freescale/mx6qsabreauto/imximage.cfg | 159 | ||||
| -rw-r--r-- | board/freescale/mx6qsabreauto/mx6qsabreauto.c | 117 | ||||
| -rw-r--r-- | boards.cfg | 1 | ||||
| -rw-r--r-- | include/configs/mx6qsabreauto.h | 20 | 
6 files changed, 339 insertions, 0 deletions
| diff --git a/MAINTAINERS b/MAINTAINERS index f9cfa5a80..971235bbc 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -651,6 +651,7 @@ Fabio Estevam <fabio.estevam@freescale.com>  	mx53ard		i.MX53  	mx53smd		i.MX53  	mx6qsabresd	i.MX6Q +	mx6qsabreauto	i.MX6Q  Daniel Gorsulowski <daniel.gorsulowski@esd.eu> diff --git a/board/freescale/mx6qsabreauto/Makefile b/board/freescale/mx6qsabreauto/Makefile new file mode 100644 index 000000000..f5528b304 --- /dev/null +++ b/board/freescale/mx6qsabreauto/Makefile @@ -0,0 +1,41 @@ +# +# Copyright (C) 2007, Guennadi Liakhovetski <lg@denx.de> +# +# (C) Copyright 2011 Freescale Semiconductor, Inc. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, +# MA 02111-1307 USA +# + +include $(TOPDIR)/config.mk + +LIB    = $(obj)lib$(BOARD).o + +COBJS  := mx6qsabreauto.o + +SRCS   := $(COBJS:.o=.c) +OBJS   := $(addprefix $(obj),$(COBJS)) + +$(LIB):        $(obj).depend $(OBJS) +	$(call cmd_link_o_target, $(OBJS)) + +######################################################################### + +# defines $(obj).depend target +include $(SRCTREE)/rules.mk + +sinclude $(obj).depend + +######################################################################### diff --git a/board/freescale/mx6qsabreauto/imximage.cfg b/board/freescale/mx6qsabreauto/imximage.cfg new file mode 100644 index 000000000..d909aa820 --- /dev/null +++ b/board/freescale/mx6qsabreauto/imximage.cfg @@ -0,0 +1,159 @@ +# Copyright (C) 2012 Freescale Semiconductor, Inc. +# +# See file CREDITS for list of people who contributed to this +# project. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not write to the Free Software +# Foundation Inc. 51 Franklin Street Fifth Floor Boston, +# MA 02110-1301 USA +# +# Refer docs/README.imxmage for more details about how-to configure +# and create imximage boot image +# +# The syntax is taken as close as possible with the kwbimage + +# image version + +IMAGE_VERSION 2 + +# Boot Device : one of +# spi, sd (the board has no nand neither onenand) + +BOOT_FROM	sd + +# Device Configuration Data (DCD) +# +# Each entry must have the format: +# Addr-type           Address        Value +# +# where: +#	Addr-type register length (1,2 or 4 bytes) +#	Address	  absolute address of the register +#	value	  value to be stored in the register +DATA 4 0x020e05a8 0x00000028 +DATA 4 0x020e05b0 0x00000028 +DATA 4 0x020e0524 0x00000028 +DATA 4 0x020e051c 0x00000028 + +DATA 4 0x020e0518 0x00000028 +DATA 4 0x020e050c 0x00000028 +DATA 4 0x020e05b8 0x00000028 +DATA 4 0x020e05c0 0x00000028 + +DATA 4 0x020e05ac 0x00000028 +DATA 4 0x020e05b4 0x00000028 +DATA 4 0x020e0528 0x00000028 +DATA 4 0x020e0520 0x00000028 + +DATA 4 0x020e0514 0x00000028 +DATA 4 0x020e0510 0x00000028 +DATA 4 0x020e05bc 0x00000028 +DATA 4 0x020e05c4 0x00000028 + +DATA 4 0x020e056c 0x00000030 +DATA 4 0x020e0578 0x00000030 +DATA 4 0x020e0588 0x00000030 +DATA 4 0x020e0594 0x00000030 + +DATA 4 0x020e057c 0x00000030 +DATA 4 0x020e0590 0x00000030 +DATA 4 0x020e0598 0x00000030 +DATA 4 0x020e058c 0x00000000 + +DATA 4 0x020e059c 0x00003030 +DATA 4 0x020e05a0 0x00003030 +DATA 4 0x020e0784 0x00000028 +DATA 4 0x020e0788 0x00000028 + +DATA 4 0x020e0794 0x00000028 +DATA 4 0x020e079c 0x00000028 +DATA 4 0x020e07a0 0x00000028 +DATA 4 0x020e07a4 0x00000028 + +DATA 4 0x020e07a8 0x00000028 +DATA 4 0x020e0748 0x00000028 +DATA 4 0x020e074c 0x00000030 +DATA 4 0x020e0750 0x00020000 + +DATA 4 0x020e0758 0x00000000 +DATA 4 0x020e0774 0x00020000 +DATA 4 0x020e078c 0x00000030 +DATA 4 0x020e0798 0x000C0000 + +DATA 4 0x021b081c 0x33333333 +DATA 4 0x021b0820 0x33333333 +DATA 4 0x021b0824 0x33333333 +DATA 4 0x021b0828 0x33333333 + +DATA 4 0x021b481c 0x33333333 +DATA 4 0x021b4820 0x33333333 +DATA 4 0x021b4824 0x33333333 +DATA 4 0x021b4828 0x33333333 + +DATA 4 0x021b0018 0x00001740 + +DATA 4 0x021b001c 0x00008000 +DATA 4 0x021b000c 0x8A8F7975 +DATA 4 0x021b0010 0xFF538E64 +DATA 4 0x021b0014 0x01FF00DB +DATA 4 0x021b002c 0x000026D2 + +DATA 4 0x021b0030 0x008F0E21 +DATA 4 0x021b0008 0x09444040 +DATA 4 0x021b0004 0x00020036 +DATA 4 0x021b0040 0x00000047 +DATA 4 0x021b0000 0x841A0000 + +DATA 4 0x021b001c 0x04088032 +DATA 4 0x021b001c 0x00008033 +DATA 4 0x021b001c 0x00428031 +DATA 4 0x021b001c 0x09408030 + +DATA 4 0x021b001c 0x04008040 +DATA 4 0x021b0800 0xA1380003 +DATA 4 0x021b0020 0x00005800 +DATA 4 0x021b0818 0x00000007 +DATA 4 0x021b4818 0x00000007 + +# Calibration values based on ARD and 528MHz +DATA 4 0x021b083c 0x434B0358 +DATA 4 0x021b0840 0x033D033C +DATA 4 0x021b483c 0x03520362 +DATA 4 0x021b4840 0x03480318 +DATA 4 0x021b0848 0x41383A3C +DATA 4 0x021b4848 0x3F3C374A +DATA 4 0x021b0850 0x42434444 +DATA 4 0x021b4850 0x4932473A + +DATA 4 0x021b080c 0x001F001F +DATA 4 0x021b0810 0x001F001F + +DATA 4 0x021b480c 0x001F001F +DATA 4 0x021b4810 0x001F001F + +DATA 4 0x021b08b8 0x00000800 +DATA 4 0x021b48b8 0x00000800 + +DATA 4 0x021b0404 0x00011006 +DATA 4 0x021b0004 0x00025576 + +DATA 4 0x021b001c 0x00000000 + +DATA 4 0x020c4068 0x00C03F3F +DATA 4 0x020c406c 0x0030FC00 +DATA 4 0x020c4070 0x0FFFC000 +DATA 4 0x020c4074 0x3FF00000 +DATA 4 0x020c4078 0x00FFF300 +DATA 4 0x020c407c 0x0F0000C3 +DATA 4 0x020c4080 0x000003FF diff --git a/board/freescale/mx6qsabreauto/mx6qsabreauto.c b/board/freescale/mx6qsabreauto/mx6qsabreauto.c new file mode 100644 index 000000000..8913b2192 --- /dev/null +++ b/board/freescale/mx6qsabreauto/mx6qsabreauto.c @@ -0,0 +1,117 @@ +/* + * Copyright (C) 2012 Freescale Semiconductor, Inc. + * + * Author: Fabio Estevam <fabio.estevam@freescale.com> + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + */ + +#include <common.h> +#include <asm/io.h> +#include <asm/arch/clock.h> +#include <asm/arch/imx-regs.h> +#include <asm/arch/iomux.h> +#include <asm/arch/mx6x_pins.h> +#include <asm/errno.h> +#include <asm/gpio.h> +#include <asm/imx-common/iomux-v3.h> +#include <mmc.h> +#include <fsl_esdhc.h> +DECLARE_GLOBAL_DATA_PTR; + +#define UART_PAD_CTRL  (PAD_CTL_PKE | PAD_CTL_PUE |            \ +	PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_MED |               \ +	PAD_CTL_DSE_40ohm   | PAD_CTL_SRE_FAST  | PAD_CTL_HYS) + +#define USDHC_PAD_CTRL (PAD_CTL_PKE | PAD_CTL_PUE |            \ +	PAD_CTL_PUS_47K_UP  | PAD_CTL_SPEED_LOW |               \ +	PAD_CTL_DSE_80ohm   | PAD_CTL_SRE_FAST  | PAD_CTL_HYS) + +int dram_init(void) +{ +	gd->ram_size = get_ram_size((void *)PHYS_SDRAM, PHYS_SDRAM_SIZE); + +	return 0; +} + +iomux_v3_cfg_t uart4_pads[] = { +	MX6Q_PAD_KEY_COL0__UART4_TXD | MUX_PAD_CTRL(UART_PAD_CTRL), +	MX6Q_PAD_KEY_ROW0__UART4_RXD | MUX_PAD_CTRL(UART_PAD_CTRL), +}; + +iomux_v3_cfg_t usdhc3_pads[] = { +	MX6Q_PAD_SD3_CLK__USDHC3_CLK	| MUX_PAD_CTRL(USDHC_PAD_CTRL), +	MX6Q_PAD_SD3_CMD__USDHC3_CMD	| MUX_PAD_CTRL(USDHC_PAD_CTRL), +	MX6Q_PAD_SD3_DAT0__USDHC3_DAT0	| MUX_PAD_CTRL(USDHC_PAD_CTRL), +	MX6Q_PAD_SD3_DAT1__USDHC3_DAT1	| MUX_PAD_CTRL(USDHC_PAD_CTRL), +	MX6Q_PAD_SD3_DAT2__USDHC3_DAT2	| MUX_PAD_CTRL(USDHC_PAD_CTRL), +	MX6Q_PAD_SD3_DAT3__USDHC3_DAT3	| MUX_PAD_CTRL(USDHC_PAD_CTRL), +	MX6Q_PAD_SD3_DAT4__USDHC3_DAT4	| MUX_PAD_CTRL(USDHC_PAD_CTRL), +	MX6Q_PAD_SD3_DAT5__USDHC3_DAT5	| MUX_PAD_CTRL(USDHC_PAD_CTRL), +	MX6Q_PAD_SD3_DAT6__USDHC3_DAT6	| MUX_PAD_CTRL(USDHC_PAD_CTRL), +	MX6Q_PAD_SD3_DAT7__USDHC3_DAT7	| MUX_PAD_CTRL(USDHC_PAD_CTRL), +	MX6Q_PAD_GPIO_18__USDHC3_VSELECT | MUX_PAD_CTRL(USDHC_PAD_CTRL), +	MX6Q_PAD_NANDF_CS2__GPIO_6_15   | MUX_PAD_CTRL(NO_PAD_CTRL), +}; + +static void setup_iomux_uart(void) +{ +	imx_iomux_v3_setup_multiple_pads(uart4_pads, ARRAY_SIZE(uart4_pads)); +} + +#ifdef CONFIG_FSL_ESDHC +struct fsl_esdhc_cfg usdhc_cfg[1] = { +	{USDHC3_BASE_ADDR}, +}; + +int board_mmc_getcd(struct mmc *mmc) +{ +	gpio_direction_input(IMX_GPIO_NR(6, 15)); +	return !gpio_get_value(IMX_GPIO_NR(6, 15)); +} + +int board_mmc_init(bd_t *bis) +{ +	imx_iomux_v3_setup_multiple_pads(usdhc3_pads, ARRAY_SIZE(usdhc3_pads)); + +	return fsl_esdhc_initialize(bis, &usdhc_cfg[0]); +} +#endif + +u32 get_board_rev(void) +{ +	return 0x63000; +} + +int board_early_init_f(void) +{ +	setup_iomux_uart(); + +	return 0; +} + +int board_init(void) +{ +	/* address of boot parameters */ +	gd->bd->bi_boot_params = PHYS_SDRAM + 0x100; + +	return 0; +} + +int checkboard(void) +{ +	puts("Board: MX6Q-Sabreauto\n"); + +	return 0; +} diff --git a/boards.cfg b/boards.cfg index 60fc6411c..4b1728972 100644 --- a/boards.cfg +++ b/boards.cfg @@ -237,6 +237,7 @@ mx53smd                      arm         armv7       mx53smd             freesca  ima3-mx53                    arm         armv7       ima3-mx53           esg            mx5		ima3-mx53:IMX_CONFIG=board/esg/ima3-mx53/imximage.cfg  vision2                      arm         armv7       vision2             ttcontrol      mx5		vision2:IMX_CONFIG=board/ttcontrol/vision2/imximage_hynix.cfg  mx6qarm2                     arm         armv7       mx6qarm2            freescale      mx6		mx6qarm2:IMX_CONFIG=board/freescale/mx6qarm2/imximage.cfg +mx6qsabreauto                arm         armv7       mx6qsabreauto       freescale      mx6		mx6qsabreauto:IMX_CONFIG=board/freescale/mx6qsabreauto/imximage.cfg  mx6qsabrelite                arm         armv7       mx6qsabrelite       freescale      mx6		mx6qsabrelite:IMX_CONFIG=board/freescale/imx/ddr/mx6q_4x_mt41j128.cfg  mx6qsabresd                  arm         armv7       mx6qsabresd         freescale      mx6		mx6qsabresd:IMX_CONFIG=board/freescale/imx/ddr/mx6q_4x_mt41j128.cfg  cm_t35                       arm         armv7       cm_t35              -              omap3 diff --git a/include/configs/mx6qsabreauto.h b/include/configs/mx6qsabreauto.h new file mode 100644 index 000000000..825d3b8bb --- /dev/null +++ b/include/configs/mx6qsabreauto.h @@ -0,0 +1,20 @@ +/* + * Copyright (C) 2012 Freescale Semiconductor, Inc. + * + * Configuration settings for the Freescale i.MX6Q SabreSD board. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + */ + +#ifndef __MX6QSABREAUTO_CONFIG_H +#define __MX6QSABREAUTO_CONFIG_H +#include "mx6qsabre_common.h" + +#define CONFIG_MACH_TYPE	3529 +#define CONFIG_MXC_UART_BASE	UART4_BASE +#define PHYS_SDRAM_SIZE		(2u * 1024 * 1024 * 1024) + +#endif                         /* __MX6QSABREAUTO_CONFIG_H */ |