diff options
| author | Michael Lauer <mickey@vanille-media.de> | 2008-02-13 11:15:20 +0000 |
|---|---|---|
| committer | Michael Lauer <mickey@vanille-media.de> | 2008-02-13 11:15:20 +0000 |
| commit | 784e9e1768bfef0341ec13b7d17b32d98dafaef3 (patch) | |
| tree | 42aeafee932d81641e82de922bcdc71b66e9f5b8 | |
| parent | 403333e2d7c0ff87a0a449d7f2d014d941a20d8a (diff) | |
| parent | 32e690935379493f478d1b7a1cd43fce486083da (diff) | |
merge of '054216fcb27d4211cd8948d7407878afe1bbf15c'
and 'f26d3059129388297f1542283ce17d100f8c8acc'
52 files changed, 1244 insertions, 330 deletions
diff --git a/classes/image.bbclass b/classes/image.bbclass index ca9c9458e1..d70cfa5daf 100644 --- a/classes/image.bbclass +++ b/classes/image.bbclass @@ -90,6 +90,7 @@ fakeroot do_rootfs () { ${IMAGE_PREPROCESS_COMMAND} export TOPDIR=${TOPDIR} + export DISTRO=${USERDISTRO} export MACHINE=${MACHINE} for type in ${IMAGE_FSTYPES}; do diff --git a/conf/bitbake.conf b/conf/bitbake.conf index ac2d281123..27a04a028c 100644 --- a/conf/bitbake.conf +++ b/conf/bitbake.conf @@ -529,6 +529,10 @@ OVERRIDES = "local:${MACHINE}:${DISTRO}:${TARGET_OS}:${TARGET_ARCH}:build-${BUIL include conf/site.conf include conf/auto.conf include conf/local.conf +# USERDISTRO should always contain original DISTRO value as set by user +# If a distro config overrides DISTRO for whatever reason (e.g. to get +# overrides like it wants), USERDISTRO must be reassigned with := first +USERDISTRO = "${DISTRO}" include conf/build/${BUILD_SYS}.conf include conf/target/${TARGET_SYS}.conf include conf/machine/${MACHINE}.conf @@ -541,7 +545,7 @@ require conf/sanity.conf ################################################################## DL_DIR ?= "${TMPDIR}/downloads" -IMAGE_FSTYPES ?= "jffs2" +IMAGE_FSTYPES ?= "tar.gz" PCMCIA_MANAGER ?= "pcmcia-cs" DEFAULT_TASK_PROVIDER ?= "task-base" MACHINE_TASK_PROVIDER ?= "${DEFAULT_TASK_PROVIDER}" diff --git a/conf/distro/include/angstrom.inc b/conf/distro/include/angstrom.inc index fe216800c3..6ba20c4830 100644 --- a/conf/distro/include/angstrom.inc +++ b/conf/distro/include/angstrom.inc @@ -2,6 +2,8 @@ #@NAME: Angstrom #@DESCRIPTION: Release independent distribution configuration for Angstrom +# Preserve original DISTRO value +USERDISTRO := "${DISTRO}" DISTRO = "angstrom" DISTRO_NAME = "Angstrom" diff --git a/conf/machine/davinci-sffsdr.conf b/conf/machine/davinci-sffsdr.conf index ecff6fae13..faf86c5ed0 100644 --- a/conf/machine/davinci-sffsdr.conf +++ b/conf/machine/davinci-sffsdr.conf @@ -19,7 +19,7 @@ EXTRA_IMAGECMD_jffs2 = "--pad --little-endian --eraseblock=0x20000 -n" #ROOT_FLASH_SIZE = "29" -MACHINE_FEATURES = "kernel26 pcmcia usbhost alsa" +MACHINE_FEATURES = "kernel26 serial" require conf/machine/include/tune-arm926ejs.inc diff --git a/packages/anki/.mtn2git_empty b/packages/anki/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/packages/anki/.mtn2git_empty diff --git a/packages/anki/anki.inc b/packages/anki/anki.inc new file mode 100644 index 0000000000..e9a71c286b --- /dev/null +++ b/packages/anki/anki.inc @@ -0,0 +1,15 @@ +DESCRIPTION = "Anki is a program designed to help you remember facts \ +(such as words and phrases in a foreign language) \ +as easily, quickly and efficiently as possible" +HOMEPAGE = "http://ichi2.net/anki/" +AUTHOR = "Damien Elmes" +PRIORITY = "optional" +LICENSE = "GPLv2" +RDEPENDS = "python-pyqt" +RRECOMMENDS = "kakasi virtual/japanese-font" + +SRC_URI = "http://ichi2.net/anki/download/anki-${PV}.tgz" + +inherit setuptools + +PACKAGE_ARCH = "all" diff --git a/packages/anki/anki_0.4.3.bb b/packages/anki/anki_0.4.3.bb new file mode 100644 index 0000000000..5d0c8fabe7 --- /dev/null +++ b/packages/anki/anki_0.4.3.bb @@ -0,0 +1,9 @@ +require anki.inc + +RDEPENDS += "libanki" +PR = "r0" + +export PV + +SRC_URI += "file://no-need-for-pyqt-at-buildtime.patch;patch=1" +S = "${WORKDIR}/anki-${PV}" diff --git a/packages/anki/files/.mtn2git_empty b/packages/anki/files/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/packages/anki/files/.mtn2git_empty diff --git a/packages/anki/files/no-need-for-pyqt-at-buildtime.patch b/packages/anki/files/no-need-for-pyqt-at-buildtime.patch new file mode 100644 index 0000000000..56cfec4999 --- /dev/null +++ b/packages/anki/files/no-need-for-pyqt-at-buildtime.patch @@ -0,0 +1,28 @@ +# +# (C) Michael 'Mickey' Lauer <mlauer@vanille-media.de> +# +Index: anki-0.4.3/setup.py +=================================================================== +--- anki-0.4.3.orig/setup.py 2008-02-12 19:17:56.000000000 +0000 ++++ anki-0.4.3/setup.py 2008-02-12 19:19:29.000000000 +0000 +@@ -3,10 +3,8 @@ + from setuptools import setup, find_packages + import sys, os + +-import ankiqt +- + setup(name='ankiqt', +- version=ankiqt.appVersion, ++ version=os.environ["PV"], + description='An intelligent spaced-repetition memory training program', + long_description="", + # Get strings from http://www.python.org/pypi?%3Aaction=list_classifiers +@@ -24,7 +22,7 @@ + license='GPLv2', + packages=find_packages(), + include_package_data=True, +- install_requires = 'anki >= ' + ankiqt.appVersion, ++ install_requires = 'anki >= ' + os.environ["PV"], + zip_safe=False, + package_data={'ankiqt': + ['locale/*/*/*']}, diff --git a/packages/anki/libanki_0.4.3.bb b/packages/anki/libanki_0.4.3.bb new file mode 100644 index 0000000000..ac33833790 --- /dev/null +++ b/packages/anki/libanki_0.4.3.bb @@ -0,0 +1,5 @@ +require anki.inc + +PR = "r0" + +S = "${WORKDIR}/anki-${PV}/libanki" diff --git a/packages/gpe-login/files/gpe-xcalibrate-rises-from-dead.patch b/packages/gpe-login/files/gpe-xcalibrate-rises-from-dead.patch index afad073acf..d1745f0897 100644 --- a/packages/gpe-login/files/gpe-xcalibrate-rises-from-dead.patch +++ b/packages/gpe-login/files/gpe-xcalibrate-rises-from-dead.patch @@ -1,3 +1,5 @@ +upstream: http://bugs.linuxtogo.org/show_bug.cgi?id=124 + diff -r 976c01632fea gpe-login.keylaunchrc --- a/gpe-login.keylaunchrc Sun Nov 25 22:39:23 2007 +0200 +++ b/gpe-login.keylaunchrc Mon Nov 26 01:12:14 2007 +0200 diff --git a/packages/gpe-login/files/lock-on-supend.patch b/packages/gpe-login/files/lock-on-supend.patch index 2aeb20f1ea..29ccce5ae6 100644 --- a/packages/gpe-login/files/lock-on-supend.patch +++ b/packages/gpe-login/files/lock-on-supend.patch @@ -1,3 +1,5 @@ +upstream: http://bugs.linuxtogo.org/show_bug.cgi?id=125 + Lock screen when device goes to suspend, not after some time has passed since resume and they stole your data from the unprotected screen. diff --git a/packages/gpe-login/files/size-autolock-properly.patch b/packages/gpe-login/files/size-autolock-properly.patch index b8e2cd6f4f..cf2978f34d 100644 --- a/packages/gpe-login/files/size-autolock-properly.patch +++ b/packages/gpe-login/files/size-autolock-properly.patch @@ -1,3 +1,5 @@ +upstream: http://bugs.linuxtogo.org/show_bug.cgi?id=152 + # HG changeset patch # User "Paul Sokolovsky <pfalcon@users.sourceforge.net>" # Date 1196345352 -7200 diff --git a/packages/keylaunch/files/unbreak-keyevents.patch b/packages/keylaunch/files/unbreak-keyevents.patch index 0a2d58b16a..ee13cc9a63 100644 --- a/packages/keylaunch/files/unbreak-keyevents.patch +++ b/packages/keylaunch/files/unbreak-keyevents.patch @@ -1,3 +1,5 @@ +upstream: http://bugs.linuxtogo.org/show_bug.cgi?id=123 + # HG changeset patch # User "Paul Sokolovsky <pfalcon@users.sourceforge.net>" # Date 1196027570 -7200 diff --git a/packages/libpcap/libpcap.inc b/packages/libpcap/libpcap.inc new file mode 100644 index 0000000000..f2e5d3072b --- /dev/null +++ b/packages/libpcap/libpcap.inc @@ -0,0 +1,33 @@ +DESCRIPTION = "Network Packet Capture Library" +HOMEPAGE = "http://www.tcpdump.org/" +SECTION = "libs/network" +LICENSE = "BSD" +DEPENDS = "flex-native bison-native" + +# Don't forget to edit shared.patch to have the correct version number inside +SRC_URI = "http://www.tcpdump.org/release/libpcap-${PV}.tar.gz \ + file://shared.patch;patch=1" + +inherit autotools + +EXTRA_OECONF = "--with-pcap=linux" + +CPPFLAGS_prepend = "-I${S} " +CFLAGS_prepend = "-I${S} " +CXXFLAGS_prepend = "-I${S} " + +do_configure_prepend () { + if [ ! -e acinclude.m4 ]; then + cat aclocal.m4 > acinclude.m4 + fi +} + +do_stage () { + install -m 0644 pcap.h ${STAGING_INCDIR}/pcap.h + install -m 0644 pcap-namedb.h ${STAGING_INCDIR}/pcap-namedb.h + install -m 0644 pcap-bpf.h ${STAGING_INCDIR}/pcap-bpf.h + oe_libinstall -a -so libpcap ${STAGING_LIBDIR} + install -d ${STAGING_INCDIR}/net + ln -sf ${STAGING_INCDIR}/pcap-bpf.h ${STAGING_INCDIR}/net/bpf.h + install -m 0644 acinclude.m4 ${STAGING_DATADIR}/aclocal/libpcap.m4 +} diff --git a/packages/libpcap/libpcap_0.9.3.bb b/packages/libpcap/libpcap_0.9.3.bb index 5d66687482..865e57ab93 100644 --- a/packages/libpcap/libpcap_0.9.3.bb +++ b/packages/libpcap/libpcap_0.9.3.bb @@ -1,32 +1,3 @@ -DESCRIPTION = "Network Packet Capture Library" -HOMEPAGE = "http://www.tcpdump.org/" -LICENSE = "BSD" -SECTION = "libs/network" -PR = "r1" +require libpcap.inc -SRC_URI = "http://www.tcpdump.org/release/libpcap-${PV}.tar.gz \ - file://shared.patch;patch=1" - -inherit autotools - -EXTRA_OECONF = "--with-pcap=linux" - -CPPFLAGS_prepend = "-I${S} " -CFLAGS_prepend = "-I${S} " -CXXFLAGS_prepend = "-I${S} " - -do_configure_prepend () { - if [ ! -e acinclude.m4 ]; then - cat aclocal.m4 > acinclude.m4 - fi -} - -do_stage () { - install -m 0644 pcap.h ${STAGING_INCDIR}/pcap.h - install -m 0644 pcap-namedb.h ${STAGING_INCDIR}/pcap-namedb.h - install -m 0644 pcap-bpf.h ${STAGING_INCDIR}/pcap-bpf.h - oe_libinstall -a -so libpcap ${STAGING_LIBDIR} - install -d ${STAGING_INCDIR}/net - ln -sf ${STAGING_INCDIR}/pcap-bpf.h ${STAGING_INCDIR}/net/bpf.h - install -m 0644 acinclude.m4 ${STAGING_DATADIR}/aclocal/libpcap.m4 -} +PR = "r2" diff --git a/packages/libpcap/libpcap_0.9.5.bb b/packages/libpcap/libpcap_0.9.5.bb index 5d66687482..865e57ab93 100644 --- a/packages/libpcap/libpcap_0.9.5.bb +++ b/packages/libpcap/libpcap_0.9.5.bb @@ -1,32 +1,3 @@ -DESCRIPTION = "Network Packet Capture Library" -HOMEPAGE = "http://www.tcpdump.org/" -LICENSE = "BSD" -SECTION = "libs/network" -PR = "r1" +require libpcap.inc -SRC_URI = "http://www.tcpdump.org/release/libpcap-${PV}.tar.gz \ - file://shared.patch;patch=1" - -inherit autotools - -EXTRA_OECONF = "--with-pcap=linux" - -CPPFLAGS_prepend = "-I${S} " -CFLAGS_prepend = "-I${S} " -CXXFLAGS_prepend = "-I${S} " - -do_configure_prepend () { - if [ ! -e acinclude.m4 ]; then - cat aclocal.m4 > acinclude.m4 - fi -} - -do_stage () { - install -m 0644 pcap.h ${STAGING_INCDIR}/pcap.h - install -m 0644 pcap-namedb.h ${STAGING_INCDIR}/pcap-namedb.h - install -m 0644 pcap-bpf.h ${STAGING_INCDIR}/pcap-bpf.h - oe_libinstall -a -so libpcap ${STAGING_LIBDIR} - install -d ${STAGING_INCDIR}/net - ln -sf ${STAGING_INCDIR}/pcap-bpf.h ${STAGING_INCDIR}/net/bpf.h - install -m 0644 acinclude.m4 ${STAGING_DATADIR}/aclocal/libpcap.m4 -} +PR = "r2" diff --git a/packages/libpcap/libpcap_0.9.6.bb b/packages/libpcap/libpcap_0.9.6.bb index 9822f38ada..865e57ab93 100644 --- a/packages/libpcap/libpcap_0.9.6.bb +++ b/packages/libpcap/libpcap_0.9.6.bb @@ -1,36 +1,3 @@ -# Copyright (C) 2007, Stelios Koroneos - Digital OPSiS, All Rights Reserved -# Released under the MIT license (see packages/COPYING) -DESCRIPTION = "Network Packet Capture Library" -HOMEPAGE = "http://www.tcpdump.org/" -LICENSE = "BSD" -SECTION = "libs/network" -PR = "r1" +require libpcap.inc - -# Don't forget to edit shared.patch to have the correct version number inside -SRC_URI = "http://www.tcpdump.org/release/libpcap-${PV}.tar.gz \ - file://shared.patch;patch=1" - -inherit autotools - -EXTRA_OECONF = "--with-pcap=linux" - -CPPFLAGS_prepend = "-I${S} " -CFLAGS_prepend = "-I${S} " -CXXFLAGS_prepend = "-I${S} " - -do_configure_prepend () { - if [ ! -e acinclude.m4 ]; then - cat aclocal.m4 > acinclude.m4 - fi -} - -do_stage () { - install -m 0644 pcap.h ${STAGING_INCDIR}/pcap.h - install -m 0644 pcap-namedb.h ${STAGING_INCDIR}/pcap-namedb.h - install -m 0644 pcap-bpf.h ${STAGING_INCDIR}/pcap-bpf.h - oe_libinstall -a -so libpcap ${STAGING_LIBDIR} - install -d ${STAGING_INCDIR}/net - ln -sf ${STAGING_INCDIR}/pcap-bpf.h ${STAGING_INCDIR}/net/bpf.h - install -m 0644 acinclude.m4 ${STAGING_DATADIR}/aclocal/libpcap.m4 -} +PR = "r2" diff --git a/packages/linux/linux-davinci/davinci-nand.patch b/packages/linux/linux-davinci/davinci-nand.patch new file mode 100644 index 0000000000..33e53cf095 --- /dev/null +++ b/packages/linux/linux-davinci/davinci-nand.patch @@ -0,0 +1,905 @@ +Index: linux-davinci/drivers/mtd/nand/davinci_nand.c +=================================================================== +--- /dev/null ++++ linux-davinci/drivers/mtd/nand/davinci_nand.c +@@ -0,0 +1,638 @@ ++/* ++ * linux/drivers/mtd/nand/davinci_nand.c ++ * ++ * NAND Flash Driver ++ * ++ * Copyright (C) 2006 Texas Instruments. ++ * ++ * ported to 2.6.23 (C) 2008 by ++ * Sander Huijsen <Shuijsen@optelecom-nkf.com> ++ * Troy Kisky <troy.kisky@boundarydevices.com> ++ * Dirk Behme <Dirk.Behme@gmail.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., 675 Mass Ave, Cambridge, MA 02139, USA. ++ * -------------------------------------------------------------------------- ++ * ++ * Overview: ++ * This is a device driver for the NAND flash device found on the ++ * DaVinci board which utilizes the Samsung k9k2g08 part. ++ * ++ * Modifications: ++ * ver. 1.0: Feb 2005, Vinod/Sudhakar ++ */ ++ ++#include <linux/kernel.h> ++#include <linux/init.h> ++#include <linux/module.h> ++#include <linux/platform_device.h> ++#include <linux/err.h> ++#include <linux/clk.h> ++#include <linux/io.h> ++#include <linux/mtd/mtd.h> ++#include <linux/mtd/nand.h> ++#include <linux/mtd/partitions.h> ++ ++#include <asm/arch/hardware.h> ++#include <asm/arch/nand.h> ++#include <asm/arch/mux.h> ++ ++#include <asm/mach/flash.h> ++ ++#ifdef CONFIG_NAND_FLASH_HW_ECC ++#define DAVINCI_NAND_ECC_MODE NAND_ECC_HW3_512 ++#else ++#define DAVINCI_NAND_ECC_MODE NAND_ECC_SOFT ++#endif ++ ++#define DRIVER_NAME "davinci_nand" ++ ++static struct clk *nand_clock; ++static void __iomem *nand_vaddr; ++ ++/* ++ * MTD structure for DaVinici board ++ */ ++static struct mtd_info *nand_davinci_mtd; ++ ++#ifdef CONFIG_MTD_PARTITIONS ++const char *part_probes[] = { "cmdlinepart", NULL }; ++#endif ++ ++static uint8_t scan_ff_pattern[] = { 0xff, 0xff }; ++ ++/* BB marker is byte 5 in OOB of page 0 */ ++static struct nand_bbt_descr davinci_memorybased_small = { ++ .options = NAND_BBT_SCAN2NDPAGE, ++ .offs = 5, ++ .len = 1, ++ .pattern = scan_ff_pattern ++}; ++ ++/* BB marker is bytes 0-1 in OOB of page 0 */ ++static struct nand_bbt_descr davinci_memorybased_large = { ++ .options = 0, ++ .offs = 0, ++ .len = 2, ++ .pattern = scan_ff_pattern ++}; ++ ++inline unsigned int davinci_nand_readl(int offset) ++{ ++ return davinci_readl(DAVINCI_ASYNC_EMIF_CNTRL_BASE + offset); ++} ++ ++inline void davinci_nand_writel(unsigned long value, int offset) ++{ ++ davinci_writel(value, DAVINCI_ASYNC_EMIF_CNTRL_BASE + offset); ++} ++ ++/* ++ * Hardware specific access to control-lines ++ */ ++static void nand_davinci_hwcontrol(struct mtd_info *mtd, int cmd, ++ unsigned int ctrl) ++{ ++ struct nand_chip *chip = mtd->priv; ++ u32 IO_ADDR_W = (u32)chip->IO_ADDR_W; ++ ++ /* Did the control lines change? */ ++ if (ctrl & NAND_CTRL_CHANGE) { ++ IO_ADDR_W &= ~(MASK_ALE|MASK_CLE); ++ ++ if ((ctrl & NAND_CTRL_CLE) == NAND_CTRL_CLE) ++ IO_ADDR_W |= MASK_CLE; ++ else if ((ctrl & NAND_CTRL_ALE) == NAND_CTRL_ALE) ++ IO_ADDR_W |= MASK_ALE; ++ ++ chip->IO_ADDR_W = (void __iomem *)IO_ADDR_W; ++ } ++ ++ if (cmd != NAND_CMD_NONE) ++ writeb(cmd, chip->IO_ADDR_W); ++} ++ ++static void nand_davinci_select_chip(struct mtd_info *mtd, int chip) ++{ ++ /* do nothing */ ++} ++ ++#ifdef CONFIG_NAND_FLASH_HW_ECC ++static void nand_davinci_enable_hwecc(struct mtd_info *mtd, int mode) ++{ ++ u32 retval; ++ ++ /* Reset ECC hardware */ ++ retval = davinci_nand_readl(NANDF1ECC_OFFSET); ++ ++ /* Restart ECC hardware */ ++ retval = davinci_nand_readl(NANDFCR_OFFSET); ++ retval |= (1 << 8); ++ davinci_nand_writel(retval, NANDFCR_OFFSET); ++} ++ ++/* ++ * Read DaVinci ECC register ++ */ ++static u32 nand_davinci_readecc(struct mtd_info *mtd) ++{ ++ /* Read register ECC and clear it */ ++ return davinci_nand_readl(NANDF1ECC_OFFSET); ++} ++ ++/* ++ * Read DaVinci ECC registers and rework into MTD format ++ */ ++static int nand_davinci_calculate_ecc(struct mtd_info *mtd, ++ const u_char *dat, u_char *ecc_code) ++{ ++ unsigned int ecc_val = nand_davinci_readecc(mtd); ++ /* squeeze 0 middle bits out so that it fits in 3 bytes */ ++ unsigned int tmp = (ecc_val&0x0fff)|((ecc_val&0x0fff0000)>>4); ++ /* invert so that erased block ecc is correct */ ++ tmp = ~tmp; ++ ecc_code[0] = (u_char)(tmp); ++ ecc_code[1] = (u_char)(tmp >> 8); ++ ecc_code[2] = (u_char)(tmp >> 16); ++ ++ return 0; ++} ++ ++static int nand_davinci_correct_data(struct mtd_info *mtd, u_char *dat, ++ u_char *read_ecc, u_char *calc_ecc) ++{ ++ struct nand_chip *chip = mtd->priv; ++ u_int32_t eccNand = read_ecc[0] | (read_ecc[1] << 8) | ++ (read_ecc[2] << 16); ++ u_int32_t eccCalc = calc_ecc[0] | (calc_ecc[1] << 8) | ++ (calc_ecc[2] << 16); ++ u_int32_t diff = eccCalc ^ eccNand; ++ ++ if (diff) { ++ if ((((diff>>12)^diff) & 0xfff) == 0xfff) { ++ /* Correctable error */ ++ if ((diff>>(12+3)) < chip->ecc.size) { ++ dat[diff>>(12+3)] ^= (1 << ((diff>>12)&7)); ++ return 1; ++ } else { ++ return -1; ++ } ++ } else if (!(diff & (diff-1))) { ++ /* Single bit ECC error in the ECC itself, ++ nothing to fix */ ++ return 1; ++ } else { ++ /* Uncorrectable error */ ++ return -1; ++ } ++ ++ } ++ return 0; ++} ++#endif ++ ++/* ++ * Read OOB data from flash. ++ */ ++static int read_oob_and_check(struct mtd_info *mtd, loff_t offs, uint8_t *buf, ++ struct nand_bbt_descr *bd) ++{ ++ int i, ret; ++ int page; ++ struct nand_chip *chip = mtd->priv; ++ ++ /* Calculate page address from offset */ ++ page = (int)(offs >> chip->page_shift); ++ page &= chip->pagemask; ++ ++ /* Read OOB data from flash */ ++ ret = chip->ecc.read_oob(mtd, chip, page, 1); ++ if (ret < 0) ++ return ret; ++ ++ /* Copy read OOB data to the buffer*/ ++ memcpy(buf, chip->oob_poi, mtd->oobsize); ++ ++ /* Check pattern against BBM in OOB area */ ++ for (i = 0; i < bd->len; i++) { ++ if (buf[bd->offs + i] != bd->pattern[i]) ++ return 1; ++ } ++ return 0; ++} ++ ++/* ++ * Fill in the memory based Bad Block Table (BBT). ++ */ ++static int nand_davinci_memory |
