summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--target/cris/kernel.config96
-rw-r--r--target/cris/sys-available/foxboard-lx9
-rw-r--r--target/linux/config/Config.in.netdevice2
-rw-r--r--target/linux/config/Config.in.usb3
-rw-r--r--target/linux/patches/2.6.39/cris.patch7493
5 files changed, 95 insertions, 7508 deletions
diff --git a/target/cris/kernel.config b/target/cris/kernel.config
index 755927166..8fbd0d9c7 100644
--- a/target/cris/kernel.config
+++ b/target/cris/kernel.config
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.36
-# Tue Dec 28 18:58:02 2010
+# Linux/cris 2.6.39 Kernel Configuration
+# Mon Aug 22 09:21:47 2011
#
CONFIG_MMU=y
CONFIG_ZONE_DMA=y
@@ -36,29 +36,36 @@ CONFIG_SYSVIPC_SYSCTL=y
CONFIG_POSIX_MQUEUE=y
CONFIG_POSIX_MQUEUE_SYSCTL=y
# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_FHANDLE is not set
# CONFIG_TASKSTATS is not set
# CONFIG_AUDIT is not set
+CONFIG_HAVE_GENERIC_HARDIRQS=y
+
+#
+# IRQ subsystem
+#
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_GENERIC_IRQ_SHOW=y
#
# RCU Subsystem
#
-CONFIG_TREE_RCU=y
-# CONFIG_TINY_RCU is not set
+CONFIG_TINY_RCU=y
+# CONFIG_PREEMPT_RCU is not set
# CONFIG_RCU_TRACE is not set
-CONFIG_RCU_FANOUT=32
-# CONFIG_RCU_FANOUT_EXACT is not set
# CONFIG_TREE_RCU_TRACE is not set
# CONFIG_IKCONFIG is not set
CONFIG_LOG_BUF_SHIFT=14
# CONFIG_CGROUPS is not set
-# CONFIG_SYSFS_DEPRECATED_V2 is not set
-# CONFIG_RELAY is not set
# CONFIG_NAMESPACES is not set
+# CONFIG_SCHED_AUTOGROUP is not set
+# CONFIG_SYSFS_DEPRECATED is not set
+# CONFIG_RELAY is not set
# CONFIG_BLK_DEV_INITRD is not set
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SYSCTL=y
CONFIG_ANON_INODES=y
-CONFIG_EMBEDDED=y
+CONFIG_EXPERT=y
CONFIG_UID16=y
CONFIG_SYSCTL_SYSCALL=y
# CONFIG_KALLSYMS is not set
@@ -74,6 +81,7 @@ CONFIG_TIMERFD=y
CONFIG_EVENTFD=y
CONFIG_SHMEM=y
CONFIG_AIO=y
+CONFIG_EMBEDDED=y
#
# Kernel Performance Events And Counters
@@ -148,7 +156,6 @@ CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
CONFIG_BINFMT_ELF=y
# CONFIG_HAVE_AOUT is not set
# CONFIG_BINFMT_MISC is not set
-CONFIG_GENERIC_HARDIRQS=y
CONFIG_ETRAX_CMDLINE=""
CONFIG_ETRAX_WATCHDOG=y
# CONFIG_ETRAX_WATCHDOG_NICE_DOGGY is not set
@@ -164,12 +171,14 @@ CONFIG_FLATMEM=y
CONFIG_FLAT_NODE_MEM_MAP=y
CONFIG_PAGEFLAGS_EXTENDED=y
CONFIG_SPLIT_PTLOCK_CPUS=4
+# CONFIG_COMPACTION is not set
# CONFIG_PHYS_ADDR_T_64BIT is not set
CONFIG_ZONE_DMA_FLAG=1
CONFIG_BOUNCE=y
CONFIG_VIRT_TO_BUS=y
# CONFIG_KSM is not set
CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
+CONFIG_NEED_PER_CPU_KM=y
#
# Hardware setup
@@ -183,6 +192,7 @@ CONFIG_ETRAX100LX_V2=y
CONFIG_ETRAX_ARCH_V10=y
# CONFIG_ETRAX_ARCH_V32 is not set
CONFIG_ETRAX_DRAM_SIZE=16
+CONFIG_ETRAX_MTD_SIZE=0x00800000
CONFIG_ETRAX_FLASH_BUSWIDTH=2
CONFIG_ETRAX_NANDFLASH_BUSWIDTH=1
CONFIG_ETRAX_FLASH1_SIZE=0
@@ -232,10 +242,9 @@ CONFIG_UNIX=y
CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_FIB_HASH=y
# CONFIG_IP_PNP is not set
# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
+# CONFIG_NET_IPGRE_DEMUX is not set
# CONFIG_ARPD is not set
# CONFIG_SYN_COOKIES is not set
# CONFIG_INET_AH is not set
@@ -277,6 +286,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_IEEE802154 is not set
# CONFIG_NET_SCHED is not set
# CONFIG_DCB is not set
+# CONFIG_BATMAN_ADV is not set
#
# Network testing
@@ -287,11 +297,18 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_IRDA is not set
# CONFIG_BT is not set
# CONFIG_AF_RXRPC is not set
-# CONFIG_WIRELESS is not set
+CONFIG_WIRELESS=y
+# CONFIG_CFG80211 is not set
+# CONFIG_LIB80211 is not set
+
+#
+# CFG80211 needs to be enabled for MAC80211
+#
# CONFIG_WIMAX is not set
# CONFIG_RFKILL is not set
# CONFIG_NET_9P is not set
# CONFIG_CAIF is not set
+# CONFIG_CEPH_LIB is not set
#
# Drivers for built-in interfaces
@@ -354,9 +371,7 @@ CONFIG_DEVTMPFS_MOUNT=y
CONFIG_MTD=y
# CONFIG_MTD_DEBUG is not set
# CONFIG_MTD_TESTS is not set
-CONFIG_MTD_CONCAT=y
CONFIG_MTD_PARTITIONS=y
-CONFIG_MTD_ROOTFS_ROOT_DEV=y
# CONFIG_MTD_REDBOOT_PARTS is not set
# CONFIG_MTD_CMDLINE_PARTS is not set
# CONFIG_MTD_AR7_PARTS is not set
@@ -367,6 +382,7 @@ CONFIG_MTD_ROOTFS_ROOT_DEV=y
CONFIG_MTD_CHAR=y
CONFIG_MTD_BLKDEVS=y
CONFIG_MTD_BLOCK=y
+CONFIG_MTD_BLOCK_RO=y
# CONFIG_FTL is not set
# CONFIG_NFTL is not set
# CONFIG_INFTL is not set
@@ -411,6 +427,7 @@ CONFIG_MTD_CFI_UTIL=y
CONFIG_MTD_COMPLEX_MAPPINGS=y
# CONFIG_MTD_PHYSMAP is not set
# CONFIG_MTD_PLATRAM is not set
+# CONFIG_MTD_LATCH_ADDR is not set
#
# Self-contained MTD device drivers
@@ -433,15 +450,21 @@ CONFIG_MTD_COMPLEX_MAPPINGS=y
# LPDDR flash memory drivers
#
# CONFIG_MTD_LPDDR is not set
-
-#
-# UBI - Unsorted block images
-#
# CONFIG_MTD_UBI is not set
# CONFIG_PARPORT is not set
# CONFIG_BLK_DEV is not set
CONFIG_HAVE_IDE=y
# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+CONFIG_SCSI_MOD=y
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+# CONFIG_SCSI_DMA is not set
+# CONFIG_SCSI_NETLINK is not set
+# CONFIG_MEDIA_SUPPORT is not set
CONFIG_NETDEVICES=y
# CONFIG_DUMMY is not set
# CONFIG_BONDING is not set
@@ -449,9 +472,9 @@ CONFIG_NETDEVICES=y
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
# CONFIG_VETH is not set
+CONFIG_MII=y
# CONFIG_PHYLIB is not set
CONFIG_NET_ETHERNET=y
-CONFIG_MII=y
# CONFIG_ETHOC is not set
# CONFIG_DNET is not set
# CONFIG_IBM_NEW_EMAC_ZMII is not set
@@ -464,7 +487,9 @@ CONFIG_MII=y
# CONFIG_KS8851_MLL is not set
# CONFIG_NETDEV_1000 is not set
# CONFIG_NETDEV_10000 is not set
-# CONFIG_WLAN is not set
+CONFIG_WLAN=y
+# CONFIG_USB_ZD1201 is not set
+# CONFIG_HOSTAP is not set
#
# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -507,9 +532,12 @@ CONFIG_MII=y
# Character devices
#
# CONFIG_VT is not set
-# CONFIG_DEVKMEM is not set
+CONFIG_UNIX98_PTYS=y
+# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
+# CONFIG_LEGACY_PTYS is not set
# CONFIG_SERIAL_NONSTANDARD is not set
# CONFIG_N_GSM is not set
+# CONFIG_DEVKMEM is not set
#
# Serial drivers
@@ -522,9 +550,7 @@ CONFIG_MII=y
# CONFIG_SERIAL_TIMBERDALE is not set
# CONFIG_SERIAL_ALTERA_JTAGUART is not set
# CONFIG_SERIAL_ALTERA_UART is not set
-CONFIG_UNIX98_PTYS=y
-# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
-# CONFIG_LEGACY_PTYS is not set
+# CONFIG_TTY_PRINTK is not set
# CONFIG_IPMI_HANDLER is not set
# CONFIG_HW_RANDOM is not set
# CONFIG_RTC is not set
@@ -546,17 +572,18 @@ CONFIG_UNIX98_PTYS=y
# CONFIG_EXT4_FS is not set
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
-# CONFIG_FS_POSIX_ACL is not set
# CONFIG_XFS_FS is not set
-# CONFIG_OCFS2_FS is not set
# CONFIG_BTRFS_FS is not set
# CONFIG_NILFS2_FS is not set
+CONFIG_FS_POSIX_ACL=y
+CONFIG_EXPORTFS=y
CONFIG_FILE_LOCKING=y
-# CONFIG_FSNOTIFY is not set
+CONFIG_FSNOTIFY=y
# CONFIG_DNOTIFY is not set
# CONFIG_INOTIFY_USER is not set
+# CONFIG_FANOTIFY is not set
# CONFIG_QUOTA is not set
-# CONFIG_AUTOFS_FS is not set
+# CONFIG_QUOTACTL is not set
# CONFIG_AUTOFS4_FS is not set
# CONFIG_FUSE_FS is not set
@@ -599,7 +626,6 @@ CONFIG_TMPFS=y
# CONFIG_PARTITION_ADVANCED is not set
CONFIG_MSDOS_PARTITION=y
# CONFIG_NLS is not set
-# CONFIG_DLM is not set
# CONFIG_SOUND is not set
CONFIG_USB_SUPPORT=y
# CONFIG_USB_ARCH_HAS_HCD is not set
@@ -681,6 +707,7 @@ CONFIG_USB=y
# CONFIG_USB_IOWARRIOR is not set
# CONFIG_USB_TEST is not set
# CONFIG_USB_ISIGHTFW is not set
+# CONFIG_USB_YUREX is not set
# CONFIG_USB_GADGET is not set
#
@@ -694,6 +721,7 @@ CONFIG_USB=y
#
# CONFIG_SYSTEM_PROFILER is not set
CONFIG_PRINTK_TIME=y
+CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
# CONFIG_ENABLE_WARN_DEPRECATED is not set
# CONFIG_ENABLE_MUST_CHECK is not set
CONFIG_FRAME_WARN=1024
@@ -702,19 +730,22 @@ CONFIG_MAGIC_SYSRQ=y
# CONFIG_UNUSED_SYMBOLS is not set
# CONFIG_DEBUG_FS is not set
# CONFIG_HEADERS_CHECK is not set
+# CONFIG_DEBUG_SECTION_MISMATCH is not set
# CONFIG_DEBUG_KERNEL is not set
# CONFIG_HARDLOCKUP_DETECTOR is not set
+# CONFIG_SPARSE_RCU_POINTER is not set
# CONFIG_DEBUG_MEMORY_INIT is not set
-# CONFIG_RCU_CPU_STALL_DETECTOR is not set
# CONFIG_SYSCTL_SYSCALL_CHECK is not set
# CONFIG_ATOMIC64_SELFTEST is not set
# CONFIG_SAMPLES is not set
+# CONFIG_TEST_KSTRTOX is not set
# CONFIG_NO_SEGFAULT_TERMINATION is not set
#
# Security options
#
# CONFIG_KEYS is not set
+# CONFIG_SECURITY_DMESG_RESTRICT is not set
# CONFIG_SECURITY is not set
# CONFIG_SECURITYFS is not set
CONFIG_DEFAULT_SECURITY_DAC=y
@@ -739,6 +770,9 @@ CONFIG_GENERIC_FIND_LAST_BIT=y
CONFIG_CRC32=y
# CONFIG_CRC7 is not set
# CONFIG_LIBCRC32C is not set
+# CONFIG_XZ_DEC is not set
+# CONFIG_XZ_DEC_BCJ is not set
CONFIG_HAS_IOMEM=y
CONFIG_HAS_DMA=y
CONFIG_NLATTR=y
+# CONFIG_AVERAGE is not set
diff --git a/target/cris/sys-available/foxboard-lx b/target/cris/sys-available/foxboard-lx
new file mode 100644
index 000000000..0b4c81c68
--- /dev/null
+++ b/target/cris/sys-available/foxboard-lx
@@ -0,0 +1,9 @@
+config ADK_TARGET_SYSTEM_FOXBOARD_LX
+ bool "FOX Board LX"
+ select ADK_cris
+ select ADK_foxboard_lx
+ select ADK_TARGET_WITH_MTD
+ select ADK_TARGET_WITH_USB
+ help
+ Build a system for FOX Board LX models.
+
diff --git a/target/linux/config/Config.in.netdevice b/target/linux/config/Config.in.netdevice
index b7ae9c655..1a84f6bcc 100644
--- a/target/linux/config/Config.in.netdevice
+++ b/target/linux/config/Config.in.netdevice
@@ -244,6 +244,7 @@ config ADK_KPACKAGE_KMOD_R8169
endmenu
config ADK_KERNEL_WIRELESS
+ select ADK_KERNEL_NETDEVICES
boolean
config ADK_KERNEL_WIRELESS_EXT
@@ -388,7 +389,6 @@ config ADK_KPACKAGE_KMOD_P54_USB
select ADK_KPACKAGE_KMOD_MAC80211
select ADK_KPACKAGE_KMOD_CRC_CCITT
depends on ADK_PACKAGE_KMOD_USB_CONTROLLER
- depends on !ADK_TARGET_SYSTEM_FOXBOARD_LX
default n
help
Driver for Prism54 USB adaptors.
diff --git a/target/linux/config/Config.in.usb b/target/linux/config/Config.in.usb
index ba004a59b..f16ef7dab 100644
--- a/target/linux/config/Config.in.usb
+++ b/target/linux/config/Config.in.usb
@@ -30,7 +30,6 @@ config ADK_KPACKAGE_KMOD_USB
tristate
select ADK_KERNEL_NLS
depends on !ADK_KERNEL_USB
- #depends on !ADK_TARGET_SYSTEM_ACMESYSTEMS_FOXG20
default y if ADK_TARGET_SYSTEM_PCENGINES_ALIX1C
default y if ADK_TARGET_SYSTEM_PCENGINES_ALIX2D2
default y if ADK_TARGET_SYSTEM_PCENGINES_ALIX2D13
@@ -38,6 +37,7 @@ config ADK_KPACKAGE_KMOD_USB
default y if ADK_NATIVE_SYSTEM_IBM_X40
default y if ADK_TARGET_SYSTEM_LEMOTE_YEELONG
default y if ADK_TARGET_SYSTEM_ACMESYSTEMS_FOXG20
+ default y if ADK_TARGET_SYSTEM_FOXBOARD_LX
default n
help
Universal Serial Bus (USB) is a specification for a serial bus
@@ -178,6 +178,7 @@ config ADK_KPACKAGE_KMOD_USB_EHCI_HCD
config ADK_PACKAGE_KMOD_USB_CONTROLLER
tristate
default y if ADK_TARGET_SYSTEM_ACMESYSTEMS_FOXG20
+ default y if ADK_TARGET_SYSTEM_FOXBOARD_LX
default n
config ADK_KPACKAGE_KMOD_USB_ACM
diff --git a/target/linux/patches/2.6.39/cris.patch b/target/linux/patches/2.6.39/cris.patch
index f58391a5d..3bdc0acb8 100644
--- a/target/linux/patches/2.6.39/cris.patch
+++ b/target/linux/patches/2.6.39/cris.patch
@@ -1,6 +1,6 @@
diff -Nur linux-2.6.39.orig/arch/cris/arch-v10/drivers/axisflashmap.c linux-2.6.39/arch/cris/arch-v10/drivers/axisflashmap.c
--- linux-2.6.39.orig/arch/cris/arch-v10/drivers/axisflashmap.c 2011-05-19 06:06:34.000000000 +0200
-+++ linux-2.6.39/arch/cris/arch-v10/drivers/axisflashmap.c 2011-07-28 16:16:35.633425525 +0200
++++ linux-2.6.39/arch/cris/arch-v10/drivers/axisflashmap.c 2011-08-22 08:58:55.057980882 +0200
@@ -113,7 +113,7 @@
/* If no partition-table was found, we use this default-set. */
@@ -146,443 +146,9 @@ diff -Nur linux-2.6.39.orig/arch/cris/arch-v10/drivers/axisflashmap.c linux-2.6.
return err;
}
-diff -Nur linux-2.6.39.orig/arch/cris/arch-v10/drivers/axisflashmap.c.orig linux-2.6.39/arch/cris/arch-v10/drivers/axisflashmap.c.orig
---- linux-2.6.39.orig/arch/cris/arch-v10/drivers/axisflashmap.c.orig 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.39/arch/cris/arch-v10/drivers/axisflashmap.c.orig 2011-05-19 06:06:34.000000000 +0200
-@@ -0,0 +1,430 @@
-+/*
-+ * Physical mapping layer for MTD using the Axis partitiontable format
-+ *
-+ * Copyright (c) 2001, 2002 Axis Communications AB
-+ *
-+ * This file is under the GPL.
-+ *
-+ * First partition is always sector 0 regardless of if we find a partitiontable
-+ * or not. In the start of the next sector, there can be a partitiontable that
-+ * tells us what other partitions to define. If there isn't, we use a default
-+ * partition split defined below.
-+ *
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/types.h>
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/slab.h>
-+
-+#include <linux/mtd/concat.h>
-+#include <linux/mtd/map.h>
-+#include <linux/mtd/mtd.h>
-+#include <linux/mtd/mtdram.h>
-+#include <linux/mtd/partitions.h>
-+
-+#include <asm/axisflashmap.h>
-+#include <asm/mmu.h>
-+#include <arch/sv_addr_ag.h>
-+
-+#ifdef CONFIG_CRIS_LOW_MAP
-+#define FLASH_UNCACHED_ADDR KSEG_8
-+#define FLASH_CACHED_ADDR KSEG_5
-+#else
-+#define FLASH_UNCACHED_ADDR KSEG_E
-+#define FLASH_CACHED_ADDR KSEG_F
-+#endif
-+
-+#if CONFIG_ETRAX_FLASH_BUSWIDTH==1
-+#define flash_data __u8
-+#elif CONFIG_ETRAX_FLASH_BUSWIDTH==2
-+#define flash_data __u16
-+#elif CONFIG_ETRAX_FLASH_BUSWIDTH==4
-+#define flash_data __u32
-+#endif
-+
-+/* From head.S */
-+extern unsigned long romfs_start, romfs_length, romfs_in_flash;
-+
-+/* The master mtd for the entire flash. */
-+struct mtd_info* axisflash_mtd = NULL;
-+
-+/* Map driver functions. */
-+
-+static map_word flash_read(struct map_info *map, unsigned long ofs)
-+{
-+ map_word tmp;
-+ tmp.x[0] = *(flash_data *)(map->map_priv_1 + ofs);
-+ return tmp;
-+}
-+
-+static void flash_copy_from(struct map_info *map, void *to,
-+ unsigned long from, ssize_t len)
-+{
-+ memcpy(to, (void *)(map->map_priv_1 + from), len);
-+}
-+
-+static void flash_write(struct map_info *map, map_word d, unsigned long adr)
-+{
-+ *(flash_data *)(map->map_priv_1 + adr) = (flash_data)d.x[0];
-+}
-+
-+/*
-+ * The map for chip select e0.
-+ *
-+ * We run into tricky coherence situations if we mix cached with uncached
-+ * accesses to we only use the uncached version here.
-+ *
-+ * The size field is the total size where the flash chips may be mapped on the
-+ * chip select. MTD probes should find all devices there and it does not matter
-+ * if there are unmapped gaps or aliases (mirrors of flash devices). The MTD
-+ * probes will ignore them.
-+ *
-+ * The start address in map_priv_1 is in virtual memory so we cannot use
-+ * MEM_CSE0_START but must rely on that FLASH_UNCACHED_ADDR is the start
-+ * address of cse0.
-+ */
-+static struct map_info map_cse0 = {
-+ .name = "cse0",
-+ .size = MEM_CSE0_SIZE,
-+ .bankwidth = CONFIG_ETRAX_FLASH_BUSWIDTH,
-+ .read = flash_read,
-+ .copy_from = flash_copy_from,
-+ .write = flash_write,
-+ .map_priv_1 = FLASH_UNCACHED_ADDR
-+};
-+
-+/*
-+ * The map for chip select e1.
-+ *
-+ * If there was a gap between cse0 and cse1, map_priv_1 would get the wrong
-+ * address, but there isn't.
-+ */
-+static struct map_info map_cse1 = {
-+ .name = "cse1",
-+ .size = MEM_CSE1_SIZE,
-+ .bankwidth = CONFIG_ETRAX_FLASH_BUSWIDTH,
-+ .read = flash_read,
-+ .copy_from = flash_copy_from,
-+ .write = flash_write,
-+ .map_priv_1 = FLASH_UNCACHED_ADDR + MEM_CSE0_SIZE
-+};
-+
-+/* If no partition-table was found, we use this default-set. */
-+#define MAX_PARTITIONS 7
-+#define NUM_DEFAULT_PARTITIONS 3
-+
-+/*
-+ * Default flash size is 2MB. CONFIG_ETRAX_PTABLE_SECTOR is most likely the
-+ * size of one flash block and "filesystem"-partition needs 5 blocks to be able
-+ * to use JFFS.
-+ */
-+static struct mtd_partition axis_default_partitions[NUM_DEFAULT_PARTITIONS] = {
-+ {
-+ .name = "boot firmware",
-+ .size = CONFIG_ETRAX_PTABLE_SECTOR,
-+ .offset = 0
-+ },
-+ {
-+ .name = "kernel",
-+ .size = 0x200000 - (6 * CONFIG_ETRAX_PTABLE_SECTOR),
-+ .offset = CONFIG_ETRAX_PTABLE_SECTOR
-+ },
-+ {
-+ .name = "filesystem",
-+ .size = 5 * CONFIG_ETRAX_PTABLE_SECTOR,
-+ .offset = 0x200000 - (5 * CONFIG_ETRAX_PTABLE_SECTOR)
-+ }
-+};
-+
-+/* Initialize the ones normally used. */
-+static struct mtd_partition axis_partitions[MAX_PARTITIONS] = {
-+ {
-+ .name = "part0",
-+ .size = CONFIG_ETRAX_PTABLE_SECTOR,
-+ .offset = 0
-+ },
-+ {
-+ .name = "part1",
-+ .size = 0,
-+ .offset = 0
-+ },
-+ {
-+ .name = "part2",
-+ .size = 0,
-+ .offset = 0
-+ },
-+ {
-+ .name = "part3",
-+ .size = 0,
-+ .offset = 0
-+ },
-+ {
-+ .name = "part4",
-+ .size = 0,
-+ .offset = 0
-+ },
-+ {
-+ .name = "part5",
-+ .size = 0,
-+ .offset = 0
-+ },
-+ {
-+ .name = "part6",
-+ .size = 0,
-+ .offset = 0
-+ },
-+};
-+
-+#ifdef CONFIG_ETRAX_AXISFLASHMAP_MTD0WHOLE
-+/* Main flash device */
-+static struct mtd_partition main_partition = {
-+ .name = "main",
-+ .size = 0,
-+ .offset = 0
-+};
-+#endif
-+
-+/*
-+ * Probe a chip select for AMD-compatible (JEDEC) or CFI-compatible flash
-+ * chips in that order (because the amd_flash-driver is faster).
-+ */
-+static struct mtd_info *probe_cs(struct map_info *map_cs)
-+{
-+ struct mtd_info *mtd_cs = NULL;
-+
-+ printk(KERN_INFO
-+ "%s: Probing a 0x%08lx bytes large window at 0x%08lx.\n",
-+ map_cs->name, map_cs->size, map_cs->map_priv_1);
-+
-+#ifdef CONFIG_MTD_CFI
-+ mtd_cs = do_map_probe("cfi_probe", map_cs);
-+#endif
-+#ifdef CONFIG_MTD_JEDECPROBE
-+ if (!mtd_cs)
-+ mtd_cs = do_map_probe("jedec_probe", map_cs);
-+#endif
-+
-+ return mtd_cs;
-+}
-+
-+/*
-+ * Probe each chip select individually for flash chips. If there are chips on
-+ * both cse0 and cse1, the mtd_info structs will be concatenated to one struct
-+ * so that MTD partitions can cross chip boundries.
-+ *
-+ * The only known restriction to how you can mount your chips is that each
-+ * chip select must hold similar flash chips. But you need external hardware
-+ * to do that anyway and you can put totally different chips on cse0 and cse1
-+ * so it isn't really much of a restriction.
-+ */
-+static struct mtd_info *flash_probe(void)
-+{
-+ struct mtd_info *mtd_cse0;
-+ struct mtd_info *mtd_cse1;
-+ struct mtd_info *mtd_cse;
-+
-+ mtd_cse0 = probe_cs(&map_cse0);
-+ mtd_cse1 = probe_cs(&map_cse1);
-+
-+ if (!mtd_cse0 && !mtd_cse1) {
-+ /* No chip found. */
-+ return NULL;
-+ }
-+
-+ if (mtd_cse0 && mtd_cse1) {
-+ struct mtd_info *mtds[] = { mtd_cse0, mtd_cse1 };
-+
-+ /* Since the concatenation layer adds a small overhead we
-+ * could try to figure out if the chips in cse0 and cse1 are
-+ * identical and reprobe the whole cse0+cse1 window. But since
-+ * flash chips are slow, the overhead is relatively small.
-+ * So we use the MTD concatenation layer instead of further
-+ * complicating the probing procedure.
-+ */
-+ mtd_cse = mtd_concat_create(mtds, ARRAY_SIZE(mtds),
-+ "cse0+cse1");
-+ if (!mtd_cse) {
-+ printk(KERN_ERR "%s and %s: Concatenation failed!\n",
-+ map_cse0.name, map_cse1.name);
-+
-+ /* The best we can do now is to only use what we found
-+ * at cse0.
-+ */
-+ mtd_cse = mtd_cse0;
-+ map_destroy(mtd_cse1);
-+ }
-+ } else {
-+ mtd_cse = mtd_cse0? mtd_cse0 : mtd_cse1;
-+ }
-+
-+ return mtd_cse;
-+}
-+
-+/*
-+ * Probe the flash chip(s) and, if it succeeds, read the partition-table
-+ * and register the partitions with MTD.
-+ */
-+static int __init init_axis_flash(void)
-+{
-+ struct mtd_info *mymtd;
-+ int err = 0;
-+ int pidx = 0;
-+ struct partitiontable_head *ptable_head = NULL;
-+ struct partitiontable_entry *ptable;
-+ int use_default_ptable = 1; /* Until proven otherwise. */
-+ const char pmsg[] = " /dev/flash%d at 0x%08x, size 0x%08x\n";
-+
-+ if (!(mymtd = flash_probe())) {
-+ /* There's no reason to use this module if no flash chip can
-+ * be identified. Make sure that's understood.
-+ */
-+ printk(KERN_INFO "axisflashmap: Found no flash chip.\n");
-+ } else {
-+ printk(KERN_INFO "%s: 0x%08x bytes of flash memory.\n",
-+ mymtd->name, mymtd->size);
-+ axisflash_mtd = mymtd;
-+ }
-+
-+ if (mymtd) {
-+ mymtd->owner = THIS_MODULE;
-+ ptable_head = (struct partitiontable_head *)(FLASH_CACHED_ADDR +
-+ CONFIG_ETRAX_PTABLE_SECTOR +
-+ PARTITION_TABLE_OFFSET);
-+ }
-+ pidx++; /* First partition is always set to the default. */
-+
-+ if (ptable_head && (ptable_head->magic == PARTITION_TABLE_MAGIC)
-+ && (ptable_head->size <
-+ (MAX_PARTITIONS * sizeof(struct partitiontable_entry) +
-+ PARTITIONTABLE_END_MARKER_SIZE))
-+ && (*(unsigned long*)((void*)ptable_head + sizeof(*ptable_head) +
-+ ptable_head->size -
-+ PARTITIONTABLE_END_MARKER_SIZE)
-+ == PARTITIONTABLE_END_MARKER)) {
-+ /* Looks like a start, sane length and end of a
-+ * partition table, lets check csum etc.
-+ */
-+ int ptable_ok = 0;
-+ struct partitiontable_entry *max_addr =
-+ (struct partitiontable_entry *)
-+ ((unsigned long)ptable_head + sizeof(*ptable_head) +
-+ ptable_head->size);
-+ unsigned long offset = CONFIG_ETRAX_PTABLE_SECTOR;
-+ unsigned char *p;
-+ unsigned long csum = 0;
-+
-+ ptable = (struct partitiontable_entry *)
-+ ((unsigned long)ptable_head + sizeof(*ptable_head));
-+
-+ /* Lets be PARANOID, and check the checksum. */
-+ p = (unsigned char*) ptable;
-+
-+ while (p <= (unsigned char*)max_addr) {
-+ csum += *p++;
-+ csum += *p++;
-+ csum += *p++;
-+ csum += *p++;
-+ }
-+ ptable_ok = (csum == ptable_head->checksum);
-+
-+ /* Read the entries and use/show the info. */
-+ printk(KERN_INFO " Found a%s partition table at 0x%p-0x%p.\n",
-+ (ptable_ok ? " valid" : "n invalid"), ptable_head,
-+ max_addr);
-+
-+ /* We have found a working bootblock. Now read the
-+ * partition table. Scan the table. It ends when
-+ * there is 0xffffffff, that is, empty flash.
-+ */
-+ while (ptable_ok
-+ && ptable->offset != 0xffffffff
-+ && ptable < max_addr
-+ && pidx < MAX_PARTITIONS) {
-+
-+ axis_partitions[pidx].offset = offset + ptable->offset;
-+ axis_partitions[pidx].size = ptable->size;
-+
-+ printk(pmsg, pidx, axis_partitions[pidx].offset,
-+ axis_partitions[pidx].size);
-+ pidx++;
-+ ptable++;
-+ }
-+ use_default_ptable = !ptable_ok;
-+ }
-+
-+ if (romfs_in_flash) {
-+ /* Add an overlapping device for the root partition (romfs). */
-+
-+ axis_partitions[pidx].name = "romfs";
-+ axis_partitions[pidx].size = romfs_length;
-+ axis_partitions[pidx].offset = romfs_start - FLASH_CACHED_ADDR;
-+ axis_partitions[pidx].mask_flags |= MTD_WRITEABLE;
-+
-+ printk(KERN_INFO
-+ " Adding readonly flash partition for romfs image:\n");
-+ printk(pmsg, pidx, axis_partitions[pidx].offset,
-+ axis_partitions[pidx].size);
-+ pidx++;
-+ }
-+
-+#ifdef CONFIG_ETRAX_AXISFLASHMAP_MTD0WHOLE
-+ if (mymtd) {
-+ main_partition.size = mymtd->size;
-+ err = add_mtd_partitions(mymtd, &main_partition, 1);
-+ if (err)
-+ panic("axisflashmap: Could not initialize "
-+ "partition for whole main mtd device!\n");
-+ }
-+#endif
-+
-+ if (mymtd) {
-+ if (use_default_ptable) {
-+ printk(KERN_INFO " Using default partition table.\n");
-+ err = add_mtd_partitions(mymtd, axis_default_partitions,
-+ NUM_DEFAULT_PARTITIONS);
-+ } else {
-+ err = add_mtd_partitions(mymtd, axis_partitions, pidx);
-+ }
-+
-+ if (err)
-+ panic("axisflashmap could not add MTD partitions!\n");
-+ }
-+
-+ if (!romfs_in_flash) {
-+ /* Create an RAM device for the root partition (romfs). */
-+
-+#if !defined(CONFIG_MTD_MTDRAM) || (CONFIG_MTDRAM_TOTAL_SIZE != 0) || (CONFIG_MTDRAM_ABS_POS != 0)
-+ /* No use trying to boot this kernel from RAM. Panic! */
-+ printk(KERN_EMERG "axisflashmap: Cannot create an MTD RAM "
-+ "device due to kernel (mis)configuration!\n");
-+ panic("This kernel cannot boot from RAM!\n");
-+#else
-+ struct mtd_info *mtd_ram;
-+
-+ mtd_ram = kmalloc(sizeof(struct mtd_info), GFP_KERNEL);
-+ if (!mtd_ram)
-+ panic("axisflashmap couldn't allocate memory for "
-+ "mtd_info!\n");
-+
-+ printk(KERN_INFO " Adding RAM partition for romfs image:\n");
-+ printk(pmsg, pidx, (unsigned)romfs_start,
-+ (unsigned)romfs_length);
-+
-+ err = mtdram_init_device(mtd_ram,
-+ (void *)romfs_start,
-+ romfs_length,
-+ "romfs");
-+ if (err)
-+ panic("axisflashmap could not initialize MTD RAM "
-+ "device!\n");
-+#endif
-+ }
-+ return err;
-+}
-+
-+/* This adds the above to the kernels init-call chain. */
-+module_init(init_axis_flash);
-+
-+EXPORT_SYMBOL(axisflash_mtd);
diff -Nur linux-2.6.39.orig/arch/cris/arch-v10/drivers/ds1302.c linux-2.6.39/arch/cris/arch-v10/drivers/ds1302.c
--- linux-2.6.39.orig/arch/cris/arch-v10/drivers/ds1302.c 2011-05-19 06:06:34.000000000 +0200
-+++ linux-2.6.39/arch/cris/arch-v10/drivers/ds1302.c 2011-07-28 16:16:35.863415658 +0200
++++ linux-2.6.39/arch/cris/arch-v10/drivers/ds1302.c 2011-08-22 08:58:55.157980341 +0200
@@ -22,6 +22,7 @@
#include <linux/mutex.h>
#include <linux/bcd.h>
@@ -617,7 +183,7 @@ diff -Nur linux-2.6.39.orig/arch/cris/arch-v10/drivers/ds1302.c linux-2.6.39/arc
}
diff -Nur linux-2.6.39.orig/arch/cris/arch-v10/drivers/gpio.c linux-2.6.39/arch/cris/arch-v10/drivers/gpio.c
--- linux-2.6.39.orig/arch/cris/arch-v10/drivers/gpio.c 2011-05-19 06:06:34.000000000 +0200
-+++ linux-2.6.39/arch/cris/arch-v10/drivers/gpio.c 2011-07-28 16:16:36.023425394 +0200
++++ linux-2.6.39/arch/cris/arch-v10/drivers/gpio.c 2011-08-22 08:58:55.227980067 +0200
@@ -20,6 +20,7 @@
#include <linux/poll.h>
#include <linux/init.h>
@@ -653,7 +219,7 @@ diff -Nur linux-2.6.39.orig/arch/cris/arch-v10/drivers/gpio.c linux-2.6.39/arch/
CRIS_LED_NETWORK_SET(0);
diff -Nur linux-2.6.39.orig/arch/cris/arch-v10/lib/hw_settings.S linux-2.6.39/arch/cris/arch-v10/lib/hw_settings.S
--- linux-2.6.39.orig/arch/cris/arch-v10/lib/hw_settings.S 2011-05-19 06:06:34.000000000 +0200
-+++ linux-2.6.39/arch/cris/arch-v10/lib/hw_settings.S 2011-07-28 16:16:36.163758404 +0200
++++ linux-2.6.39/arch/cris/arch-v10/lib/hw_settings.S 2011-08-22 08:58:55.287980084 +0200
@@ -58,3 +58,5 @@
.dword R_PORT_PB_SET
.dword PB_SET_VALUE
@@ -662,7 +228,7 @@ diff -Nur linux-2.6.39.orig/arch/cris/arch-v10/lib/hw_settings.S linux-2.6.39/ar
+ .dword 0xdeadc0de
diff -Nur linux-2.6.39.orig/arch/cris/arch-v10/mm/init.c linux-2.6.39/arch/cris/arch-v10/mm/init.c
--- linux-2.6.39.orig/arch/cris/arch-v10/mm/init.c 2011-05-19 06:06:34.000000000 +0200
-+++ linux-2.6.39/arch/cris/arch-v10/mm/init.c 2011-07-28 16:16:36.313421347 +0200
++++ linux-2.6.39/arch/cris/arch-v10/mm/init.c 2011-08-22 08:58:55.347981214 +0200
@@ -184,6 +184,9 @@
free_area_init_node(0, zones_size, PAGE_OFFSET >> PAGE_SHIFT, 0);
@@ -675,7 +241,7 @@ diff -Nur linux-2.6.39.orig/arch/cris/arch-v10/mm/init.c linux-2.6.39/arch/cris/
* is called before any driver is initialized.
diff -Nur linux-2.6.39.orig/arch/cris/boot/compressed/Makefile linux-2.6.39/arch/cris/boot/compressed/Makefile
--- linux-2.6.39.orig/arch/cris/boot/compressed/Makefile 2011-05-19 06:06:34.000000000 +0200
-+++ linux-2.6.39/arch/cris/boot/compressed/Makefile 2011-07-28 16:16:36.453421314 +0200
++++ linux-2.6.39/arch/cris/boot/compressed/Makefile 2011-08-22 08:58:55.427980567 +0200
@@ -18,7 +18,7 @@
OBJECTS-$(CONFIG_ETRAX_ARCH_V32) = $(obj)/head_v32.o
OBJECTS-$(CONFIG_ETRAX_ARCH_V10) = $(obj)/head_v10.o
@@ -687,7 +253,7 @@ diff -Nur linux-2.6.39.orig/arch/cris/boot/compressed/Makefile linux-2.6.39/arch
cmd_image = cat $(obj)/decompress.bin $(obj)/piggy.gz > $@
diff -Nur linux-2.6.39.orig/arch/cris/boot/Makefile linux-2.6.39/arch/cris/boot/Makefile
--- linux-2.6.39.orig/arch/cris/boot/Makefile 2011-05-19 06:06:34.000000000 +0200
-+++ linux-2.6.39/arch/cris/boot/Makefile 2011-07-28 16:16:36.573671907 +0200
++++ linux-2.6.39/arch/cris/boot/Makefile 2011-08-22 08:58:55.507980367 +0200
@@ -5,7 +5,7 @@
objcopyflags-$(CONFIG_ETRAX_ARCH_V10) += -R .note -R .comment
objcopyflags-$(CONFIG_ETRAX_ARCH_V32) += --remove-section=.bss --remove-section=.note.gnu.build-id
@@ -707,7 +273,7 @@ diff -Nur linux-2.6.39.orig/arch/cris/boot/Makefile linux-2.6.39/arch/cris/boot/
@cp $< $@
diff -Nur linux-2.6.39.orig/arch/cris/Kconfig linux-2.6.39/arch/cris/Kconfig
--- linux-2.6.39.orig/arch/cris/Kconfig 2011-05-19 06:06:34.000000000 +0200
-+++ linux-2.6.39/arch/cris/Kconfig 2011-07-28 16:16:36.713417234 +0200
++++ linux-2.6.39/arch/cris/Kconfig 2011-08-22 08:58:55.587980284 +0200
@@ -168,6 +168,12 @@
help
Size of DRAM (decimal in MB) typically 2, 8 or 16.
@@ -751,703 +317,9 @@ diff -Nur linux-2.6.39.orig/arch/cris/Kconfig linux-2.6.39/arch/cris/Kconfig
source "drivers/usb/Kconfig"
source "drivers/uwb/Kconfig"
-diff -Nur linux-2.6.39.orig/arch/cris/Kconfig.orig linux-2.6.39/arch/cris/Kconfig.orig
---- linux-2.6.39.orig/arch/cris/Kconfig.orig 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.39/arch/cris/Kconfig.orig 2011-05-19 06:06:34.000000000 +0200
-@@ -0,0 +1,690 @@
-+config MMU
-+ bool
-+ default y
-+
-+config ZONE_DMA
-+ bool
-+ default y
-+
-+config RWSEM_GENERIC_SPINLOCK
-+ bool
-+ default y
-+
-+config RWSEM_XCHGADD_ALGORITHM
-+ bool
-+
-+config GENERIC_CMOS_UPDATE
-+ def_bool y
-+
-+config ARCH_USES_GETTIMEOFFSET
-+ def_bool n
-+
-+config GENERIC_IOMAP
-+ bool
-+ default y
-+
-+config ARCH_HAS_ILOG2_U32
-+ bool
-+ default n
-+
-+config ARCH_HAS_ILOG2_U64
-+ bool
-+ default n
-+
-+config GENERIC_FIND_NEXT_BIT
-+ bool
-+ default y
-+
-+config GENERIC_HWEIGHT
-+ bool
-+ default y
-+
-+config GENERIC_CALIBRATE_DELAY
-+ bool
-+ default y
-+
-+config NO_IOPORT
-+ def_bool y
-+
-+config FORCE_MAX_ZONEORDER
-+ int
-+ default 6
-+
-+config CRIS
-+ bool
-+ default y
-+ select HAVE_IDE
-+ select HAVE_GENERIC_HARDIRQS
-+ select GENERIC_IRQ_SHOW
-+
-+config HZ
-+ int
-+ default 100
-+
-+source "init/Kconfig"
-+
-+source "kernel/Kconfig.freezer"
-+
-+menu "General setup"
-+
-+source "fs/Kconfig.binfmt"
-+
-+config ETRAX_CMDLINE
-+ string "Kernel command line"
-+ default "root=/dev/mtdblock3"
-+ help
-+ Pass additional commands to the kernel.
-+
-+config ETRAX_WATCHDOG
-+ bool "Enable ETRAX watchdog"
-+ help
-+ Enable the built-in watchdog timer support on ETRAX based embedded
-+ network computers.
-+
-+config ETRAX_WATCHDOG_NICE_DOGGY
-+ bool "Disable watchdog during Oops printouts"
-+ depends on ETRAX_WATCHDOG
-+ help
-+ By enabling this you make sure that the watchdog does not bite while
-+ printing oopses. Recommended for development systems but not for
-+ production releases.
-+
-+config ETRAX_FAST_TIMER
-+ bool "Enable ETRAX fast timer API"
-+ help
-+ This options enables the API to a fast timer implementation using
-+ timer1 to get sub jiffie resolution timers (primarily one-shot
-+ timers).
-+ This is needed if CONFIG_ETRAX_SERIAL_FAST_TIMER is enabled.
-+
-+config ETRAX_KMALLOCED_MODULES
-+ bool "Enable module allocation with kmalloc"
-+ help
-+ Enable module allocation with kmalloc instead of vmalloc.
-+
-+config OOM_REBOOT
-+ bool "Enable reboot at out of memory"
-+
-+source "kernel/Kconfig.preempt"
-+
-+source mm/Kconfig
-+
-+endmenu
-+
-+menu "Hardware setup"
-+
-+choice
-+ prompt "Processor type"
-+ default ETRAX100LX
-+
-+config ETRAX100LX
-+ bool "ETRAX-100LX-v1"
-+ select ARCH_USES_GETTIMEOFFSET
-+ help
-+ Support version 1 of the ETRAX 100LX.
-+
-+config ETRAX100LX_V2
-+ bool "ETRAX-100LX-v2"
-+ select ARCH_USES_GETTIMEOFFSET
-+ help
-+ Support version 2 of the ETRAX 100LX.
-+
-+config SVINTO_SIM
-+ bool "ETRAX-100LX-for-xsim-simulator"
-+ select ARCH_USES_GETTIMEOFFSET
-+ help
-+ Support the xsim ETRAX Simulator.
-+
-+config ETRAXFS
-+ bool "ETRAX-FS-V32"
-+ help
-+ Support CRIS V32.
-+
-+config CRIS_MACH_ARTPEC3
-+ bool "ARTPEC-3"
-+ help
-+ Support Axis ARTPEC-3.
-+
-+endchoice
-+
-+config ETRAX_VCS_SIM
-+ bool "VCS Simulator"
-+ help
-+ Setup hardware to be run in the VCS simulator.
-+
-+config ETRAX_ARCH_V10
-+ bool
-+ default y if ETRAX100LX || ETRAX100LX_V2
-+ default n if !(ETRAX100LX || ETRAX100LX_V2)
-+
-+config ETRAX_ARCH_V32
-+ bool
-+ default y if (ETRAXFS || CRIS_MACH_ARTPEC3)
-+ default n if !(ETRAXFS || CRIS_MACH_ARTPEC3)
-+
-+config ETRAX_DRAM_SIZE
-+ int "DRAM size (dec, in MB)"
-+ default "8"
-+ help
-+ Size of DRAM (decimal in MB) typically 2, 8 or 16.
-+
-+config ETRAX_VMEM_SIZE
-+ int "Video memory size (dec, in MB)"
-+ depends on ETRAX_ARCH_V32 && !ETRAXFS
-+ default 8 if !ETRAXFS
-+ help
-+ Size of Video accessible memory (decimal, in MB).
-+
-+config ETRAX_FLASH_BUSWIDTH
-+ int "Buswidth of NOR flash in bytes"
-+ default "2"
-+ help
-+ Width in bytes of the NOR Flash bus (1, 2 or 4). Is usually 2.
-+
-+config ETRAX_NANDFLASH_BUSWIDTH
-+ int "Buswidth of NAND flash in bytes"
-+ default "1"
-+ help
-+ Width in bytes of the NAND flash (1 or 2).
-+
-+config ETRAX_FLASH1_SIZE
-+ int "FLASH1 size (dec, in MB. 0 = Unknown)"
-+ default "0"
-+
-+choice
-+ prompt "Product debug-port"
-+ default ETRAX_DEBUG_PORT0
-+
-+config ETRAX_DEBUG_PORT0
-+ bool "Serial-0"
-+ help
-+ Choose a serial port for the ETRAX debug console. Default to
-+ port 0.
-+
-+config ETRAX_DEBUG_PORT1
-+ bool "Serial-1"
-+ help
-+ Use serial port 1 for the con