diff options
| author | Florian Boor <florian.boor@kernelconcepts.de> | 2007-10-08 17:07:10 +0000 |
|---|---|---|
| committer | Florian Boor <florian.boor@kernelconcepts.de> | 2007-10-08 17:07:10 +0000 |
| commit | 8509e92c44e3df14f799c38a0501f4127ab6e503 (patch) | |
| tree | a8fa81e2c76caf4d46978dc314e44f0ff8999a1b | |
| parent | e04cf6dc16359fd97bf24585f29eb578fad41fc1 (diff) | |
| parent | 36b528a4a4215304b453843cfeb89ab12c62b4b6 (diff) | |
merge of '397294e12f174d25745f5b3b591468ffd54fec4d'
and 'e8e5e906fda8d6117edc8f3082056c7d690921a7'
| -rw-r--r-- | conf/machine/bd-neon.conf | 56 | ||||
| -rwxr-xr-x | packages/gpephone/gpe-session-scripts-phone/phonesession | 1 | ||||
| -rw-r--r-- | packages/gpephone/gpe-session-scripts-phone_0.67.bb | 2 | ||||
| -rw-r--r-- | packages/linux/linux-bd-neon-2.6-2.6.22/.mtn2git_empty | 0 | ||||
| -rw-r--r-- | packages/linux/linux-bd-neon-2.6-2.6.22/neon-jffs2-config.patch | 33 | ||||
| -rw-r--r-- | packages/linux/linux-bd-neon-2.6_2.6.22.bb | 48 | ||||
| -rw-r--r-- | packages/tslib/tslib-1.0/bd-neon/.mtn2git_empty | 0 | ||||
| -rw-r--r-- | packages/tslib/tslib-1.0/bd-neon/ts.conf | 5 | ||||
| -rw-r--r-- | packages/tslib/tslib-1.0/bd-neon/tslib.sh | 6 | ||||
| -rw-r--r-- | packages/tslib/tslib_1.0.bb | 2 | ||||
| -rw-r--r-- | packages/uboot/u-boot-1.1.2/u-boot-1.1.2-neon.patch | 19204 | ||||
| -rw-r--r-- | packages/uboot/u-boot_1.1.2.bb | 3 |
12 files changed, 19357 insertions, 3 deletions
diff --git a/conf/machine/bd-neon.conf b/conf/machine/bd-neon.conf new file mode 100644 index 0000000000..63e3ac8269 --- /dev/null +++ b/conf/machine/bd-neon.conf @@ -0,0 +1,56 @@ +#@TYPE: Machine +#@NAME: Boundary Devices NEON +#@DESCRIPTION: Machine configuration for the Boundary Devices NEON board + +# +# Hardware-based properties +# +TARGET_ARCH = "arm" +PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5te" + +# Use tune-xscale per default. Machine independent feeds should be built with tune-strongarm. +require conf/machine/include/tune-xscale.conf + +# Uncomment this to use iwmmxt optimizations. Remove the above xscale stuff first +#require conf/machine/include/tune-iwmmxt.conf + +ROOT_FLASH_SIZE = "60" +VOLATILE_STORAGE_SIZE = "128" +GUI_MACHINE_CLASS = "bigscreen" +MACHINE_FEATURES = "kernel26 touchscreen apm alsa usbgadget screen uboot" + +# +# Software/packages selection +# +PREFERRED_PROVIDER_virtual/kernel = "linux-bd-neon-2.6" +MODUTILS = "26" +XSERVER = "xserver-kdrive-fbdev" +MACHINE_TASK_PROVIDER = "task-base" + +PREFERRED_VERSION_u-boot = "1.1.2" + +EXTRA_IMAGEDEPENDS =" mtd-utils" + +MACHINE_EXTRA_RDEPENDS = " mtd-utils" +MACHINE_EXTRA_RRECOMMENDS = " kernel-modules kernel-module-nls-cp437 \ + kernel-module-nls-iso8859-1 \ + kernel-module-nls-utf8 \ + kernel-module-af-key \ + kernel-module-i2c-pxa" + +EXTRA_IMAGECMD_jffs2 = "--little-endian --eraseblock=0x20000 -n" +EXTRA_IMAGECMD_jffs2 = "--little-endian --eraseblock=0x40000 --pad=32243712; sumtool -i ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 \ + -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs-summary.jffs2 \ + -e 128KiB -p" + +# +# Modules autoload and other boot properties +# +module_autoload_evdev = "evdev" +module_autoload_mmc_block = "mmc_block" +module_autoload_snd-pcm-oss = "snd-pcm-oss" +module_autoload_snd-mixer-oss = "snd-mixer-oss" + +#module_autoload_g_ether = "g_ether" + +SERIAL_CONSOLE = "115200 ttyS0" diff --git a/packages/gpephone/gpe-session-scripts-phone/phonesession b/packages/gpephone/gpe-session-scripts-phone/phonesession index 2f573a13fa..524199ee16 100755 --- a/packages/gpephone/gpe-session-scripts-phone/phonesession +++ b/packages/gpephone/gpe-session-scripts-phone/phonesession @@ -54,6 +54,7 @@ esdplay /mnt/sd/sounds/startup.wav # Start SoundServer soundserver & +alsactl restore -f /etc/gsmhandset.state # Run GSM support stuff diff --git a/packages/gpephone/gpe-session-scripts-phone_0.67.bb b/packages/gpephone/gpe-session-scripts-phone_0.67.bb index ac867a9c02..62bd5a649b 100644 --- a/packages/gpephone/gpe-session-scripts-phone_0.67.bb +++ b/packages/gpephone/gpe-session-scripts-phone_0.67.bb @@ -14,7 +14,7 @@ SRC_URI = "${GPE_MIRROR}/gpe-session-scripts-${PV}.tar.gz \ file://disable-composite.xsettings \ file://standard-apps.patch;patch=1" -PR = "r9" +PR = "r10" S = "${WORKDIR}/gpe-session-scripts-${PV}" diff --git a/packages/linux/linux-bd-neon-2.6-2.6.22/.mtn2git_empty b/packages/linux/linux-bd-neon-2.6-2.6.22/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/packages/linux/linux-bd-neon-2.6-2.6.22/.mtn2git_empty diff --git a/packages/linux/linux-bd-neon-2.6-2.6.22/neon-jffs2-config.patch b/packages/linux/linux-bd-neon-2.6-2.6.22/neon-jffs2-config.patch new file mode 100644 index 0000000000..958eda0200 --- /dev/null +++ b/packages/linux/linux-bd-neon-2.6-2.6.22/neon-jffs2-config.patch @@ -0,0 +1,33 @@ +--- linux-2.6.22/arch/arm/configs/neon_defconfig-o 2007-08-23 19:49:52.000000000 +0200 ++++ linux-2.6.22/arch/arm/configs/neon_defconfig 2007-08-23 19:50:16.000000000 +0200 +@@ -171,7 +171,8 @@ + # CONFIG_PREEMPT is not set + # CONFIG_NO_IDLE_HZ is not set + CONFIG_HZ=100 +-# CONFIG_AEABI is not set ++CONFIG_AEABI=y ++CONFIG_OABI_COMPAT=y + # CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set + CONFIG_SELECT_MEMORY_MODEL=y + CONFIG_FLATMEM_MANUAL=y +@@ -1131,7 +1132,7 @@ + CONFIG_PROC_FS=y + CONFIG_PROC_SYSCTL=y + CONFIG_SYSFS=y +-# CONFIG_TMPFS is not set ++CONFIG_TMPFS=y + # CONFIG_HUGETLB_PAGE is not set + CONFIG_RAMFS=y + # CONFIG_CONFIGFS_FS is not set +@@ -1147,7 +1148,10 @@ + # CONFIG_BFS_FS is not set + # CONFIG_EFS_FS is not set + # CONFIG_JFFS_FS is not set +-# CONFIG_JFFS2_FS is not set ++CONFIG_JFFS2_FS=y ++CONFIG_JFFS2_FS_DEBUG=0 ++CONFIG_JFFS2_FS_WRITEBUFFER=y ++CONFIG_JFFS2_SUMMARY=y + CONFIG_CRAMFS=y + # CONFIG_VXFS_FS is not set + # CONFIG_HPFS_FS is not set diff --git a/packages/linux/linux-bd-neon-2.6_2.6.22.bb b/packages/linux/linux-bd-neon-2.6_2.6.22.bb new file mode 100644 index 0000000000..6d2472935f --- /dev/null +++ b/packages/linux/linux-bd-neon-2.6_2.6.22.bb @@ -0,0 +1,48 @@ +DESCRIPTION = "2.6 Linux Kernel for Boundary Devices NEON Board" +SECTION = "kernel" +HOMEPAGE = "N/A" +LICENSE = "GPL" +DEPENDS += "uboot-utils" + +PR = "r1" + +SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.22.tar.bz2 \ + http://www.boundarydevices.com/boundary-2.6.22-2007-07-22.patch.bz2;patch=1 \ + file://neon-jffs2-config.patch;patch=1" + +S = "${WORKDIR}/linux-2.6.22" + +inherit kernel + +KERNEL_IMAGETYPE = "zImage" +FILES_kernel-image = "" +ALLOW_EMPTY = "1" + +do_configure() { + cp arch/arm/configs/neon_defconfig .config || die "No default configuration for ${MACHINE} available." + +# if [ "${TARGET_OS}" == "linux-gnueabi" -o "${TARGET_OS}" == "linux-uclibcgnueabi" ]; then +# echo "CONFIG_AEABI=y" >> ${S}/.config +# echo "CONFIG_OABI_COMPAT=y" >> ${S}/.config +# else +# echo "# CONFIG_AEABI is not set" >> ${S}/.config +# echo "# CONFIG_OABI_COMPAT is not set" >> ${S}/.config +# fi + + yes '' | oe_runmake oldconfig +} + +do_deploy() { + install -d ${DEPLOY_DIR_IMAGE} + install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${PR}-${MACHINE}.bin + tar -cvzf ${DEPLOY_DIR_IMAGE}/modules-${KERNEL_RELEASE}-${PR}-${MACHINE}.tgz -C ${D} lib + ${OBJCOPY} -O binary -R .note -R .comment -S vmlinux linux.bin + rm -f linux.bin.gz + gzip -9 linux.bin + ${STAGING_BINDIR_NATIVE}/mkimage -A arm -O linux -T kernel -C gzip -a a0008000 -e a0008000 -n "Boundary Devices NEON" -d linux.bin.gz ${DEPLOY_DIR_IMAGE}/uImage-${PV}-${PR}-${MACHINE}.bin + rm -f linux.bin.gz +} + +do_deploy[dirs] = "${S}" + +addtask deploy before do_package after do_install diff --git a/packages/tslib/tslib-1.0/bd-neon/.mtn2git_empty b/packages/tslib/tslib-1.0/bd-neon/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/packages/tslib/tslib-1.0/bd-neon/.mtn2git_empty diff --git a/packages/tslib/tslib-1.0/bd-neon/ts.conf b/packages/tslib/tslib-1.0/bd-neon/ts.conf new file mode 100644 index 0000000000..15fe294ce6 --- /dev/null +++ b/packages/tslib/tslib-1.0/bd-neon/ts.conf @@ -0,0 +1,5 @@ +module_raw ucb1x00 +module pthres pmin=1 +module variance delta=500 +module dejitter delta=10000 +module linear diff --git a/packages/tslib/tslib-1.0/bd-neon/tslib.sh b/packages/tslib/tslib-1.0/bd-neon/tslib.sh new file mode 100644 index 0000000000..b5f1c906f3 --- /dev/null +++ b/packages/tslib/tslib-1.0/bd-neon/tslib.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +TSLIB_TSDEVICE=/dev/touch_ucb1x00 + +export TSLIB_TSDEVICE + diff --git a/packages/tslib/tslib_1.0.bb b/packages/tslib/tslib_1.0.bb index 51bd1f6a7b..598e60fe4d 100644 --- a/packages/tslib/tslib_1.0.bb +++ b/packages/tslib/tslib_1.0.bb @@ -4,7 +4,7 @@ AUTHOR = "Russell King w/ plugins by Chris Larson et. al." SECTION = "base" LICENSE = "LGPL" -PR = "r16" +PR = "r17" SRC_URI = "http://download.berlios.de/tslib/tslib-1.0.tar.bz2 \ file://tslib-input_raw-grab_events.patch;patch=1 \ diff --git a/packages/uboot/u-boot-1.1.2/u-boot-1.1.2-neon.patch b/packages/uboot/u-boot-1.1.2/u-boot-1.1.2-neon.patch new file mode 100644 index 0000000000..ed959d43d8 --- /dev/null +++ b/packages/uboot/u-boot-1.1.2/u-boot-1.1.2-neon.patch @@ -0,0 +1,19204 @@ +diff -u -r --new-file u-boot-1.1.2/board/bd2003/bd2003.c u-boot-1.1.2-neon/board/bd2003/bd2003.c +--- u-boot-1.1.2/board/bd2003/bd2003.c 1970-01-01 01:00:00.000000000 +0100 ++++ u-boot-1.1.2-neon/board/bd2003/bd2003.c 2007-08-11 21:07:19.000000000 +0200 +@@ -0,0 +1,94 @@ ++/* ++ * (C) Copyright 2002 ++ * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net ++ * ++ * (C) Copyright 2002 ++ * Sysgo Real-Time Solutions, GmbH <www.elinos.com> ++ * Marius Groeger <mgroeger@sysgo.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 <common.h> ++#include <config.h> ++#include <common.h> ++#include <version.h> ++#include <stdarg.h> ++#include <linux/types.h> ++#include <devices.h> ++#include <lcd.h> ++#include <lcd_panels.h> ++ ++/* ------------------------------------------------------------------------- */ ++/* ++ * LCD panel declarations ++ */ ++ ++vidinfo_t panel_info = { ++ vl_col: 1024, //this is corrected in SetPanelInfo ++ vl_row: 768, ++ vl_bpix: LCD_BPP, ++ vl_lcd_line_length: (320 * NBITS(LCD_BPP) ) >> 3 ++}; ++ ++void disable_lcd_panel( void ) ++{ ++} ++ ++ ++/* ------------------------------------------------------------------------- */ ++ ++ ++/* ++ * Miscelaneous platform dependent initialisations ++ */ ++ ++int board_init (void) ++{ ++ DECLARE_GLOBAL_DATA_PTR; ++ ++ /* memory and cpu-speed are setup before relocation */ ++ /* so we do _nothing_ here */ ++ ++ /* arch number of Neon Board */ ++ gd->bd->bi_arch_number = MACH_TYPE_BD2003 ; ++ ++ /* adress of boot parameters */ ++ gd->bd->bi_boot_params = 0xa0000100; ++ ++ return 0; ++} ++ ++int board_late_init(void) ++{ ++ setenv("stdout", "serial"); ++ setenv("stderr", "serial"); ++ return 0; ++} ++ ++ ++int dram_init (void) ++{ ++ DECLARE_GLOBAL_DATA_PTR; ++ ++ gd->bd->bi_dram[0].start = PHYS_SDRAM_1; ++ gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE; ++ ++ return 0; ++} +diff -u -r --new-file u-boot-1.1.2/board/bd2003/config.mk u-boot-1.1.2-neon/board/bd2003/config.mk +--- u-boot-1.1.2/board/bd2003/config.mk 1970-01-01 01:00:00.000000000 +0100 ++++ u-boot-1.1.2-neon/board/bd2003/config.mk 2007-08-11 21:07:19.000000000 +0200 +@@ -0,0 +1,4 @@ ++#TEXT_BASE = 0xa1700000 ++TEXT_BASE = 0xA1F00000 ++#TEXT_BASE = 0 ++PXALCD = 1 +diff -u -r --new-file u-boot-1.1.2/board/bd2003/.cvsignore u-boot-1.1.2-neon/board/bd2003/.cvsignore +--- u-boot-1.1.2/board/bd2003/.cvsignore 1970-01-01 01:00:00.000000000 +0100 ++++ u-boot-1.1.2-neon/board/bd2003/.cvsignore 2007-08-11 21:07:19.000000000 +0200 +@@ -0,0 +1,2 @@ ++.depend ++ +diff -u -r --new-file u-boot-1.1.2/board/bd2003/flash.c u-boot-1.1.2-neon/board/bd2003/flash.c +--- u-boot-1.1.2/board/bd2003/flash.c 1970-01-01 01:00:00.000000000 +0100 ++++ u-boot-1.1.2-neon/board/bd2003/flash.c 2007-08-11 21:07:19.000000000 +0200 +@@ -0,0 +1,477 @@ ++/* ++ * (C) Copyright 2001 ++ * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net ++ * ++ * (C) Copyright 2001 ++ * Wolfgang Denk, DENX Software Engineering, wd@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 <common.h> ++#include <linux/byteorder/swab.h> ++#include <asm/arch/pxa250Base.h> ++#include <asm/arch/pxaHardware.h> ++#include "lcd.h" ++ ++flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */ ++ ++/* Board support for 1 or 2 flash devices */ ++#define FLASH_PORT_WIDTH32 ++#undef FLASH_PORT_WIDTH16 ++ ++#ifdef FLASH_PORT_WIDTH16 ++#define FLASH_PORT_WIDTH ushort ++#define FLASH_PORT_WIDTHV vu_short ++#define SWAP(x) __swab16(x) ++#else ++#define FLASH_PORT_WIDTH ulong ++#define FLASH_PORT_WIDTHV vu_long ++#define SWAP(x) __swab32(x) ++#endif ++ ++#define FPW FLASH_PORT_WIDTH ++#define FPWV FLASH_PORT_WIDTHV ++ ++#define mb() __asm__ __volatile__ ("" : : : "memory") ++ ++/*----------------------------------------------------------------------- ++ * Functions ++ */ ++static ulong flash_get_size (FPW *addr, flash_info_t *info); ++static int write_data (flash_info_t *info, ulong dest, FPW data); ++static void flash_get_offsets (ulong base, flash_info_t *info); ++void inline spin_wheel_init(ulong addr, ulong cnt); ++void inline spin_wheel_done( int worked ); ++void inline spin_wheel (ulong numleft); ++ ++/*----------------------------------------------------------------------- ++ */ ++ulong bases[] = {PHYS_FLASH_1,PHYS_FLASH_2,1}; ++unsigned long flash_init (void) ++{ ++ int i=0; ++ int j=0; ++ ulong size = 0; ++ ulong base; ++ ++ while (i < CFG_MAX_FLASH_BANKS) { ++ base = bases[j++]; ++ flash_info[i].start[0] = 0; ++ if (base & 1) break; ++ if (flash_get_size ((FPW *) base, &flash_info[i])) { ++ flash_get_offsets (base, &flash_info[i]); ++ size += flash_info[i].size; ++ i++; ++ } ++ else { ++printf( "error reading flash size\n" ); ++ } ++ } ++ if (size>0) { ++ base = flash_info[0].start[0]; ++ // Protect monitor and environment sectors ++ flash_protect ( FLAG_PROTECT_SET, ++ base, ++ base + monitor_flash_len - 1, ++ &flash_info[0] ); ++ ++ flash_protect ( FLAG_PROTECT_SET, ++ base+CFG_ENV_OFFSET, ++ base+CFG_ENV_OFFSET + CFG_ENV_SIZE - 1, &flash_info[0] ); ++ } ++ ++ return size; ++} ++ ++/*----------------------------------------------------------------------- ++ */ ++static void flash_get_offsets (ulong base, flash_info_t *info) ++{ ++ int i; ++ ++ if (info->flash_id == FLASH_UNKNOWN) { ++ return; ++ } ++ ++ if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) { ++ for (i = 0; i < info->sector_count; i++) { ++ info->start[i] = base + (i * PHYS_FLASH_SECT_SIZE); ++ info->protect[i] = 0; ++ } ++ } ++} ++ ++/*----------------------------------------------------------------------- ++ */ ++void flash_print_info (flash_info_t *info) ++{ ++ int i; ++ ++ if (info->flash_id == FLASH_UNKNOWN) { ++ printf ("missing or unknown FLASH type\n"); ++ return; ++ } ++ ++ switch (info->flash_id & FLASH_VENDMASK) { ++ case FLASH_MAN_INTEL: ++ printf ("INTEL "); ++ break; ++ default: ++ printf ("Unknown Vendor "); ++ break; ++ } ++ ++ switch (info->flash_id & FLASH_TYPEMASK) { ++ case FLASH_28F128J3A: ++ printf ("28F128J3A\n"); ++ break; ++ default: ++ printf ("Unknown Chip Type\n"); ++ break; ++ } ++ ++ printf (" Size: %ld MB in %d Sectors\n", ++ info->size >> 20, info->sector_count); ++ ++ printf (" Sector Start Addresses:"); ++ for (i = 0; i < info->sector_count; ++i) { ++ if ((i % 5) == 0) ++ printf ("\n "); ++ printf (" %08lX%s", ++ info->start[i], ++ info->protect[i] ? " (RO)" : " "); ++ } ++ printf ("\n"); ++ return; ++} ++ ++/* ++ * The following code cannot be run from FLASH! ++ */ ++static ulong flash_get_size (FPW *addr, flash_info_t *info) ++{ ++ volatile FPW value; ++ volatile unsigned long *mc = (unsigned long *)MEMORY_CONTROL_BASE; ++ unsigned long val = 1<<3; ++ ++ info->flash_id = FLASH_UNKNOWN; ++ info->sector_count = 0; ++ info->size = 0; ++ ++ if (((ulong)addr) > 0x14000000) return 0; ++ val = mc[(MSC0>>2) +(((ulong)addr)>>27)]; ++ if (((ulong)addr) & 0x04000000) val = val>>16; ++ if ( val & (1<<3)) return 0; //if 16 bit bus then return ++ ++ /* Write auto select command: read Manufacturer ID */ ++ addr[0x5555] = (FPW) 0x00AA00AA; ++ addr[0x2AAA] = (FPW) 0x00550055; ++ addr[0x5555] = (FPW) 0x00900090; ++ ++ mb (); ++ value = addr[0]; ++ ++ switch (value) { ++ ++ case (FPW) 0: ++ case (FPW) INTEL_MANUFACT & 0xFF0000 : ++ case (FPW) INTEL_MANUFACT & 0x0000FF : ++ case (FPW) INTEL_MANUFACT: ++ info->flash_id = FLASH_MAN_INTEL; ++ break; ++ ++ default: ++printf( "Invalid flash manufacturer %x\n", value ); ++ addr[0] = (FPW) 0x00FF00FF; /* restore read mode */ ++ return (0); /* no or unknown flash */ ++ } ++ ++ mb (); ++ value = addr[1]; /* device ID */ ++ ++ switch (value) { ++ ++ case (FPW) 0: ++ case (FPW) INTEL_ID_28F128J3A & 0xFF0000 : ++ case (FPW) INTEL_ID_28F128J3A & 0x0000FF : ++ case (FPW) INTEL_ID_28F128J3A: ++ info->flash_id += FLASH_28F128J3A; ++ info->sector_count = 128; ++ info->size = 0x02000000; ++ break; /* => 16 MB */ ++ ++ default: ++printf( "Unknown flash device %x\n", value ); ++ info->flash_id = FLASH_UNKNOWN; ++ break; ++ } ++ ++ if (info->sector_count > CFG_MAX_FLASH_SECT) { ++ printf ("** ERROR: sector count %d > max (%d) **\n", ++ info->sector_count, CFG_MAX_FLASH_SECT); ++ info->sector_count = CFG_MAX_FLASH_SECT; ++ } ++ ++ addr[0] = (FPW) 0x00FF00FF; /* restore read mode */ ++ ++ return (info->size); ++} ++ ++ ++/*----------------------------------------------------------------------- ++ */ ++ ++int flash_erase (flash_info_t *info, int s_first, int s_last) ++{ ++ int flag, prot, sect; ++ ulong type, start, last; ++ int rcode = 0; ++ ++ if ((s_first < 0) || (s_first > s_last)) { ++ if (info->flash_id == FLASH_UNKNOWN) { ++ printf ("- missing\n"); ++ } else { ++ printf ("- no sectors to erase\n"); ++ } ++ return 1; ++ } ++ ++ type = (info->flash_id & FLASH_VENDMASK); ++ if ((type != FLASH_MAN_INTEL)) { ++ printf ("Can't erase unknown flash type %08lx - aborted\n", ++ info->flash_id); ++ return 1; ++ } ++ ++ prot = 0; ++ for (sect = s_first; sect <= s_last; ++sect) { ++ if (info->protect[sect]) { ++ prot++; ++ } ++ } ++ ++ if (prot) { ++ printf ("- Warning: %d protected sectors will not be erased!\n", ++ prot); ++ } else { ++ printf ("\n"); ++ } ++ ++ start = get_timer (0); ++ last = start; ++ ++ /* Disable interrupts which might cause a timeout here */ ++ flag = disable_interrupts (); ++ ++ /* Start erase on unprotected sectors */ ++ for (sect = s_first; sect <= s_last; sect++) { ++ if (info->protect[sect] == 0) { /* not protected */ ++ char temp[80]; ++ FPWV *addr = (FPWV *) (info->start[sect]); ++ FPW status; ++ ++ sprintf (temp, "Erasing sector %2d ... \r", sect); ++ lcd_puts( temp ); ++ ++ /* arm simple, non interrupt dependent timer */ ++ reset_timer_masked (); ++ ++ *addr = (FPW) 0x00500050; /* clear status register */ ++ *addr = (FPW) 0x00200020; /* erase setup */ ++ *addr = (FPW) 0x00D000D0; /* erase confirm */ ++ ++ while (((status = *addr) & (FPW) 0x00800080) != (FPW) 0x00800080) { ++ if (get_timer_masked () > CFG_FLASH_ERASE_TOUT) { ++ printf ("Timeout\n"); ++ *addr = (FPW) 0x00B000B0; /* suspend erase */ ++ *addr = (FPW) 0x00FF00FF; /* reset to read mode */ ++ rcode = 1; ++ break; ++ } ++ } ++ ++ *addr = 0x00500050; /* clear status register cmd. */ ++ *addr = 0x00FF00FF; /* resest to read mode */ ++ } ++ } ++ lcd_puts( "\r\n" ); ++ return rcode; ++} ++ ++/*----------------------------------------------------------------------- ++ * Copy memory to flash, returns: ++ * 0 - OK ++ * 1 - write timeout ++ * 2 - Flash not erased ++ * 4 - Flash not identified ++ */ ++ ++int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt) ++{ ++ ulong cp, wp; ++ FPW data; ++ int count, i, l, rc, port_width; ++ ++ rc = 0 ; ++ if (info->flash_id == FLASH_UNKNOWN) { ++ return 4; ++ } ++/* get lower word aligned address */ ++#ifdef FLASH_PORT_WIDTH16 ++ wp = (addr & ~1); ++ port_width = 2; ++#else ++ wp = (addr & ~3); ++ port_width = 4; ++#endif ++ ++ spin_wheel_init(addr,cnt); ++ ++ /* ++ * handle unaligned start bytes ++ */ ++ if ((l = addr - wp) != 0) { ++ data = 0; ++ for (i = 0, cp = wp; i < l; ++i, ++cp) { ++ data = (data << 8) | (*(uchar *) cp); ++ } ++ for (; i < port_width && cnt > 0; ++i) { ++ data = (data << 8) | *src++; ++ --cnt; ++ ++cp; ++ } ++ for (; cnt == 0 && i < port_width; ++i, ++cp) { ++ data = (data << 8) | (*(uchar *) cp); ++ } ++ ++ if ((rc = write_data (info, wp, SWAP (data))) != 0) { ++ goto out; ++ } ++ wp += port_width; ++ } ++ ++ /* ++ * handle word aligned part ++ */ ++ count = 0; ++ while (cnt >= port_width) { ++ data = 0; ++ for (i = 0; i < port_width; ++i) { ++ data = (data << 8) | *src++; ++ } ++ if ((rc = write_data (info, wp, SWAP (data))) != 0) { ++ goto out; ++ } ++ wp += port_width; ++ cnt -= port_width; ++ if (count++ > 0x800) { ++ spin_wheel (cnt); ++ count = 0; ++ } ++ } ++ ++ if (cnt) { ++ /* ++ * handle unaligned tail bytes ++ */ ++ data = 0; ++ for (i = 0, cp = wp; i < port_width && cnt > 0; ++i, ++cp) { ++ data = (data << 8) | *src++; ++ --cnt; ++ } ++ for (; i < port_width; ++i, ++cp) { ++ data = (data << 8) | (*(uchar *) cp); ++ } ++ ++ rc = write_data (info, wp, SWAP (data)); ++ } ++ ++out: ++ spin_wheel_done(0 == rc); ++ return rc ; ++} ++ ++/*----------------------------------------------------------------------- ++ * Write a word or halfword to Flash, returns: ++ * 0 - OK ++ * 1 - write timeout ++ * 2 - Flash not erased ++ */ ++static int write_data (flash_info_t *info, ulong dest, FPW data) ++{ ++ FPWV *addr = (FPWV *) dest; ++ FPW old = *addr ; ++ ulong status; ++ int flag; ++ ++ /* Check if Flash is (sufficiently) erased */ ++ if ((old & data) != data) { ++ printf ("not erased at %08lx (%lx)\n", (ulong) addr, old); ++ return (2); ++ } ++ ++ if( old != data ) ++ { ++ /* Disable interrupts which might cause a timeout here */ ++ flag = disable_interrupts (); ++ ++ *addr = (FPW) 0x00400040; /* write setup */ ++ *addr = data; ++ ++ /* arm simple, non interrupt dependent timer */ ++ reset_timer_masked (); ++ ++ /* wait while polling the status register */ ++ while (((status = *addr) & (FPW) 0x00800080) != (FPW) 0x00800080) { ++ if (get_timer_masked () > CFG_FLASH_WRITE_TOUT) { ++ *addr = (FPW) 0x00FF00FF; /* restore read mode */ ++ return (1); ++ } ++ } ++ *addr = (FPW) 0x00FF00FF; /* restore read mode */ ++ } /* need to program? */ ++ ++ ++ return (0); ++} ++ ++void inline spin_wheel_init(ulong addr, ulong cnt) ++{ ++ char temp[80]; ++ sprintf( temp, ++ "\nprogramming flash\n" ++ "%08lx->%08lx\n" ++ " ", addr, cnt ); ++ lcd_puts( temp ); ++} ++ ++void inline spin_wheel_done( int worked ) ++{ ++ if( worked ) ++ spin_wheel(0); ++ lcd_puts( worked ? "\ncompleted.\n" : "\nfailed!\n" ); ++} ++ ++void inline spin_wheel( ulong numleft ) ++{ ++ char temp[40]; ++ sprintf( temp, "\r %08lx", numleft ); ++ lcd_puts( temp ); ++} +diff -u -r --new-file u-boot-1.1.2/board/bd2003/init.script u-boot-1.1.2-neon/board/bd2003/init.script +--- u-boot-1.1.2/board/bd2003/init.script 1970-01-01 01:00:00.000000000 +0100 ++++ u-boot-1.1.2-neon/board/bd2003/init.script 2007-08-11 21:07:19.000000000 +0200 +@@ -0,0 +1,42 @@ ++if fatload mmc 0 a0000000 logo.bmp ; then ++ bmp info a0000000 ; ++ bmp display a0000000 ; ++else ++ lecho "No logo present" ; ++fi ++ ++if fatload mmc 0 a2000000 uimage ; then ++ lecho 'load Linux' ++ if fatload mmc 0 a2200000 mmcinitrd.u-boot ; then ++ echo 'using initrd' ; ++ lecho "Booting Linux" ++ set bootargs root=/dev/ram0 console=ttyS0,115200 debug=7 mtdparts=phys_mapped_flash:1024k(armboot),256k(params),-(rootfs1) ++ bootm a2000000 a2200000 ++ else ++ echo 'testing cramfs img' ; ++ if fatload mmc 0 a2200000 cramfs.img ; then ++ if cmp.b 00140000 a2200000 $filesize ; then ++ echo 'cramfs images match' ; ++ else ++ lecho 'filesystems differ...' ; ++ protect off all ; ++ erase 00140000 01ffffff ; ++ cp.b a2200000 00140000 $filesize ; ++ fi ++ ++ set bootargs console=ttyS0,115200 debug=7 mtdparts=phys_mapped_flash:1024k(armboot),256k(params),-(rootfs1) root=/dev/mtdblock3 rootfstype=cramfs ++ lecho "Booting Linux" ++ bootm a2000000 ++ fi ++ fi ++else ++ echo "No Linux kernel" ; ++fi ++ ++lecho 'No Linux, try CE' ++ ++if fatload mmc 0 A0030000 nk.nb0 ; then ++ g A0030000 ; ++else ++ echo "No WinCE image" ; ++fi +diff -u -r --new-file u-boot-1.1.2/board/bd2003/Makefile u-boot-1.1.2-neon/board/bd2003/Makefile +--- u-boot-1.1.2/board/bd2003/Makefile 1970-01-01 01:00:00.000000000 +0100 ++++ u-boot-1.1.2-neon/board/bd2003/Makefile 2007-08-11 21:07:19.000000000 +0200 +@@ -0,0 +1,48 @@ ++ ++# ++# (C) Copyright 2000 ++# Wolfgang Denk, DENX Software Engineering, wd@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 = lib$(BOARD).a ++ ++OBJS := bd2003.o flash.o ++SOBJS := memsetup.o ++ ++$(LIB): $(OBJS) $(SOBJS) ++ $(AR) crv $@ $(OBJS) $(SOBJS) ++ ++clean: ++ rm -f $(SOBJS) $(OBJS) ++ ++distclean: clean ++ rm -f $(LIB) core *.bak .depend ++ ++######################################################################### ++ ++.depend: Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c) ++ $(CC) -M $(CPPFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@ ++ ++-include .depend ++ ++######################################################################### +diff -u -r --new-file u-boot-1.1.2/board/bd2003/memsetup.S u-boot-1.1.2-neon/board/bd2003/memsetup.S +--- u-boot-1.1.2/board/bd2003/memsetup.S 1970-01-01 01:00:00.000000000 +0100 ++++ u-boot-1.1.2-neon/board/bd2003/memsetup.S 2007-08-11 21:07:19.000000000 +0200 +@@ -0,0 +1,64 @@ ++/* ++ * Most of this taken from Redboot hal_platform_setup.h with cleanup ++ * ++ * NOTE: I haven't clean this up considerably, just enough to get it ++ * running. See hal_platform_setup.h for the source. See ++ * board/cradle/memsetup.S for another PXA250 setup that is ++ * much cleaner. ++ * ++ * 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 <config.h> ++#include <version.h> ++ ++#define BAUDRATE 115200 ++#include <asm/arch/platformTypes.h> ++#include <configs/select.h> ++#include <asm/arch/pxaGpio.h> ++#include <asm/arch/pxaMacro3.h> ++ ++DRAM_SIZE: .long CFG_DRAM_SIZE ++ ++/* wait for coprocessor write complete */ ++ .macro CPWAIT reg ++ mrc p15,0,\reg,c2,c0,0 ++ mov \reg,\reg ++ sub pc,pc,#4 ++ .endm ++ ++ ++/* ++ * Memory setup ++ */ ++ ++.globl memsetup ++memsetup: ++ ++ mov r10, lr ++ ++ InitCS0_CS1 r0,sp ++ InitGPIO r0,sp ++ InitIC_Clocks r0,sp ++ InitUART r0,sp,UART_BASE,BAUDRATE ++ InitUART r0,sp,UART_BASE+0x600000,9600 ++ InitChangeCPUSpeed r0 ++ InitMemory r0,sp,r1 ++ |
