summaryrefslogtreecommitdiff
path: root/package/mtd/20050122
diff options
context:
space:
mode:
authorUlf Samuelsson <ulf.samuelsson@atmel.com>2007-07-20 08:00:19 +0000
committerUlf Samuelsson <ulf.samuelsson@atmel.com>2007-07-20 08:00:19 +0000
commit58ae45f345826e27b17ad16c8d8a5699ec006a1f (patch)
tree9f9cef80d41d20686fdccbe7ec01c31bc83abc4a /package/mtd/20050122
parent3c9ebe81c2a8d0d855e6e62b663da57f2198033a (diff)
Add optional mtd configuration (experimental - only available for Atmel targets)
Diffstat (limited to 'package/mtd/20050122')
-rw-r--r--package/mtd/20050122/mtd.mk163
-rw-r--r--package/mtd/20050122/mtd.patch45
2 files changed, 208 insertions, 0 deletions
diff --git a/package/mtd/20050122/mtd.mk b/package/mtd/20050122/mtd.mk
new file mode 100644
index 000000000..0a94deb66
--- /dev/null
+++ b/package/mtd/20050122/mtd.mk
@@ -0,0 +1,163 @@
+#############################################################
+#
+# mtd provides jffs2 utilities
+#
+#############################################################
+ifeq ($(strip $(BR2_PACKAGE_MTD_SNAPSHOT)),y)
+# Be aware that this changes daily....
+
+MTD_DL_SOURCE:=mtd-snapshot-$(DATE).tar.bz2
+MTD_CAT:=$(BZCAT)
+MTD_SOURCE:=mtd-snapshot.tar.bz2
+MTD_SITE:=ftp://ftp.uk.linux.org/pub/people/dwmw2/mtd/cvs
+MTD_HOST_DIR := $(TOOL_BUILD_DIR)/mtd_snapshot
+MTD_DIR:=$(BUILD_DIR)/mtd_snapshot
+else
+MTD_SOURCE:=$(strip $(subst ",, $(BR2_PACKAGE_MTD_ORIG_STRING)))
+#"))
+MTD_SITE:=http://ftp.debian.org/debian/pool/main/m/mtd
+MTD_HOST_DIR := $(TOOL_BUILD_DIR)/mtd_orig
+MTD_DIR:=$(BUILD_DIR)/mtd_orig
+MTD_CAT:=$(ZCAT)
+endif
+
+
+
+#############################################################
+#
+# Build mkfs.jffs2 for use on the local host system if
+# needed by target/jffs2root.
+#
+#############################################################
+MKFS_JFFS2 := $(MTD_HOST_DIR)/util/mkfs.jffs2
+
+ifeq ($(strip $(BR2_PACKAGE_MTD_SNAPSHOT)),y)
+$(DL_DIR)/$(MTD_SOURCE):
+ $(WGET) -P $(DL_DIR) $(MTD_SITE)/$(MTD_DL_SOURCE)
+ mv $(DL_DIR)/$(MTD_DL_SOURCE) $(DL_DIR)/$(MTD_SOURCE)
+
+$(MTD_HOST_DIR)/.unpacked: $(DL_DIR)/$(MTD_SOURCE_GENERIC)
+ $(MTD_CAT) $(DL_DIR)/$(MTD_SOURCE) | tar -C $(TOOL_BUILD_DIR) $(TAR_OPTIONS) -
+ mv $(TOOL_BUILD_DIR)/$(shell tar tjf $(DL_DIR)/$(MTD_SOURCE) \
+ | head -n 1 | xargs basename) $(MTD_HOST_DIR)
+ touch $@
+else
+ifneq ($(MTD_SOURCE),)
+$(DL_DIR)/$(MTD_SOURCE):
+ $(WGET) -P $(DL_DIR) $(MTD_SITE)/$(MTD_SOURCE)
+endif
+
+$(MTD_HOST_DIR)/.unpacked: $(DL_DIR)/$(MTD_SOURCE)
+ $(MTD_CAT) $(DL_DIR)/$(MTD_SOURCE) | tar -C $(TOOL_BUILD_DIR) $(TAR_OPTIONS) -
+ mv $(TOOL_BUILD_DIR)/$(shell tar tzf $(DL_DIR)/$(MTD_SOURCE) | head -n 1 \
+ | xargs basename) $(MTD_HOST_DIR)
+ toolchain/patch-kernel.sh $(MTD_HOST_DIR) package/mtd \*.patch
+ touch $@
+endif
+
+$(MTD_HOST_DIR)/util/mkfs.jffs2: $(MTD_HOST_DIR)/.unpacked
+ CFLAGS=-I$(LINUX_HEADERS_DIR)/include $(MAKE) CC="$(HOSTCC)" CROSS= \
+ LINUXDIR=$(LINUX_DIR) -C $(MTD_HOST_DIR)/util mkfs.jffs2
+
+mtd-host: $(MKFS_JFFS2)
+
+mtd-host-source: $(DL_DIR)/$(MTD_SOURCE)
+
+mtd-host-clean:
+ -$(MAKE) -C $(MTD_HOST_DIR) clean
+
+mtd-host-dirclean:
+ rm -rf $(MTD_HOST_DIR)
+
+#############################################################
+#
+# build mtd for use on the target system
+#
+#############################################################
+$(MTD_DIR)/.unpacked: $(DL_DIR)/$(MTD_SOURCE)
+ $(MTD_CAT) $(DL_DIR)/$(MTD_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
+ifeq ($(strip $(BR2_PACKAGE_MTD_SNAPSHOT)),y)
+ mv $(BUILD_DIR)/$(shell tar tjf $(DL_DIR)/$(MTD_SOURCE) \
+ | head -n 1 | xargs basename) $(MTD_DIR)
+ touch $@
+else
+ mv $(BUILD_DIR)/$(shell tar tzf $(DL_DIR)/$(MTD_SOURCE) \
+ | head -n 1 | xargs basename) $(MTD_DIR)
+ toolchain/patch-kernel.sh $(MTD_DIR) \
+ package/mtd \*.patch
+ touch $@
+endif
+
+MTD_TARGETS_n :=
+MTD_TARGETS_y :=
+
+MTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_ERASE) += flash_erase
+MTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_ERASEALL) += flash_eraseall
+MTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_INFO) += flash_info
+MTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_LOCK) += flash_lock
+MTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_UNLOCK) += flash_unlock
+MTD_TARGETS_$(BR2_PACKAGE_MTD_FLASHCP) += flashcp
+MTD_TARGETS_$(BR2_PACKAGE_MTD_MKFSJFFS2) += mkfs.jffs2
+MTD_TARGETS_$(BR2_PACKAGE_MTD_MKFSJFFS) += mkfs.jffs
+MTD_TARGETS_$(BR2_PACKAGE_MTD_JFFS2DUMP) += jffs2dump
+MTD_TARGETS_$(BR2_PACKAGE_MTD_JFFS3DUMP) += jffs3dump
+MTD_TARGETS_$(BR2_PACKAGE_MTD_SUMTOOL) += sumtool
+MTD_TARGETS_$(BR2_PACKAGE_MTD_FTL_CHECK) += ftl_check
+MTD_TARGETS_$(BR2_PACKAGE_MTD_FTL_FORMAT) += ftl_format
+MTD_TARGETS_$(BR2_PACKAGE_MTD_NFTLDUMP) += nftldump
+MTD_TARGETS_$(BR2_PACKAGE_MTD_NFTL_FORMAT) += nftl_format
+MTD_TARGETS_$(BR2_PACKAGE_MTD_NANDDUMP) += nanddump
+MTD_TARGETS_$(BR2_PACKAGE_MTD_NANDWRITE) += nandwrite
+MTD_TARGETS_$(BR2_PACKAGE_MTD_MTD_DEBUG) += mtd_debug
+MTD_TARGETS_$(BR2_PACKAGE_MTD_DOCFDISK) += docfdisk
+MTD_TARGETS_$(BR2_PACKAGE_MTD_DOC_LOADBIOS) += doc_loadbios
+
+MTD_BUILD_TARGETS := $(addprefix $(MTD_DIR)/util/, $(MTD_TARGETS_y))
+
+$(MTD_BUILD_TARGETS): $(MTD_DIR)/.unpacked
+ $(MAKE) $(TARGET_CONFIGURE_OPTS) \
+ CFLAGS+="-I$(MTD_DIR)/include" \
+ CFLAGS+="-I$(LINUX_HEADERS_DIR)/include" \
+ LDFLAGS="$(TARGET_LDFLAGS)" \
+ LINUXDIR=$(LINUX_DIR) -C $(MTD_DIR)/util
+
+MTD_TARGETS := $(addprefix $(TARGET_DIR)/usr/sbin/, $(MTD_TARGETS_y))
+
+$(MTD_TARGETS): $(TARGET_DIR)/usr/sbin/% : $(MTD_DIR)/util/%
+ mkdir -p $(TARGET_DIR)/usr/sbin
+ cp -f $< $@
+ $(STRIP) $@
+ifneq ($(BR2_PACKAGE_MTD_FLASHCP),)
+ -ln -sf flashcp $(TARGET_DIR)/usr/sbin/fcp
+endif
+ifneq ($(BR2_PACKAGE_MTD_ERASE),)
+ -ln -sf flash_erase $(TARGET_DIR)/usr/sbin/erase
+ -ln -sf flash_eraseall $(TARGET_DIR)/usr/sbin/eraseall
+endif
+
+mtd: zlib $(MTD_TARGETS)
+
+mtd-source: $(DL_DIR)/$(MTD_SOURCE)
+
+mtd-clean:
+ -$(MAKE) -C $(MTD_DIR) clean
+ifneq ($(BR2_PACKAGE_MTD_FLASHCP),)
+ -rm -f $(MTD_TARGETS) $(TARGET_DIR)/usr/sbin/fcp
+endif
+ifneq ($(BR2_PACKAGE_MTD_ERASE),)
+ -rm -f $(MTD_TARGETS) $(TARGET_DIR)/usr/sbin/erase
+ -rm -f $(MTD_TARGETS) $(TARGET_DIR)/usr/sbin/eraseall
+endif
+
+mtd-dirclean:
+ rm -rf $(MTD_DIR)
+
+
+#############################################################
+#
+# Toplevel Makefile options
+#
+#############################################################
+ifeq ($(strip $(BR2_PACKAGE_MTD)),y)
+TARGETS+=mtd
+endif
diff --git a/package/mtd/20050122/mtd.patch b/package/mtd/20050122/mtd.patch
new file mode 100644
index 000000000..40d6865cc
--- /dev/null
+++ b/package/mtd/20050122/mtd.patch
@@ -0,0 +1,45 @@
+diff -ur mtd-20050122.orig/util/flash_eraseall.c mtd-20050122.orig-patched/util/flash_eraseall.c
+--- mtd-20050122.orig/util/flash_eraseall.c 2004-12-09 17:00:52.000000000 -0600
++++ mtd-20050122.orig-patched/util/flash_eraseall.c 2007-01-13 22:56:51.864233154 -0600
+@@ -54,7 +54,7 @@
+ static void display_help (void);
+ static void display_version (void);
+ static struct jffs2_unknown_node cleanmarker;
+-static int target_endian = __BYTE_ORDER;
++int target_endian = __BYTE_ORDER;
+
+ int main (int argc, char *argv[])
+ {
+@@ -134,7 +134,7 @@
+ if (!quiet)
+ printf ("\nSkipping bad block at 0x%08x\n", erase.start);
+ continue;
+- } else if (ret == -EOPNOTSUPP) {
++ } else if (errno == EOPNOTSUPP) {
+ fprintf(stderr, "%s: %s: Bad block check not available\n", exe_name, mtd_device);
+ bbtest = 0;
+ } else if (ret < 0) {
+diff -ur mtd-20050122.orig/util/mkfs.jffs2.c mtd-20050122.orig-patched/util/mkfs.jffs2.c
+--- mtd-20050122.orig/util/mkfs.jffs2.c 2004-11-26 17:00:13.000000000 -0600
++++ mtd-20050122.orig-patched/util/mkfs.jffs2.c 2007-01-13 22:55:53.627687214 -0600
+@@ -101,7 +101,7 @@
+ static int squash_uids = 0;
+ static int squash_perms = 0;
+ static int fake_times = 0;
+-static int target_endian = __BYTE_ORDER;
++int target_endian = __BYTE_ORDER;
+ static const char *const app_name = "mkfs.jffs2";
+ static const char *const memory_exhausted = "memory exhausted";
+
+diff -ur mtd-20050122.orig/util/sumtool.c mtd-20050122.orig-patched/util/sumtool.c
+--- mtd-20050122.orig/util/sumtool.c 2005-01-05 17:00:16.000000000 -0600
++++ mtd-20050122.orig-patched/util/sumtool.c 2007-01-13 22:56:05.528616125 -0600
+@@ -68,7 +68,7 @@
+ static int cleanmarker_size = sizeof(cleanmarker);
+ static const char *short_options = "o:i:e:hvVblnc:p";
+ static int erase_block_size = 65536;
+-static int target_endian = __BYTE_ORDER;
++int target_endian = __BYTE_ORDER;
+ static int out_fd = -1;
+ static int in_fd = -1;
+