[U-Boot] [PATCH v3 1/6] arm: Remove support for lpc2292

Albert ARIBAUD albert.u.boot at aribaud.net
Fri Oct 26 22:51:43 CEST 2012


Hi Marek,

On Wed,  3 Oct 2012 20:54:08 +0200, Marek Vasut <marex at denx.de> wrote:

> This stuff has been rotting in the tree for a year now. Remove it.
> 
> Signed-off-by: Marek Vasut <marex at denx.de>
> ---
> Changes in v3:
>  - Rebase on top of -next
> 
> Changes in v2:
>  - Rebase on top of -next
> 
>  arch/arm/cpu/arm720t/cpu.c                         |    2 +-
>  arch/arm/cpu/arm720t/interrupts.c                  |   28 +--
>  arch/arm/cpu/arm720t/lpc2292/Makefile              |   50 ----
>  arch/arm/cpu/arm720t/lpc2292/flash.c               |  249 --------------------
>  arch/arm/cpu/arm720t/lpc2292/iap_entry.S           |    7 -
>  arch/arm/cpu/arm720t/lpc2292/mmc.c                 |  131 ----------
>  arch/arm/cpu/arm720t/lpc2292/mmc_hw.c              |  233 ------------------
>  arch/arm/cpu/arm720t/lpc2292/mmc_hw.h              |   29 ---
>  arch/arm/cpu/arm720t/lpc2292/spi.c                 |   40 ----
>  arch/arm/cpu/arm720t/start.S                       |   69 +-----
>  arch/arm/include/asm/arch-lpc2292/hardware.h       |   33 ---
>  .../include/asm/arch-lpc2292/lpc2292_registers.h   |  225 ------------------
>  arch/arm/include/asm/arch-lpc2292/spi.h            |   82 -------
>  drivers/i2c/soft_i2c.c                             |    3 -
>  drivers/serial/Makefile                            |    1 -
>  drivers/serial/serial.c                            |    2 -
>  drivers/serial/serial_lpc2292.c                    |  124 ----------
>  include/flash.h                                    |    1 -
>  18 files changed, 3 insertions(+), 1306 deletions(-)
>  delete mode 100644 arch/arm/cpu/arm720t/lpc2292/Makefile
>  delete mode 100644 arch/arm/cpu/arm720t/lpc2292/flash.c
>  delete mode 100644 arch/arm/cpu/arm720t/lpc2292/iap_entry.S
>  delete mode 100644 arch/arm/cpu/arm720t/lpc2292/mmc.c
>  delete mode 100644 arch/arm/cpu/arm720t/lpc2292/mmc_hw.c
>  delete mode 100644 arch/arm/cpu/arm720t/lpc2292/mmc_hw.h
>  delete mode 100644 arch/arm/cpu/arm720t/lpc2292/spi.c
>  delete mode 100644 arch/arm/include/asm/arch-lpc2292/hardware.h
>  delete mode 100644 arch/arm/include/asm/arch-lpc2292/lpc2292_registers.h
>  delete mode 100644 arch/arm/include/asm/arch-lpc2292/spi.h
>  delete mode 100644 drivers/serial/serial_lpc2292.c
> 
> diff --git a/arch/arm/cpu/arm720t/cpu.c b/arch/arm/cpu/arm720t/cpu.c
> index ce7b3c9..e25f6f2 100644
> --- a/arch/arm/cpu/arm720t/cpu.c
> +++ b/arch/arm/cpu/arm720t/cpu.c
> @@ -46,7 +46,7 @@ int cleanup_before_linux (void)
>  	 * and we set the CPU-speed to 73 MHz - see start.S for details
>  	 */
>  
> -#if defined(CONFIG_NETARM) || defined(CONFIG_S3C4510B) || defined(CONFIG_LPC2292)
> +#if defined(CONFIG_NETARM) || defined(CONFIG_S3C4510B)
>  	disable_interrupts ();
>  	/* Nothing more needed */
>  #elif defined(CONFIG_INTEGRATOR) && defined(CONFIG_ARCH_INTEGRATOR)
> diff --git a/arch/arm/cpu/arm720t/interrupts.c b/arch/arm/cpu/arm720t/interrupts.c
> index c2f898f..5b21cc3 100644
> --- a/arch/arm/cpu/arm720t/interrupts.c
> +++ b/arch/arm/cpu/arm720t/interrupts.c
> @@ -37,11 +37,6 @@
>  /* 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
>  #define IRQEN	(*(volatile unsigned int *)(NETARM_GEN_MODULE_BASE + NETARM_GEN_INTR_ENABLE))
>  #define TM2CTRL (*(volatile unsigned int *)(NETARM_GEN_MODULE_BASE + NETARM_GEN_TIMER2_CONTROL))
> @@ -73,13 +68,6 @@ void do_irq (struct pt_regs *pt_regs)
>  	}
>  #elif defined(CONFIG_INTEGRATOR) && defined(CONFIG_ARCH_INTEGRATOR)
>  	/* No do_irq() for IntegratorAP/CM720T as yet */
> -#elif defined(CONFIG_LPC2292)
> -
> -    void (*pfnct)(void);
> -
> -    pfnct = (void (*)(void))VICVectAddr;
> -
> -    (*pfnct)();
>  #else
>  #error do_irq() not defined for this CPU type
>  #endif
> @@ -172,14 +160,6 @@ int timer_init (void)
>  
>  	/* Start timer */
>  	SET_REG( REG_TMOD, TM0_RUN);
> -#elif defined(CONFIG_LPC2292)
> -	PUT32(T0IR, 0);		/* disable all timer0 interrupts */
> -	PUT32(T0TCR, 0);	/* disable timer0 */
> -	PUT32(T0PR, CONFIG_SYS_SYS_CLK_FREQ / CONFIG_SYS_HZ);
> -	PUT32(T0MCR, 0);
> -	PUT32(T0TC, 0);
> -	PUT32(T0TCR, 1);	/* enable timer0 */
> -
>  #elif defined(CONFIG_TEGRA)
>  	/* No timer routines for tegra as yet */
>  	lastdec = 0;
> @@ -198,7 +178,7 @@ int timer_init (void)
>   */
>  
>  
> -#if defined(CONFIG_NETARM) || defined(CONFIG_LPC2292)
> +#if defined(CONFIG_NETARM)
>  
>  ulong get_timer (ulong base)
>  {
> @@ -216,12 +196,6 @@ void __udelay (unsigned long usec)
>  	tmo += get_timer (0);
>  
>  	while (get_timer_masked () < tmo)
> -#ifdef CONFIG_LPC2292
> -		/* GJ - not sure whether this is really needed or a misunderstanding */
> -		__asm__ __volatile__(" nop");
> -#else
> -		/*NOP*/;
> -#endif
>  }
>  
>  ulong get_timer_masked (void)
> diff --git a/arch/arm/cpu/arm720t/lpc2292/Makefile b/arch/arm/cpu/arm720t/lpc2292/Makefile
> deleted file mode 100644
> index 1b93008..0000000
> --- a/arch/arm/cpu/arm720t/lpc2292/Makefile
> +++ /dev/null
> @@ -1,50 +0,0 @@
> -#
> -# (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).o
> -
> -COBJS	= flash.o mmc.o mmc_hw.o spi.o
> -SOBJS	= $(obj)iap_entry.o
> -
> -SRCS	:= $(COBJS:.o=.c)
> -OBJS	:= $(addprefix $(obj),$(COBJS))
> -
> -all:	$(obj).depend $(LIB)
> -
> -$(LIB):	$(OBJS) $(SOBJS)
> -	$(call cmd_link_o_target, $(OBJS) $(SOBJS))
> -
> -# this MUST be compiled as thumb code!
> -$(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/arch/arm/cpu/arm720t/lpc2292/flash.c b/arch/arm/cpu/arm720t/lpc2292/flash.c
> deleted file mode 100644
> index 3d2dc32..0000000
> --- a/arch/arm/cpu/arm720t/lpc2292/flash.c
> +++ /dev/null
> @@ -1,249 +0,0 @@
> -/*
> - * (C) Copyright 2006 Embedded Artists AB <www.embeddedartists.com>
> - *
> - * Modified to remove all but the IAP-command related code by
> - * Gary Jennejohn <garyj at denx.de>
> - *
> - * 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/arch/hardware.h>
> -
> -/* IAP commands use 32 bytes at the top of CPU internal sram, we
> -   use 512 bytes below that */
> -#define COPY_BUFFER_LOCATION 0x40003de0
> -
> -#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
> -
> -#define IAP_RET_CMD_SUCCESS 0
> -
> -static unsigned long command[5];
> -static unsigned long result[2];
> -
> -extern void iap_entry(unsigned long * command, unsigned long * result);
> -
> -/*-----------------------------------------------------------------------
> - *
> - */
> -static int get_flash_sector(flash_info_t * info, ulong flash_addr)
> -{
> -	int i;
> -
> -	for(i = 1; i < (info->sector_count); i++) {
> -		if (flash_addr < (info->start[i]))
> -			break;
> -	}
> -
> -	return (i-1);
> -}
> -
> -/*-----------------------------------------------------------------------
> - * This function assumes that flash_addr is aligned on 512 bytes boundary
> - * in flash. This function also assumes that prepare have been called
> - * for the sector in question.
> - */
> -int lpc2292_copy_buffer_to_flash(flash_info_t * info, ulong flash_addr)
> -{
> -	int first_sector;
> -	int last_sector;
> -
> -	first_sector = get_flash_sector(info, flash_addr);
> -	last_sector = get_flash_sector(info, flash_addr + 512 - 1);
> -
> -	/* prepare sectors for write */
> -	command[0] = IAP_CMD_PREPARE;
> -	command[1] = first_sector;
> -	command[2] = last_sector;
> -	iap_entry(command, result);
> -	if (result[0] != IAP_RET_CMD_SUCCESS) {
> -		printf("IAP prepare failed\n");
> -		return ERR_PROG_ERROR;
> -	}
> -
> -	command[0] = IAP_CMD_COPY;
> -	command[1] = flash_addr;
> -	command[2] = COPY_BUFFER_LOCATION;
> -	command[3] = 512;
> -	command[4] = CONFIG_SYS_SYS_CLK_FREQ >> 10;
> -	iap_entry(command, result);
> -	if (result[0] != IAP_RET_CMD_SUCCESS) {
> -		printf("IAP copy failed\n");
> -		return 1;
> -	}
> -
> -	return 0;
> -}
> -
> -/*-----------------------------------------------------------------------
> - */
> -
> -int lpc2292_flash_erase (flash_info_t * info, int s_first, int s_last)
> -{
> -	int flag;
> -	int prot;
> -	int sect;
> -
> -	prot = 0;
> -	for (sect = s_first; sect <= s_last; ++sect) {
> -		if (info->protect[sect]) {
> -			prot++;
> -		}
> -	}
> -	if (prot)
> -		return ERR_PROTECTED;
> -
> -
> -	flag = disable_interrupts();
> -
> -	printf ("Erasing %d sectors starting at sector %2d.\n"
> -	"This make take some time ... ",
> -	s_last - s_first + 1, s_first);
> -
> -	command[0] = IAP_CMD_PREPARE;
> -	command[1] = s_first;
> -	command[2] = s_last;
> -	iap_entry(command, result);
> -	if (result[0] != IAP_RET_CMD_SUCCESS) {
> -		printf("IAP prepare failed\n");
> -		return ERR_PROTECTED;
> -	}
> -
> -	command[0] = IAP_CMD_ERASE;
> -	command[1] = s_first;
> -	command[2] = s_last;
> -	command[3] = CONFIG_SYS_SYS_CLK_FREQ >> 10;
> -	iap_entry(command, result);
> -	if (result[0] != IAP_RET_CMD_SUCCESS) {
> -		printf("IAP erase failed\n");
> -		return ERR_PROTECTED;
> -	}
> -
> -	if (flag)
> -		enable_interrupts();
> -
> -	return ERR_OK;
> -}
> -
> -int lpc2292_write_buff (flash_info_t * info, uchar * src, ulong addr,
> -			ulong cnt)
> -{
> -	int first_copy_size;
> -	int last_copy_size;
> -	int first_block;
> -	int last_block;
> -	int nbr_mid_blocks;
> -	uchar memmap_value;
> -	ulong i;
> -	uchar* src_org;
> -	uchar* dst_org;
> -	int ret = ERR_OK;
> -
> -	src_org = src;
> -	dst_org = (uchar*)addr;
> -
> -	first_block = addr / 512;
> -	last_block = (addr + cnt) / 512;
> -	nbr_mid_blocks = last_block - first_block - 1;
> -
> -	first_copy_size = 512 - (addr % 512);
> -	last_copy_size = (addr + cnt) % 512;
> -
> -	debug("\ncopy first block: (1) %lX -> %lX 0x200 bytes, "
> -		"(2) %lX -> %lX 0x%X bytes, (3) %lX -> %lX 0x200 bytes\n",
> -	(ulong)(first_block * 512),
> -	(ulong)COPY_BUFFER_LOCATION,
> -	(ulong)src,
> -	(ulong)(COPY_BUFFER_LOCATION + 512 - first_copy_size),
> -	first_copy_size,
> -	(ulong)COPY_BUFFER_LOCATION,
> -	(ulong)(first_block * 512));
> -
> -	/* copy first block */
> -	memcpy((void*)COPY_BUFFER_LOCATION,
> -		(void*)(first_block * 512), 512);
> -	memcpy((void*)(COPY_BUFFER_LOCATION + 512 - first_copy_size),
> -		src, first_copy_size);
> -	lpc2292_copy_buffer_to_flash(info, first_block * 512);
> -	src += first_copy_size;
> -	addr += first_copy_size;
> -
> -	/* copy middle blocks */
> -	for (i = 0; i < nbr_mid_blocks; i++) {
> -		debug("copy middle block: %lX -> %lX 512 bytes, "
> -		"%lX -> %lX 512 bytes\n",
> -		(ulong)src,
> -		(ulong)COPY_BUFFER_LOCATION,
> -		(ulong)COPY_BUFFER_LOCATION,
> -		(ulong)addr);
> -
> -		memcpy((void*)COPY_BUFFER_LOCATION, src, 512);
> -		lpc2292_copy_buffer_to_flash(info, addr);
> -		src += 512;
> -		addr += 512;
> -	}
> -
> -
> -	if (last_copy_size > 0) {
> -		debug("copy last block: (1) %lX -> %lX 0x200 bytes, "
> -		"(2) %lX -> %lX 0x%X bytes, (3) %lX -> %lX x200 bytes\n",
> -		(ulong)(last_block * 512),
> -		(ulong)COPY_BUFFER_LOCATION,
> -		(ulong)src,
> -		(ulong)(COPY_BUFFER_LOCATION),
> -		last_copy_size,
> -		(ulong)COPY_BUFFER_LOCATION,
> -		(ulong)addr);
> -
> -		/* copy last block */
> -		memcpy((void*)COPY_BUFFER_LOCATION,
> -			(void*)(last_block * 512), 512);
> -		memcpy((void*)COPY_BUFFER_LOCATION,
> -			src, last_copy_size);
> -		lpc2292_copy_buffer_to_flash(info, addr);
> -	}
> -
> -	/* verify write */
> -	memmap_value = GET8(MEMMAP);
> -
> -	disable_interrupts();
> -
> -	PUT8(MEMMAP, 01);		/* we must make sure that initial 64
> -							   bytes are taken from flash when we
> -							   do the compare */
> -
> -	for (i = 0; i < cnt; i++) {
> -		if (*dst_org != *src_org){
> -			printf("Write failed. Byte %lX differs\n", i);
> -			ret = ERR_PROG_ERROR;
> -			break;
> -		}
> -		dst_org++;
> -		src_org++;
> -	}
> -
> -	PUT8(MEMMAP, memmap_value);
> -	enable_interrupts();
> -
> -	return ret;
> -}
> diff --git a/arch/arm/cpu/arm720t/lpc2292/iap_entry.S b/arch/arm/cpu/arm720t/lpc2292/iap_entry.S
> deleted file mode 100644
> index c31d519..0000000
> --- a/arch/arm/cpu/arm720t/lpc2292/iap_entry.S
> +++ /dev/null
> @@ -1,7 +0,0 @@
> -IAP_ADDRESS:	.word	0x7FFFFFF1
> -
> -.globl iap_entry
> -iap_entry:
> -	ldr	r2, IAP_ADDRESS
> -	bx	r2
> -	mov	pc, lr
> diff --git a/arch/arm/cpu/arm720t/lpc2292/mmc.c b/arch/arm/cpu/arm720t/lpc2292/mmc.c
> deleted file mode 100644
> index beaffe9..0000000
> --- a/arch/arm/cpu/arm720t/lpc2292/mmc.c
> +++ /dev/null
> @@ -1,131 +0,0 @@
> -/*
> - * 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 <config.h>
> -#include <common.h>
> -#include <mmc.h>
> -#include <asm/errno.h>
> -#include <asm/arch/hardware.h>
> -#include <part.h>
> -#include <fat.h>
> -#include "mmc_hw.h"
> -#include <asm/arch/spi.h>
> -
> -#ifdef CONFIG_MMC
> -
> -#undef MMC_DEBUG
> -
> -static block_dev_desc_t mmc_dev;
> -
> -/* these are filled out by a call to mmc_hw_get_parameters */
> -static int hw_size;		/* in kbytes */
> -static int hw_nr_sects;
> -static int hw_sect_size;	/* in bytes */
> -
> -block_dev_desc_t * mmc_get_dev(int dev)
> -{
> -	return (block_dev_desc_t *)(&mmc_dev);
> -}
> -
> -unsigned long mmc_block_read(int dev,
> -			     unsigned long start,
> -			     lbaint_t blkcnt,
> -			     void *buffer)
> -{
> -	unsigned long rc = 0;
> -	unsigned char *p = (unsigned char *)buffer;
> -	unsigned long i;
> -	unsigned long addr = start;
> -
> -#ifdef MMC_DEBUG
> -	printf("mmc_block_read: start=%lu, blkcnt=%lu\n", start,
> -		 (unsigned long)blkcnt);
> -#endif
> -
> -	for(i = 0; i < (unsigned long)blkcnt; i++) {
> -#ifdef MMC_DEBUG
> -		printf("mmc_read_sector: addr=%lu, buffer=%p\n", addr, p);
> -#endif
> -		(void)mmc_read_sector(addr, p);
> -		rc++;
> -		addr++;
> -		p += hw_sect_size;
> -	}
> -
> -	return rc;
> -}
> -
> -/*-----------------------------------------------------------------------------
> - * Read hardware paramterers (sector size, size, number of sectors)
> - */
> -static int mmc_hw_get_parameters(void)
> -{
> -	unsigned char csddata[16];
> -	unsigned int sizemult;
> -	unsigned int size;
> -
> -	mmc_read_csd(csddata);
> -	hw_sect_size = 1<<(csddata[5] & 0x0f);
> -	size = ((csddata[6]&0x03)<<10)+(csddata[7]<<2)+(csddata[8]&0xc0);
> -	sizemult = ((csddata[10] & 0x80)>>7)+((csddata[9] & 0x03)<<1);
> -	hw_nr_sects = (size+1)*(1<<(sizemult+2));
> -	hw_size = hw_nr_sects*hw_sect_size/1024;
> -
> -#ifdef MMC_DEBUG
> -	printf("mmc_hw_get_parameters: hw_sect_size=%d, hw_nr_sects=%d, "
> -		 "hw_size=%d\n", hw_sect_size, hw_nr_sects, hw_size);
> -#endif
> -
> -	return 0;
> -}
> -
> -int mmc_legacy_init(int verbose)
> -{
> -	int ret = -ENODEV;
> -
> -	if (verbose)
> -		printf("mmc_legacy_init\n");
> -
> -	spi_init();
> -	/* this meeds to be done twice */
> -	mmc_hw_init();
> -	udelay(1000);
> -	mmc_hw_init();
> -
> -	mmc_hw_get_parameters();
> -
> -	mmc_dev.if_type = IF_TYPE_MMC;
> -	mmc_dev.part_type = PART_TYPE_DOS;
> -	mmc_dev.dev = 0;
> -	mmc_dev.lun = 0;
> -	mmc_dev.type = 0;
> -	mmc_dev.blksz = hw_sect_size;
> -	mmc_dev.lba = hw_nr_sects;
> -	sprintf((char*)mmc_dev.vendor, "Unknown vendor");
> -	sprintf((char*)mmc_dev.product, "Unknown product");
> -	sprintf((char*)mmc_dev.revision, "N/A");
> -	mmc_dev.removable = 0;	/* should be true??? */
> -	mmc_dev.block_read = mmc_block_read;
> -
> -	fat_register_device(&mmc_dev, 1);
> -
> -	ret = 0;
> -
> -	return ret;
> -}
> -
> -#endif /* CONFIG_MMC */
> diff --git a/arch/arm/cpu/arm720t/lpc2292/mmc_hw.c b/arch/arm/cpu/arm720t/lpc2292/mmc_hw.c
> deleted file mode 100644
> index bd6a5b1..0000000
> --- a/arch/arm/cpu/arm720t/lpc2292/mmc_hw.c
> +++ /dev/null
> @@ -1,233 +0,0 @@
> -/*
> -    This code was original written by Ulrich Radig and modified by
> -    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 <config.h>
> -#include <common.h>
> -#include <asm/arch/hardware.h>
> -#include <asm/arch/spi.h>
> -
> -#define MMC_Enable() PUT32(IO1CLR, 1l << 22)
> -#define MMC_Disable() PUT32(IO1SET, 1l << 22)
> -#define mmc_spi_cfg() spi_set_clock(8); spi_set_cfg(0, 1, 0);
> -
> -static unsigned char Write_Command_MMC (unsigned char *CMD);
> -static void MMC_Read_Block(unsigned char *CMD, unsigned char *Buffer,
> -		    unsigned short int Bytes);
> -
> -/* initialize the hardware */
> -int mmc_hw_init(void)
> -{
> -	unsigned long a;
> -	unsigned short int Timeout = 0;
> -	unsigned char b;
> -	unsigned char CMD[] = {0x40, 0x00, 0x00, 0x00, 0x00, 0x95};
> -
> -	/* set-up GPIO and SPI */
> -	(*((volatile unsigned long *)PINSEL2)) &= ~(1l << 3); /* clear bit 3 */
> -	(*((volatile unsigned long *)IO1DIR)) |= (1l << 22); /* set bit 22 (output) */
> -
> -	MMC_Disable();
> -
> -	spi_lock();
> -	spi_set_clock(248);
> -	spi_set_cfg(0, 1, 0);
> -	MMC_Enable();
> -
> -	/* waste some time */
> -	for(a=0; a < 20000; a++)
> -		asm("nop");
> -
> -	/* Put the MMC/SD-card into SPI-mode */
> -	for (b = 0; b < 10; b++) /* Sends min 74+ clocks to the MMC/SD-card */
> -		spi_write(0xff);
> -
> -	/* Sends command CMD0 to MMC/SD-card */
> -	while (Write_Command_MMC(CMD) != 1) {
> -		if (Timeout++ > 200) {
> -			MMC_Disable();
> -			spi_unlock();
> -			return(1); /* Abort with command 1 (return 1) */
> -		}
> -	}
> -	/* Sends Command CMD1 an MMC/SD-card */
> -	Timeout = 0;
> -	CMD[0] = 0x41;/* Command 1 */
> -	CMD[5] = 0xFF;
> -
> -	while (Write_Command_MMC(CMD) != 0) {
> -		if (Timeout++ > 200) {
> -			MMC_Disable();
> -			spi_unlock();
> -			return (2); /* Abort with command 2 (return 2) */
> -		}
> -	}
> -
> -	MMC_Disable();
> -	spi_unlock();
> -
> -	return 0;
> -}
> -
> -/* ############################################################################
> -   Sends a command to the MMC/SD-card
> -   ######################################################################### */
> -static unsigned char Write_Command_MMC (unsigned char *CMD)
> -{
> -	unsigned char a, tmp = 0xff;
> -	unsigned short int Timeout = 0;
> -
> -	MMC_Disable();
> -	spi_write(0xFF);
> -	MMC_Enable();
> -
> -	for (a = 0; a < 0x06; a++)
> -		spi_write(*CMD++);
> -
> -	while (tmp == 0xff) {
> -		tmp = spi_read();
> -		if (Timeout++ > 5000)
> -		  break;
> -	}
> -
> -	return (tmp);
> -}
> -
> -/* ############################################################################
> -   Routine to read the CID register from the MMC/SD-card (16 bytes)
> -   ######################################################################### */
> -void MMC_Read_Block(unsigned char *CMD, unsigned char *Buffer, unsigned short
> -	int Bytes)
> -{
> -	unsigned short int a;
> -
> -	spi_lock();
> -	mmc_spi_cfg();
> -	MMC_Enable();
> -
> -	if (Write_Command_MMC(CMD) != 0) {
> -		MMC_Disable();
> -		spi_unlock();
> -		return;
> -	}
> -
> -	while (spi_read() != 0xfe) {};
> -	for (a = 0; a < Bytes; a++)
> -		*Buffer++ = spi_read();
> -
> -	/* Read the CRC-byte */
> -	spi_read(); /* CRC - byte is discarded */
> -	spi_read(); /* CRC - byte is discarded */
> -	/* set MMC_Chip_Select to high (MMC/SD-card Inaktiv) */
> -	MMC_Disable();
> -	spi_unlock();
> -
> -	return;
> -}
> -
> -/* ############################################################################
> -   Routine to read a block (512 bytes) from the MMC/SD-card
> -   ######################################################################### */
> -unsigned char mmc_read_sector (unsigned long addr,unsigned char *Buffer)
> -{
> -	/* Command 16 to read aBlocks from the MMC/SD - caed */
> -	unsigned char CMD[] = {0x51,0x00,0x00,0x00,0x00,0xFF};
> -
> -	/* The address on the MMC/SD-card is in bytes,
> -	addr is transformed from blocks to bytes and the result is
> -	placed into the command */
> -
> -	addr = addr << 9; /* addr = addr * 512 */
> -
> -	CMD[1] = ((addr & 0xFF000000) >> 24);
> -	CMD[2] = ((addr & 0x00FF0000) >> 16);
> -	CMD[3] = ((addr & 0x0000FF00) >> 8 );
> -
> -	MMC_Read_Block(CMD, Buffer, 512);
> -
> -	return (0);
> -}
> -
> -/* ############################################################################
> -   Routine to write a block (512 byte) to the MMC/SD-card
> -   ######################################################################### */
> -unsigned char mmc_write_sector (unsigned long addr,unsigned char *Buffer)
> -{
> -	unsigned char tmp, a;
> -	unsigned short int b;
> -	/* Command 24 to write a block to the MMC/SD - card */
> -	unsigned char CMD[] = {0x58, 0x00, 0x00, 0x00, 0x00, 0xFF};
> -
> -	/* The address on the MMC/SD-card is in bytes,
> -	addr is transformed from blocks to bytes and the result is
> -	placed into the command */
> -
> -	addr = addr << 9; /* addr = addr * 512 */
> -
> -	CMD[1] = ((addr & 0xFF000000) >> 24);
> -	CMD[2] = ((addr & 0x00FF0000) >> 16);
> -	CMD[3] = ((addr & 0x0000FF00) >> 8 );
> -
> -	spi_lock();
> -	mmc_spi_cfg();
> -	MMC_Enable();
> -
> -	/* Send command CMD24 to the MMC/SD-card (Write 1 Block/512 Bytes) */
> -	tmp = Write_Command_MMC(CMD);
> -	if (tmp != 0) {
> -		MMC_Disable();
> -		spi_unlock();
> -		return(tmp);
> -	}
> -
> -	/* Do a short delay and send a clock-pulse to the MMC/SD-card */
> -	for (a = 0; a < 100; a++)
> -		spi_read();
> -
> -	/* Send a start byte to the MMC/SD-card */
> -	spi_write(0xFE);
> -
> -	/* Write the block (512 bytes) to the MMC/SD-card */
> -	for (b = 0; b < 512; b++)
> -		spi_write(*Buffer++);
> -
> -	/* write the CRC-Byte */
> -	spi_write(0xFF); /* write a dummy CRC */
> -	spi_write(0xFF); /* CRC code is not used */
> -
> -	/* Wait for MMC/SD-card busy */
> -	while (spi_read() != 0xff) {};
> -
> -	/* set MMC_Chip_Select to high (MMC/SD-card inactive) */
> -	MMC_Disable();
> -	spi_unlock();
> -	return (0);
> -}
> -
> -/* #########################################################################
> -   Routine to read the CSD register from the MMC/SD-card (16 bytes)
> -   ######################################################################### */
> -unsigned char mmc_read_csd (unsigned char *Buffer)
> -{
> -	/* Command to read the CSD register */
> -	unsigned char CMD[] = {0x49, 0x00, 0x00, 0x00, 0x00, 0xFF};
> -
> -	MMC_Read_Block(CMD, Buffer, 16);
> -
> -	return (0);
> -}
> diff --git a/arch/arm/cpu/arm720t/lpc2292/mmc_hw.h b/arch/arm/cpu/arm720t/lpc2292/mmc_hw.h
> deleted file mode 100644
> index 3687dbf..0000000
> --- a/arch/arm/cpu/arm720t/lpc2292/mmc_hw.h
> +++ /dev/null
> @@ -1,29 +0,0 @@
> -/*
> -    This module implements a linux character device driver for the 24c256 chip.
> -    Copyright (C) 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
> -*/
> -
> -#ifndef _MMC_HW_
> -#define _MMC_HW_
> -
> -unsigned char mmc_read_csd(unsigned char *Buffer);
> -unsigned char mmc_read_sector (unsigned long addr,
> -			       unsigned char *Buffer);
> -unsigned char mmc_write_sector (unsigned long addr,unsigned char *Buffer);
> -int mmc_hw_init(void);
> -
> -#endif /* _MMC_HW_ */
> diff --git a/arch/arm/cpu/arm720t/lpc2292/spi.c b/arch/arm/cpu/arm720t/lpc2292/spi.c
> deleted file mode 100644
> index d296bda..0000000
> --- a/arch/arm/cpu/arm720t/lpc2292/spi.c
> +++ /dev/null
> @@ -1,40 +0,0 @@
> -/*
> -    This module implements an interface to the SPI on the lpc22xx.
> -    Copyright (C) 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 <config.h>
> -#include <common.h>
> -#include <asm/errno.h>
> -#include <asm/arch/hardware.h>
> -#include <asm/arch/spi.h>
> -
> -unsigned long spi_flags;
> -unsigned char spi_idle = 0x00;
> -
> -int spi_init(void)
> -{
> -	unsigned long pinsel0_value;
> -
> -	/* activate spi pins */
> -	pinsel0_value = GET32(PINSEL0);
> -	pinsel0_value &= ~(0xFFl << 8);
> -	pinsel0_value |= (0x55l << 8);
> -	PUT32(PINSEL0, pinsel0_value);
> -
> -	return 0;
> -}
> diff --git a/arch/arm/cpu/arm720t/start.S b/arch/arm/cpu/arm720t/start.S
> index 2f914e9..0daf848 100644
> --- a/arch/arm/cpu/arm720t/start.S
> +++ b/arch/arm/cpu/arm720t/start.S
> @@ -43,11 +43,7 @@ _start: b	reset
>  	ldr	pc, _software_interrupt
>  	ldr	pc, _prefetch_abort
>  	ldr	pc, _data_abort
> -#ifdef CONFIG_LPC2292
> -	.word	0xB4405F76 /* 2's complement of the checksum of the vectors */
> -#else
>  	ldr	pc, _not_used
> -#endif
>  	ldr	pc, _irq
>  	ldr	pc, _fiq
>  
> @@ -151,10 +147,6 @@ reset:
>  	bl	cpu_init_crit
>  #endif
>  
> -#ifdef CONFIG_LPC2292
> -	bl	lowlevel_init
> -#endif
> -
>  /* Set stackpointer in internal RAM to call board_init_f */
>  call_board_init_f:
>  	ldr	sp, =(CONFIG_SYS_INIT_SP_ADDR)
> @@ -291,16 +283,6 @@ _dynsym_start_ofs:
>   *************************************************************************
>   */
>  
> -#if defined(CONFIG_LPC2292)
> -PLLCFG_ADR:	.word	PLLCFG
> -PLLFEED_ADR:	.word	PLLFEED
> -PLLCON_ADR:	.word	PLLCON
> -PLLSTAT_ADR:	.word	PLLSTAT
> -VPBDIV_ADR:	.word	VPBDIV
> -MEMMAP_ADR:	.word	MEMMAP
> -
> -#endif
> -
>  cpu_init_crit:
>  #if defined(CONFIG_NETARM)
>  	/*
> @@ -371,50 +353,6 @@ cpu_init_crit:
>  
>  #elif defined(CONFIG_INTEGRATOR) && defined(CONFIG_ARCH_INTEGRATOR)
>  	/* No specific initialisation for IntegratorAP/CM720T as yet */
> -#elif defined(CONFIG_LPC2292)
> -	/* Set-up PLL */
> -	mov	r3, #0xAA
> -	mov	r4, #0x55
> -	/* First disconnect and disable the PLL */
> -	ldr	r0, PLLCON_ADR
> -	mov	r1, #0x00
> -	str	r1, [r0]
> -	ldr	r0, PLLFEED_ADR /* start feed sequence */
> -	str	r3, [r0]
> -	str	r4, [r0]	/* feed sequence done */
> -	/* Set new M and P values */
> -	ldr	r0, PLLCFG_ADR
> -	mov	r1, #0x23	/* M=4 and P=2 */
> -	str	r1, [r0]
> -	ldr	r0, PLLFEED_ADR /* start feed sequence */
> -	str	r3, [r0]
> -	str	r4, [r0]	/* feed sequence done */
> -	/* Then enable the PLL */
> -	ldr	r0, PLLCON_ADR
> -	mov	r1, #0x01	/* PLL enable bit */
> -	str	r1, [r0]
> -	ldr	r0, PLLFEED_ADR /* start feed sequence */
> -	str	r3, [r0]
> -	str	r4, [r0]	/* feed sequence done */
> -	/* Wait for the lock */
> -	ldr	r0, PLLSTAT_ADR
> -	mov	r1, #0x400	/* lock bit */
> -lock_loop:
> -	ldr	r2, [r0]
> -	and	r2, r1, r2
> -	cmp	r2, #0
> -	beq	lock_loop
> -	/* And finally connect the PLL */
> -	ldr	r0, PLLCON_ADR
> -	mov	r1, #0x03	/* PLL enable bit and connect bit */
> -	str	r1, [r0]
> -	ldr	r0, PLLFEED_ADR /* start feed sequence */
> -	str	r3, [r0]
> -	str	r4, [r0]	/* feed sequence done */
> -	/* Set-up VPBDIV register */
> -	ldr	r0, VPBDIV_ADR
> -	mov	r1, #0x01	/* VPB clock is same as process clock */
> -	str	r1, [r0]
>  #elif defined(CONFIG_TEGRA)
>  	/* No cpu_init_crit for tegra as yet */
>  #else
> @@ -432,7 +370,7 @@ lock_loop:
>  	str	r1, [r0]
>  #endif
>  
> -#if !defined(CONFIG_LPC2292) && !defined(CONFIG_TEGRA)
> +#if !defined(CONFIG_TEGRA)
>  	mov	ip, lr
>  	/*
>  	 * before relocating, we have to setup RAM timing
> @@ -636,11 +574,6 @@ 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)
> -	.align	5
> -.globl reset_cpu
> -reset_cpu:
> -	mov	pc, r0
>  #elif defined(CONFIG_TEGRA)
>  	/* No specific reset actions for tegra as yet */
>  #else
> diff --git a/arch/arm/include/asm/arch-lpc2292/hardware.h b/arch/arm/include/asm/arch-lpc2292/hardware.h
> deleted file mode 100644
> index 5e227e3..0000000
> --- a/arch/arm/include/asm/arch-lpc2292/hardware.h
> +++ /dev/null
> @@ -1,33 +0,0 @@
> -#ifndef __ASM_ARCH_HARDWARE_H
> -#define __ASM_ARCH_HARDWARE_H
> -
> -/*
> - * Copyright (c) 2004	Cucy Systems (http://www.cucy.com)
> - * Curt Brune <curt at cucy.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.
> - *
> - * 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
> - */
> -
> -#if defined(CONFIG_LPC2292)
> -#include <asm/arch-lpc2292/lpc2292_registers.h>
> -#else
> -#error No hardware file defined for this configuration
> -#endif
> -
> -#endif /* __ASM_ARCH_HARDWARE_H */
> diff --git a/arch/arm/include/asm/arch-lpc2292/lpc2292_registers.h b/arch/arm/include/asm/arch-lpc2292/lpc2292_registers.h
> deleted file mode 100644
> index 5715f3e..0000000
> --- a/arch/arm/include/asm/arch-lpc2292/lpc2292_registers.h
> +++ /dev/null
> @@ -1,225 +0,0 @@
> -#ifndef __LPC2292_REGISTERS_H
> -#define __LPC2292_REGISTERS_H
> -
> -#include <config.h>
> -
> -/* Macros for reading/writing registers */
> -#define PUT8(reg, value) (*(volatile unsigned char*)(reg) = (value))
> -#define PUT16(reg, value) (*(volatile unsigned short*)(reg) = (value))
> -#define PUT32(reg, value) (*(volatile unsigned int*)(reg) = (value))
> -#define GET8(reg) (*(volatile unsigned char*)(reg))
> -#define GET16(reg) (*(volatile unsigned short*)(reg))
> -#define GET32(reg) (*(volatile unsigned int*)(reg))
> -
> -/* External Memory Controller */
> -
> -#define BCFG0 0xFFE00000	/* 32-bits */
> -#define BCFG1 0xFFE00004	/* 32-bits */
> -#define BCFG2 0xFFE00008	/* 32-bits */
> -#define BCFG3 0xFFE0000c	/* 32-bits */
> -
> -/* System Control Block */
> -
> -#define EXTINT   0xE01FC140
> -#define EXTWAKE  0xE01FC144
> -#define EXTMODE  0xE01FC148
> -#define EXTPOLAR 0xE01FC14C
> -#define MEMMAP   0xE01FC040
> -#define PLLCON   0xE01FC080
> -#define PLLCFG   0xE01FC084
> -#define PLLSTAT  0xE01FC088
> -#define PLLFEED  0xE01FC08C
> -#define PCON     0xE01FC0C0
> -#define PCONP    0xE01FC0C4
> -#define VPBDIV   0xE01FC100
> -
> -/* Memory Acceleration Module */
> -
> -#define MAMCR  0xE01FC000
> -#define MAMTIM 0xE01FC004
> -
> -/* Vectored Interrupt Controller */
> -
> -#define VICIRQStatus    0xFFFFF000
> -#define VICFIQStatus    0xFFFFF004
> -#define VICRawIntr      0xFFFFF008
> -#define VICIntSelect    0xFFFFF00C
> -#define VICIntEnable    0xFFFFF010
> -#define VICIntEnClr     0xFFFFF014
> -#define VICSoftInt      0xFFFFF018
> -#define VICSoftIntClear 0xFFFFF01C
> -#define VICProtection   0xFFFFF020
> -#define VICVectAddr     0xFFFFF030
> -#define VICDefVectAddr  0xFFFFF034
> -#define VICVectAddr0    0xFFFFF100
> -#define VICVectAddr1    0xFFFFF104
> -#define VICVectAddr2    0xFFFFF108
> -#define VICVectAddr3    0xFFFFF10C
> -#define VICVectAddr4    0xFFFFF110
> -#define VICVectAddr5    0xFFFFF114
> -#define VICVectAddr6    0xFFFFF118
> -#define VICVectAddr7    0xFFFFF11C
> -#define VICVectAddr8    0xFFFFF120
> -#define VICVectAddr9    0xFFFFF124
> -#define VICVectAddr10   0xFFFFF128
> -#define VICVectAddr11   0xFFFFF12C
> -#define VICVectAddr12   0xFFFFF130
> -#define VICVectAddr13   0xFFFFF134
> -#define VICVectAddr14   0xFFFFF138
> -#define VICVectAddr15   0xFFFFF13C
> -#define VICVectCntl0    0xFFFFF200
> -#define VICVectCntl1	0xFFFFF204
> -#define VICVectCntl2	0xFFFFF208
> -#define VICVectCntl3	0xFFFFF20C
> -#define VICVectCntl4	0xFFFFF210
> -#define VICVectCntl5	0xFFFFF214
> -#define VICVectCntl6	0xFFFFF218
> -#define VICVectCntl7	0xFFFFF21C
> -#define VICVectCntl8	0xFFFFF220
> -#define VICVectCntl9	0xFFFFF224
> -#define VICVectCntl10	0xFFFFF228
> -#define VICVectCntl11	0xFFFFF22C
> -#define VICVectCntl12	0xFFFFF230
> -#define VICVectCntl13	0xFFFFF234
> -#define VICVectCntl14	0xFFFFF238
> -#define VICVectCntl15	0xFFFFF23C
> -
> -/* Pin connect block */
> -
> -#define PINSEL0 0xE002C000	/* 32 bits */
> -#define PINSEL1 0xE002C004	/* 32 bits */
> -#define PINSEL2 0xE002C014	/* 32 bits */
> -
> -/* GPIO */
> -
> -#define IO0PIN 0xE0028000
> -#define IO0SET 0xE0028004
> -#define IO0DIR 0xE0028008
> -#define IO0CLR 0xE002800C
> -#define IO1PIN 0xE0028010
> -#define IO1SET 0xE0028014
> -#define IO1DIR 0xE0028018
> -#define IO1CLR 0xE002801C
> -#define IO2PIN 0xE0028020
> -#define IO2SET 0xE0028024
> -#define IO2DIR 0xE0028028
> -#define IO2CLR 0xE002802C
> -#define IO3PIN 0xE0028030
> -#define IO3SET 0xE0028034
> -#define IO3DIR 0xE0028038
> -#define IO3CLR 0xE002803C
> -
> -/* Uarts */
> -
> -#define U0RBR 0xE000C000
> -#define U0THR 0xE000C000
> -#define U0IER 0xE000C004
> -#define U0IIR 0xE000C008
> -#define U0FCR 0xE000C008
> -#define U0LCR 0xE000C00C
> -#define U0LSR 0xE000C014
> -#define U0SCR 0xE000C01C
> -#define U0DLL 0xE000C000
> -#define U0DLM 0xE000C004
> -
> -#define U1RBR 0xE0010000
> -#define U1THR 0xE0010000
> -#define U1IER 0xE0010004
> -#define U1IIR 0xE0010008
> -#define U1FCR 0xE0010008
> -#define U1LCR 0xE001000C
> -#define U1MCR 0xE0010010
> -#define U1LSR 0xE0010014
> -#define U1MSR 0xE0010018
> -#define U1SCR 0xE001001C
> -#define U1DLL 0xE0010000
> -#define U1DLM 0xE0010004
> -
> -/* I2C */
> -
> -#define I2CONSET 0xE001C000
> -#define I2STAT   0xE001C004
> -#define I2DAT    0xE001C008
> -#define I2ADR    0xE001C00C
> -#define I2SCLH   0xE001C010
> -#define I2SCLL   0xE001C014
> -#define I2CONCLR 0xE001C018
> -
> -/* SPI */
> -
> -#define S0SPCR  0xE0020000
> -#define S0SPSR  0xE0020004
> -#define S0SPDR  0xE0020008
> -#define S0SPCCR 0xE002000C
> -#define S0SPINT 0xE002001C
> -
> -#define S1SPCR  0xE0030000
> -#define S1SPSR  0xE0030004
> -#define S1SPDR  0xE0030008
> -#define S1SPCCR 0xE003000C
> -#define S1SPINT 0xE003001C
> -
> -/* CAN controller */
> -
> -/* skip for now */
> -
> -/* Timers */
> -
> -#define T0IR  0xE0004000
> -#define T0TCR 0xE0004004
> -#define T0TC  0xE0004008
> -#define T0PR  0xE000400C
> -#define T0PC  0xE0004010
> -#define T0MCR 0xE0004014
> -#define T0MR0 0xE0004018
> -#define T0MR1 0xE000401C
> -#define T0MR2 0xE0004020
> -#define T0MR3 0xE0004024
> -#define T0CCR 0xE0004028
> -#define T0CR0 0xE000402C
> -#define T0CR1 0xE0004030
> -#define T0CR2 0xE0004034
> -#define T0CR3 0xE0004038
> -#define T0EMR 0xE000403C
> -
> -#define T1IR  0xE0008000
> -#define T1TCR 0xE0008004
> -#define T1TC  0xE0008008
> -#define T1PR  0xE000800C
> -#define T1PC  0xE0008010
> -#define T1MCR 0xE0008014
> -#define T1MR0 0xE0008018
> -#define T1MR1 0xE000801C
> -#define T1MR2 0xE0008020
> -#define T1MR3 0xE0008024
> -#define T1CCR 0xE0008028
> -#define T1CR0 0xE000802C
> -#define T1CR1 0xE0008030
> -#define T1CR2 0xE0008034
> -#define T1CR3 0xE0008038
> -#define T1EMR 0xE000803C
> -
> -/* PWM */
> -
> -/* skip for now */
> -
> -/* A/D converter */
> -
> -/* skip for now */
> -
> -/* Real Time Clock */
> -
> -/* skip for now */
> -
> -/* Watchdog */
> -
> -#define WDMOD  0xE0000000
> -#define WDTC   0xE0000004
> -#define WDFEED 0xE0000008
> -#define WDTV   0xE000000C
> -
> -/* EmbeddedICE LOGIC */
> -
> -/* skip for now */
> -
> -#endif
> diff --git a/arch/arm/include/asm/arch-lpc2292/spi.h b/arch/arm/include/asm/arch-lpc2292/spi.h
> deleted file mode 100644
> index 6ae66e8..0000000
> --- a/arch/arm/include/asm/arch-lpc2292/spi.h
> +++ /dev/null
> @@ -1,82 +0,0 @@
> -/*
> -    This file defines the interface to the lpc22xx SPI module.
> -    Copyright (C) 2006  Embedded Artists AB (www.embeddedartists.com)
> -
> -    This file may be included in software not adhering to the GPL.
> -
> -    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 SPI_H
> -#define SPI_H
> -
> -#include <config.h>
> -#include <common.h>
> -#include <asm/errno.h>
> -#include <asm/arch/hardware.h>
> -
> -#define SPIF 0x80
> -
> -#define spi_lock() disable_interrupts();
> -#define spi_unlock() enable_interrupts();
> -
> -extern unsigned long spi_flags;
> -extern unsigned char spi_idle;
> -
> -int spi_init(void);
> -
> -static inline unsigned char spi_read(void)
> -{
> -	unsigned char b;
> -
> -	PUT8(S0SPDR, spi_idle);
> -	while (!(GET8(S0SPSR) & SPIF));
> -	b = GET8(S0SPDR);
> -
> -	return b;
> -}
> -
> -static inline void spi_write(unsigned char b)
> -{
> -	PUT8(S0SPDR, b);
> -	while (!(GET8(S0SPSR) & SPIF));
> -	GET8(S0SPDR);		/* this will clear the SPIF bit */
> -}
> -
> -static inline void spi_set_clock(unsigned char clk_value)
> -{
> -	PUT8(S0SPCCR, clk_value);
> -}
> -
> -static inline void spi_set_cfg(unsigned char phase,
> -			       unsigned char polarity,
> -			       unsigned char lsbf)
> -{
> -	unsigned char v = 0x20;	/* master bit set */
> -
> -	if (phase)
> -		v |= 0x08;			/* set phase bit */
> -	if (polarity) {
> -		v |= 0x10;			/* set polarity bit */
> -		spi_idle = 0xFF;
> -	} else {
> -		spi_idle = 0x00;
> -	}
> -	if (lsbf)
> -		v |= 0x40;			/* set lsbf bit */
> -
> -	PUT8(S0SPCR, v);
> -}
> -#endif /* SPI_H */
> diff --git a/drivers/i2c/soft_i2c.c b/drivers/i2c/soft_i2c.c
> index 36c6114..1595c07 100644
> --- a/drivers/i2c/soft_i2c.c
> +++ b/drivers/i2c/soft_i2c.c
> @@ -41,9 +41,6 @@
>  #ifdef	CONFIG_IXP425			/* only valid for IXP425 */
>  #include <asm/arch/ixp425.h>
>  #endif
> -#ifdef CONFIG_LPC2292
> -#include <asm/arch/hardware.h>
> -#endif
>  #if defined(CONFIG_MPC852T) || defined(CONFIG_MPC866)
>  #include <asm/io.h>
>  #endif
> diff --git a/drivers/serial/Makefile b/drivers/serial/Makefile
> index 0eaf227..8e7db26 100644
> --- a/drivers/serial/Makefile
> +++ b/drivers/serial/Makefile
> @@ -44,7 +44,6 @@ COBJS-$(CONFIG_CLPS7111_SERIAL) += serial_clps7111.o
>  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_LH7A40X_SERIAL) += serial_lh7a40x.o
>  COBJS-$(CONFIG_MAX3100_SERIAL) += serial_max3100.o
>  COBJS-$(CONFIG_MXC_UART) += serial_mxc.o
> diff --git a/drivers/serial/serial.c b/drivers/serial/serial.c
> index 9550cbd..ee7cb84 100644
> --- a/drivers/serial/serial.c
> +++ b/drivers/serial/serial.c
> @@ -84,7 +84,6 @@ serial_initfunc(imx_serial_initialize);
>  serial_initfunc(ixp_serial_initialize);
>  serial_initfunc(ks8695_serial_initialize);
>  serial_initfunc(lh7a40x_serial_initialize);
> -serial_initfunc(lpc2292_serial_initialize);
>  serial_initfunc(max3100_serial_initialize);
>  serial_initfunc(mxc_serial_initialize);
>  serial_initfunc(netarm_serial_initialize);
> @@ -162,7 +161,6 @@ void serial_initialize(void)
>  	ixp_serial_initialize();
>  	ks8695_serial_initialize();
>  	lh7a40x_serial_initialize();
> -	lpc2292_serial_initialize();
>  	max3100_serial_initialize();
>  	mxc_serial_initialize();
>  	netarm_serial_initialize();
> diff --git a/drivers/serial/serial_lpc2292.c b/drivers/serial/serial_lpc2292.c
> deleted file mode 100644
> index fcab202..0000000
> --- a/drivers/serial/serial_lpc2292.c
> +++ /dev/null
> @@ -1,124 +0,0 @@
> -/*
> - * (C) Copyright 2002-2004
> - * Wolfgang Denk, DENX Software Engineering, <wd at denx.de>
> - *
> - * (C) Copyright 2002
> - * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
> - * Marius Groeger <mgroeger at sysgo.de>
> - *
> - * (C) Copyright 2002
> - * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
> - * Alex Zuepke <azu at sysgo.de>
> - *
> - * Copyright (C) 1999 2000 2001 Erik Mouw (J.A.K.Mouw at its.tudelft.nl)
> - *
> - * 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/arch/hardware.h>
> -
> -DECLARE_GLOBAL_DATA_PTR;
> -
> -static void lpc2292_serial_setbrg(void)
> -{
> -	unsigned short divisor = 0;
> -
> -	switch (gd->baudrate) {
> -	case   1200:	divisor = 3072;	break;
> -	case   9600:	divisor =  384;	break;
> -	case  19200:	divisor =  192;	break;
> -	case  38400:	divisor =   96;	break;
> -	case  57600:	divisor =   64;	break;
> -	case 115200:	divisor =   32;	break;
> -	default:	hang ();	break;
> -	}
> -
> -	/* init serial UART0 */
> -	PUT8(U0LCR, 0);
> -	PUT8(U0IER, 0);
> -	PUT8(U0LCR, 0x80);	/* DLAB=1 */
> -	PUT8(U0DLL, (unsigned char)(divisor & 0x00FF));
> -	PUT8(U0DLM, (unsigned char)(divisor >> 8));
> -	PUT8(U0LCR, 0x03);	/* 8N1, DLAB=0  */
> -	PUT8(U0FCR, 1);		/* Enable RX and TX FIFOs */
> -}
> -
> -static int lpc2292_serial_init(void)
> -{
> -	unsigned long pinsel0;
> -
> -	serial_setbrg ();
> -
> -	pinsel0 = GET32(PINSEL0);
> -	pinsel0 &= ~(0x00000003);
> -	pinsel0 |= 5;
> -	PUT32(PINSEL0, pinsel0);
> -
> -	return (0);
> -}
> -
> -static void lpc2292_serial_putc(const char c)
> -{
> -	if (c == '\n')
> -	{
> -		while((GET8(U0LSR) & (1<<5)) == 0); /* Wait for empty U0THR */
> -		PUT8(U0THR, '\r');
> -	}
> -
> -	while((GET8(U0LSR) & (1<<5)) == 0); /* Wait for empty U0THR */
> -	PUT8(U0THR, c);
> -}
> -
> -static int lpc2292_serial_getc(void)
> -{
> -	while((GET8(U0LSR) & 1) == 0);
> -	return GET8(U0RBR);
> -}
> -
> -static void lpc2292_serial_puts(const char *s)
> -{
> -	while (*s) {
> -		serial_putc (*s++);
> -	}
> -}
> -
> -/* Test if there is a byte to read */
> -static int lpc2292_serial_tstc(void)
> -{
> -	return (GET8(U0LSR) & 1);
> -}
> -
> -static struct serial_device lpc2292_serial_drv = {
> -	.name	= "lpc2292_serial",
> -	.start	= lpc2292_serial_init,
> -	.stop	= NULL,
> -	.setbrg	= lpc2292_serial_setbrg,
> -	.putc	= lpc2292_serial_putc,
> -	.puts	= lpc2292_serial_puts,
> -	.getc	= lpc2292_serial_getc,
> -	.tstc	= lpc2292_serial_tstc,
> -};
> -
> -void lpc2292_serial_initialize(void)
> -{
> -	serial_register(&lpc2292_serial_drv);
> -}
> -
> -__weak struct serial_device *default_serial_console(void)
> -{
> -	return &lpc2292_serial_drv;
> -}
> diff --git a/include/flash.h b/include/flash.h
> index 6d70bdd..7db599e 100644
> --- a/include/flash.h
> +++ b/include/flash.h
> @@ -348,7 +348,6 @@ extern flash_info_t *flash_get_info(ulong base);
>  
>  #define TOSH_ID_FVT160	0xC2		/* TC58FVT160 ID (16 M, top )		*/
>  #define TOSH_ID_FVB160	0x43		/* TC58FVT160 ID (16 M, bottom )	*/
> -#define PHILIPS_LPC2292 0x0401FF13  /* LPC2292 internal FLASH			*/
>  #define NUMONYX_256MBIT	0x8922		/* Numonyx P33/30 256MBit 65nm	*/
>  
>  /*-----------------------------------------------------------------------

Applied the whole series to u-boot-arm/master (with trivial rebase and
update to doc/driver-model/UDM-serial.txt), thanks!

Amicalement,
-- 
Albert.


More information about the U-Boot mailing list