From: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 1/2] LPC2468 support
Date: Fri, 24 Apr 2009 23:58:04 +0200 [thread overview]
Message-ID: <20090424215804.GC10032@game.jcrosoft.org> (raw)
In-Reply-To: <49F1A92F.9070804@duran-audio.com>
On 13:57 Fri 24 Apr , Remco Poelstra wrote:
> This patch includes support for the LPC2468 processor from NXP.
>
> Signed-off-by: Remco Poelstra <remco.poelstra+u-boot@duran-audio.com>
> ---
> A working board example will be submitted when this patch is found to be OK.
> This patch is against latest git.
> The previous problem with PUTx vs. writex is solved.
two general news
I'm preparing some patch to cleanup the arm720t include LPC irq support
I'll send it asap
please take a look and test it
>
> From 75361079ed78fb40c2840b3bd74687153e486620 Mon Sep 17 00:00:00 2001
> From: Remco Poelstra <remco.poelstra+u-boot@duran-audio.com>
> Date: Fri, 24 Apr 2009 12:18:21 +0200
> Subject: [PATCH] Support for LPC2468 processor from NXP
>
> ---
> Makefile | 3 +
> cpu/arm720t/cpu.c | 2 +-
> cpu/arm720t/interrupts.c | 37 +++-
> cpu/arm720t/lpc24xx/Makefile | 50 +++++
> cpu/arm720t/lpc24xx/flash.c | 233 ++++++++++++++++++++
> cpu/arm720t/lpc24xx/iap_entry.S | 7 +
> cpu/arm720t/start.S | 11 +-
> drivers/serial/Makefile | 1 +
> drivers/serial/serial_lpc2468.c | 119 +++++++++++
> include/asm-arm/arch-lpc24xx/hardware.h | 32 +++
> include/asm-arm/arch-lpc24xx/immap.h | 351 +++++++++++++++++++++++++++++++
> include/asm-arm/config.h | 4 +
> include/flash.h | 1 +
> 13 files changed, 842 insertions(+), 9 deletions(-)
> create mode 100644 cpu/arm720t/lpc24xx/Makefile
> create mode 100644 cpu/arm720t/lpc24xx/flash.c
> create mode 100644 cpu/arm720t/lpc24xx/iap_entry.S
> create mode 100644 drivers/serial/serial_lpc2468.c
> create mode 100644 include/asm-arm/arch-lpc24xx/hardware.h
> create mode 100644 include/asm-arm/arch-lpc24xx/immap.h
>
> diff --git a/Makefile b/Makefile
> index e91c051..fb23ee6 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -2940,6 +2940,9 @@ B2_config : unconfig
> ## ARM720T Systems
> #########################################################################
>
> +LPC2468_config: unconfig
> + @$(MKCONFIG) $(@:_config=) arm arm720t LPC2468 NULL lpc24xx
> +
> armadillo_config: unconfig
> @$(MKCONFIG) $(@:_config=) arm arm720t armadillo
>
> diff --git a/cpu/arm720t/cpu.c b/cpu/arm720t/cpu.c
> index 6c40903..b3a2853 100644
> --- a/cpu/arm720t/cpu.c
> +++ b/cpu/arm720t/cpu.c
> @@ -75,7 +75,7 @@ int cleanup_before_linux (void)
> /* go to high speed */
> IO_SYSCON3 = (IO_SYSCON3 & ~CLKCTL) | CLKCTL_73;
> #endif
> -#elif defined(CONFIG_NETARM) || defined(CONFIG_S3C4510B) || defined(CONFIG_LPC2292)
> +#elif defined(CONFIG_NETARM) || defined(CONFIG_S3C4510B) || defined(CONFIG_LPC2000)
> disable_interrupts ();
> /* Nothing more needed */
> #elif defined(CONFIG_INTEGRATOR) && defined(CONFIG_ARCH_INTEGRATOR)
> diff --git a/cpu/arm720t/interrupts.c b/cpu/arm720t/interrupts.c
> index 39ed345..d7aec27 100644
> --- a/cpu/arm720t/interrupts.c
> +++ b/cpu/arm720t/interrupts.c
> @@ -29,17 +29,26 @@
> #include <common.h>
> #include <clps7111.h>
> #include <asm/proc-armv/ptrace.h>
> +#include <asm/io.h>
> +#if defined(CONFIG_LPC2468)
> +#include <asm/arch/immap.h>
> +#else
> #include <asm/hardware.h>
> +#endif
>
> #ifndef CONFIG_NETARM
> +
> +#if defined(CONFIG_LPC2292)
> +#define TIMER_LOAD_VAL 0xffff
> +#define READ_TIMER (0xFFFFFFFF - GET32(T0TC))
> +#elif defined(CONFIG_LPC2468)
> +#define TIMER_LOAD_VAL 0
> +#define READ_TIMER (0xFFFFFFFF - 0xE0004008)
> +#else
> /* we always count down the max. */
> #define TIMER_LOAD_VAL 0xffff
> /* macro to read the 16 bit timer */
> #define READ_TIMER (IO_TC1D & 0xffff)
> -
> -#ifdef CONFIG_LPC2292
> -#undef READ_TIMER
> -#define READ_TIMER (0xFFFFFFFF - GET32(T0TC))
> #endif
>
> #else
> @@ -80,6 +89,14 @@ void do_irq (struct pt_regs *pt_regs)
> pfnct = (void (*)(void))VICVectAddr;
>
> (*pfnct)();
> +#elif defined(CONFIG_LPC2468)
> + void (*pfnct) (void);
> + vic_2468_t *vic = &(((immap_t *)CONFIG_SYS_IMMAP)->ahb.vic);
> +
> + pfnct = (void (*)(void))(&(vic->vicaddr));
> +
> + (*pfnct) ();
> +
> #else
> #error do_irq() not defined for this CPU type
> #endif
> @@ -112,6 +129,9 @@ static ulong lastdec;
>
> int interrupt_init (void)
> {
> +#if defined(CONFIG_LPC2468)
> + timer_2468_t *timer0=&(((immap_t *)CONFIG_SYS_IMMAP)->apb.timer0);
> +#endif
>
> #if defined(CONFIG_NETARM)
> /* disable all interrupts */
> @@ -185,6 +205,13 @@ int interrupt_init (void)
> PUT32(T0MCR, 0);
> PUT32(T0TC, 0);
> PUT32(T0TCR, 1); /* enable timer0 */
> +#elif defined(CONFIG_LPC2468)
> + writel (0, &(timer0->ir)); /*disable all timer0 interupts */
> + writel (0, &(timer0->tcr)); /*disable timer0 */
> + writel (CFG_SYS_CLK_FREQ / CONFIG_SYS_HZ - 1, &(timer0->pr));
> + writel (0, &(timer0->mcr));
> + writel (0, &(timer0->tc));
> + writel (1, &(timer0->tcr));
>
> #else
> #error No interrupt_init() defined for this CPU type
> @@ -201,7 +228,7 @@ int interrupt_init (void)
> */
>
>
> -#if defined(CONFIG_IMPA7) || defined(CONFIG_EP7312) || defined(CONFIG_NETARM) || defined(CONFIG_ARMADILLO) || defined(CONFIG_LPC2292)
> +#if defined(CONFIG_IMPA7) || defined(CONFIG_EP7312) || defined(CONFIG_NETARM) || defined(CONFIG_ARMADILLO) || defined(CONFIG_LPC2000)
>
> void reset_timer (void)
> {
> diff --git a/cpu/arm720t/lpc24xx/Makefile b/cpu/arm720t/lpc24xx/Makefile
> new file mode 100644
> index 0000000..f091502
> --- /dev/null
> +++ b/cpu/arm720t/lpc24xx/Makefile
> @@ -0,0 +1,50 @@
> +#
> +# (C) Copyright 2000-2007
> +# Wolfgang Denk, DENX Software Engineering, wd at denx.de.
> +#
> +# 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., 59 Temple Place, Suite 330, Boston,
> +# MA 02111-1307 USA
> +#
> +
> +include $(TOPDIR)/config.mk
> +
> +LIB = $(obj)lib$(SOC).a
> +
> +COBJS = flash.o
> +SOBJS = $(obj)iap_entry.o
> +
> +SRCS := $(COBJS:.o=.c)
> +OBJS := $(addprefix $(obj),$(COBJS))
> +
> +all: $(obj).depend $(LIB)
> +
> +$(LIB): $(OBJS) $(SOBJS)
> + $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
> +
> +# this MUST be compiled as thumb code!
why?
no thumb will be accpeted without a clear explination
> +$(SOBJS):
> + $(CC) $(AFLAGS) -march=armv4t -c -o $(SOBJS) iap_entry.S
> +
> +#########################################################################
> +
> +# defines $(obj).depend target
> +include $(SRCTREE)/rules.mk
> +
> +sinclude $(obj).depend
> +
> +#########################################################################
> diff --git a/cpu/arm720t/lpc24xx/flash.c b/cpu/arm720t/lpc24xx/flash.c
> new file mode 100644
> index 0000000..46a1a56
> --- /dev/null
> +++ b/cpu/arm720t/lpc24xx/flash.c
> @@ -0,0 +1,233 @@
> +/*
> + * (C) Copyright 2006 Embedded Artists AB <www.embeddedartists.com>
> + *
> + * 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 <asm/io.h>
> +#include <asm/arch/immap.h>
> +/* IAP commands use 32 bytes at the top of CPU internal sram, we
> + use 512 bytes below that */
please use this style of comment
/*
*
*/
> +#define COPY_BUFFER_LOCATION 0x4000fde0
evenif it's soc specific flash support I think they need to be store with the
other flash and need to have the ack of Stefan
> +
> +#define IAP_LOCATION 0x7ffffff1
> +#define IAP_CMD_PREPARE 50
> +#define IAP_CMD_COPY 51
> +#define IAP_CMD_ERASE 52
> +#define IAP_CMD_CHECK 53
> +#define IAP_CMD_ID 54
> +#define IAP_CMD_VERSION 55
> +#define IAP_CMD_COMPARE 56
> +
> diff --git a/cpu/arm720t/start.S b/cpu/arm720t/start.S
> index 022b873..eca4d9f 100644
> --- a/cpu/arm720t/start.S
> +++ b/cpu/arm720t/start.S
> @@ -127,7 +127,7 @@ reset:
> bl cpu_init_crit
> #endif
>
> -#ifdef CONFIG_LPC2292
> +#if defined(CONFIG_LPC2000)
> bl lowlevel_init
> #endif
I'm not really happy with this we need to extract the soc specific from the
arch init
> @@ -368,6 +368,11 @@ lock_loop:
> ldr r0, VPBDIV_ADR
> mov r1, #0x01 /* VPB clock is same as process clock */
> str r1, [r0]
> +#elif defined(CONFIG_LPC2468)
> + ldr r0, =0x40008000 /*0x40000000 is internal SRAM,
> + 0x4000FFFF is end of SRAM*/
> + mov sp,r0
> + sub sl,sp,#0x2000
> #else
> #error No cpu_init_crit() defined for current CPU type
> #endif
> @@ -383,7 +388,7 @@ lock_loop:
> str r1, [r0]
> #endif
>
> -#ifndef CONFIG_LPC2292
> +#if !defined(CONFIG_LPC2000)
> mov ip, lr
> /*
> * before relocating, we have to setup RAM timing
> @@ -601,7 +606,7 @@ reset_cpu:
> * on external peripherals such as watchdog timers, etc. */
> #elif defined(CONFIG_INTEGRATOR) && defined(CONFIG_ARCH_INTEGRATOR)
> /* No specific reset actions for IntegratorAP/CM720T as yet */
> -#elif defined(CONFIG_LPC2292)
> +#elif defined(CONFIG_LPC2000)
> .align 5
> .globl reset_cpu
> reset_cpu:
> diff --git a/drivers/serial/Makefile b/drivers/serial/Makefile
> index bb99a34..929fb5a 100644
> --- a/drivers/serial/Makefile
> +++ b/drivers/serial/Makefile
> @@ -39,6 +39,7 @@ COBJS-$(CONFIG_IMX_SERIAL) += serial_imx.o
> COBJS-$(CONFIG_IXP_SERIAL) += serial_ixp.o
> COBJS-$(CONFIG_KS8695_SERIAL) += serial_ks8695.o
> COBJS-$(CONFIG_LPC2292_SERIAL) += serial_lpc2292.o
> +COBJS-$(CONFIG_LPC2468_SERIAL) += serial_lpc2468.o
> COBJS-$(CONFIG_MAX3100_SERIAL) += serial_max3100.o
> COBJS-$(CONFIG_MX31_UART) += serial_mx31.o
>COBJS-$(CONFIG_NETARM_SERIAL) += serial_netarm.o
Best Regards,
J.
next prev parent reply other threads:[~2009-04-24 21:58 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-03-18 13:13 [U-Boot] [PATCH 1/1] LPC2468 support Remco Poelstra
2009-03-18 13:58 ` Wolfgang Denk
2009-03-18 14:54 ` [U-Boot] [PATCH 1/2] " Remco Poelstra
2009-03-18 16:46 ` Wolfgang Denk
2009-03-19 15:06 ` Remco Poelstra
2009-03-19 21:22 ` Wolfgang Denk
2009-03-24 11:05 ` Remco Poelstra
2009-03-24 22:33 ` Wolfgang Denk
2009-03-25 8:29 ` Remco Poelstra
2009-03-25 9:47 ` Wolfgang Denk
2009-03-25 10:06 ` Remco Poelstra
2009-03-25 21:51 ` Jean-Christophe PLAGNIOL-VILLARD
2009-03-26 9:03 ` Remco Poelstra
2009-04-24 11:57 ` Remco Poelstra
2009-04-24 12:55 ` Wolfgang Denk
2009-04-28 9:14 ` Remco Poelstra
2009-04-28 16:43 ` Ben Warren
2009-04-24 21:58 ` Jean-Christophe PLAGNIOL-VILLARD [this message]
2009-04-24 22:14 ` Wolfgang Denk
2009-04-25 12:47 ` Jean-Christophe PLAGNIOL-VILLARD
2009-04-27 7:27 ` Stefan Roese
2009-04-27 23:20 ` Wolfgang Denk
2009-04-28 6:27 ` Stefan Roese
2009-04-28 6:46 ` Wolfgang Denk
2009-04-28 7:08 ` Stefan Roese
2009-03-25 21:43 ` Jean-Christophe PLAGNIOL-VILLARD
2009-03-26 9:10 ` Remco Poelstra
2009-03-26 9:27 ` Remco Poelstra
2009-03-18 14:56 ` [U-Boot] [PATCH 2/2] LPC2468 example board Remco Poelstra
2009-03-25 22:01 ` Jean-Christophe PLAGNIOL-VILLARD
2009-03-26 9:11 ` Remco Poelstra
2009-04-28 13:54 ` Remco Poelstra
2009-07-17 22:18 ` Wolfgang Denk
2009-07-18 16:16 ` Jean-Christophe PLAGNIOL-VILLARD
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20090424215804.GC10032@game.jcrosoft.org \
--to=plagnioj@jcrosoft.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox