summaryrefslogtreecommitdiff
path: root/packages/linux/linux-2.6.23/mpc8313e-rdb
diff options
context:
space:
mode:
authorDenys Dmytriyenko <denis@denix.org>2009-03-17 14:32:59 -0400
committerDenys Dmytriyenko <denis@denix.org>2009-03-17 14:32:59 -0400
commit709c4d66e0b107ca606941b988bad717c0b45d9b (patch)
tree37ee08b1eb308f3b2b6426d5793545c38396b838 /packages/linux/linux-2.6.23/mpc8313e-rdb
parentfa6cd5a3b993f16c27de4ff82b42684516d433ba (diff)
rename packages/ to recipes/ per earlier agreement
See links below for more details: http://thread.gmane.org/gmane.comp.handhelds.openembedded/21326 http://thread.gmane.org/gmane.comp.handhelds.openembedded/21816 Signed-off-by: Denys Dmytriyenko <denis@denix.org> Acked-by: Mike Westerhof <mwester@dls.net> Acked-by: Philip Balister <philip@balister.org> Acked-by: Khem Raj <raj.khem@gmail.com> Acked-by: Marcin Juszkiewicz <hrw@openembedded.org> Acked-by: Koen Kooi <koen@openembedded.org> Acked-by: Frans Meulenbroeks <fransmeulenbroeks@gmail.com>
Diffstat (limited to 'packages/linux/linux-2.6.23/mpc8313e-rdb')
-rw-r--r--packages/linux/linux-2.6.23/mpc8313e-rdb/defconfig1870
-rw-r--r--packages/linux/linux-2.6.23/mpc8313e-rdb/mpc8313e-rdb-leds.patch202
-rw-r--r--packages/linux/linux-2.6.23/mpc8313e-rdb/mpc8313e-rdb-rtc.patch40
-rw-r--r--packages/linux/linux-2.6.23/mpc8313e-rdb/mpc831x-nand.patch1807
4 files changed, 0 insertions, 3919 deletions
diff --git a/packages/linux/linux-2.6.23/mpc8313e-rdb/defconfig b/packages/linux/linux-2.6.23/mpc8313e-rdb/defconfig
deleted file mode 100644
index d842308fc9..0000000000
--- a/packages/linux/linux-2.6.23/mpc8313e-rdb/defconfig
+++ /dev/null
@@ -1,1870 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.23
-# Mon Dec 17 17:18:08 2007
-#
-# CONFIG_PPC64 is not set
-
-#
-# Processor support
-#
-CONFIG_6xx=y
-# CONFIG_PPC_85xx is not set
-# CONFIG_PPC_8xx is not set
-# CONFIG_40x is not set
-# CONFIG_44x is not set
-# CONFIG_E200 is not set
-CONFIG_83xx=y
-CONFIG_PPC_FPU=y
-CONFIG_PPC_STD_MMU=y
-CONFIG_PPC_STD_MMU_32=y
-# CONFIG_PPC_MM_SLICES is not set
-# CONFIG_SMP is not set
-CONFIG_PPC32=y
-CONFIG_PPC_MERGE=y
-CONFIG_MMU=y
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_IRQ_PER_CPU=y
-CONFIG_RWSEM_XCHGADD_ALGORITHM=y
-CONFIG_ARCH_HAS_ILOG2_U32=y
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_GENERIC_FIND_NEXT_BIT=y
-# CONFIG_ARCH_NO_VIRT_TO_BUS is not set
-CONFIG_PPC=y
-CONFIG_EARLY_PRINTK=y
-CONFIG_GENERIC_NVRAM=y
-CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
-CONFIG_ARCH_MAY_HAVE_PC_FDC=y
-CONFIG_PPC_OF=y
-CONFIG_OF=y
-CONFIG_PPC_UDBG_16550=y
-# CONFIG_GENERIC_TBSYNC is not set
-CONFIG_AUDIT_ARCH=y
-CONFIG_GENERIC_BUG=y
-CONFIG_DEFAULT_UIMAGE=y
-# CONFIG_PPC_DCR_NATIVE is not set
-# CONFIG_PPC_DCR_MMIO is not set
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-
-#
-# General setup
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-CONFIG_SYSVIPC_SYSCTL=y
-# CONFIG_POSIX_MQUEUE is not set
-# CONFIG_BSD_PROCESS_ACCT is not set
-# CONFIG_TASKSTATS is not set
-# CONFIG_USER_NS is not set
-# CONFIG_AUDIT is not set
-# CONFIG_IKCONFIG is not set
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_SYSFS_DEPRECATED=y
-# CONFIG_RELAY is not set
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_INITRAMFS_SOURCE=""
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
-CONFIG_SYSCTL=y
-CONFIG_EMBEDDED=y
-CONFIG_SYSCTL_SYSCALL=y
-# CONFIG_KALLSYMS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_ANON_INODES=y
-# CONFIG_EPOLL is not set
-CONFIG_SIGNALFD=y
-CONFIG_EVENTFD=y
-CONFIG_SHMEM=y
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_SLAB=y
-# CONFIG_SLUB is not set
-# CONFIG_SLOB is not set
-CONFIG_RT_MUTEXES=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-# CONFIG_MODULE_FORCE_UNLOAD is not set
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-CONFIG_BLOCK=y
-# CONFIG_LBD is not set
-# CONFIG_BLK_DEV_IO_TRACE is not set
-# CONFIG_LSF is not set
-# CONFIG_BLK_DEV_BSG is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-CONFIG_IOSCHED_CFQ=y
-CONFIG_DEFAULT_AS=y
-# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
-
-#
-# Platform support
-#
-# CONFIG_PPC_MULTIPLATFORM is not set
-# CONFIG_EMBEDDED6xx is not set
-# CONFIG_PPC_82xx is not set
-CONFIG_PPC_83xx=y
-# CONFIG_PPC_86xx is not set
-# CONFIG_PPC_MPC52xx is not set
-# CONFIG_PPC_MPC5200 is not set
-# CONFIG_PPC_CELL is not set
-# CONFIG_PPC_CELL_NATIVE is not set
-# CONFIG_PQ2ADS is not set
-CONFIG_MPC8313_RDB=y
-# CONFIG_MPC832x_MDS is not set
-# CONFIG_MPC832x_RDB is not set
-# CONFIG_MPC834x_MDS is not set
-# CONFIG_MPC834x_ITX is not set
-# CONFIG_MPC836x_MDS is not set
-CONFIG_PPC_MPC831x=y
-# CONFIG_MPIC is not set
-# CONFIG_MPIC_WEIRD is not set
-# CONFIG_PPC_I8259 is not set
-# CONFIG_PPC_RTAS is not set
-# CONFIG_MMIO_NVRAM is not set
-# CONFIG_PPC_MPC106 is not set
-# CONFIG_PPC_970_NAP is not set
-# CONFIG_PPC_INDIRECT_IO is not set
-# CONFIG_GENERIC_IOMAP is not set
-# CONFIG_CPU_FREQ is not set
-# CONFIG_CPM2 is not set
-# CONFIG_FSL_ULI1575 is not set
-
-#
-# Kernel options
-#
-# CONFIG_HIGHMEM is not set
-# CONFIG_HZ_100 is not set
-CONFIG_HZ_250=y
-# CONFIG_HZ_300 is not set
-# CONFIG_HZ_1000 is not set
-CONFIG_HZ=250
-CONFIG_PREEMPT_NONE=y
-# CONFIG_PREEMPT_VOLUNTARY is not set
-# CONFIG_PREEMPT is not set
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_MISC is not set
-CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
-CONFIG_ARCH_FLATMEM_ENABLE=y
-CONFIG_ARCH_POPULATES_NODE_MAP=y
-CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_FLATMEM_MANUAL=y
-# CONFIG_DISCONTIGMEM_MANUAL is not set
-# CONFIG_SPARSEMEM_MANUAL is not set
-CONFIG_FLATMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-# CONFIG_SPARSEMEM_STATIC is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4
-# CONFIG_RESOURCES_64BIT is not set
-CONFIG_ZONE_DMA_FLAG=1
-CONFIG_BOUNCE=y
-CONFIG_VIRT_TO_BUS=y
-CONFIG_PROC_DEVICETREE=y
-# CONFIG_CMDLINE_BOOL is not set
-# CONFIG_PM is not set
-CONFIG_SUSPEND_UP_POSSIBLE=y
-CONFIG_HIBERNATION_UP_POSSIBLE=y
-CONFIG_SECCOMP=y
-CONFIG_WANT_DEVICE_TREE=y
-CONFIG_DEVICE_TREE=""
-CONFIG_ISA_DMA_API=y
-
-#
-# Bus options
-#
-CONFIG_ZONE_DMA=y
-CONFIG_GENERIC_ISA_DMA=y
-CONFIG_PPC_INDIRECT_PCI=y
-CONFIG_FSL_SOC=y
-CONFIG_PCI=y
-CONFIG_PCI_DOMAINS=y
-CONFIG_PCI_SYSCALL=y
-# CONFIG_PCIEPORTBUS is not set
-CONFIG_ARCH_SUPPORTS_MSI=y
-# CONFIG_PCI_MSI is not set
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-# CONFIG_PCCARD is not set
-# CONFIG_HOTPLUG_PCI is not set
-
-#
-# Advanced setup
-#
-# CONFIG_ADVANCED_OPTIONS is not set
-
-#
-# Default settings for advanced configuration options are used
-#
-CONFIG_HIGHMEM_START=0xfe000000
-CONFIG_LOWMEM_SIZE=0x30000000
-CONFIG_KERNEL_START=0xc0000000
-CONFIG_TASK_SIZE=0x80000000
-CONFIG_BOOT_LOAD=0x00800000
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-# CONFIG_PACKET_MMAP is not set
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-# CONFIG_XFRM_USER is not set
-# CONFIG_XFRM_SUB_POLICY is not set
-# CONFIG_XFRM_MIGRATE is not set
-# CONFIG_NET_KEY is not set
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-CONFIG_IP_ADVANCED_ROUTER=y
-CONFIG_ASK_IP_FIB_HASH=y
-# CONFIG_IP_FIB_TRIE is not set
-CONFIG_IP_FIB_HASH=y
-CONFIG_IP_MULTIPLE_TABLES=y
-CONFIG_IP_ROUTE_MULTIPATH=y
-CONFIG_IP_ROUTE_VERBOSE=y
-CONFIG_IP_PNP=y
-CONFIG_IP_PNP_DHCP=y
-CONFIG_IP_PNP_BOOTP=y
-CONFIG_IP_PNP_RARP=y
-CONFIG_NET_IPIP=m
-CONFIG_NET_IPGRE=m
-# CONFIG_NET_IPGRE_BROADCAST is not set
-# CONFIG_IP_MROUTE is not set
-# CONFIG_ARPD is not set
-CONFIG_SYN_COOKIES=y
-CONFIG_INET_AH=m
-CONFIG_INET_ESP=m
-CONFIG_INET_IPCOMP=m
-CONFIG_INET_XFRM_TUNNEL=m
-CONFIG_INET_TUNNEL=m
-CONFIG_INET_XFRM_MODE_TRANSPORT=m
-CONFIG_INET_XFRM_MODE_TUNNEL=m
-CONFIG_INET_XFRM_MODE_BEET=m
-CONFIG_INET_DIAG=y
-CONFIG_INET_TCP_DIAG=y
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_CUBIC=y
-CONFIG_DEFAULT_TCP_CONG="cubic"
-# CONFIG_TCP_MD5SIG is not set
-# CONFIG_IP_VS is not set
-CONFIG_IPV6=m
-# CONFIG_IPV6_PRIVACY is not set
-# CONFIG_IPV6_ROUTER_PREF is not set
-# CONFIG_IPV6_OPTIMISTIC_DAD is not set
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-CONFIG_IPV6_MIP6=m
-CONFIG_INET6_XFRM_TUNNEL=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_TRANSPORT=m
-CONFIG_INET6_XFRM_MODE_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_BEET=m
-CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
-CONFIG_IPV6_SIT=m
-CONFIG_IPV6_TUNNEL=m
-# CONFIG_IPV6_MULTIPLE_TABLES is not set
-# CONFIG_NETWORK_SECMARK is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-CONFIG_BRIDGE_NETFILTER=y
-
-#
-# Core Netfilter Configuration
-#
-CONFIG_NETFILTER_NETLINK=m
-CONFIG_NETFILTER_NETLINK_QUEUE=m
-CONFIG_NETFILTER_NETLINK_LOG=m
-CONFIG_NF_CONNTRACK_ENABLED=m
-CONFIG_NF_CONNTRACK=m
-CONFIG_NF_CT_ACCT=y
-CONFIG_NF_CONNTRACK_MARK=y
-# CONFIG_NF_CONNTRACK_EVENTS is not set
-CONFIG_NF_CT_PROTO_GRE=m
-CONFIG_NF_CT_PROTO_SCTP=m
-CONFIG_NF_CT_PROTO_UDPLITE=m
-CONFIG_NF_CONNTRACK_AMANDA=m
-CONFIG_NF_CONNTRACK_FTP=m
-CONFIG_NF_CONNTRACK_H323=m
-CONFIG_NF_CONNTRACK_IRC=m
-CONFIG_NF_CONNTRACK_NETBIOS_NS=m
-CONFIG_NF_CONNTRACK_PPTP=m
-CONFIG_NF_CONNTRACK_SANE=m
-CONFIG_NF_CONNTRACK_SIP=m
-CONFIG_NF_CONNTRACK_TFTP=m
-CONFIG_NF_CT_NETLINK=m
-CONFIG_NETFILTER_XTABLES=m
-CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
-# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set
-# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
-CONFIG_NETFILTER_XT_TARGET_MARK=m
-CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
-CONFIG_NETFILTER_XT_TARGET_NFLOG=m
-# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set
-# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
-CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
-CONFIG_NETFILTER_XT_MATCH_COMMENT=m
-CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
-CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
-CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
-CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
-CONFIG_NETFILTER_XT_MATCH_DCCP=m
-CONFIG_NETFILTER_XT_MATCH_DSCP=m
-CONFIG_NETFILTER_XT_MATCH_ESP=m
-CONFIG_NETFILTER_XT_MATCH_HELPER=m
-CONFIG_NETFILTER_XT_MATCH_LENGTH=m
-CONFIG_NETFILTER_XT_MATCH_LIMIT=m
-CONFIG_NETFILTER_XT_MATCH_MAC=m
-CONFIG_NETFILTER_XT_MATCH_MARK=m
-CONFIG_NETFILTER_XT_MATCH_POLICY=m
-CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
-# CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set
-CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
-CONFIG_NETFILTER_XT_MATCH_QUOTA=m
-CONFIG_NETFILTER_XT_MATCH_REALM=m
-CONFIG_NETFILTER_XT_MATCH_SCTP=m
-CONFIG_NETFILTER_XT_MATCH_STATE=m
-CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
-CONFIG_NETFILTER_XT_MATCH_STRING=m
-CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
-CONFIG_NETFILTER_XT_MATCH_U32=m
-CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_NF_CONNTRACK_IPV4=m
-CONFIG_NF_CONNTRACK_PROC_COMPAT=y
-CONFIG_IP_NF_QUEUE=m
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_IPRANGE=m
-CONFIG_IP_NF_MATCH_TOS=m
-CONFIG_IP_NF_MATCH_RECENT=m
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_AH=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_OWNER=m
-CONFIG_IP_NF_MATCH_ADDRTYPE=m
-CONFIG_IP_NF_FILTER=m
-CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_NF_NAT=m
-CONFIG_NF_NAT_NEEDED=y
-CONFIG_IP_NF_TARGET_MASQUERADE=m
-CONFIG_IP_NF_TARGET_REDIRECT=m
-CONFIG_IP_NF_TARGET_NETMAP=m
-CONFIG_IP_NF_TARGET_SAME=m
-CONFIG_NF_NAT_SNMP_BASIC=m
-CONFIG_NF_NAT_PROTO_GRE=m
-CONFIG_NF_NAT_FTP=m
-CONFIG_NF_NAT_IRC=m
-CONFIG_NF_NAT_TFTP=m
-CONFIG_NF_NAT_AMANDA=m
-CONFIG_NF_NAT_PPTP=m
-CONFIG_NF_NAT_H323=m
-CONFIG_NF_NAT_SIP=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_TOS=m
-CONFIG_IP_NF_TARGET_ECN=m
-CONFIG_IP_NF_TARGET_TTL=m
-CONFIG_IP_NF_TARGET_CLUSTERIP=m
-CONFIG_IP_NF_RAW=m
-CONFIG_IP_NF_ARPTABLES=m
-CONFIG_IP_NF_ARPFILTER=m
-CONFIG_IP_NF_ARP_MANGLE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-CONFIG_NF_CONNTRACK_IPV6=m
-CONFIG_IP6_NF_QUEUE=m
-CONFIG_IP6_NF_IPTABLES=m
-CONFIG_IP6_NF_MATCH_RT=m
-CONFIG_IP6_NF_MATCH_OPTS=m
-CONFIG_IP6_NF_MATCH_FRAG=m
-CONFIG_IP6_NF_MATCH_HL=m
-CONFIG_IP6_NF_MATCH_OWNER=m
-CONFIG_IP6_NF_MATCH_IPV6HEADER=m
-CONFIG_IP6_NF_MATCH_AH=m
-CONFIG_IP6_NF_MATCH_MH=m
-CONFIG_IP6_NF_MATCH_EUI64=m
-CONFIG_IP6_NF_FILTER=m
-CONFIG_IP6_NF_TARGET_LOG=m
-CONFIG_IP6_NF_TARGET_REJECT=m
-CONFIG_IP6_NF_MANGLE=m
-CONFIG_IP6_NF_TARGET_HL=m
-CONFIG_IP6_NF_RAW=m
-
-#
-# Bridge: Netfilter Configuration
-#
-# CONFIG_BRIDGE_NF_EBTABLES is not set
-# CONFIG_IP_DCCP is not set
-# CONFIG_IP_SCTP is not set
-# CONFIG_TIPC is not set
-CONFIG_ATM=m
-CONFIG_ATM_CLIP=m
-# CONFIG_ATM_CLIP_NO_ICMP is not set
-CONFIG_ATM_LANE=m
-CONFIG_ATM_MPOA=m
-CONFIG_ATM_BR2684=m
-# CONFIG_ATM_BR2684_IPFILTER is not set
-CONFIG_BRIDGE=m
-CONFIG_VLAN_8021Q=m
-# CONFIG_DECNET is not set
-CONFIG_LLC=m
-CONFIG_LLC2=m
-CONFIG_IPX=m
-# CONFIG_IPX_INTERN is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_ECONET is not set
-CONFIG_WAN_ROUTER=m
-
-#
-# QoS and/or fair queueing
-#
-CONFIG_NET_SCHED=y
-CONFIG_NET_SCH_FIFO=y
-
-#
-# Queueing/Scheduling
-#
-CONFIG_NET_SCH_CBQ=m
-CONFIG_NET_SCH_HTB=m
-CONFIG_NET_SCH_HFSC=m
-CONFIG_NET_SCH_ATM=m
-CONFIG_NET_SCH_PRIO=m
-CONFIG_NET_SCH_RR=m
-CONFIG_NET_SCH_RED=m
-CONFIG_NET_SCH_SFQ=m
-CONFIG_NET_SCH_TEQL=m
-CONFIG_NET_SCH_TBF=m
-CONFIG_NET_SCH_GRED=m
-CONFIG_NET_SCH_DSMARK=m
-CONFIG_NET_SCH_NETEM=m
-CONFIG_NET_SCH_INGRESS=m
-
-#
-# Classification
-#
-CONFIG_NET_CLS=y
-CONFIG_NET_CLS_BASIC=m
-CONFIG_NET_CLS_TCINDEX=m
-CONFIG_NET_CLS_ROUTE4=m
-CONFIG_NET_CLS_ROUTE=y
-CONFIG_NET_CLS_FW=m
-CONFIG_NET_CLS_U32=m
-CONFIG_CLS_U32_PERF=y
-CONFIG_CLS_U32_MARK=y
-CONFIG_NET_CLS_RSVP=m
-CONFIG_NET_CLS_RSVP6=m
-CONFIG_NET_EMATCH=y
-CONFIG_NET_EMATCH_STACK=32
-CONFIG_NET_EMATCH_CMP=m
-CONFIG_NET_EMATCH_NBYTE=m
-CONFIG_NET_EMATCH_U32=m
-CONFIG_NET_EMATCH_META=m
-CONFIG_NET_EMATCH_TEXT=m
-CONFIG_NET_CLS_ACT=y
-CONFIG_NET_ACT_POLICE=m
-CONFIG_NET_ACT_GACT=m
-CONFIG_GACT_PROB=y
-CONFIG_NET_ACT_MIRRED=m
-CONFIG_NET_ACT_IPT=m
-CONFIG_NET_ACT_PEDIT=m
-CONFIG_NET_ACT_SIMP=m
-# CONFIG_NET_CLS_POLICE is not set
-CONFIG_NET_CLS_IND=y
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-# CONFIG_IRDA is not set
-CONFIG_BT=m
-CONFIG_BT_L2CAP=m
-CONFIG_BT_SCO=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-# CONFIG_BT_CMTP is not set
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BT_HCIUSB=m
-CONFIG_BT_HCIUSB_SCO=y
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
-CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIVHCI=m
-# CONFIG_AF_RXRPC is not set
-CONFIG_FIB_RULES=y
-
-#
-# Wireless
-#
-CONFIG_CFG80211=y
-CONFIG_WIRELESS_EXT=y
-CONFIG_MAC80211=m
-# CONFIG_MAC80211_LEDS is not set
-# CONFIG_MAC80211_DEBUG is not set
-CONFIG_IEEE80211=m
-# CONFIG_IEEE80211_DEBUG is not set
-CONFIG_IEEE80211_CRYPT_WEP=m
-CONFIG_IEEE80211_CRYPT_CCMP=m
-CONFIG_IEEE80211_CRYPT_TKIP=m
-CONFIG_IEEE80211_SOFTMAC=m
-# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
-CONFIG_RFKILL=m
-CONFIG_RFKILL_INPUT=m
-# CONFIG_NET_9P is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=m
-# CONFIG_SYS_HYPERVISOR is not set
-# CONFIG_CONNECTOR is not set
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-# CONFIG_MTD_CONCAT is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLKDEVS=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-# CONFIG_SSFDC is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-CONFIG_MTD_CFI=y
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_GEN_PROBE=y
-# CONFIG_MTD_CFI_ADV_OPTIONS is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_CFI_INTELEXT is not set
-CONFIG_MTD_CFI_AMDSTD=y
-# CONFIG_MTD_CFI_STAA is not set
-CONFIG_MTD_CFI_UTIL=y
-# CONFIG_MTD_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-CONFIG_MTD_PHYSMAP=y
-CONFIG_MTD_PHYSMAP_START=0xfe000000
-CONFIG_MTD_PHYSMAP_LEN=0x0800000
-CONFIG_MTD_PHYSMAP_BANKWIDTH=2
-# CONFIG_MTD_PHYSMAP_OF is not set
-# CONFIG_MTD_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_PMC551 is not set
-# CONFIG_MTD_DATAFLASH is not set
-# CONFIG_MTD_M25P80 is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLOCK2MTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-CONFIG_MTD_NAND=y
-# CONFIG_MTD_NAND_VERIFY_WRITE is not set
-# CONFIG_MTD_NAND_ECC_SMC is not set
-# CONFIG_MTD_NAND_MUSEUM_IDS is not set
-CONFIG_MTD_NAND_IDS=y
-# CONFIG_MTD_NAND_DISKONCHIP is not set
-# CONFIG_MTD_NAND_CAFE is not set
-CONFIG_MTD_NAND_FSL_ELBC=y
-# CONFIG_MTD_NAND_NANDSIM is not set
-# CONFIG_MTD_NAND_PLATFORM is not set
-# CONFIG_MTD_ONENAND is not set
-
-#
-# UBI - Unsorted block images
-#
-# CONFIG_MTD_UBI is not set
-CONFIG_OF_DEVICE=y
-# CONFIG_PARPORT is not set
-CONFIG_BLK_DEV=y
-# CONFIG_BLK_DEV_FD is not set
-# CONFIG_BLK_CPQ_DA is not set
-# CONFIG_BLK_CPQ_CISS_DA is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-# CONFIG_BLK_DEV_UMEM is not set
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=y
-CONFIG_BLK_DEV_CRYPTOLOOP=m
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_SX8 is not set
-# CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=32768
-CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
-# CONFIG_CDROM_PKTCDVD is not set
-CONFIG_ATA_OVER_ETH=m
-CONFIG_MISC_DEVICES=y
-# CONFIG_PHANTOM is not set
-CONFIG_EEPROM_93CX6=m
-# CONFIG_SGI_IOC4 is not set
-# CONFIG_TIFM_CORE is not set
-# CONFIG_IDE is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=m
-CONFIG_SCSI_DMA=y
-# CONFIG_SCSI_TGT is not set
-# CONFIG_SCSI_NETLINK is not set
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=m
-# CONFIG_CHR_DEV_ST is not set
-# CONFIG_CHR_DEV_OSST is not set
-# CONFIG_BLK_DEV_SR is not set
-# CONFIG_CHR_DEV_SG is not set
-# CONFIG_CHR_DEV_SCH is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-# CONFIG_SCSI_MULTI_LUN is not set
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-# CONFIG_SCSI_SCAN_ASYNC is not set
-CONFIG_SCSI_WAIT_SCAN=m
-
-#
-# SCSI Transports
-#
-CONFIG_SCSI_SPI_ATTRS=m
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_LIBSAS is not set
-# CONFIG_SCSI_LOWLEVEL is not set
-# CONFIG_ATA is not set
-# CONFIG_MD is not set
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-# CONFIG_FUSION_SPI is not set
-# CONFIG_FUSION_FC is not set
-# CONFIG_FUSION_SAS is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-# CONFIG_FIREWIRE is not set
-# CONFIG_IEEE1394 is not set
-# CONFIG_I2O is not set
-# CONFIG_MACINTOSH_DRIVERS is not set
-CONFIG_NETDEVICES=y
-# CONFIG_NETDEVICES_MULTIQUEUE is not set
-# CONFIG_IFB is not set
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_MACVLAN is not set
-# CONFIG_EQUALIZER is not set
-# CONFIG_TUN is not set
-# CONFIG_ARCNET is not set
-CONFIG_PHYLIB=y
-
-#
-# MII PHY device drivers
-#
-# CONFIG_MARVELL_PHY is not set
-# CONFIG_DAVICOM_PHY is not set
-# CONFIG_QSEMI_PHY is not set
-# CONFIG_LXT_PHY is not set
-CONFIG_CICADA_PHY=y
-# CONFIG_VITESSE_PHY is not set
-# CONFIG_SMSC_PHY is not set
-# CONFIG_BROADCOM_PHY is not set
-# CONFIG_ICPLUS_PHY is not set
-# CONFIG_FIXED_PHY is not set
-# CONFIG_NET_ETHERNET is not set
-CONFIG_NETDEV_1000=y
-# CONFIG_ACENIC is not set
-# CONFIG_DL2K is not set
-# CONFIG_E1000 is not set
-# CONFIG_NS83820 is not set
-# CONFIG_HAMACHI is not set
-# CONFIG_YELLOWFIN is not set
-# CONFIG_R8169 is not set
-# CONFIG_SIS190 is not set
-# CONFIG_SKGE is not set
-# CONFIG_SKY2 is not set
-# CONFIG_SK98LIN is not set
-# CONFIG_VIA_VELOCITY is not set
-# CONFIG_TIGON3 is not set
-# CONFIG_BNX2 is not set
-CONFIG_GIANFAR=y
-CONFIG_GFAR_NAPI=y
-# CONFIG_QLA3XXX is not set
-# CONFIG_ATL1 is not set
-# CONFIG_NETDEV_10000 is not set
-# CONFIG_TR is not set
-
-#
-# Wireless LAN
-#
-# CONFIG_WLAN_PRE80211 is not set
-CONFIG_WLAN_80211=y
-CONFIG_IPW2100=m
-CONFIG_IPW2100_MONITOR=y
-# CONFIG_IPW2100_DEBUG is not set
-CONFIG_IPW2200=m
-CONFIG_IPW2200_MONITOR=y
-CONFIG_IPW2200_RADIOTAP=y
-CONFIG_IPW2200_PROMISCUOUS=y
-CONFIG_IPW2200_QOS=y
-# CONFIG_IPW2200_DEBUG is not set
-CONFIG_LIBERTAS=m
-CONFIG_LIBERTAS_USB=m
-# CONFIG_LIBERTAS_DEBUG is not set
-CONFIG_AIRO=m
-CONFIG_HERMES=m
-CONFIG_PLX_HERMES=m
-CONFIG_TMD_HERMES=m
-CONFIG_NORTEL_HERMES=m
-CONFIG_PCI_HERMES=m
-CONFIG_ATMEL=m
-CONFIG_PCI_ATMEL=m
-CONFIG_PRISM54=m
-CONFIG_USB_ZD1201=m
-CONFIG_RTL8187=m
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-CONFIG_HOSTAP_FIRMWARE_NVRAM=y
-CONFIG_HOSTAP_PLX=m
-CONFIG_HOSTAP_PCI=m
-CONFIG_BCM43XX=m
-CONFIG_BCM43XX_DEBUG=y
-CONFIG_BCM43XX_DMA=y
-CONFIG_BCM43XX_PIO=y
-CONFIG_BCM43XX_DMA_AND_PIO_MODE=y
-# CONFIG_BCM43XX_DMA_MODE is not set
-# CONFIG_BCM43XX_PIO_MODE is not set
-CONFIG_ZD1211RW=m
-# CONFIG_ZD1211RW_DEBUG is not set
-
-#
-# USB Network Adapters
-#
-# CONFIG_USB_CATC is not set
-# CONFIG_USB_KAWETH is not set
-# CONFIG_USB_PEGASUS is not set
-# CONFIG_USB_RTL8150 is not set
-# CONFIG_USB_USBNET_MII is not set
-# CONFIG_USB_USBNET is not set
-# CONFIG_WAN is not set
-CONFIG_ATM_DRIVERS=y
-# CONFIG_ATM_DUMMY is not set
-# CONFIG_ATM_TCP is not set
-# CONFIG_ATM_LANAI is not set
-# CONFIG_ATM_ENI is not set
-# CONFIG_ATM_FIRESTREAM is not set
-# CONFIG_ATM_ZATM is not set
-# CONFIG_ATM_NICSTAR is not set
-# CONFIG_ATM_IDT77252 is not set
-# CONFIG_ATM_AMBASSADOR is not set
-# CONFIG_ATM_HORIZON is not set
-# CONFIG_ATM_IA is not set
-# CONFIG_ATM_FORE200E_MAYBE is not set
-# CONFIG_ATM_HE is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-CONFIG_PPP=m
-CONFIG_PPP_MULTILINK=y
-CONFIG_PPP_FILTER=y
-CONFIG_PPP_ASYNC=m
-CONFIG_PPP_SYNC_TTY=m
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-CONFIG_PPP_MPPE=m
-CONFIG_PPPOE=m
-CONFIG_PPPOATM=m
-CONFIG_PPPOL2TP=m
-# CONFIG_SLIP is not set
-CONFIG_SLHC=m
-# CONFIG_NET_FC is not set
-# CONFIG_SHAPER is not set
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-CONFIG_ISDN=m
-CONFIG_ISDN_I4L=m
-# CONFIG_ISDN_PPP is not set
-# CONFIG_ISDN_AUDIO is not set
-
-#
-# ISDN feature submodules
-#
-CONFIG_ISDN_DRV_LOOP=m
-CONFIG_ISDN_DIVERSION=m
-
-#
-# ISDN4Linux hardware drivers
-#
-
-#
-# Passive cards
-#
-CONFIG_ISDN_DRV_HISAX=m
-
-#
-# D-channel protocol features
-#
-CONFIG_HISAX_EURO=y
-CONFIG_DE_AOC=y
-# CONFIG_HISAX_NO_SENDCOMPLETE is not set
-# CONFIG_HISAX_NO_LLC is not set
-# CONFIG_HISAX_NO_KEYPAD is not set
-CONFIG_HISAX_1TR6=y
-CONFIG_HISAX_NI1=y
-CONFIG_HISAX_MAX_CARDS=8
-
-#
-# HiSax supported cards
-#
-CONFIG_HISAX_16_3=y
-CONFIG_HISAX_S0BOX=y
-CONFIG_HISAX_FRITZPCI=y
-CONFIG_HISAX_AVM_A1_PCMCIA=y
-CONFIG_HISAX_ELSA=y
-CONFIG_HISAX_DIEHLDIVA=y
-CONFIG_HISAX_SEDLBAUER=y
-CONFIG_HISAX_NICCY=y
-CONFIG_HISAX_BKM_A4T=y
-CONFIG_HISAX_SCT_QUADRO=y
-CONFIG_HISAX_GAZEL=y
-CONFIG_HISAX_W6692=y
-CONFIG_HISAX_HFC_SX=y
-# CONFIG_HISAX_DEBUG is not set
-
-#
-# HiSax PCMCIA card service modules
-#
-
-#
-# HiSax sub driver modules
-#
-CONFIG_HISAX_ST5481=m
-CONFIG_HISAX_HFCUSB=m
-CONFIG_HISAX_HFC4S8S=m
-CONFIG_HISAX_FRITZ_PCIPNP=m
-CONFIG_HISAX_HDLC=y
-
-#
-# Active cards
-#
-CONFIG_HYSDN=m
-CONFIG_HYSDN_CAPI=y
-CONFIG_ISDN_DRV_GIGASET=m
-CONFIG_GIGASET_BASE=m
-CONFIG_GIGASET_M105=m
-CONFIG_GIGASET_M101=m
-# CONFIG_GIGASET_DEBUG is not set
-CONFIG_GIGASET_UNDOCREQ=y
-CONFIG_ISDN_CAPI=m
-CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
-CONFIG_CAPI_TRACE=y
-# CONFIG_ISDN_CAPI_MIDDLEWARE is not set
-CONFIG_ISDN_CAPI_CAPI20=m
-# CONFIG_ISDN_CAPI_CAPIDRV is not set
-
-#
-# CAPI hardware drivers
-#
-CONFIG_CAPI_AVM=y
-CONFIG_ISDN_DRV_AVMB1_B1PCI=m
-# CONFIG_ISDN_DRV_AVMB1_B1PCIV4 is not set
-CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m
-CONFIG_ISDN_DRV_AVMB1_T1PCI=m
-CONFIG_ISDN_DRV_AVMB1_C4=m
-CONFIG_CAPI_EICON=y
-CONFIG_ISDN_DIVAS=m
-CONFIG_ISDN_DIVAS_BRIPCI=y
-CONFIG_ISDN_DIVAS_PRIPCI=y
-CONFIG_ISDN_DIVAS_DIVACAPI=m
-CONFIG_ISDN_DIVAS_USERIDI=m
-CONFIG_ISDN_DIVAS_MAINT=m
-# CONFIG_PHONE is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-# CONFIG_INPUT_FF_MEMLESS is not set
-# CONFIG_INPUT_POLLDEV is not set
-
-#
-# Userland interfaces
-#
-# CONFIG_INPUT_MOUSEDEV is not set
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-# CONFIG_INPUT_EVDEV is not set
-# CONFIG_INPUT_EVBUG is not set
-
-#
-# Input Device Drivers
-#
-# CONFIG_INPUT_KEYBOARD is not set
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TABLET is not set
-# CONFIG_INPUT_TOUCHSCREEN is not set
-# CONFIG_INPUT_MISC is not set
-
-#
-# Hardware I/O ports
-#
-# CONFIG_SERIO is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-# CONFIG_VT is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_SERIAL_8250_PCI=y
-CONFIG_SERIAL_8250_NR_UARTS=4
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-# CONFIG_SERIAL_8250_EXTENDED is not set
-
-#
-# Non-8250 serial port support
-#
-# CONFIG_SERIAL_UARTLITE is not set
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-# CONFIG_SERIAL_JSM is not set
-# CONFIG_SERIAL_OF_PLATFORM is not set
-CONFIG_UNIX98_PTYS=y
-CONFIG_LEGACY_PTYS=y
-CONFIG_LEGACY_PTY_COUNT=256
-# CONFIG_IPMI_HANDLER is not set
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-
-#
-# Watchdog Device Drivers
-#
-# CONFIG_SOFT_WATCHDOG is not set
-CONFIG_83xx_WDT=y
-
-#
-# PCI-based Watchdog Cards
-#
-# CONFIG_PCIPCWATCHDOG is not set
-# CONFIG_WDTPCI is not set
-
-#
-# USB-based Watchdog Cards
-#
-# CONFIG_USBPCWATCHDOG is not set
-CONFIG_HW_RANDOM=y
-# CONFIG_NVRAM is not set
-# CONFIG_GEN_RTC is not set
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-# CONFIG_AGP is not set
-# CONFIG_DRM is not set
-# CONFIG_RAW_DRIVER is not set
-# CONFIG_TCG_TPM is not set
-CONFIG_DEVPORT=y
-CONFIG_I2C=y
-CONFIG_I2C_BOARDINFO=y
-CONFIG_I2C_CHARDEV=y
-
-#
-# I2C Algorithms
-#
-# CONFIG_I2C_ALGOBIT is not set
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
-
-#
-# I2C Hardware Bus support
-#
-# CONFIG_I2C_ALI1535 is not set
-# CONFIG_I2C_ALI1563 is not set
-# CONFIG_I2C_ALI15X3 is not set
-# CONFIG_I2C_AMD756 is not set
-# CONFIG_I2C_AMD8111 is not set
-# CONFIG_I2C_I801 is not set
-# CONFIG_I2C_I810 is not set
-# CONFIG_I2C_PIIX4 is not set
-CONFIG_I2C_MPC=y
-# CONFIG_I2C_NFORCE2 is not set
-# CONFIG_I2C_OCORES is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_PROSAVAGE is not set
-# CONFIG_I2C_SAVAGE4 is not set
-# CONFIG_I2C_SIMTEC is not set
-# CONFIG_I2C_SIS5595 is not set
-# CONFIG_I2C_SIS630 is not set
-# CONFIG_I2C_SIS96X is not set
-# CONFIG_I2C_TAOS_EVM is not set
-# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_TINY_USB is not set
-# CONFIG_I2C_VIA is not set
-# CONFIG_I2C_VIAPRO is not set
-# CONFIG_I2C_VOODOO3 is not set
-
-#
-# Miscellaneous I2C Chip support
-#
-# CONFIG_SENSORS_DS1337 is not set
-# CONFIG_SENSORS_DS1374 is not set
-# CONFIG_DS1682 is not set
-# CONFIG_SENSORS_EEPROM is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_M41T00 is not set
-# CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_SENSORS_TSL2550 is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-#
-# SPI support
-#
-CONFIG_SPI=y
-CONFIG_SPI_MASTER=y
-
-#
-# SPI Master Controller Drivers
-#
-CONFIG_SPI_BITBANG=y
-CONFIG_SPI_MPC83xx=y
-
-#
-# SPI Protocol Masters
-#
-CONFIG_SPI_AT25=m
-CONFIG_SPI_SPIDEV=m
-CONFIG_SPI_TLE62X0=m
-# CONFIG_W1 is not set
-# CONFIG_POWER_SUPPLY is not set
-CONFIG_HWMON=y
-# CONFIG_HWMON_VID is not set
-# CONFIG_SENSORS_ABITUGURU is not set
-# CONFIG_SENSORS_ABITUGURU3 is not set
-# CONFIG_SENSORS_AD7418 is not set
-# CONFIG_SENSORS_ADM1021 is not set
-# CONFIG_SENSORS_ADM1025 is not set
-# CONFIG_SENSORS_ADM1026 is not set
-# CONFIG_SENSORS_ADM1029 is not set
-# CONFIG_SENSORS_ADM1031 is not set
-# CONFIG_SENSORS_ADM9240 is not set
-# CONFIG_SENSORS_ASB100 is not set
-# CONFIG_SENSORS_ATXP1 is not set
-# CONFIG_SENSORS_DS1621 is not set
-# CONFIG_SENSORS_F71805F is not set
-# CONFIG_SENSORS_FSCHER is not set
-# CONFIG_SENSORS_FSCPOS is not set
-# CONFIG_SENSORS_GL518SM is not set
-# CONFIG_SENSORS_GL520SM is not set
-# CONFIG_SENSORS_IT87 is not set
-# CONFIG_SENSORS_LM63 is not set
-# CONFIG_SENSORS_LM70 is not set
-CONFIG_SENSORS_LM75=m
-# CONFIG_SENSORS_LM77 is not set
-# CONFIG_SENSORS_LM78 is not set
-# CONFIG_SENSORS_LM80 is not set
-# CONFIG_SENSORS_LM83 is not set
-# CONFIG_SENSORS_LM85 is not set
-# CONFIG_SENSORS_LM87 is not set
-# CONFIG_SENSORS_LM90 is not set
-# CONFIG_SENSORS_LM92 is not set
-# CONFIG_SENSORS_LM93 is not set
-# CONFIG_SENSORS_MAX1619 is not set
-# CONFIG_SENSORS_MAX6650 is not set
-# CONFIG_SENSORS_PC87360 is not set
-# CONFIG_SENSORS_PC87427 is not set
-# CONFIG_SENSORS_SIS5595 is not set
-# CONFIG_SENSORS_DME1737 is not set
-# CONFIG_SENSORS_SMSC47M1 is not set
-# CONFIG_SENSORS_SMSC47M192 is not set
-# CONFIG_SENSORS_SMSC47B397 is not set
-# CONFIG_SENSORS_THMC50 is not set
-# CONFIG_SENSORS_VIA686A is not set
-# CONFIG_SENSORS_VT1211 is not set
-# CONFIG_SENSORS_VT8231 is not set
-# CONFIG_SENSORS_W83781D is not set
-# CONFIG_SENSORS_W83791D is not set
-# CONFIG_SENSORS_W83792D is not set
-# CONFIG_SENSORS_W83793 is not set
-# CONFIG_SENSORS_W83L785TS is not set
-# CONFIG_SENSORS_W83627HF is not set
-# CONFIG_SENSORS_W83627EHF is not set
-# CONFIG_HWMON_DEBUG_CHIP is not set
-
-#
-# Multifunction device drivers
-#
-# CONFIG_MFD_SM501 is not set
-
-#
-# Multimedia devices
-#
-# CONFIG_VIDEO_DEV is not set
-# CONFIG_DVB_CORE is not set
-CONFIG_DAB=y
-# CONFIG_USB_DABUSB is not set
-
-#
-# Graphics support
-#
-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
-
-#
-# Display device support
-#
-# CONFIG_DISPLAY_SUPPORT is not set
-# CONFIG_VGASTATE is not set
-CONFIG_VIDEO_OUTPUT_CONTROL=m
-# CONFIG_FB is not set
-# CONFIG_FB_IBM_GXT4500 is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=m
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=m
-CONFIG_SND_TIMER=m
-CONFIG_SND_PCM=m
-CONFIG_SND_HWDEP=m
-CONFIG_SND_RAWMIDI=m
-# CONFIG_SND_SEQUENCER is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-CONFIG_SND_PCM_OSS_PLUGINS=y
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-#
-# Generic devices
-#
-# CONFIG_SND_DUMMY is not set
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-
-#
-# PCI devices
-#
-# CONFIG_SND_AD1889 is not set
-# CONFIG_SND_ALS300 is not set
-# CONFIG_SND_ALS4000 is not set
-# CONFIG_SND_ALI5451 is not set
-# CONFIG_SND_ATIIXP is not set
-# CONFIG_SND_ATIIXP_MODEM is not set
-# CONFIG_SND_AU8810 is not set
-# CONFIG_SND_AU8820 is not set
-# CONFIG_SND_AU8830 is not set
-# CONFIG_SND_AZT3328 is not set
-# CONFIG_SND_BT87X is not set
-# CONFIG_SND_CA0106 is not set
-# CONFIG_SND_CMIPCI is not set
-# CONFIG_SND_CS4281 is not set
-# CONFIG_SND_CS46XX is not set
-# CONFIG_SND_CS5530 is not set
-# CONFIG_SND_DARLA20 is not set
-# CONFIG_SND_GINA20 is not set
-# CONFIG_SND_LAYLA20 is not set
-# CONFIG_SND_DARLA24 is not set
-# CONFIG_SND_GINA24 is not set
-# CONFIG_SND_LAYLA24 is not set
-# CONFIG_SND_MONA is not set
-# CONFIG_SND_MIA is not set
-# CONFIG_SND_ECHO3G is not set
-# CONFIG_SND_INDIGO is not set
-# CONFIG_SND_INDIGOIO is not set
-# CONFIG_SND_INDIGODJ is not set
-# CONFIG_SND_EMU10K1 is not set
-# CONFIG_SND_EMU10K1X is not set
-# CONFIG_SND_ENS1370 is not set
-# CONFIG_SND_ENS1371 is not set
-# CONFIG_SND_ES1938 is not set
-# CONFIG_SND_ES1968 is not set
-# CONFIG_SND_FM801 is not set
-# CONFIG_SND_HDA_INTEL is not set
-# CONFIG_SND_HDSP is not set
-# CONFIG_SND_HDSPM is not set
-# CONFIG_SND_ICE1712 is not set
-# CONFIG_SND_ICE1724 is not set
-# CONFIG_SND_INTEL8X0 is not set
-# CONFIG_SND_INTEL8X0M is not set
-# CONFIG_SND_KORG1212 is not set
-# CONFIG_SND_MAESTRO3 is not set
-# CONFIG_SND_MIXART is not set
-# CONFIG_SND_NM256 is not set
-# CONFIG_SND_PCXHR is not set
-# CONFIG_SND_RIPTIDE is not set
-# CONFIG_SND_RME32 is not set
-# CONFIG_SND_RME96 is not set
-# CONFIG_SND_RME9652 is not set
-# CONFIG_SND_SONICVIBES is not set
-# CONFIG_SND_TRIDENT is not set
-# CONFIG_SND_VIA82XX is not set
-# CONFIG_SND_VIA82XX_MODEM is not set
-# CONFIG_SND_VX222 is not set
-# CONFIG_SND_YMFPCI is not set
-
-#
-# ALSA PowerMac devices
-#
-
-#
-# ALSA PowerPC devices
-#
-
-#
-# USB devices
-#
-CONFIG_SND_USB_AUDIO=m
-# CONFIG_SND_USB_USX2Y is not set
-# CONFIG_SND_USB_CAIAQ is not set
-
-#
-# System on Chip audio support
-#
-# CONFIG_SND_SOC is not set
-
-#
-# SoC Audio support for SuperH
-#
-
-#
-# Open Sound System
-#
-# CONFIG_SOUND_PRIME is not set
-CONFIG_HID_SUPPORT=y
-CONFIG_HID=y
-# CONFIG_HID_DEBUG is not set
-
-#
-# USB Input Devices
-#
-# CONFIG_USB_HID is not set
-
-#
-# USB HID Boot Protocol drivers
-#
-# CONFIG_USB_KBD is not set
-# CONFIG_USB_MOUSE is not set
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB_ARCH_HAS_EHCI=y
-CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-CONFIG_USB_DEVICE_CLASS=y
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-CONFIG_USB_EHCI_HCD=y
-CONFIG_USB_EHCI_SPLIT_ISO=y
-CONFIG_USB_EHCI_ROOT_HUB_TT=y
-# CONFIG_USB_EHCI_TT_NEWSCHED is not set
-CONFIG_USB_EHCI_FSL=y
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_OHCI_HCD=y
-CONFIG_USB_OHCI_HCD_PPC_OF=y
-CONFIG_USB_OHCI_HCD_PPC_OF_BE=y
-# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set
-CONFIG_USB_OHCI_HCD_PCI=y
-CONFIG_USB_OHCI_BIG_ENDIAN_DESC=y
-CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-CONFIG_USB_UHCI_HCD=y
-# CONFIG_USB_SL811_HCD is not set
-# CONFIG_USB_R8A66597_HCD is not set
-
-#
-# USB Device Class drivers
-#
-# CONFIG_USB_ACM is not set
-# CONFIG_USB_PRINTER is not set
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# may also be needed; see USB_STORAGE Help for more information
-#
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_STORAGE_ALAUDA is not set
-# CONFIG_USB_STORAGE_KARMA is not set
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Imaging devices
-#
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_MICROTEK is not set
-CONFIG_USB_MON=y
-
-#
-# USB port drivers
-#
-
-#
-# USB Serial Converter support
-#
-# CONFIG_USB_SERIAL is not set
-
-#
-# USB Miscellaneous drivers
-#
-# CONFIG_USB_EMI62 is not set
-# CONFIG_USB_EMI26 is not set
-# CONFIG_USB_ADUTUX is not set
-# CONFIG_USB_AUERSWALD is not set
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_LEGOTOWER is not set
-# CONFIG_USB_LCD is not set
-# CONFIG_USB_BERRY_CHARGE is not set
-# CONFIG_USB_LED is not set
-# CONFIG_USB_CYPRESS_CY7C63 is not set
-# CONFIG_USB_CYTHERM is not set
-# CONFIG_USB_PHIDGET is not set
-# CONFIG_USB_IDMOUSE is not set
-# CONFIG_USB_FTDI_ELAN is not set
-# CONFIG_USB_APPLEDISPLAY is not set
-# CONFIG_USB_SISUSBVGA is not set
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TRANCEVIBRATOR is not set
-# CONFIG_USB_IOWARRIOR is not set
-# CONFIG_USB_TEST is not set
-
-#
-# USB DSL modem support
-#
-# CONFIG_USB_ATM is not set
-
-#
-# USB Gadget Support
-#
-CONFIG_USB_GADGET=y
-# CONFIG_USB_GADGET_DEBUG_FILES is not set
-CONFIG_USB_GADGET_SELECTED=y
-# CONFIG_USB_GADGET_AMD5536UDC is not set
-# CONFIG_USB_GADGET_FSL_USB2 is not set
-CONFIG_USB_GADGET_NET2280=y
-CONFIG_USB_NET2280=y
-# CONFIG_USB_GADGET_PXA2XX is not set
-# CONFIG_USB_GADGET_M66592 is not set
-# CONFIG_USB_GADGET_GOKU is not set
-# CONFIG_USB_GADGET_LH7A40X is not set
-# CONFIG_USB_GADGET_OMAP is not set
-# CONFIG_USB_GADGET_S3C2410 is not set
-# CONFIG_USB_GADGET_AT91 is not set
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
-CONFIG_USB_GADGET_DUALSPEED=y
-# CONFIG_USB_ZERO is not set
-CONFIG_USB_ETH=y
-CONFIG_USB_ETH_RNDIS=y
-# CONFIG_USB_GADGETFS is not set
-# CONFIG_USB_FILE_STORAGE is not set
-# CONFIG_USB_G_SERIAL is not set
-# CONFIG_USB_MIDI_GADGET is not set
-CONFIG_MMC=m
-# CONFIG_MMC_DEBUG is not set
-# CONFIG_MMC_UNSAFE_RESUME is not set
-
-#
-# MMC/SD Card Drivers
-#
-CONFIG_MMC_BLOCK=m
-CONFIG_MMC_BLOCK_BOUNCE=y
-
-#
-# MMC/SD Host Controller Drivers
-#
-# CONFIG_MMC_SDHCI is not set
-# CONFIG_MMC_WBSD is not set
-# CONFIG_MMC_TIFM_SD is not set
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-
-#
-# LED drivers
-#
-CONFIG_LEDS_MPC8313E_RDB=y
-
-#
-# LED Triggers
-#
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=m
-CONFIG_LEDS_TRIGGER_HEARTBEAT=m
-CONFIG_LEDS_TRIGGER_CPU_ACTIVITY=m
-# CONFIG_INFINIBAND is not set
-# CONFIG_EDAC is not set
-CONFIG_RTC_LIB=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-# CONFIG_RTC_DEBUG is not set
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-CONFIG_RTC_INTF_DEV_UIE_EMUL=y
-# CONFIG_RTC_DRV_TEST is not set
-
-#
-# I2C RTC drivers
-#
-CONFIG_RTC_DRV_DS1307=y
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_MAX6900 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-# CONFIG_RTC_DRV_ISL1208 is not set
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_PCF8583 is not set
-# CONFIG_RTC_DRV_M41T80 is not set
-
-#
-# SPI RTC drivers
-#
-# CONFIG_RTC_DRV_RS5C348 is not set
-# CONFIG_RTC_DRV_MAX6902 is not set
-
-#
-# Platform RTC drivers
-#
-# CONFIG_RTC_DRV_CMOS is not set
-# CONFIG_RTC_DRV_DS1553 is not set
-# CONFIG_RTC_DRV_STK17TA8 is not set
-# CONFIG_RTC_DRV_DS1742 is not set
-# CONFIG_RTC_DRV_M48T86 is not set
-# CONFIG_RTC_DRV_M48T59 is not set
-# CONFIG_RTC_DRV_V3020 is not set
-
-#
-# on-CPU RTC drivers
-#
-
-#
-# DMA Engine support
-#
-CONFIG_DMA_ENGINE=y
-
-#
-# DMA Clients
-#
-CONFIG_NET_DMA=y
-
-#
-# DMA Devices
-#
-CONFIG_INTEL_IOATDMA=y
-
-#
-# Userspace I/O
-#
-CONFIG_UIO=m
-CONFIG_UIO_CIF=m
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=y
-CONFIG_EXT3_FS_XATTR=y
-# CONFIG_EXT3_FS_POSIX_ACL is not set
-# CONFIG_EXT3_FS_SECURITY is not set
-# CONFIG_EXT4DEV_FS is not set
-CONFIG_JBD=y
-# CONFIG_JBD_DEBUG is not set
-CONFIG_FS_MBCACHE=y
-# 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_GFS2_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-CONFIG_INOTIFY_USER=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-CONFIG_AUTOFS4_FS=y
-# CONFIG_FUSE_FS is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-# CONFIG_ISO9660_FS is not set
-# CONFIG_UDF_FS is not set
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=y
-CONFIG_MSDOS_FS=y
-CONFIG_VFAT_FS=y
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-CONFIG_NTFS_FS=m
-# CONFIG_NTFS_DEBUG is not set
-CONFIG_NTFS_RW=y
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_KCORE=y
-CONFIG_PROC_SYSCTL=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_TMPFS_POSIX_ACL is not set
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-# CONFIG_JFFS2_SUMMARY is not set
-# CONFIG_JFFS2_FS_XATTR is not set
-# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_RTIME=y
-# CONFIG_JFFS2_RUBIN is not set
-CONFIG_CRAMFS=y
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
-CONFIG_NFS_FS=y
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
-CONFIG_NFS_V4=y
-# CONFIG_NFS_DIRECTIO is not set
-CONFIG_NFSD=m
-# CONFIG_NFSD_V3 is not set
-CONFIG_NFSD_TCP=y
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
-CONFIG_LOCKD_V4=y
-CONFIG_EXPORTFS=m
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
-CONFIG_SUNRPC_GSS=y
-# CONFIG_SUNRPC_BIND34 is not set
-CONFIG_RPCSEC_GSS_KRB5=y
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=m
-# CONFIG_SMB_NLS_DEFAULT is not set
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_WEAK_PW_HASH is not set
-# CONFIG_CIFS_XATTR is not set
-# CONFIG_CIFS_DEBUG2 is not set
-# CONFIG_CIFS_EXPERIMENTAL is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-CONFIG_LDM_PARTITION=y
-# CONFIG_LDM_DEBUG is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-# CONFIG_SYSV68_PARTITION is not set
-
-#
-# Native Language Support
-#
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="iso8859-1"
-CONFIG_NLS_CODEPAGE_437=y
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-# CONFIG_NLS_CODEPAGE_850 is not set
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_936 is not set
-# CONFIG_NLS_CODEPAGE_950 is not set
-CONFIG_NLS_CODEPAGE_932=y
-# CONFIG_NLS_CODEPAGE_949 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-CONFIG_NLS_ISO8859_8=y
-# CONFIG_NLS_CODEPAGE_1250 is not set
-# CONFIG_NLS_CODEPAGE_1251 is not set
-# CONFIG_NLS_ASCII is not set
-CONFIG_NLS_ISO8859_1=y
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_13 is not set
-# CONFIG_NLS_ISO8859_14 is not set
-# CONFIG_NLS_ISO8859_15 is not set
-# CONFIG_NLS_KOI8_R is not set
-# CONFIG_NLS_KOI8_U is not set
-# CONFIG_NLS_UTF8 is not set
-
-#
-# Distributed Lock Manager
-#
-# CONFIG_DLM is not set
-# CONFIG_UCC_SLOW is not set
-
-#
-# Library routines
-#
-CONFIG_BITREVERSE=y
-CONFIG_CRC_CCITT=m
-CONFIG_CRC16=m
-CONFIG_CRC_ITU_T=m
-CONFIG_CRC32=y
-CONFIG_CRC7=m
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_TEXTSEARCH=y
-CONFIG_TEXTSEARCH_KMP=m
-CONFIG_TEXTSEARCH_BM=m
-CONFIG_TEXTSEARCH_FSM=m
-CONFIG_PLIST=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HAS_DMA=y
-
-#
-# Instrumentation Support
-#
-CONFIG_PROFILING=y
-CONFIG_OPROFILE=m
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_ENABLE_MUST_CHECK=y
-# CONFIG_MAGIC_SYSRQ is not set
-# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_HEADERS_CHECK is not set
-# CONFIG_DEBUG_KERNEL is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-# CONFIG_PPC_EARLY_DEBUG is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_ALGAPI=y
-CONFIG_CRYPTO_ABLKCIPHER=m
-CONFIG_CRYPTO_BLKCIPHER=y
-CONFIG_CRYPTO_HASH=m
-CONFIG_CRYPTO_MANAGER=y
-CONFIG_CRYPTO_HMAC=m
-CONFIG_CRYPTO_XCBC=m
-CONFIG_CRYPTO_NULL=m
-CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=y
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
-CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_WP512=m
-CONFIG_CRYPTO_TGR192=m
-CONFIG_CRYPTO_GF128MUL=m
-CONFIG_CRYPTO_ECB=m
-CONFIG_CRYPTO_CBC=y
-CONFIG_CRYPTO_PCBC=m
-CONFIG_CRYPTO_LRW=m
-CONFIG_CRYPTO_CRYPTD=m
-CONFIG_CRYPTO_DES=y
-CONFIG_CRYPTO_FCRYPT=m
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_TWOFISH_COMMON=m
-CONFIG_CRYPTO_SERPENT=m
-CONFIG_CRYPTO_AES=m
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_ANUBIS=m
-CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_MICHAEL_MIC=m
-CONFIG_CRYPTO_CRC32C=m
-CONFIG_CRYPTO_CAMELLIA=m
-CONFIG_CRYPTO_TEST=m
-CONFIG_CRYPTO_HW=y
diff --git a/packages/linux/linux-2.6.23/mpc8313e-rdb/mpc8313e-rdb-leds.patch b/packages/linux/linux-2.6.23/mpc8313e-rdb/mpc8313e-rdb-leds.patch
deleted file mode 100644
index 1116ce3998..0000000000
--- a/packages/linux/linux-2.6.23/mpc8313e-rdb/mpc8313e-rdb-leds.patch
+++ /dev/null
@@ -1,202 +0,0 @@
-diff -urN linux-2.6.23.orig/drivers/leds/Kconfig linux-2.6.23/drivers/leds/Kconfig
---- linux-2.6.23.orig/drivers/leds/Kconfig 2007-10-09 22:31:38.000000000 +0200
-+++ linux-2.6.23/drivers/leds/Kconfig 2007-12-14 15:32:37.000000000 +0100
-@@ -101,6 +101,12 @@
- outputs. To be useful the particular board must have LEDs
- and they must be connected to the GPIO lines.
-
-+config LEDS_MPC8313E_RDB
-+ tristate "LED Support for MPC8313E-RDB LEDs"
-+ depends on LEDS_CLASS && PPC_83xx
-+ help
-+ This option enables support for the LEDs on MPC8313E-RDB board.
-+
- comment "LED Triggers"
-
- config LEDS_TRIGGERS
-diff -urN linux-2.6.23.orig/drivers/leds/leds-mpc8313e-rdb.c linux-2.6.23/drivers/leds/leds-mpc8313e-rdb.c
---- linux-2.6.23.orig/drivers/leds/leds-mpc8313e-rdb.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.23/drivers/leds/leds-mpc8313e-rdb.c 2007-12-14 15:32:55.000000000 +0100
-@@ -0,0 +1,171 @@
-+/*
-+ * drivers/leds/leds-mpc8313e-rdb.c
-+ * Copyright (C) 2007 Jeremy Laine <jeremy.laine@bolloretelecom.eu>
-+ * Copyright (C) 2007 Leon Woestenberg <leon@sidebranch.com>
-+ *
-+ * This file is subject to the terms and conditions of the GNU General Public
-+ * License. See the file COPYING in the main directory of this archive for
-+ * more details.
-+ *
-+ * MPC8313E-RDB LEDs driver
-+ *
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/platform_device.h>
-+#include <linux/ioport.h>
-+#include <linux/leds.h>
-+#include <linux/err.h>
-+#include <asm/io.h>
-+
-+#define LEDS_BASE 0xfa000000
-+#define LEDS_SIZE 0x2
-+
-+static struct platform_device *leds_pdev = NULL;
-+static struct resource *led_mem = NULL;
-+static void *led_io = NULL;
-+static u8 led_state = 0xff;
-+
-+struct mpc8313_led {
-+ struct led_classdev cdev;
-+ u8 bitmask;
-+};
-+
-+static void mpc8313leds_set(struct led_classdev *led_cdev, enum led_brightness value)
-+{
-+ struct mpc8313_led *led_dev = container_of(led_cdev, struct mpc8313_led, cdev);
-+ if (value)
-+ led_state &= ~led_dev->bitmask;
-+ else
-+ led_state |= led_dev->bitmask;
-+ iowrite8(led_state, led_io);
-+}
-+
-+static struct mpc8313_led mpc8313_leds[] = {
-+ {
-+ .cdev = {
-+ .name = "mpc8313:led0",
-+ .brightness_set = mpc8313leds_set,
-+ },
-+ .bitmask = 1,
-+ },
-+ {
-+ .cdev = {
-+ .name = "mpc8313:led1",
-+ .brightness_set = mpc8313leds_set,
-+ },
-+ .bitmask = 2,
-+ },
-+ {
-+ .cdev = {
-+ .name = "mpc8313:led2",
-+ .brightness_set = mpc8313leds_set,
-+ },
-+ .bitmask = 4,
-+ },
-+ {
-+ .cdev = {
-+ .name = "mpc8313:led3",
-+ .brightness_set = mpc8313leds_set,
-+ },
-+ .bitmask = 8,
-+ },
-+ {
-+ .cdev = {
-+ .name = "mpc8313:led4",
-+ .brightness_set = mpc8313leds_set,
-+ },
-+ .bitmask = 16,
-+ },
-+ {
-+ .cdev = {
-+ .name = "mpc8313:led5",
-+ .brightness_set = mpc8313leds_set,
-+ },
-+ .bitmask = 32,
-+ },
-+ {
-+ .cdev = {
-+ .name = "mpc8313:led6",
-+ .brightness_set = mpc8313leds_set,
-+ },
-+ .bitmask = 64,
-+ },
-+ {
-+ .cdev = {
-+ .name = "mpc8313:led7",
-+ .brightness_set = mpc8313leds_set,
-+ },
-+ .bitmask = 128,
-+ },
-+};
-+
-+static int mpc8313leds_probe(struct platform_device *pdev)
-+{
-+ int i;
-+ int ret;
-+
-+ for (i = ret = 0; ret >= 0 && i < ARRAY_SIZE(mpc8313_leds); i++) {
-+ ret = led_classdev_register(&pdev->dev,
-+ &mpc8313_leds[i].cdev);
-+ }
-+
-+ if (ret < 0 && i > 1) {
-+ for (i = i - 2; i >= 0; i--)
-+ led_classdev_unregister(&mpc8313_leds[i].cdev);
-+ }
-+
-+ return ret;
-+}
-+
-+static int mpc8313leds_remove(struct platform_device *pdev)
-+{
-+ int i;
-+
-+ for (i = ARRAY_SIZE(mpc8313_leds) - 1; i >= 0; i--)
-+ led_classdev_unregister(&mpc8313_leds[i].cdev);
-+
-+ return 0;
-+}
-+
-+static struct platform_driver mpc8313leds_driver = {
-+ .driver = {
-+ .name = "mpc8313-leds",
-+ .owner = THIS_MODULE,
-+ },
-+ .probe = mpc8313leds_probe,
-+ .remove = mpc8313leds_remove,
-+};
-+
-+static int __init mpc8313leds_init(void)
-+{
-+ if (!(led_mem = request_mem_region(LEDS_BASE, LEDS_SIZE, "mpc8313-leds")))
-+ return -ENOMEM;
-+ if (!(led_io = ioremap(LEDS_BASE, LEDS_SIZE)))
-+ {
-+ release_mem_region(LEDS_BASE, LEDS_SIZE);
-+ led_mem = NULL;
-+ return -ENOMEM;
-+ }
-+ iowrite8(led_state, led_io);
-+
-+ leds_pdev = platform_device_register_simple("mpc8313-leds", -1, NULL, 0);
-+
-+ return platform_driver_register(&mpc8313leds_driver);
-+}
-+
-+static void __exit mpc8313leds_exit(void)
-+{
-+ if (led_mem) release_mem_region(LEDS_BASE, LEDS_SIZE);
-+ led_mem = NULL;
-+ platform_driver_unregister(&mpc8313leds_driver);
-+
-+ platform_device_unregister(leds_pdev);
-+}
-+
-+module_init(mpc8313leds_init);
-+module_exit(mpc8313leds_exit);
-+
-+MODULE_AUTHOR("Jeremy Laine <jeremy.laine@bolloretelecom.eu>");
-+MODULE_DESCRIPTION("MPC8313E-RDB LED driver");
-+MODULE_LICENSE("GPL");
-diff -urN linux-2.6.23.orig/drivers/leds/Makefile linux-2.6.23/drivers/leds/Makefile
---- linux-2.6.23.orig/drivers/leds/Makefile 2007-10-09 22:31:38.000000000 +0200
-+++ linux-2.6.23/drivers/leds/Makefile 2007-12-14 15:32:37.000000000 +0100
-@@ -17,6 +17,7 @@
- obj-$(CONFIG_LEDS_H1940) += leds-h1940.o
- obj-$(CONFIG_LEDS_COBALT) += leds-cobalt.o
- obj-$(CONFIG_LEDS_GPIO) += leds-gpio.o
-+obj-$(CONFIG_LEDS_MPC8313E_RDB) += leds-mpc8313e-rdb.o
-
- # LED Triggers
- obj-$(CONFIG_LEDS_TRIGGER_TIMER) += ledtrig-timer.o
diff --git a/packages/linux/linux-2.6.23/mpc8313e-rdb/mpc8313e-rdb-rtc.patch b/packages/linux/linux-2.6.23/mpc8313e-rdb/mpc8313e-rdb-rtc.patch
deleted file mode 100644
index 4177a3d4a9..0000000000
--- a/packages/linux/linux-2.6.23/mpc8313e-rdb/mpc8313e-rdb-rtc.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-diff -urN linux-2.6.23.orig/arch/powerpc/boot/dts/mpc8313erdb.dts linux-2.6.23/arch/powerpc/boot/dts/mpc8313erdb.dts
---- linux-2.6.23.orig/arch/powerpc/boot/dts/mpc8313erdb.dts 2007-10-09 22:31:38.000000000 +0200
-+++ linux-2.6.23/arch/powerpc/boot/dts/mpc8313erdb.dts 2007-12-01 13:16:55.000000000 +0100
-@@ -54,12 +54,20 @@
- };
-
- i2c@3000 {
-+ #address-cells = <1>;
-+ #size-cells = <0>;
- device_type = "i2c";
- compatible = "fsl-i2c";
- reg = <3000 100>;
- interrupts = <e 8>;
- interrupt-parent = < &ipic >;
- dfsrr;
-+
-+ rtc@68 {
-+ device_type = "rtc";
-+ compatible = "dallas,ds1339";
-+ reg = <68>;
-+ };
- };
-
- i2c@3100 {
-diff -urN linux-2.6.23.orig/arch/powerpc/sysdev/fsl_soc.c linux-2.6.23/arch/powerpc/sysdev/fsl_soc.c
---- linux-2.6.23.orig/arch/powerpc/sysdev/fsl_soc.c 2007-10-09 22:31:38.000000000 +0200
-+++ linux-2.6.23/arch/powerpc/sysdev/fsl_soc.c 2007-12-01 13:08:30.000000000 +0100
-@@ -319,6 +319,12 @@
- {"ricoh,rs5c372b", "rtc-rs5c372", "rs5c372b",},
- {"ricoh,rv5c386", "rtc-rs5c372", "rv5c386",},
- {"ricoh,rv5c387a", "rtc-rs5c372", "rv5c387a",},
-+ {"dallas,ds1307", "rtc-ds1307", "ds1307",},
-+ {"dallas,ds1337", "rtc-ds1307", "ds1337",},
-+ {"dallas,ds1338", "rtc-ds1307", "ds1338",},
-+ {"dallas,ds1339", "rtc-ds1307", "ds1339",},
-+ {"dallas,ds1340", "rtc-ds1307", "ds1340",},
-+ {"stm,m41t00", "rtc-ds1307", "m41t00"},
- };
-
- static int __init of_find_i2c_driver(struct device_node *node, struct i2c_board_info *info)
diff --git a/packages/linux/linux-2.6.23/mpc8313e-rdb/mpc831x-nand.patch b/packages/linux/linux-2.6.23/mpc8313e-rdb/mpc831x-nand.patch
deleted file mode 100644
index efff29bca1..0000000000
--- a/packages/linux/linux-2.6.23/mpc8313e-rdb/mpc831x-nand.patch
+++ /dev/null
@@ -1,1807 +0,0 @@
-diff -urN linux-2.6.23.orig/arch/powerpc/boot/dts/mpc8313erdb.dts linux-2.6.23/arch/powerpc/boot/dts/mpc8313erdb.dts
---- linux-2.6.23.orig/arch/powerpc/boot/dts/mpc8313erdb.dts 2007-10-09 22:31:38.000000000 +0200
-+++ linux-2.6.23/arch/powerpc/boot/dts/mpc8313erdb.dts 2007-11-28 20:36:57.000000000 +0100
-@@ -37,6 +37,12 @@
- device_type = "memory";
- reg = <00000000 08000000>; // 128MB at 0
- };
-+
-+ nand0 {
-+ device_type = "nand";
-+ compatible = "fsl-nand";
-+ reg = <e2800000 00000200>;
-+ };
-
- soc8313@e0000000 {
- #address-cells = <1>;
-@@ -210,5 +216,15 @@
- built-in;
- device_type = "ipic";
- };
-+
-+ elbc@5000 {
-+ device_type = "elbc";
-+ compatible = "fsl-elbc";
-+ reg = <5000 1000>;
-+ interrupts = <4d 8>;
-+ interrupt-parent = < &ipic >;
-+ allow-direct-device-sleep;
-+ };
-+
- };
- };
-diff -urN linux-2.6.23.orig/arch/powerpc/sysdev/fsl_soc.c linux-2.6.23/arch/powerpc/sysdev/fsl_soc.c
---- linux-2.6.23.orig/arch/powerpc/sysdev/fsl_soc.c 2007-10-09 22:31:38.000000000 +0200
-+++ linux-2.6.23/arch/powerpc/sysdev/fsl_soc.c 2007-11-28 20:36:39.000000000 +0100
-@@ -6,6 +6,12 @@
- * 2006 (c) MontaVista Software, Inc.
- * Vitaly Bordug <vbordug@ru.mvista.com>
- *
-+ * Change log:
-+ * Copyright (C) 2006 Freescale Semiconductor, Inc.
-+ * 2006: Lo Wilson (r43300@freescale.com)
-+ * Added support for Enhanced Local Bus Controller
-+ * Added support for USB UTMI mode on-chip PHY
-+ *
- * 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
-@@ -27,6 +33,8 @@
- #include <linux/fsl_devices.h>
- #include <linux/fs_enet_pd.h>
- #include <linux/fs_uart_pd.h>
-+#include <linux/mtd/nand.h>
-+#include <linux/mtd/fsl_elbc.h>
-
- #include <asm/system.h>
- #include <asm/atomic.h>
-@@ -648,6 +656,75 @@
-
- arch_initcall(fsl_usb_of_init);
-
-+static int __init fsl_elbc_of_init(void)
-+{
-+ struct device_node *np;
-+ unsigned int i;
-+ struct platform_device *elbc_dev = NULL;
-+ struct platform_device *nand_dev = NULL;
-+ int ret;
-+
-+ /* find and register the enhanced local bus controller */
-+ for (np = NULL, i = 0;
-+ (np = of_find_compatible_node(np, "elbc", "fsl-elbc")) != NULL;
-+ i++) {
-+ struct resource r[2];
-+
-+ memset(&r, 0, sizeof(r));
-+
-+ ret = of_address_to_resource(np, 0, &r[0]);
-+ if (ret)
-+ goto err;
-+
-+ r[1].start = r[1].end = irq_of_parse_and_map(np, 0);
-+ r[1].flags = IORESOURCE_IRQ;
-+
-+ elbc_dev =
-+ platform_device_register_simple("fsl-elbc", i, r, 2);
-+ if (IS_ERR(elbc_dev)) {
-+ ret = PTR_ERR(elbc_dev);
-+ goto err;
-+ }
-+ }
-+
-+ /* find and register NAND memories if the eLBC was found */
-+ for (np = NULL, i = 0;
-+ elbc_dev &&
-+ (np = of_find_compatible_node(np, "nand", "fsl-nand")) != NULL;
-+ i++) {
-+ struct resource r;
-+ struct platform_fsl_nand_chip chip_data;
-+
-+ memset(&r, 0, sizeof(r));
-+ memset(&chip_data, 0, sizeof(chip_data));
-+
-+ ret = of_address_to_resource(np, 0, &r);
-+ if (ret)
-+ goto err;
-+
-+ nand_dev =
-+ platform_device_register_simple("fsl-nand", i, &r, 1);
-+ if (IS_ERR(nand_dev)) {
-+ ret = PTR_ERR(nand_dev);
-+ goto err;
-+ }
-+
-+ chip_data.name = get_property(np, "name", NULL);
-+ chip_data.partitions_str = get_property(np, "partitions", NULL);
-+
-+ ret = platform_device_add_data(nand_dev, &chip_data,
-+ sizeof(struct platform_fsl_nand_chip));
-+ if (ret)
-+ goto err;
-+ }
-+ return 0;
-+
-+err:
-+ return ret;
-+}
-+
-+arch_initcall(fsl_elbc_of_init);
-+
- #ifdef CONFIG_CPM2
-
- extern void init_scc_ioports(struct fs_uart_platform_info*);
-diff -urN linux-2.6.23.orig/drivers/mtd/nand/fsl_elbc.c linux-2.6.23/drivers/mtd/nand/fsl_elbc.c
---- linux-2.6.23.orig/drivers/mtd/nand/fsl_elbc.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.23/drivers/mtd/nand/fsl_elbc.c 2007-11-28 20:36:39.000000000 +0100
-@@ -0,0 +1,1325 @@
-+/* linux/drivers/mtd/nand/fsl_elbc.c
-+ *
-+ * Copyright (C) 2006 Freescale Semiconductor, Inc.
-+ *
-+ * Freescale Enhanced Local Bus Controller NAND driver
-+ *
-+ * Author: Nick Spence <Nick.Spence@freescale.com>
-+ * Maintainer: Tony Li <Tony.Li@freescale.com>
-+ *
-+ * Changelog:
-+ * 2006-12 Tony Li <Tony.Li@freescale.com>
-+ * Adopt to MPC8313ERDB board
-+ *
-+ * 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
-+*/
-+
-+//#ifdef CONFIG_MTD_NAND_DEBUG
-+//#define DEBUG
-+//#endif
-+//#define DEBUG
-+
-+#include <linux/module.h>
-+#include <linux/types.h>
-+#include <linux/init.h>
-+#include <linux/kernel.h>
-+#include <linux/string.h>
-+#include <linux/ioport.h>
-+#include <linux/platform_device.h>
-+#include <linux/delay.h>
-+#include <linux/err.h>
-+#include <linux/slab.h>
-+#include <linux/interrupt.h>
-+#include <linux/device.h>
-+#include <linux/fsl_devices.h>
-+
-+#include <linux/mtd/mtd.h>
-+#include <linux/mtd/nand.h>
-+#include <linux/mtd/nand_ecc.h>
-+#include <linux/mtd/partitions.h>
-+
-+#include <asm/io.h>
-+#include <asm/mpc83xx.h>
-+#include <linux/mtd/fsl_elbc.h>
-+
-+#define PFX "fsl-elbc: "
-+
-+#undef CFG_FCM_DEBUG
-+#define CFG_FCM_DEBUG_LVL 3
-+#ifdef CFG_FCM_DEBUG
-+static int fcm_debug_level = CFG_FCM_DEBUG_LVL;
-+#define FCM_DEBUG(n, args...) \
-+ do { \
-+ if (n <= fcm_debug_level) \
-+ printk(args); \
-+ } while(0)
-+#else /* CONFIG_FCM_DEBUG */
-+#define FCM_DEBUG(n, args...) do { } while(0)
-+#endif
-+
-+#define FCM_SIZE (8 * 1024)
-+
-+#define MAX_BANKS (8)
-+
-+/* use interrupt instead of busy waiting TODO */
-+#define FCM_USE_INTERRUPT
-+
-+#define MIN(x, y) ((x < y) ? x : y)
-+
-+#define ERR_BYTE 0xFF /* Value returned for read bytes when read failed */
-+
-+#define FCM_TIMEOUT_MSECS 100 /* Maximum number of mSecs to wait for FCM */
-+
-+
-+
-+struct fsl_elbc_ctrl;
-+
-+/* mtd information per set */
-+
-+struct fsl_elbc_mtd {
-+ struct mtd_info mtd;
-+ struct nand_chip chip;
-+ struct platform_fsl_nand_chip pl_chip;
-+ struct fsl_elbc_ctrl *ctrl;
-+
-+ struct device *device;
-+// int nr_chips; /* Number of chips in set */
-+// int nr_partitions; /* Number of partitions or 0 */
-+ char *name; /* Name of set (optional) */
-+ int *nr_map; /* Physical chip num (option)*/
-+// struct mtd_partition *partitions; /* MTD partition list (option*/
-+// struct nand_ecclayout *ecclayout;
-+ unsigned int options;
-+ struct resource *area;
-+ int bank; /* Chip select bank number */
-+ unsigned int pbase; /* Chip select base physical address */
-+ unsigned int vbase; /* Chip select base virtual address */
-+ int pgs; /* NAND page size (0=512, 1=2048) */
-+ unsigned int fmr; /* FCM Flash Mode Register value */
-+};
-+
-+/* overview of the fsl elbc controller */
-+
-+struct fsl_elbc_ctrl {
-+ struct nand_hw_control controller;
-+ struct fsl_elbc_mtd *nmtd[MAX_BANKS];
-+
-+ /* device info */
-+ atomic_t childs_active;
-+ struct device *device;
-+ struct resource *area;
-+ lbus83xx_t *regs;
-+ int irq;
-+ wait_queue_head_t irq_wait;
-+ unsigned int irq_status; /* status read from LTESR by irq handler */
-+ u_char *addr; /* Address of assigned FCM buffer */
-+ unsigned int page; /* Last page written to / read from */
-+ unsigned int read_bytes; /* Number of bytes read during command */
-+ unsigned int index; /* Pointer to next byte to 'read' */
-+ unsigned int status; /* status read from LTESR after last op */
-+ int oobbuf; /* Pointer to OOB block */
-+ unsigned int mdr; /* UPM/FCM Data Register value */
-+ unsigned int use_mdr; /* Non zero if the MDR is to be set */
-+};
-+
-+struct fsl_elbc_ctrl elbc_ctrl;
-+
-+/* These map to the positions used by the FCM hardware ECC generator */
-+
-+/* Small Page FLASH with FMR[ECCM] = 0 */
-+static struct nand_ecclayout fsl_elbc_oob_sp_eccm0 = { /* TODO */
-+//TODO .useecc = MTD_NANDECC_AUTOPL_USR, /* MTD_NANDECC_PLACEONLY, */
-+ .eccbytes = 3,
-+ .eccpos = {6, 7, 8},
-+ .oobfree = { {0, 5}, {9, 7} }
-+};
-+
-+/* Small Page FLASH with FMR[ECCM] = 1 */
-+static struct nand_ecclayout fsl_elbc_oob_sp_eccm1 = { /* TODO */
-+//TODO .useecc = MTD_NANDECC_AUTOPL_USR, /* MTD_NANDECC_PLACEONLY, */
-+ .eccbytes = 3,
-+ .eccpos = {8, 9, 10},
-+ .oobfree = { {0, 5}, {6, 2}, {11, 5} }
-+};
-+
-+/* Large Page FLASH with FMR[ECCM] = 0 */
-+static struct nand_ecclayout fsl_elbc_oob_lp_eccm0 = {
-+//TODO .useecc = MTD_NANDECC_AUTOPL_USR, /* MTD_NANDECC_PLACEONLY, */
-+ .eccbytes = 12,
-+ .eccpos = {6, 7, 8, 22, 23, 24, 38, 39, 40, 54, 55, 56},
-+ .oobfree = { {1, 5}, {9, 13}, {25, 13}, {41, 13}, {57, 7} }
-+};
-+
-+/* Large Page FLASH with FMR[ECCM] = 1 */
-+static struct nand_ecclayout fsl_elbc_oob_lp_eccm1 = {
-+//TODO .useecc = MTD_NANDECC_AUTOPL_USR, /* MTD_NANDECC_PLACEONLY, */
-+ .eccbytes = 12,
-+ .eccpos = {8, 9, 10, 24, 25, 26, 40, 41, 42, 56, 57, 58},
-+ .oobfree = { {1, 7}, {11, 13}, {27, 13}, {43, 13}, {59, 5} }
-+};
-+
-+/*=================================*/
-+
-+/*
-+ * Set up the FCM hardware block and page address fields, and the fcm
-+ * structure addr field to point to the correct FCM buffer in memory
-+ */
-+static void set_addr(struct mtd_info *mtd, int column, int page_addr, int oob)
-+{
-+ struct nand_chip *chip = mtd->priv;
-+ struct fsl_elbc_mtd *nmtd = chip->priv;
-+ struct fsl_elbc_ctrl *ctrl = nmtd->ctrl;
-+ volatile lbus83xx_t *lbc = ctrl->regs;
-+ int buf_num;
-+
-+ ctrl->page = page_addr;
-+
-+ lbc->fbar = page_addr >> (chip->phys_erase_shift - chip->page_shift);
-+ if (nmtd->pgs) {
-+ lbc->fpar = ((page_addr << FPAR_LP_PI_SHIFT) & FPAR_LP_PI) |
-+ ( oob ? FPAR_LP_MS : 0) |
-+ column;
-+ buf_num = (page_addr & 1) << 2;
-+ } else {
-+ lbc->fpar = ((page_addr << FPAR_SP_PI_SHIFT) & FPAR_SP_PI) |
-+ ( oob ? FPAR_SP_MS : 0) |
-+ column;
-+ buf_num = page_addr & 7;
-+ }
-+ ctrl->addr = (unsigned char*)(nmtd->vbase + (buf_num * 1024));
-+
-+ /* for OOB data point to the second half of the buffer */
-+ if (oob) {
-+ ctrl->addr += (nmtd->pgs ? 2048 : 512);
-+ }
-+ FCM_DEBUG(2,"set_addr: bank=%d, ctrl->addr=0x%p (0x%08x)\n", buf_num, ctrl->addr, nmtd->vbase);
-+}
-+
-+/*
-+ * execute FCM command and wait for it to complete
-+ */
-+static int fsl_elbc_run_command(struct mtd_info *mtd)
-+{
-+ struct nand_chip *chip = mtd->priv;
-+ struct fsl_elbc_mtd *nmtd = chip->priv;
-+ struct fsl_elbc_ctrl *ctrl = nmtd->ctrl;
-+ volatile lbus83xx_t *lbc = ctrl->regs;
-+ /* Setup the FMR[OP] to execute without write protection */
-+ lbc->fmr = nmtd->fmr | 3;
-+ if (ctrl->use_mdr)
-+ lbc->mdr = ctrl->mdr;
-+
-+ FCM_DEBUG(5,"fsl_elbc_run_command: fmr= %08X fir= %08X fcr= %08X\n",
-+ lbc->fmr, lbc->fir, lbc->fcr);
-+ FCM_DEBUG(5,"fsl_elbc_run_command: fbar=%08X fpar=%08X fbcr=%08X bank=%d\n",
-+ lbc->fbar, lbc->fpar, lbc->fbcr, nmtd->bank);
-+
-+ /* clear event registers */
-+ lbc->lteatr = 0;
-+ lbc->ltesr |= (LTESR_FCT | LTESR_PAR | LTESR_CC);
-+
-+ /* execute special operation */
-+ lbc->lsor = nmtd->bank;
-+
-+ /* wait for FCM complete flag or timeout */
-+/* TODO */
-+#ifdef FCM_USE_INTERRUPT
-+ ctrl->status = ctrl->irq_status = 0;
-+ wait_event_timeout(ctrl->irq_wait, ctrl->irq_status, FCM_TIMEOUT_MSECS * HZ/1000);
-+ ctrl->status = ctrl->irq_status;
-+#else
-+ {
-+ unsigned long timeout;
-+ unsigned long now;
-+ now = jiffies_to_msecs(jiffies);
-+ timeout = now + FCM_TIMEOUT_MSECS;
-+ while (time_before(now, timeout)) {
-+ ctrl->status = lbc->ltesr & (LTESR_FCT | LTESR_PAR | LTESR_CC);
-+ if (ctrl->status)
-+ break;
-+ now = jiffies_to_msecs(jiffies);
-+ }
-+ }
-+#endif
-+
-+ /* store mdr value in case it was needed */
-+ if (ctrl->use_mdr)
-+ ctrl->mdr = lbc->mdr;
-+
-+ ctrl->use_mdr = 0;
-+
-+ FCM_DEBUG(5,"fsl_elbc_run_command: stat=%08X mdr= %08X fmr= %08X\n",
-+ ctrl->status, ctrl->mdr, lbc->fmr);
-+
-+ /* returns 0 on success otherwise non-zero) */
-+ return (ctrl->status == LTESR_CC ? 0 : EFAULT);
-+}
-+
-+/* cmdfunc send commands to the FCM */
-+static void fsl_elbc_cmdfunc(struct mtd_info *mtd, unsigned command,
-+ int column, int page_addr)
-+{
-+ struct nand_chip *chip = mtd->priv;
-+ struct fsl_elbc_mtd *nmtd = chip->priv;
-+ struct fsl_elbc_ctrl *ctrl = nmtd->ctrl;
-+ volatile lbus83xx_t *lbc = ctrl->regs;
-+
-+ ctrl->use_mdr = 0;
-+
-+ /* clear the read buffer */
-+ ctrl->read_bytes = 0;
-+ if (command != NAND_CMD_PAGEPROG) {
-+ ctrl->index = 0;
-+ ctrl->oobbuf = -1;
-+ }
-+
-+ switch (command) {
-+ /* READ0 and READ1 read the entire buffer to use hardware ECC */
-+ case NAND_CMD_READ1:
-+ FCM_DEBUG(2,"fsl_elbc_cmdfunc: NAND_CMD_READ1, page_addr:"
-+ " 0x%x, column: 0x%x.\n", page_addr, column);
-+ ctrl->index = column + 256;
-+ goto read0;
-+ case NAND_CMD_READ0:
-+ FCM_DEBUG(2,"fsl_elbc_cmdfunc: NAND_CMD_READ0, page_addr:"
-+ " 0x%x, column: 0x%x.\n", page_addr, column);
-+ ctrl->index = column;
-+read0:
-+ if (nmtd->pgs) {
-+ lbc->fir = (FIR_OP_CW0 << FIR_OP0_SHIFT) |
-+ (FIR_OP_CA << FIR_OP1_SHIFT) |
-+ (FIR_OP_PA << FIR_OP2_SHIFT) |
-+ (FIR_OP_CW1 << FIR_OP3_SHIFT) |
-+ (FIR_OP_RBW << FIR_OP4_SHIFT);
-+ } else {
-+ lbc->fir = (FIR_OP_CW0 << FIR_OP0_SHIFT) |
-+ (FIR_OP_CA << FIR_OP1_SHIFT) |
-+ (FIR_OP_PA << FIR_OP2_SHIFT) |
-+ (FIR_OP_RBW << FIR_OP3_SHIFT);
-+ }
-+ lbc->fcr = (NAND_CMD_READ0 << FCR_CMD0_SHIFT) |
-+ (NAND_CMD_READSTART << FCR_CMD1_SHIFT);
-+ lbc->fbcr = 0; /* read entire page to enable ECC */
-+ set_addr(mtd, 0, page_addr, 0);
-+ ctrl->read_bytes = mtd->writesize + mtd->oobsize;
-+ goto write_cmd2;
-+ /* READOOB read only the OOB becasue no ECC is performed */
-+ case NAND_CMD_READOOB:
-+ FCM_DEBUG(2,"fsl_elbc_cmdfunc: NAND_CMD_READOOB, page_addr:"
-+ " 0x%x, column: 0x%x.\n", page_addr, column);
-+ if (nmtd->pgs) {
-+ lbc->fir = (FIR_OP_CW0 << FIR_OP0_SHIFT) |
-+ (FIR_OP_CA << FIR_OP1_SHIFT) |
-+ (FIR_OP_PA << FIR_OP2_SHIFT) |
-+ (FIR_OP_CW1 << FIR_OP3_SHIFT) |
-+ (FIR_OP_RBW << FIR_OP4_SHIFT);
-+ lbc->fcr = (NAND_CMD_READ0 << FCR_CMD0_SHIFT) |
-+ (NAND_CMD_READSTART << FCR_CMD1_SHIFT);
-+ } else {
-+ lbc->fir = (FIR_OP_CW0 << FIR_OP0_SHIFT) |
-+ (FIR_OP_CA << FIR_OP1_SHIFT) |
-+ (FIR_OP_PA << FIR_OP2_SHIFT) |
-+ (FIR_OP_RBW << FIR_OP3_SHIFT);
-+ lbc->fcr = (NAND_CMD_READOOB << FCR_CMD0_SHIFT);
-+ }
-+ lbc->fbcr = mtd->oobsize - column;
-+ set_addr(mtd, column, page_addr, 1);
-+ ctrl->read_bytes = mtd->oobsize;
-+ ctrl->index = column;
-+ goto write_cmd2;
-+ /* READID must read all 5 possible bytes while CEB is active */
-+ case NAND_CMD_READID:
-+ FCM_DEBUG(2,"fsl_elbc_cmdfunc: NAND_CMD_READID.\n");
-+ lbc->fir = (FIR_OP_CW0 << FIR_OP0_SHIFT) |
-+ (FIR_OP_UA << FIR_OP1_SHIFT) |
-+ (FIR_OP_RBW << FIR_OP2_SHIFT);
-+ lbc->fcr = (NAND_CMD_READID << FCR_CMD0_SHIFT);
-+ lbc->fbcr = 5; /* 5 bytes for manuf, device and exts */
-+ ctrl->use_mdr = 1;
-+ ctrl->mdr = 0;
-+ goto write_cmd0;
-+ /* ERASE1 stores the block and page address */
-+ case NAND_CMD_ERASE1:
-+ FCM_DEBUG(2,"fsl_elbc_cmdfunc: NAND_CMD_ERASE1, page_addr:"
-+ " 0x%x.\n", page_addr);
-+ set_addr(mtd, 0, page_addr, 0);
-+ goto end;
-+ /* ERASE2 uses the block and page address from ERASE1 */
-+ case NAND_CMD_ERASE2:
-+ FCM_DEBUG(2,"fsl_elbc_cmdfunc: NAND_CMD_ERASE2.\n");
-+ lbc->fir = (FIR_OP_CW0 << FIR_OP0_SHIFT) |
-+ (FIR_OP_PA << FIR_OP1_SHIFT) |
-+ (FIR_OP_CM1 << FIR_OP2_SHIFT);
-+ lbc->fcr = (NAND_CMD_ERASE1 << FCR_CMD0_SHIFT) |
-+ (NAND_CMD_ERASE2 << FCR_CMD1_SHIFT);
-+ lbc->fbcr = 0;
-+ goto write_cmd1;
-+ /* SEQIN sets up the addr buffer and all registers except the length */
-+ case NAND_CMD_SEQIN:
-+ FCM_DEBUG(2,"fsl_elbc_cmdfunc: NAND_CMD_SEQIN/PAGE_PROG, page_addr:"
-+ " 0x%x, column: 0x%x.\n", page_addr, column);
-+ if (column == 0) {
-+ lbc->fbcr = 0; /* write entire page to enable ECC */
-+ } else {
-+ lbc->fbcr = 1; /* mark as partial page so no HW ECC */
-+ }
-+ if (nmtd->pgs) {
-+ /* always use READ0 for large page devices */
-+ lbc->fir = (FIR_OP_CW0 << FIR_OP0_SHIFT) |
-+ (FIR_OP_CA << FIR_OP1_SHIFT) |
-+ (FIR_OP_PA << FIR_OP2_SHIFT) |
-+ (FIR_OP_WB << FIR_OP3_SHIFT) |
-+ (FIR_OP_CW1 << FIR_OP4_SHIFT);
-+ lbc->fcr = (NAND_CMD_SEQIN << FCR_CMD0_SHIFT) |
-+ (NAND_CMD_PAGEPROG << FCR_CMD1_SHIFT);
-+ set_addr(mtd, column, page_addr, 0);
-+ } else {
-+ lbc->fir = (FIR_OP_CW0 << FIR_OP0_SHIFT) |
-+ (FIR_OP_CM2 << FIR_OP1_SHIFT) |
-+ (FIR_OP_CA << FIR_OP2_SHIFT) |
-+ (FIR_OP_PA << FIR_OP3_SHIFT) |
-+ (FIR_OP_WB << FIR_OP4_SHIFT) |
-+ (FIR_OP_CW1 << FIR_OP5_SHIFT);
-+ if (column >= mtd->writesize) {
-+ /* OOB area --> READOOB */
-+ column -= mtd->writesize;
-+ lbc->fcr = (NAND_CMD_READOOB << FCR_CMD0_SHIFT)
-+ | (NAND_CMD_PAGEPROG<< FCR_CMD1_SHIFT)
-+ | (NAND_CMD_SEQIN << FCR_CMD2_SHIFT);
-+ set_addr(mtd, column, page_addr, 1);
-+ } else if (column < 256) {
-+ /* First 256 bytes --> READ0 */
-+ lbc->fcr = (NAND_CMD_READ0 << FCR_CMD0_SHIFT)
-+ | (NAND_CMD_PAGEPROG<< FCR_CMD1_SHIFT)
-+ | (NAND_CMD_SEQIN << FCR_CMD2_SHIFT);
-+ set_addr(mtd, column, page_addr, 0);
-+ } else {
-+ /* Second 256 bytes --> READ1 */
-+ column -= 256;
-+ lbc->fcr = (NAND_CMD_READ1 << FCR_CMD0_SHIFT)
-+ | (NAND_CMD_PAGEPROG<< FCR_CMD1_SHIFT)
-+ | (NAND_CMD_SEQIN << FCR_CMD2_SHIFT);
-+ set_addr(mtd, column, page_addr, 0);
-+ }
-+ }
-+ goto end;
-+ /* PAGEPROG reuses all of the setup from SEQIN and adds the length */
-+ case NAND_CMD_PAGEPROG:
-+ FCM_DEBUG(2,"fsl_elbc_cmdfunc: NAND_CMD_PAGEPROG"
-+ " writing %d bytes.\n",ctrl->index);
-+ /* if the write did not start at 0 or is not a full page */
-+ /* then set the exact length, otherwise use a full page */
-+ /* write so the HW generates the ECC. */
-+ if (lbc->fbcr ||
-+ (ctrl->index != (mtd->writesize + mtd->oobsize)))
-+ lbc->fbcr = ctrl->index;
-+ goto write_cmd2;
-+ /* CMD_STATUS must read the status byte while CEB is active */
-+ /* Note - it does not wait for the ready line */
-+ case NAND_CMD_STATUS:
-+ FCM_DEBUG(2,"fsl_elbc_cmdfunc: NAND_CMD_STATUS.\n");
-+ lbc->fir = (FIR_OP_CM0 << FIR_OP0_SHIFT) |
-+ (FIR_OP_RBW << FIR_OP1_SHIFT);
-+ lbc->fcr = (NAND_CMD_STATUS << FCR_CMD0_SHIFT);
-+ lbc->fbcr = 1;
-+ goto write_cmd0;
-+ /* RESET without waiting for the ready line */
-+ case NAND_CMD_RESET:
-+ FCM_DEBUG(2,"fsl_elbc_cmdfunc: NAND_CMD_RESET.\n");
-+ lbc->fir = (FIR_OP_CM0 << FIR_OP0_SHIFT);
-+ lbc->fcr = (NAND_CMD_RESET << FCR_CMD0_SHIFT);
-+ lbc->fbcr = 0;
-+ goto write_cmd0;
-+ default:
-+ printk("fsl_elbc_cmdfunc: error, unsupported command.\n");
-+ goto end;
-+ }
-+
-+ /* Short cuts fall through to save code */
-+ write_cmd0:
-+ set_addr(mtd, 0, 0, 0);
-+ write_cmd1:
-+ ctrl->read_bytes = lbc->fbcr;
-+ write_cmd2:
-+ fsl_elbc_run_command(mtd);
-+
-+#ifdef CONFIG_MTD_NAND_VERIFY_WRITE
-+ /* if we wrote a page then read back the oob to get the ECC */
-+ if ((command == NAND_CMD_PAGEPROG) &&
-+ (chip->ecc.mode > NAND_ECC_SOFT) &&
-+ (lbc->fbcr == 0) &&
-+ (ctrl->oobbuf != 0) &&
-+ (ctrl->oobbuf != -1)) {
-+ int i;
-+ uint *oob_config;
-+ unsigned char *oob_buf;
-+
-+ i = ctrl->page;
-+ oob_buf = (unsigned char*) ctrl->oobbuf;
-+ oob_config = chip->ecc.layout->eccpos;
-+
-+ /* wait for the write to complete and check it passed */
-+ if (!(chip->waitfunc(mtd, chip) & 0x01)) {
-+ /* read back the OOB */
-+ fsl_elbc_cmdfunc(mtd, NAND_CMD_READOOB, 0, i);
-+ /* if it succeeded then copy the ECC bytes */
-+ if (ctrl->status == LTESR_CC) {
-+ for (i=0; i < chip->ecc.layout->eccbytes; i++) {
-+ oob_buf[oob_config[i]] =
-+ ctrl->addr[oob_config[i]];
-+ }
-+ }
-+ }
-+ }
-+#endif
-+
-+ end:
-+ return;
-+}
-+
-+/* select chip */
-+
-+static void fsl_elbc_select_chip(struct mtd_info *mtd, int chip)
-+{
-+}
-+
-+/* fsl_elbc_cmd_ctrl
-+ *
-+ * Issue command and address cycles to the chip
-+*/
-+
-+static void fsl_elbc_cmd_ctrl(struct mtd_info *mtd, int dat,
-+ unsigned int ctrl)
-+{
-+}
-+
-+/* fsl_elbc_dev_ready()
-+ *
-+ * returns 0 if the nand is busy, 1 if it is ready
-+*/
-+
-+static int fsl_elbc_dev_ready(struct mtd_info *mtd)
-+{
-+ return 0;
-+}
-+
-+/*
-+ * FCM does not support 16 bit data busses
-+ */
-+static u16 fsl_elbc_read_word(struct mtd_info *mtd)
-+{
-+ struct nand_chip *chip = mtd->priv;
-+ struct fsl_elbc_ctrl *ctrl = (struct fsl_elbc_ctrl *) chip->controller;
-+
-+ dev_err(ctrl->device, "fsl_elbc_read_word: UNIMPLEMENTED.\n");
-+ return 0;
-+}
-+
-+/*
-+ * Write buf to the FCM Controller Data Buffer
-+ */
-+static void fsl_elbc_write_buf(struct mtd_info *mtd, const u_char *buf, int len)
-+{
-+ struct nand_chip *chip = mtd->priv;
-+ struct fsl_elbc_mtd *nmtd = chip->priv;
-+ struct fsl_elbc_ctrl *ctrl = nmtd->ctrl;
-+
-+ FCM_DEBUG(3,"fsl_elbc_write_buf: writing %d bytes starting with 0x%lx"
-+ " at %d.\n", len, *((unsigned long*) buf), ctrl->index);
-+
-+ /* If armed catch the address of the OOB buffer so that it can be */
-+ /* updated with the real signature after the program comletes */
-+ if (!ctrl->oobbuf)
-+ ctrl->oobbuf = (int) buf;
-+
-+ /* copy the data into the FCM hardware buffer and update the index */
-+ memcpy(&(ctrl->addr[ctrl->index]), buf, len);
-+ ctrl->index += len;
-+ return;
-+}
-+
-+
-+/*
-+ * read a byte from either the FCM hardware buffer if it has any data left
-+ * otherwise issue a command to read a single byte.
-+ */
-+static u_char fsl_elbc_read_byte(struct mtd_info *mtd)
-+{
-+ struct nand_chip *chip = mtd->priv;
-+ struct fsl_elbc_mtd *nmtd = chip->priv;
-+ struct fsl_elbc_ctrl *ctrl = nmtd->ctrl;
-+ volatile lbus83xx_t *lbc = ctrl->regs;
-+ unsigned char byte;
-+
-+ /* If there are still bytes in the FCM then use the next byte */
-+ if(ctrl->index < ctrl->read_bytes) {
-+ byte = ctrl->addr[(ctrl->index)++];
-+ FCM_DEBUG(4,"fsl_elbc_read_byte: byte %u (%02X): %d of %d.\n",
-+ byte, byte, ctrl->index-1, ctrl->read_bytes);
-+ } else {
-+ /* otherwise issue a command to read 1 byte */
-+ lbc->fir = (FIR_OP_RSW << FIR_OP0_SHIFT);
-+ ctrl->use_mdr = 1;
-+ ctrl->read_bytes = 0;
-+ ctrl->index = 0;
-+ ctrl->read_bytes = 0;
-+ ctrl->index = 0;
-+ byte = fsl_elbc_run_command(mtd) ? ERR_BYTE : ctrl->mdr & 0xff;
-+ FCM_DEBUG(4,"fsl_elbc_read_byte: byte %u (%02X) from bus.\n",
-+ byte, byte);
-+ }
-+
-+ return byte;
-+}
-+
-+/*
-+ * Read from the FCM Controller Data Buffer
-+ */
-+static void fsl_elbc_read_buf(struct mtd_info *mtd, u_char* buf, int len)
-+{
-+ struct nand_chip *chip = mtd->priv;
-+ struct fsl_elbc_mtd *nmtd = chip->priv;
-+ struct fsl_elbc_ctrl *ctrl = nmtd->ctrl;
-+ int i;
-+ int rest;
-+ unsigned long old_status;
-+
-+ FCM_DEBUG(3,"fsl_elbc_read_buf: reading %d bytes.\n", len);
-+
-+ /* see how much is still in the FCM buffer */
-+ i = min((unsigned int)len, (ctrl->read_bytes - ctrl->index));
-+ rest = len - i;
-+ len = i;
-+
-+ /* copying bytes even if there was an error so that the oob works */
-+ memcpy(buf, &(ctrl->addr[(ctrl->index)]), len);
-+ ctrl->index += len;
-+
-+ /* If more data is needed then issue another block read */
-+ if (rest) {
-+ FCM_DEBUG(3,"fsl_elbc_read_buf: getting %d more bytes.\n",
-+ rest);
-+
-+ buf += len;
-+
-+ /* keep last status in case it was an error */
-+ old_status = ctrl->status;
-+
-+ /* read full next page to use HW ECC if enabled */
-+ fsl_elbc_cmdfunc(mtd, NAND_CMD_READ0, 0, ctrl->page + 1);
-+
-+ /* preserve the worst status code */
-+ if (ctrl->status == LTESR_CC)
-+ ctrl->status = old_status;
-+
-+ fsl_elbc_read_buf(mtd, buf, rest);
-+ }
-+ return;
-+}
-+
-+
-+/*
-+ * Verify buffer against the FCM Controller Data Buffer
-+ */
-+static int fsl_elbc_verify_buf(struct mtd_info *mtd, const u_char *buf, int len)
-+{
-+ struct nand_chip *chip = mtd->priv;
-+ struct fsl_elbc_mtd *nmtd = chip->priv;
-+ struct fsl_elbc_ctrl *ctrl = nmtd->ctrl;
-+ int i;
-+ int rest;
-+
-+ FCM_DEBUG(3,"fsl_elbc_verify_buf: checking %d bytes starting with 0x%02lx.\n",
-+ len, *((unsigned long*) buf));
-+
-+ /* If last read failed then return error bytes */
-+ if (ctrl->status != LTESR_CC) {
-+ return EFAULT;
-+ }
-+
-+ /* see how much is still in the FCM buffer */
-+ i = min((unsigned int)len, (ctrl->read_bytes - ctrl->index));
-+ rest = len - i;
-+ len = i;
-+
-+ if (memcmp(buf, &(ctrl->addr[(ctrl->index)]), len)) {
-+ return EFAULT;
-+ }
-+
-+ ctrl->index += len;
-+ if (rest) {
-+ FCM_DEBUG(3,"fsl_elbc_verify_buf: getting %d more bytes.\n", rest);
-+ buf += len;
-+
-+ /* read full next page to use HW ECC if enabled */
-+ fsl_elbc_cmdfunc(mtd, NAND_CMD_READ0, 0, ctrl->page + 1);
-+
-+ return fsl_elbc_verify_buf(mtd, buf, rest);
-+ }
-+ return 0;
-+}
-+
-+/* this function is called after Program and Erase Operations to
-+ * check for success or failure */
-+static int fsl_elbc_wait(struct mtd_info *mtd, struct nand_chip *this)
-+{
-+ struct nand_chip *chip = mtd->priv;
-+ struct fsl_elbc_mtd *nmtd = chip->priv;
-+ struct fsl_elbc_ctrl *ctrl = nmtd->ctrl;
-+ volatile lbus83xx_t *lbc = ctrl->regs;
-+
-+ if (ctrl->status != LTESR_CC) {
-+ return(0x1); /* Status Read error */
-+ }
-+
-+ /* Use READ_STATUS command, but wait for the device to be ready */
-+ ctrl->use_mdr = 0;
-+ ctrl->oobbuf = -1;
-+ lbc->fir = (FIR_OP_CW0 << FIR_OP0_SHIFT) |
-+ (FIR_OP_RBW << FIR_OP1_SHIFT);
-+ lbc->fcr = (NAND_CMD_STATUS << FCR_CMD0_SHIFT);
-+ set_addr(mtd, 0, 0, 0);
-+ lbc->fbcr = 1;
-+ ctrl->index = 0;
-+ ctrl->read_bytes = lbc->fbcr;
-+ fsl_elbc_run_command(mtd);
-+ if (ctrl->status != LTESR_CC) {
-+ return(0x1); /* Status Read error */
-+ }
-+ return chip->read_byte(mtd);
-+}
-+
-+/* ECC handling functions */
-+
-+/*
-+ * fsl_elbc_enable_hwecc - start ECC generation
-+ */
-+static void fsl_elbc_enable_hwecc(struct mtd_info *mtd, int mode)
-+{
-+ return;
-+}
-+
-+/*
-+ * fsl_elbc_calculate_ecc - Calculate the ECC bytes
-+ * This is done by hardware during the write process, so we use this
-+ * to arm the oob buf capture on the next write_buf() call. The ECC bytes
-+ * only need to be captured if CONFIG_MTD_NAND_VERIFY_WRITE is defined which
-+ * reads back the pages and checks they match the data and oob buffers.
-+ */
-+static int fsl_elbc_calculate_ecc(struct mtd_info *mtd, const u_char *dat, u_char *ecc_code)
-+{
-+#ifdef CONFIG_MTD_NAND_VERIFY_WRITE
-+ struct nand_chip *chip = mtd->priv;
-+ struct fsl_elbc_mtd *nmtd = chip->priv;
-+ struct fsl_elbc_ctrl *ctrl = nmtd->ctrl;
-+
-+ /* arm capture of oob buf ptr on next write_buf */
-+ ctrl->oobbuf = 0;
-+#endif
-+ return 0;
-+}
-+
-+/*
-+ * fsl_elbc_correct_data - Detect and correct bit error(s)
-+ * The detection and correction is done automatically by the hardware,
-+ * if the complete page was read. If the status code is okay then there
-+ * was no error, otherwise we return an error code indicating an uncorrectable
-+ * error.
-+ */
-+static int fsl_elbc_correct_data(struct mtd_info *mtd, u_char *dat, u_char *read_ecc, u_char *calc_ecc)
-+{
-+ struct nand_chip *chip = mtd->priv;
-+ struct fsl_elbc_mtd *nmtd = chip->priv;
-+ struct fsl_elbc_ctrl *ctrl = nmtd->ctrl;
-+
-+ /* No errors */
-+ if (ctrl->status == LTESR_CC)
-+ return 0;
-+
-+ return -1; /* uncorrectable error */
-+}
-+
-+/*************************************************************************/
-+/* Chip setup and control functions */
-+/*************************************************************************/
-+
-+/*
-+ * Dummy scan_bbt to complete setup of the FMR based on NAND size
-+ */
-+static int fsl_elbc_chip_init_tail (struct mtd_info *mtd)
-+{
-+ struct nand_chip *chip = mtd->priv;
-+ struct fsl_elbc_mtd *nmtd = chip->priv;
-+ struct fsl_elbc_ctrl *ctrl = nmtd->ctrl;
-+ volatile lbus83xx_t *lbc = ctrl->regs;
-+ unsigned int i;
-+ unsigned int al;
-+
-+ /* calculate FMR Address Length field */
-+ al = 0;
-+ for (i = chip->pagemask >> 16; i ; i >>= 8) {
-+ al++;
-+ }
-+
-+ /* add to ECCM mode set in fsl_elbc_init */
-+ nmtd->fmr |= 12 << FMR_CWTO_SHIFT | /* Timeout > 12 mSecs */
-+ al << FMR_AL_SHIFT;
-+
-+ FCM_DEBUG(1,"fsl_elbc_init: nand->options = %08X\n", chip->options);
-+ FCM_DEBUG(1,"fsl_elbc_init: nand->numchips = %10d\n", chip->numchips);
-+ FCM_DEBUG(1,"fsl_elbc_init: nand->chipsize = %10ld\n", chip->chipsize);
-+ FCM_DEBUG(1,"fsl_elbc_init: nand->pagemask = %10X\n", chip->pagemask);
-+ FCM_DEBUG(1,"fsl_elbc_init: nand->chip_delay = %8d\n", chip->chip_delay);
-+ FCM_DEBUG(1,"fsl_elbc_init: nand->badblockpos = %7d\n", chip->badblockpos);
-+ FCM_DEBUG(1,"fsl_elbc_init: nand->chip_shift = %8d\n", chip->chip_shift);
-+ FCM_DEBUG(1,"fsl_elbc_init: nand->page_shift = %8d\n", chip->page_shift);
-+ FCM_DEBUG(1,"fsl_elbc_init: nand->phys_erase_shift = %2d\n",
-+ chip->phys_erase_shift);
-+ FCM_DEBUG(1,"fsl_elbc_init: nand->ecclayout= %10p\n", chip->ecclayout);
-+ FCM_DEBUG(1,"fsl_elbc_init: nand->eccmode = %10d\n", chip->ecc.mode );
-+ FCM_DEBUG(1,"fsl_elbc_init: nand->eccsteps = %10d\n", chip->ecc.steps);
-+ FCM_DEBUG(1,"fsl_elbc_init: nand->eccsize = %10d\n", chip->ecc.size );
-+ FCM_DEBUG(1,"fsl_elbc_init: nand->eccbytes = %10d\n", chip->ecc.bytes);
-+ FCM_DEBUG(1,"fsl_elbc_init: nand->ecctotal = %10d\n", chip->ecc.total);
-+ FCM_DEBUG(1,"fsl_elbc_init: nand->ecclayout= %10p\n", chip->ecc.layout);
-+ FCM_DEBUG(1,"fsl_elbc_init: mtd->flags = %08X\n", mtd->flags);
-+ FCM_DEBUG(1,"fsl_elbc_init: mtd->size = %10d\n", mtd->size);
-+ FCM_DEBUG(1,"fsl_elbc_init: mtd->erasesize = %10d\n", mtd->erasesize);
-+ FCM_DEBUG(1,"fsl_elbc_init: mtd->writesize = %10d\n", mtd->writesize);
-+ FCM_DEBUG(1,"fsl_elbc_init: mtd->oobsize = %10d\n", mtd->oobsize);
-+ FCM_DEBUG(1,"fsl_elbc_init: mtd->ecctype = %10d\n", mtd->ecctype);
-+ FCM_DEBUG(1,"fsl_elbc_init: mtd->eccsize = %10d\n", mtd->eccsize);
-+
-+ /* adjust Option Register and ECC to match Flash page size */
-+ if (mtd->writesize == 512)
-+ lbc->bank[nmtd->bank].or &= ~(OR_FCM_PGS);
-+ else if (mtd->writesize == 2048) {
-+ lbc->bank[nmtd->bank].or |= OR_FCM_PGS;
-+ /* adjust ecc setup if needed */
-+ if ( (lbc->bank[nmtd->bank].br & BR_DECC) == BR_DECC_CHK_GEN) {
-+ chip->ecc.size = 2048;
-+ chip->ecc.steps = 1;
-+//TODO chip->ecc.bytes += 9;
-+//TODO chip->ecc.total += 9;
-+ chip->ecc.layout = (nmtd->fmr & FMR_ECCM) ?
-+ &fsl_elbc_oob_lp_eccm1 : &fsl_elbc_oob_lp_eccm0;
-+ mtd->ecclayout = chip->ecc.layout;
-+ }
-+ }
-+ else {
-+ printk("fsl_elbc_init: page size %d is not supported\n",
-+ mtd->writesize);
-+ return -1;
-+ }
-+ nmtd->pgs = (lbc->bank[nmtd->bank].or>>OR_FCM_PGS_SHIFT) & 1;
-+
-+ /* fix up the oobavail size in case the layout was changed */
-+ chip->ecc.layout->oobavail = 0;
-+ for (i = 0; chip->ecc.layout->oobfree[i].length; i++)
-+ chip->ecc.layout->oobavail +=
-+ chip->ecc.layout->oobfree[i].length;
-+
-+ /* return to the default bbt_scan_routine */
-+ chip->scan_bbt = nand_default_bbt;
-+
-+ /* restore complete options including the real SKIP_BBTSCAN setting */
-+ chip->options = nmtd->options;
-+
-+ /* Check, if we should skip the bad block table scan */
-+ if (chip->options & NAND_SKIP_BBTSCAN)
-+ return 0;
-+
-+ return chip->scan_bbt(mtd);
-+}
-+/* fsl_elbc_chip_init
-+ *
-+ * init a single instance of an chip
-+*/
-+
-+static int fsl_elbc_chip_init(struct fsl_elbc_mtd *nmtd)
-+{
-+ struct fsl_elbc_ctrl *ctrl = nmtd->ctrl;
-+ volatile lbus83xx_t *lbc = ctrl->regs;
-+ struct nand_chip *chip = &nmtd->chip;
-+
-+ FCM_DEBUG(1,"eLBC Set Information for bank %d\n", nmtd->bank);
-+ FCM_DEBUG(1," name = %s\n",
-+ nmtd->pl_chip.name ? nmtd->pl_chip.name : "(NULL)");
-+ FCM_DEBUG(1," nr_chips = %d\n", nmtd->pl_chip.nr_chips);
-+ FCM_DEBUG(1," partitions = %s\n",
-+ nmtd->pl_chip.partitions_str ?
-+ nmtd->pl_chip.partitions_str : "(NULL)");
-+ dev_dbg(nmtd->device,"eLBC Set Information for bank %d\n", nmtd->bank);
-+ dev_dbg(nmtd->device," name = %s\n",
-+ nmtd->name ? nmtd->name : "(NULL)");
-+ dev_dbg(nmtd->device," nr_chips = %d\n", nmtd->pl_chip.nr_chips);
-+ dev_dbg(nmtd->device," partitions = %s\n",
-+ nmtd->pl_chip.partitions_str ?
-+ nmtd->pl_chip.partitions_str : "(NULL)");
-+
-+ /* Fill in fsl_elbc_mtd structure */
-+ nmtd->name = (char *) nmtd->pl_chip.name;
-+ nmtd->mtd.name = nmtd->name;
-+ nmtd->mtd.priv = chip;
-+ nmtd->mtd.owner = THIS_MODULE;
-+ nmtd->pgs = (lbc->bank[nmtd->bank].or>>OR_FCM_PGS_SHIFT) & 1;
-+// TODO nmtd->fmr = FMR_ECCM; /* rest filled in later */
-+ nmtd->fmr = 0; /* rest filled in later */
-+
-+ /* fill in nand_chip structure */
-+ /* set physical base address from the Base Register */
-+ chip->IO_ADDR_W = (void __iomem*) (nmtd->pbase);
-+ chip->IO_ADDR_R = chip->IO_ADDR_W;
-+
-+ /* set up function call table */
-+// chip->hwcontrol = fsl_elbc_hwcontrol;
-+ chip->read_byte = fsl_elbc_read_byte;
-+ chip->read_word = fsl_elbc_read_word;
-+ chip->write_buf = fsl_elbc_write_buf;
-+ chip->read_buf = fsl_elbc_read_buf;
-+ chip->verify_buf = fsl_elbc_verify_buf;
-+ chip->select_chip = fsl_elbc_select_chip;
-+// TODO chip->block_bad
-+// TODO chip->block_markbad
-+ chip->cmd_ctrl = fsl_elbc_cmd_ctrl;
-+ chip->dev_ready = fsl_elbc_dev_ready;
-+ chip->cmdfunc = fsl_elbc_cmdfunc;
-+ chip->waitfunc = fsl_elbc_wait;
-+ chip->scan_bbt = fsl_elbc_chip_init_tail;
-+// TODO chip->errstat
-+
-+ /* set up nand options */
-+ chip->options = NAND_NO_READRDY;
-+ chip->chip_delay = 1;
-+
-+ chip->controller = &ctrl->controller;
-+ chip->priv = nmtd;
-+
-+ /* If CS Base Register selects full hardware ECC then use it */
-+ if ( (lbc->bank[nmtd->bank].br & BR_DECC) == BR_DECC_CHK_GEN) {
-+ chip->ecc.mode = NAND_ECC_HW;
-+ chip->ecc.calculate = fsl_elbc_calculate_ecc;
-+ chip->ecc.correct = fsl_elbc_correct_data;
-+ chip->ecc.hwctl = fsl_elbc_enable_hwecc;
-+ /* put in small page settings and adjust later if needed */
-+ chip->ecc.layout = (nmtd->fmr & FMR_ECCM) ?
-+ &fsl_elbc_oob_sp_eccm1 : &fsl_elbc_oob_sp_eccm0;
-+ chip->ecc.size = 512;
-+ chip->ecc.bytes = 3;
-+ } else {
-+ /* otherwise fall back to default software ECC */
-+ chip->ecc.mode = NAND_ECC_SOFT;
-+ }
-+
-+ /* force BBT scan to get to custom scan_bbt for final settings */
-+ nmtd->options = chip->options;
-+ chip-> options &= ~(NAND_SKIP_BBTSCAN);
-+
-+ return 0;
-+}
-+
-+
-+
-+static int fsl_elbc_chip_remove(struct platform_device *pdev)
-+{
-+ struct fsl_elbc_mtd *nmtd = platform_get_drvdata(pdev);
-+ struct fsl_elbc_ctrl *ctrl = nmtd->ctrl;
-+
-+ nand_release(&nmtd->mtd);
-+
-+ if (nmtd->vbase != 0) {
-+ iounmap((void __iomem*)nmtd->vbase);
-+ nmtd->vbase = 0;
-+ }
-+
-+/* TODO
-+ if (nmtd->area != NULL) {
-+ release_resource(nmtd->area);
-+ kfree(nmtd->area);
-+ nmtd->area = NULL;
-+ }
-+*/
-+
-+ platform_set_drvdata(pdev, NULL);
-+
-+ ctrl->nmtd[nmtd->bank] = NULL;
-+ atomic_dec(&ctrl->childs_active);
-+
-+ kfree(nmtd);
-+
-+ return 0;
-+}
-+
-+#ifdef CONFIG_MTD_PARTITIONS
-+const char *part_probes[] = { "cmdlinepart", NULL };
-+#endif
-+
-+static int fsl_elbc_chip_probe(struct platform_device *pdev)
-+{
-+ struct platform_fsl_nand_chip *pnc = pdev->dev.platform_data;
-+ struct fsl_elbc_ctrl *ctrl = &elbc_ctrl;
-+ volatile lbus83xx_t *lbc = ctrl->regs;
-+ struct fsl_elbc_mtd *nmtd;
-+ struct resource *res;
-+ int err = 0;
-+ int size;
-+ int bank;
-+ int mtd_parts_nb = 0;
-+ struct mtd_partition *mtd_parts = 0;
-+
-+ dev_dbg(&pdev->dev, "fsl_elbc_chip_probe(%p)\n", pdev);
-+
-+ /* check that the platform data structure was supplied */
-+ if (pnc == NULL) {
-+ dev_err(&pdev->dev,"Device needs a platform data structure\n");
-+ return -ENOENT;
-+ }
-+
-+ /* check that the device has a name */
-+ if (pnc->name == NULL) {
-+ dev_err(&pdev->dev,"Device requires a name\n");
-+ return -ENOENT;
-+ }
-+ /* get, allocate and map the memory resource */
-+ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-+ if (res == NULL) {
-+ dev_err(&pdev->dev,"failed to get memory region resource\n");
-+ return -ENOENT;
-+ }
-+ /* find which chip select it is connected to */
-+ for (bank=0; bank < MAX_BANKS; bank++) {
-+ if ( (lbc->bank[bank].br & BR_V) &&
-+ ((lbc->bank[bank].br & BR_MSEL) == BR_MS_FCM) &&
-+ ((lbc->bank[bank].br & lbc->bank[bank].or & BR_BA) ==
-+ res->start) ) {
-+ break;
-+ }
-+ }
-+
-+ if (bank >= MAX_BANKS) {
-+ dev_err(&pdev->dev,"address did not match any chip selects\n");
-+ return -ENOENT;
-+ }
-+
-+ nmtd = kmalloc (sizeof(*nmtd), GFP_KERNEL);
-+ if (!nmtd) {
-+ dev_err(ctrl->device, "no memory for nand chip structure\n");
-+ return -ENOMEM;
-+ }
-+ memset(nmtd, 0, sizeof(*nmtd));
-+
-+ platform_set_drvdata(pdev, nmtd);
-+
-+ atomic_inc(&ctrl->childs_active);
-+ if (pnc)
-+ memcpy(&(nmtd->pl_chip), pnc, sizeof(*pnc));
-+ ctrl->nmtd[bank] = nmtd;
-+ nmtd->bank = bank;
-+ nmtd->ctrl = ctrl;
-+ nmtd->device = &pdev->dev;
-+
-+ size = ( res->end - res->start ) + 1;
-+/* TODO - already requested by the elbc instance ?????
-+ ctrl->area = request_mem_region(res->start, size, pdev->name);
-+ if (ctrl->area == NULL) {
-+ dev_err(&pdev->dev, "failed to get memory region\n");
-+ err = -ENOENT;
-+ goto exit_error;
-+ }
-+*/
-+ nmtd->pbase = res->start;
-+ nmtd->vbase = (unsigned int) ioremap(nmtd->pbase, FCM_SIZE);
-+ if (nmtd->vbase == 0) {
-+ dev_err(ctrl->device, "failed to ioremap() memory region\n");
-+ err = -EIO;
-+ goto exit_error;
-+ }
-+
-+ err = fsl_elbc_chip_init(nmtd);
-+ if (err != 0)
-+ goto exit_error;
-+
-+ err = nand_scan(&nmtd->mtd,
-+ nmtd->pl_chip.nr_chips ? nmtd->pl_chip.nr_chips : 1 );
-+ if (err != 0)
-+ goto exit_error;
-+
-+#ifdef CONFIG_MTD_PARTITIONS
-+ /* check for command line partition information */
-+ if (!(nmtd->pl_chip.options & FSL_ELBC_NO_CMDLINE_PARTITIONS))
-+ mtd_parts_nb = parse_mtd_partitions(
-+ &nmtd->mtd,
-+ part_probes,
-+ &mtd_parts,
-+ 0);
-+#if 0
-+ /* otherwise try local partition string */
-+ if (mtd_parts_nb <= 0 && nmtd->pl_chip.partitions_str)
-+ mtd_parts_nb = parse_mtd_string_partitions(
-+ &nmtd->mtd,
-+ part_probes,
-+ &mtd_parts,
-+ 0,
-+ nmtd->pl_chip.partitions_str);
-+#endif
-+ if (mtd_parts_nb > 0)
-+ err = add_mtd_partitions(&nmtd->mtd,
-+ mtd_parts,
-+ mtd_parts_nb);
-+ else
-+#endif
-+ err = add_mtd_device(&nmtd->mtd);
-+
-+ if (err == 0)
-+ return 0;
-+
-+ exit_error:
-+ fsl_elbc_chip_remove(pdev);
-+
-+ if (err == 0)
-+ err = -EINVAL;
-+ return err;
-+}
-+
-+
-+/**************************************************************************/
-+/* Controller setup and control functions */
-+/**************************************************************************/
-+
-+static int fsl_elbc_ctrl_init(struct fsl_elbc_ctrl *ctrl,
-+ struct platform_device *pdev)
-+{
-+ volatile lbus83xx_t *lbc= (lbus83xx_t*) ctrl->regs;
-+
-+ /* Enable only FCM detection of timeouts, ECC errors and completion */
-+ lbc->ltedr = ~(LTESR_FCT | LTESR_PAR | LTESR_CC);
-+
-+ /* clear event registers */
-+ lbc->lteatr = 0;
-+ lbc->ltesr |= (LTESR_FCT | LTESR_PAR | LTESR_CC);
-+
-+ /* Enable interrupts for any detected events */
-+ lbc->lteir = ~0;
-+
-+ ctrl->read_bytes = 0;
-+ ctrl->index = 0;
-+ ctrl->addr = (unsigned char*) (NULL);
-+ ctrl->oobbuf = -1;
-+
-+ return 0;
-+}
-+
-+static int fsl_elbc_ctrl_remove(struct platform_device *pdev)
-+{
-+ struct fsl_elbc_ctrl *ctrl = platform_get_drvdata(pdev);
-+
-+ if (atomic_read(&ctrl->childs_active))
-+ return -EBUSY;
-+
-+ if (ctrl->regs != NULL) {
-+ iounmap(ctrl->regs);
-+ ctrl->regs = NULL;
-+ }
-+
-+/* TODO
-+ if (ctrl->area != NULL) {
-+ release_resource(ctrl->area);
-+ kfree(ctrl->area);
-+ ctrl->area = NULL;
-+ }
-+*/
-+ if (ctrl->irq) {
-+ free_irq(ctrl->irq, pdev);
-+ ctrl->irq = 0;
-+ }
-+
-+ platform_set_drvdata(pdev, NULL);
-+ memset(ctrl, 0, sizeof(*ctrl));
-+
-+ return 0;
-+}
-+
-+
-+/* interrupt handler code */
-+
-+static irqreturn_t fsl_elbc_ctrl_irq(int irqno, void *param)
-+{
-+ struct fsl_elbc_ctrl *ctrl = platform_get_drvdata((struct platform_device*)param);
-+ volatile lbus83xx_t *lbc= (lbus83xx_t*) ctrl->regs;
-+
-+ ctrl->irq_status = lbc->ltesr & (LTESR_FCT | LTESR_PAR | LTESR_CC);
-+ if (ctrl->irq_status)
-+ wake_up(&ctrl->irq_wait);
-+
-+ /* clear event registers */
-+ lbc->lteatr = 0;
-+ lbc->ltesr |= ctrl->irq_status;
-+
-+ return IRQ_HANDLED;
-+}
-+
-+
-+/* fsl_elbc_ctrl_probe
-+ *
-+ * called by device layer when it finds a device matching
-+ * one our driver can handled. This code allocates all of
-+ * the resources needed for the controller only. The
-+ * resources for the NAND banks themselves are allocated
-+ * in the chip probe function.
-+*/
-+
-+static int fsl_elbc_ctrl_probe(struct platform_device *pdev)
-+{
-+ struct fsl_elbc_ctrl *ctrl;
-+ struct resource *res;
-+ int err = 0;
-+ int size;
-+ int ret;
-+
-+ dev_dbg(&pdev->dev, "fsl_elbc_ctrl_probe(%p)\n", pdev);
-+ ctrl = &elbc_ctrl;
-+
-+ memset(ctrl, 0, sizeof(*ctrl));
-+ platform_set_drvdata(pdev, ctrl);
-+
-+ spin_lock_init(&ctrl->controller.lock);
-+ init_waitqueue_head(&ctrl->controller.wq);
-+ init_waitqueue_head(&ctrl->irq_wait);
-+
-+ /* get, allocate and map the memory resource */
-+ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-+ if (res == NULL) {
-+ dev_err(&pdev->dev,"failed to get memory region resouce\n");
-+ err = -ENOENT;
-+ goto exit_error;
-+ }
-+
-+ size = ( res->end - res->start ) + 1;
-+/* TODO - already requested by the elbc instance ?????
-+ ctrl->area = request_mem_region(res->start, size, pdev->name);
-+ if (ctrl->area == NULL) {
-+ dev_err(&pdev->dev, "failed to get memory region\n");
-+ err = -ENOENT;
-+ goto exit_error;
-+ }
-+*/
-+ ctrl->regs = ioremap(res->start, size);
-+ if (ctrl->regs == 0) {
-+ dev_err(&pdev->dev, "failed to ioremap() region\n");
-+ err = -EIO;
-+ goto exit_error;
-+ }
-+
-+ /* get and allocate the irq resource */
-+ res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
-+ if (res == NULL) {
-+ dev_err(&pdev->dev, "failed to get irq resource\n");
-+ err = -ENOENT;
-+ goto exit_error;
-+ }
-+
-+ ret = request_irq(res->start, fsl_elbc_ctrl_irq, 0, pdev->name, pdev);
-+ if (ret != 0) {
-+ dev_err(&pdev->dev, "failed to install irq (%d)\n", ret);
-+ err = -EIO;
-+ goto exit_error;
-+ }
-+
-+ ctrl->irq = res->start;
-+ ctrl->device = &pdev->dev;
-+ dev_dbg(&pdev->dev, "mapped registers at %p\n", ctrl->regs);
-+
-+ /* initialise the hardware */
-+
-+ err = fsl_elbc_ctrl_init(ctrl, pdev);
-+ if (err == 0)
-+ return 0;
-+
-+ exit_error:
-+ fsl_elbc_ctrl_remove(pdev);
-+
-+ if (err == 0)
-+ err = -EINVAL;
-+ return err;
-+}
-+
-+/* PM Support */
-+#ifdef CONFIG_PM
-+
-+static int fsl_elbc_ctrl_suspend(struct platform_device *dev, pm_message_t pm)
-+{
-+ return 0;
-+}
-+
-+static int fsl_elbc_ctrl_resume(struct platform_device *dev)
-+{
-+ return 0;
-+}
-+
-+#else
-+#define fsl_elbc_ctrl_suspend NULL
-+#define fsl_elbc_ctrl_resume NULL
-+#endif
-+
-+/*************************************************************************/
-+/* device driver registration */
-+/*************************************************************************/
-+
-+
-+static struct platform_driver fsl_elbc_ctrl_driver = {
-+ .probe = fsl_elbc_ctrl_probe,
-+ .remove = fsl_elbc_ctrl_remove,
-+ .suspend = fsl_elbc_ctrl_suspend,
-+ .resume = fsl_elbc_ctrl_resume,
-+ .driver = {
-+ .name = "fsl-elbc",
-+ .owner = THIS_MODULE,
-+ },
-+};
-+
-+static struct platform_driver fsl_elbc_chip_driver = {
-+ .probe = fsl_elbc_chip_probe,
-+ .remove = fsl_elbc_chip_remove,
-+ .driver = {
-+ .name = "fsl-nand",
-+ .owner = THIS_MODULE,
-+ },
-+};
-+
-+static int __init fsl_elbc_init(void)
-+{
-+ int ret;
-+
-+ printk("Freescale eLBC NAND Driver (C) 2006 Freescale\n");
-+
-+ ret = platform_driver_register(&fsl_elbc_ctrl_driver);
-+ if (!ret)
-+ ret = platform_driver_register(&fsl_elbc_chip_driver);
-+
-+ return ret;
-+}
-+
-+static void __exit fsl_elbc_exit(void)
-+{
-+ platform_driver_unregister(&fsl_elbc_chip_driver);
-+ platform_driver_unregister(&fsl_elbc_ctrl_driver);
-+}
-+
-+module_init(fsl_elbc_init);
-+module_exit(fsl_elbc_exit);
-+
-+MODULE_LICENSE("GPL");
-+MODULE_AUTHOR("Nick Spence");
-+MODULE_DESCRIPTION("Freescale Enhanced Local Bus Controller MTD NAND driver");
-diff -urN linux-2.6.23.orig/drivers/mtd/nand/Kconfig linux-2.6.23/drivers/mtd/nand/Kconfig
---- linux-2.6.23.orig/drivers/mtd/nand/Kconfig 2007-10-09 22:31:38.000000000 +0200
-+++ linux-2.6.23/drivers/mtd/nand/Kconfig 2007-11-28 20:36:39.000000000 +0100
-@@ -265,6 +265,14 @@
- depends on MTD_NAND && MACH_ARMCORE
-
-
-+config MTD_NAND_FSL_ELBC
-+ tristate "NAND support for MPC831x"
-+ depends on MTD_NAND && PPC_MPC831x
-+ help
-+ The MPC831x includes a NAND FLASH Controller Module with built-in hardware
-+ ECC capabilities. Enabling this This option will enable you to use these to
-+ control external NAND device.
-+
- config MTD_NAND_NANDSIM
- tristate "Support for NAND Flash Simulator"
- depends on MTD_PARTITIONS
-diff -urN linux-2.6.23.orig/drivers/mtd/nand/Makefile linux-2.6.23/drivers/mtd/nand/Makefile
---- linux-2.6.23.orig/drivers/mtd/nand/Makefile 2007-10-09 22:31:38.000000000 +0200
-+++ linux-2.6.23/drivers/mtd/nand/Makefile 2007-11-28 20:36:39.000000000 +0100
-@@ -27,5 +27,6 @@
- obj-$(CONFIG_MTD_NAND_CM_X270) += cmx270_nand.o
- obj-$(CONFIG_MTD_NAND_BASLER_EXCITE) += excite_nandflash.o
- obj-$(CONFIG_MTD_NAND_PLATFORM) += plat_nand.o
-+obj-$(CONFIG_MTD_NAND_FSL_ELBC) += fsl_elbc.o
-
- nand-objs := nand_base.o nand_bbt.o
-diff -urN linux-2.6.23.orig/include/linux/mtd/fsl_elbc.h linux-2.6.23/include/linux/mtd/fsl_elbc.h
---- linux-2.6.23.orig/include/linux/mtd/fsl_elbc.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.23/include/linux/mtd/fsl_elbc.h 2007-11-28 20:36:39.000000000 +0100
-@@ -0,0 +1,313 @@
-+/*
-+ * (C) Copyright 2004-2006 Freescale Semiconductor, Inc.
-+ *
-+ * Freescale Enhanced Local Bus Controller Internal Memory Map
-+ *
-+ * History :
-+ * 20061010 : Extracted fomr immap_83xx.h
-+ *
-+ * 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
-+ *
-+ */
-+#ifdef __KERNEL__
-+#ifndef __FSL_ELBC__
-+#define __FSL_ELBC__
-+
-+/*
-+ * Local Bus Controller Registers
-+ */
-+typedef struct lbus_bank{
-+ u32 br; /**< Base Register */
-+#define BR0 0x5000
-+#define BR1 0x5008
-+#define BR2 0x5010
-+#define BR3 0x5018
-+#define BR4 0x5020
-+#define BR5 0x5028
-+#define BR6 0x5030
-+#define BR7 0x5038
-+
-+#define BR_BA 0xFFFF8000
-+#define BR_BA_SHIFT 15
-+#define BR_PS 0x00001800
-+#define BR_PS_SHIFT 11
-+#define BR_PS_8 0x00000800 /* Port Size 8 bit */
-+#define BR_PS_16 0x00001000 /* Port Size 16 bit */
-+#define BR_PS_32 0x00001800 /* Port Size 32 bit */
-+#define BR_DECC 0x00000600
-+#define BR_DECC_SHIFT 9
-+#define BR_DECC_OFF 0x00000000 /* HW ECC checking and generation off */
-+#define BR_DECC_CHK 0x00000200 /* HW ECC checking on, generation off */
-+#define BR_DECC_CHK_GEN 0x00000400 /* HW ECC checking and generation on */
-+#define BR_WP 0x00000100
-+#define BR_WP_SHIFT 8
-+#define BR_MSEL 0x000000E0
-+#define BR_MSEL_SHIFT 5
-+#define BR_MS_GPCM 0x00000000 /* GPCM */
-+#define BR_MS_FCM 0x00000020 /* FCM */
-+#define BR_MS_SDRAM 0x00000060 /* SDRAM */
-+#define BR_MS_UPMA 0x00000080 /* UPMA */
-+#define BR_MS_UPMB 0x000000A0 /* UPMB */
-+#define BR_MS_UPMC 0x000000C0 /* UPMC */
-+#define BR_V 0x00000001
-+#define BR_V_SHIFT 0
-+#define BR_RES ~(BR_BA|BR_PS|BR_DECC|BR_WP|BR_MSEL|BR_V)
-+
-+ u32 or; /**< Base Register */
-+#define OR0 0x5004
-+#define OR1 0x500C
-+#define OR2 0x5014
-+#define OR3 0x501C
-+#define OR4 0x5024
-+#define OR5 0x502C
-+#define OR6 0x5034
-+#define OR7 0x503C
-+
-+#define OR_GPCM_AM 0xFFFF8000
-+#define OR_GPCM_AM_SHIFT 15
-+#define OR_GPCM_BCTLD 0x00001000
-+#define OR_GPCM_BCTLD_SHIFT 12
-+#define OR_GPCM_CSNT 0x00000800
-+#define OR_GPCM_CSNT_SHIFT 11
-+#define OR_GPCM_ACS 0x00000600
-+#define OR_GPCM_ACS_SHIFT 9
-+#define OR_GPCM_ACS_0b10 0x00000400
-+#define OR_GPCM_ACS_0b11 0x00000600
-+#define OR_GPCM_XACS 0x00000100
-+#define OR_GPCM_XACS_SHIFT 8
-+#define OR_GPCM_SCY 0x000000F0
-+#define OR_GPCM_SCY_SHIFT 4
-+#define OR_GPCM_SCY_1 0x00000010
-+#define OR_GPCM_SCY_2 0x00000020
-+#define OR_GPCM_SCY_3 0x00000030
-+#define OR_GPCM_SCY_4 0x00000040
-+#define OR_GPCM_SCY_5 0x00000050
-+#define OR_GPCM_SCY_6 0x00000060
-+#define OR_GPCM_SCY_7 0x00000070
-+#define OR_GPCM_SCY_8 0x00000080
-+#define OR_GPCM_SCY_9 0x00000090
-+#define OR_GPCM_SCY_10 0x000000a0
-+#define OR_GPCM_SCY_11 0x000000b0
-+#define OR_GPCM_SCY_12 0x000000c0
-+#define OR_GPCM_SCY_13 0x000000d0
-+#define OR_GPCM_SCY_14 0x000000e0
-+#define OR_GPCM_SCY_15 0x000000f0
-+#define OR_GPCM_SETA 0x00000008
-+#define OR_GPCM_SETA_SHIFT 3
-+#define OR_GPCM_TRLX 0x00000004
-+#define OR_GPCM_TRLX_SHIFT 2
-+#define OR_GPCM_EHTR 0x00000002
-+#define OR_GPCM_EHTR_SHIFT 1
-+#define OR_GPCM_EAD 0x00000001
-+#define OR_GPCM_EAD_SHIFT 0
-+
-+#define OR_UPM_AM 0xFFFF8000
-+#define OR_UPM_AM_SHIFT 15
-+#define OR_UPM_XAM 0x00006000
-+#define OR_UPM_XAM_SHIFT 13
-+#define OR_UPM_BCTLD 0x00001000
-+#define OR_UPM_BCTLD_SHIFT 12
-+#define OR_UPM_BI 0x00000100
-+#define OR_UPM_BI_SHIFT 8
-+#define OR_UPM_TRLX 0x00000004
-+#define OR_UPM_TRLX_SHIFT 2
-+#define OR_UPM_EHTR 0x00000002
-+#define OR_UPM_EHTR_SHIFT 1
-+#define OR_UPM_EAD 0x00000001
-+#define OR_UPM_EAD_SHIFT 0
-+
-+#define OR_SDRAM_AM 0xFFFF8000
-+#define OR_SDRAM_AM_SHIFT 15
-+#define OR_SDRAM_XAM 0x00006000
-+#define OR_SDRAM_XAM_SHIFT 13
-+#define OR_SDRAM_COLS 0x00001C00
-+#define OR_SDRAM_COLS_SHIFT 10
-+#define OR_SDRAM_ROWS 0x000001C0
-+#define OR_SDRAM_ROWS_SHIFT 6
-+#define OR_SDRAM_PMSEL 0x00000020
-+#define OR_SDRAM_PMSEL_SHIFT 5
-+#define OR_SDRAM_EAD 0x00000001
-+#define OR_SDRAM_EAD_SHIFT 0
-+
-+#define OR_FCM_AM 0xFFFF8000
-+#define OR_FCM_AM_SHIFT 15
-+#define OR_FCM_BCTLD 0x00001000
-+#define OR_FCM_BCTLD_SHIFT 12
-+#define OR_FCM_PGS 0x00000400
-+#define OR_FCM_PGS_SHIFT 10
-+#define OR_FCM_CSCT 0x00000200
-+#define OR_FCM_CSCT_SHIFT 9
-+#define OR_FCM_CST 0x00000100
-+#define OR_FCM_CST_SHIFT 8
-+#define OR_FCM_CHT 0x00000080
-+#define OR_FCM_CHT_SHIFT 7
-+#define OR_FCM_SCY 0x00000070
-+#define OR_FCM_SCY_SHIFT 4
-+#define OR_FCM_SCY_1 0x00000010
-+#define OR_FCM_SCY_2 0x00000020
-+#define OR_FCM_SCY_3 0x00000030
-+#define OR_FCM_SCY_4 0x00000040
-+#define OR_FCM_SCY_5 0x00000050
-+#define OR_FCM_SCY_6 0x00000060
-+#define OR_FCM_SCY_7 0x00000070
-+#define OR_FCM_RST 0x00000008
-+#define OR_FCM_RST_SHIFT 3
-+#define OR_FCM_TRLX 0x00000004
-+#define OR_FCM_TRLX_SHIFT 2
-+#define OR_FCM_EHTR 0x00000002
-+#define OR_FCM_EHTR_SHIFT 1
-+} lbus_bank_t;
-+
-+typedef struct lbus83xx {
-+ lbus_bank_t bank[8];
-+ u8 res0[0x28];
-+ u32 mar; /**< UPM Address Register */
-+ u8 res1[0x4];
-+ u32 mamr; /**< UPMA Mode Register */
-+ u32 mbmr; /**< UPMB Mode Register */
-+ u32 mcmr; /**< UPMC Mode Register */
-+ u8 res2[0x8];
-+ u32 mrtpr; /**< Memory Refresh Timer Prescaler Register */
-+ u32 mdr; /**< UPM Data Register */
-+ u8 res3[0x4];
-+ u32 lsor; /**< Special Operation Initiation Register */
-+ u32 lsdmr; /**< SDRAM Mode Register */
-+ u8 res4[0x8];
-+ u32 lurt; /**< UPM Refresh Timer */
-+ u32 lsrt; /**< SDRAM Refresh Timer */
-+ u8 res5[0x8];
-+ u32 ltesr; /**< Transfer Error Status Register */
-+#define LTESR_BM 0x80000000
-+#define LTESR_FCT 0x40000000
-+#define LTESR_PAR 0x20000000
-+#define LTESR_WP 0x04000000
-+#define LTESR_ATMW 0x00800000
-+#define LTESR_ATMR 0x00400000
-+#define LTESR_CS 0x00080000
-+#define LTESR_CC 0x00000001
-+ u32 ltedr; /**< Transfer Error Disable Register */
-+ u32 lteir; /**< Transfer Error Interrupt Register */
-+ u32 lteatr; /**< Transfer Error Attributes Register */
-+ u32 ltear; /**< Transfer Error Address Register */
-+ u8 res6[0xC];
-+ u32 lbcr; /**< Configuration Register */
-+#define LBCR_LDIS 0x80000000
-+#define LBCR_LDIS_SHIFT 31
-+#define LBCR_BCTLC 0x00C00000
-+#define LBCR_BCTLC_SHIFT 22
-+#define LBCR_AHD 0x00200000
-+#define LBCR_LPBSE 0x00020000
-+#define LBCR_LPBSE_SHIFT 17
-+#define LBCR_EPAR 0x00010000
-+#define LBCR_EPAR_SHIFT 16
-+#define LBCR_BMT 0x0000FF00
-+#define LBCR_BMT_SHIFT 8
-+#define LBCR_INIT 0x00040000
-+ u32 lcrr; /**< Clock Ratio Register */
-+#define LCRR_DBYP 0x80000000
-+#define LCRR_DBYP_SHIFT 31
-+#define LCRR_BUFCMDC 0x30000000
-+#define LCRR_BUFCMDC_SHIFT 28
-+#define LCRR_ECL 0x03000000
-+#define LCRR_ECL_SHIFT 24
-+#define LCRR_EADC 0x00030000
-+#define LCRR_EADC_SHIFT 16
-+#define LCRR_CLKDIV 0x0000000F
-+#define LCRR_CLKDIV_SHIFT 0
-+ u8 res7[0x8];
-+ u32 fmr; /**< Flash Mode Register */
-+#define FMR_CWTO 0x0000F000
-+#define FMR_CWTO_SHIFT 12
-+#define FMR_BOOT 0x00000800
-+#define FMR_ECCM 0x00000100
-+#define FMR_AL 0x00000030
-+#define FMR_AL_SHIFT 4
-+#define FMR_OP 0x00000003
-+#define FMR_OP_SHIFT 0
-+ u32 fir; /**< Flash Instruction Register */
-+#define FIR_OP0 0xF0000000
-+#define FIR_OP0_SHIFT 28
-+#define FIR_OP1 0x0F000000
-+#define FIR_OP1_SHIFT 24
-+#define FIR_OP2 0x00F00000
-+#define FIR_OP2_SHIFT 20
-+#define FIR_OP3 0x000F0000
-+#define FIR_OP3_SHIFT 16
-+#define FIR_OP4 0x0000F000
-+#define FIR_OP4_SHIFT 12
-+#define FIR_OP5 0x00000F00
-+#define FIR_OP5_SHIFT 8
-+#define FIR_OP6 0x000000F0
-+#define FIR_OP6_SHIFT 4
-+#define FIR_OP7 0x0000000F
-+#define FIR_OP7_SHIFT 0
-+#define FIR_OP_NOP 0x0 /* No operation and end of sequence */
-+#define FIR_OP_CA 0x1 /* Issue current column address */
-+#define FIR_OP_PA 0x2 /* Issue current block+page address */
-+#define FIR_OP_UA 0x3 /* Issue user defined address */
-+#define FIR_OP_CM0 0x4 /* Issue command from FCR[CMD0] */
-+#define FIR_OP_CM1 0x5 /* Issue command from FCR[CMD1] */
-+#define FIR_OP_CM2 0x6 /* Issue command from FCR[CMD2] */
-+#define FIR_OP_CM3 0x7 /* Issue command from FCR[CMD3] */
-+#define FIR_OP_WB 0x8 /* Write FBCR bytes from FCM buffer */
-+#define FIR_OP_WS 0x9 /* Write 1 or 2 bytes from MDR[AS] */
-+#define FIR_OP_RB 0xA /* Read FBCR bytes to FCM buffer */
-+#define FIR_OP_RS 0xB /* Read 1 or 2 bytes to MDR[AS] */
-+#define FIR_OP_CW0 0xC /* Wait then issue FCR[CMD0] */
-+#define FIR_OP_CW1 0xD /* Wait then issue FCR[CMD1] */
-+#define FIR_OP_RBW 0xE /* Wait then read FBCR bytes */
-+#define FIR_OP_RSW 0xE /* Wait then read 1 or 2 bytes */
-+ u32 fcr; /**< Flash Command Register */
-+#define FCR_CMD0 0xFF000000
-+#define FCR_CMD0_SHIFT 24
-+#define FCR_CMD1 0x00FF0000
-+#define FCR_CMD1_SHIFT 16
-+#define FCR_CMD2 0x0000FF00
-+#define FCR_CMD2_SHIFT 8
-+#define FCR_CMD3 0x000000FF
-+#define FCR_CMD3_SHIFT 0
-+ u32 fbar; /**< Flash Block Address Register */
-+#define FBAR_BLK 0x00FFFFFF
-+ u32 fpar; /**< Flash Page Address Register */
-+#define FPAR_SP_PI 0x00007C00
-+#define FPAR_SP_PI_SHIFT 10
-+#define FPAR_SP_MS 0x00000200
-+#define FPAR_SP_CI 0x000001FF
-+#define FPAR_SP_CI_SHIFT 0
-+#define FPAR_LP_PI 0x0003F000
-+#define FPAR_LP_PI_SHIFT 12
-+#define FPAR_LP_MS 0x00000800
-+#define FPAR_LP_CI 0x000007FF
-+#define FPAR_LP_CI_SHIFT 0
-+ u32 fbcr; /**< Flash Byte Count Register */
-+#define FBCR_BC 0x00000FFF
-+ u8 res11[0x8];
-+ u8 res8[0xF00];
-+} lbus83xx_t;
-+
-+struct platform_fsl_nand_chip {
-+ const char *name;
-+ int nr_chips;
-+ const char *partitions_str;
-+ unsigned int options;
-+};
-+
-+/* Setting this option prevents the command line from being parsed
-+ * for MTD partitions. */
-+#define FSL_ELBC_NO_CMDLINE_PARTITIONS 0x10000000
-+
-+#endif /* __FSL_ELBC__ */
-+#endif /* __KERNEL__ */