[U-Boot] [PATCH v3 1/6] arm: Remove support for lpc2292
Albert ARIBAUD
albert.u.boot at aribaud.net
Fri Oct 26 22:13:28 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 */
>
> /*-----------------------------------------------------------------------
Sorry for asking, but... could you please rebase the series onto
current u-boot-arm/master? Also, consider updating entries in
doc/driver-model/UDM-serial.txt as appropriate.
Thanks in advance!
Amicalement,
--
Albert.
More information about the U-Boot
mailing list