Add i.MX21ads support
Signed-off-by: Ivo Clarysse <ivo.clarysse@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
parent
fcfbd10d3c
commit
3ccfdfd9b9
|
@ -1,7 +1,7 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# U-Boot version: 2.0.0-rc7
|
||||
# Thu Apr 2 15:40:41 2009
|
||||
# U-Boot version: 2.0.0-rc8
|
||||
# Tue Apr 7 09:14:23 2009
|
||||
#
|
||||
CONFIG_ARCH_TEXT_BASE=0xc0000000
|
||||
CONFIG_BOARDINFO="Freescale i.MX21 ADS"
|
||||
|
@ -9,8 +9,6 @@ CONFIG_BOARDINFO="Freescale i.MX21 ADS"
|
|||
CONFIG_GENERIC_LINKER_SCRIPT=y
|
||||
CONFIG_ARM=y
|
||||
CONFIG_ARM926EJS=y
|
||||
CONFIG_ARCH_IMX=y
|
||||
CONFIG_ARCH_IMX21=y
|
||||
# CONFIG_MACH_MX1ADS is not set
|
||||
# CONFIG_MACH_SCB9328 is not set
|
||||
# CONFIG_MACH_PCM038 is not set
|
||||
|
@ -28,6 +26,8 @@ CONFIG_MACH_IMX21ADS=y
|
|||
#
|
||||
# Board specific settings
|
||||
#
|
||||
CONFIG_ARCH_IMX=y
|
||||
CONFIG_ARCH_IMX21=y
|
||||
|
||||
#
|
||||
# i.MX specific settings
|
||||
|
@ -98,6 +98,8 @@ CONFIG_DEFAULT_ENVIRONMENT_PATH="board/imx21ads/env"
|
|||
#
|
||||
# Commands
|
||||
#
|
||||
CONFIG_ARCH_IMX=y
|
||||
CONFIG_ARCH_IMX21=y
|
||||
|
||||
#
|
||||
# scripting
|
||||
|
@ -145,6 +147,7 @@ CONFIG_CMD_MTEST_ALTERNATIVE=y
|
|||
# flash
|
||||
#
|
||||
CONFIG_CMD_FLASH=y
|
||||
CONFIG_CMD_NAND=y
|
||||
|
||||
#
|
||||
# booting
|
||||
|
@ -191,7 +194,12 @@ CONFIG_DRIVER_CFI_BANK_WIDTH_2=y
|
|||
CONFIG_DRIVER_CFI_BANK_WIDTH_4=y
|
||||
# CONFIG_DRIVER_CFI_BANK_WIDTH_8 is not set
|
||||
CONFIG_CFI_BUFFER_WRITE=y
|
||||
# CONFIG_NAND is not set
|
||||
CONFIG_NAND=y
|
||||
CONFIG_NAND_IMX=y
|
||||
# CONFIG_NAND_IMX_BOOT is not set
|
||||
# CONFIG_MTD_NAND_VERIFY_WRITE is not set
|
||||
# CONFIG_MTD_NAND_ECC_SMC is not set
|
||||
CONFIG_MTD_NAND_IDS=y
|
||||
|
||||
#
|
||||
# Filesystem support
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
obj-y += lowlevel_init.o
|
||||
obj-y += imx21ads.o
|
|
@ -0,0 +1,24 @@
|
|||
/**
|
||||
* @file
|
||||
* @brief Global defintions for the ARM i.MX21 based imx21ads
|
||||
*
|
||||
* 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
|
||||
*/
|
||||
|
||||
#ifndef __CONFIG_H
|
||||
#define __CONFIG_H
|
||||
|
||||
#endif /* __CONFIG_H */
|
|
@ -0,0 +1 @@
|
|||
# Dummy Init environment script
|
|
@ -0,0 +1,146 @@
|
|||
/*
|
||||
* Copyright (C) 2009 Ivo Clarysse
|
||||
*
|
||||
* Based on imx27ads.c,
|
||||
* Copyright (C) 2007 Sascha Hauer, Pengutronix
|
||||
*
|
||||
* 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 <common.h>
|
||||
#include <net.h>
|
||||
#include <cfi_flash.h>
|
||||
#include <init.h>
|
||||
#include <environment.h>
|
||||
#include <asm/arch/imx-regs.h>
|
||||
#include <asm/armlinux.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/arch/gpio.h>
|
||||
#include <partition.h>
|
||||
#include <fs.h>
|
||||
#include <fcntl.h>
|
||||
#include <asm/mach-types.h>
|
||||
#include <asm/arch/imx-nand.h>
|
||||
|
||||
static struct device_d cfi_dev = {
|
||||
.name = "cfi_flash",
|
||||
.id = "nor0",
|
||||
|
||||
.map_base = 0xC8000000,
|
||||
.size = 32 * 1024 * 1024,
|
||||
};
|
||||
|
||||
static struct device_d sdram_dev = {
|
||||
.name = "ram",
|
||||
.id = "ram0",
|
||||
|
||||
.map_base = 0xc0000000,
|
||||
.size = 64 * 1024 * 1024,
|
||||
|
||||
.type = DEVICE_TYPE_DRAM,
|
||||
};
|
||||
|
||||
struct imx_nand_platform_data nand_info = {
|
||||
.width = 1,
|
||||
.hw_ecc = 1,
|
||||
};
|
||||
|
||||
static struct device_d nand_dev = {
|
||||
.name = "imx_nand",
|
||||
.map_base = 0xDF003000,
|
||||
.platform_data = &nand_info,
|
||||
};
|
||||
|
||||
|
||||
static int imx21ads_timing_init(void)
|
||||
{
|
||||
u32 temp;
|
||||
|
||||
/* Configure External Interface Module */
|
||||
/* CS0: burst flash */
|
||||
CS0U = 0x00003E00;
|
||||
CS0L = 0x00000E01;
|
||||
|
||||
/* CS1: Ethernet controller, external UART, memory-mapped I/O (16-bit) */
|
||||
CS1U = 0x00002000;
|
||||
CS1L = 0x11118501;
|
||||
|
||||
/* CS2: disable (not available, since CSD0 in use) */
|
||||
CS2U = 0x0;
|
||||
CS2L = 0x0;
|
||||
|
||||
/* CS3: disable */
|
||||
CS3U = 0x0;
|
||||
CS3L = 0x0;
|
||||
/* CS4: disable */
|
||||
CS4U = 0x0;
|
||||
CS4L = 0x0;
|
||||
/* CS5: disable */
|
||||
CS5U = 0x0;
|
||||
CS5L = 0x0;
|
||||
|
||||
temp = PCDR0;
|
||||
temp &= ~0xF000;
|
||||
temp |= 0xA000; /* Set NFC divider; 0xA yields 24.18MHz */
|
||||
PCDR0 = temp;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
core_initcall(imx21ads_timing_init);
|
||||
|
||||
static int mx21ads_devices_init(void)
|
||||
{
|
||||
int i;
|
||||
unsigned int mode[] = {
|
||||
PE12_PF_UART1_TXD,
|
||||
PE13_PF_UART1_RXD,
|
||||
PE14_PF_UART1_CTS,
|
||||
PE15_PF_UART1_RTS,
|
||||
};
|
||||
|
||||
/* initizalize gpios */
|
||||
for (i = 0; i < ARRAY_SIZE(mode); i++)
|
||||
imx_gpio_mode(mode[i]);
|
||||
|
||||
register_device(&cfi_dev);
|
||||
register_device(&sdram_dev);
|
||||
register_device(&nand_dev);
|
||||
|
||||
armlinux_set_bootparams((void *)0xc0000100);
|
||||
armlinux_set_architecture(MACH_TYPE_MX21ADS);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
device_initcall(mx21ads_devices_init);
|
||||
|
||||
static struct device_d mx21ads_serial_device = {
|
||||
.name = "imx_serial",
|
||||
.id = "cs0",
|
||||
.map_base = IMX_UART1_BASE,
|
||||
.size = 4096,
|
||||
.type = DEVICE_TYPE_CONSOLE,
|
||||
};
|
||||
|
||||
static int mx21ads_console_init(void)
|
||||
{
|
||||
register_device(&mx21ads_serial_device);
|
||||
return 0;
|
||||
}
|
||||
|
||||
console_initcall(mx21ads_console_init);
|
|
@ -0,0 +1,5 @@
|
|||
/** @page imx21ads Freescale i.MX21ads
|
||||
|
||||
This is the Freescale evaluation board for the i.MX21 Processor
|
||||
|
||||
*/
|
|
@ -0,0 +1,70 @@
|
|||
/*
|
||||
* For clock initialization, see chapter 6 of the
|
||||
* "i.MX21 Applications Processor Reference Manual, Rev. 3".
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
#include <asm/arch/imx-regs.h>
|
||||
|
||||
#define writel(val, reg) \
|
||||
ldr r0, =reg; \
|
||||
ldr r1, =val; \
|
||||
str r1, [r0];
|
||||
|
||||
.macro sdram_init_mx21ads
|
||||
#if 0
|
||||
/* Set precharge command */
|
||||
writel(0x92120300, SDCTL0);
|
||||
|
||||
/* Issue Precharge all Command */
|
||||
ldr r3, =0xC0200000;
|
||||
ldr r2, [r3];
|
||||
|
||||
/* Set AutoRefresh command */
|
||||
writel(0x92120300, SDCTL0);
|
||||
|
||||
/* Issue AutoRefresh command */
|
||||
ldr r3, =0xC0000000;
|
||||
ldr r2, [r3];
|
||||
ldr r2, [r3];
|
||||
ldr r2, [r3];
|
||||
ldr r2, [r3];
|
||||
ldr r2, [r3];
|
||||
ldr r2, [r3];
|
||||
ldr r2, [r3];
|
||||
ldr r2, [r3];
|
||||
|
||||
|
||||
/* Set Mode Register */
|
||||
writel(0xB2120300, SDCTL0);
|
||||
#endif
|
||||
.endm
|
||||
|
||||
.globl board_init_lowlevel
|
||||
board_init_lowlevel:
|
||||
|
||||
mov r10, lr
|
||||
|
||||
/* ahb lite ip interface */
|
||||
writel(0x00040304, AIPI1_PSR0)
|
||||
writel(0xFFFBFCFB, AIPI1_PSR1)
|
||||
writel(0x00000000, AIPI2_PSR0)
|
||||
writel(0xFFFFFFFF, AIPI2_PSR1)
|
||||
|
||||
/* Set MPLL to 266MHz */
|
||||
writel(0x007B1C73, MPCTL0);
|
||||
/* PLL 133MHz */
|
||||
writel(0x17000607, CSCR);
|
||||
|
||||
/* skip sdram initialization if we run from ram */
|
||||
/* (SDRAM is mapped from C0000000 to C3FFFFFF) */
|
||||
cmp pc, #0xc0000000
|
||||
bls 1f
|
||||
cmp pc, #0xc8000000
|
||||
bhi 1f
|
||||
|
||||
mov pc,r10
|
||||
1:
|
||||
sdram_init_mx21ads
|
||||
|
||||
mov pc,r10
|
Loading…
Reference in New Issue