armadeus-commitlog Mailing List for armadeus (Page 143)
Brought to you by:
sszy
You can subscribe to this list here.
| 2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2007 |
Jan
(43) |
Feb
(8) |
Mar
(7) |
Apr
(8) |
May
(14) |
Jun
(6) |
Jul
(4) |
Aug
(17) |
Sep
(18) |
Oct
(19) |
Nov
(52) |
Dec
(30) |
| 2008 |
Jan
(6) |
Feb
(6) |
Mar
(15) |
Apr
(22) |
May
(13) |
Jun
(11) |
Jul
(41) |
Aug
(10) |
Sep
(14) |
Oct
(21) |
Nov
(4) |
Dec
(66) |
| 2009 |
Jan
(67) |
Feb
(57) |
Mar
(90) |
Apr
(54) |
May
(64) |
Jun
(76) |
Jul
(14) |
Aug
(18) |
Sep
(18) |
Oct
(20) |
Nov
(15) |
Dec
(36) |
| 2010 |
Jan
(28) |
Feb
(25) |
Mar
(32) |
Apr
(23) |
May
(22) |
Jun
(62) |
Jul
(36) |
Aug
(16) |
Sep
(12) |
Oct
(20) |
Nov
(44) |
Dec
(25) |
| 2011 |
Jan
(36) |
Feb
(49) |
Mar
(28) |
Apr
(38) |
May
(26) |
Jun
(52) |
Jul
(33) |
Aug
(32) |
Sep
(19) |
Oct
(26) |
Nov
(13) |
Dec
(32) |
| 2012 |
Jan
(38) |
Feb
(34) |
Mar
(91) |
Apr
(35) |
May
(31) |
Jun
(72) |
Jul
(23) |
Aug
(13) |
Sep
(33) |
Oct
(47) |
Nov
(18) |
Dec
(22) |
| 2013 |
Jan
(31) |
Feb
(22) |
Mar
(26) |
Apr
(11) |
May
(38) |
Jun
(15) |
Jul
(37) |
Aug
(68) |
Sep
(34) |
Oct
(11) |
Nov
(26) |
Dec
(31) |
| 2014 |
Jan
(60) |
Feb
(55) |
Mar
(21) |
Apr
(31) |
May
(17) |
Jun
(35) |
Jul
(24) |
Aug
(17) |
Sep
(11) |
Oct
(23) |
Nov
(10) |
Dec
(23) |
| 2015 |
Jan
(15) |
Feb
(34) |
Mar
(46) |
Apr
(23) |
May
(12) |
Jun
(14) |
Jul
(18) |
Aug
(22) |
Sep
(6) |
Oct
(2) |
Nov
(1) |
Dec
(6) |
| 2016 |
Jan
(5) |
Feb
(7) |
Mar
(10) |
Apr
(10) |
May
(17) |
Jun
(6) |
Jul
(4) |
Aug
(6) |
Sep
(22) |
Oct
(8) |
Nov
(9) |
Dec
(5) |
| 2017 |
Jan
(11) |
Feb
(12) |
Mar
(27) |
Apr
(9) |
May
(1) |
Jun
(5) |
Jul
(11) |
Aug
(10) |
Sep
(6) |
Oct
(10) |
Nov
(4) |
Dec
(6) |
| 2018 |
Jan
(6) |
Feb
(13) |
Mar
(9) |
Apr
(7) |
May
(10) |
Jun
(9) |
Jul
(21) |
Aug
(13) |
Sep
(10) |
Oct
(4) |
Nov
(6) |
Dec
(1) |
| 2019 |
Jan
(6) |
Feb
(2) |
Mar
(5) |
Apr
(6) |
May
(19) |
Jun
(14) |
Jul
(18) |
Aug
(3) |
Sep
(5) |
Oct
(7) |
Nov
(8) |
Dec
(4) |
| 2020 |
Jan
(10) |
Feb
(3) |
Mar
(9) |
Apr
(7) |
May
(2) |
Jun
(18) |
Jul
(3) |
Aug
|
Sep
|
Oct
(7) |
Nov
|
Dec
(1) |
| 2021 |
Jan
(9) |
Feb
(6) |
Mar
(4) |
Apr
(11) |
May
(7) |
Jun
(5) |
Jul
(2) |
Aug
(4) |
Sep
(10) |
Oct
(9) |
Nov
(5) |
Dec
|
| 2022 |
Jan
(2) |
Feb
(12) |
Mar
(3) |
Apr
(5) |
May
(1) |
Jun
(3) |
Jul
(2) |
Aug
(1) |
Sep
(4) |
Oct
(4) |
Nov
(1) |
Dec
(3) |
| 2023 |
Jan
(5) |
Feb
(3) |
Mar
(3) |
Apr
(2) |
May
(1) |
Jun
(3) |
Jul
(3) |
Aug
(2) |
Sep
(1) |
Oct
(1) |
Nov
|
Dec
(4) |
| 2024 |
Jan
(2) |
Feb
(3) |
Mar
(8) |
Apr
(4) |
May
(1) |
Jun
(13) |
Jul
(7) |
Aug
(1) |
Sep
(6) |
Oct
(5) |
Nov
(11) |
Dec
(7) |
| 2025 |
Jan
(3) |
Feb
(1) |
Mar
(6) |
Apr
(4) |
May
(4) |
Jun
(1) |
Jul
(1) |
Aug
(7) |
Sep
(4) |
Oct
(4) |
Nov
(4) |
Dec
(1) |
| 2026 |
Jan
(3) |
Feb
(7) |
Mar
(3) |
Apr
(1) |
May
(6) |
Jun
(3) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: <ar...@us...> - 2008-04-02 08:29:50
|
Revision: 781
http://armadeus.svn.sourceforge.net/armadeus/?rev=781&view=rev
Author: artemys
Date: 2008-04-02 01:29:50 -0700 (Wed, 02 Apr 2008)
Log Message:
-----------
[BUILDROOT] Add configs/ dir to store predefined Buildroot configurations
Added Paths:
-----------
branches/apf2/buildroot/configs/
branches/apf2/buildroot/configs/apf27_standard.config
Added: branches/apf2/buildroot/configs/apf27_standard.config
===================================================================
--- branches/apf2/buildroot/configs/apf27_standard.config (rev 0)
+++ branches/apf2/buildroot/configs/apf27_standard.config 2008-04-02 08:29:50 UTC (rev 781)
@@ -0,0 +1,616 @@
+#
+# Automatically generated make config: don't edit
+# Wed Apr 2 10:13:20 2008
+#
+BR2_HAVE_DOT_CONFIG=y
+BR2_VERSION="0.10.0-svn"
+# BR2_alpha is not set
+BR2_arm=y
+# BR2_armeb is not set
+# BR2_avr32 is not set
+# BR2_cris is not set
+# BR2_ia64 is not set
+# BR2_i386 is not set
+# BR2_m68k is not set
+# BR2_mips is not set
+# BR2_mipsel is not set
+# BR2_nios2 is not set
+# BR2_powerpc is not set
+# BR2_s390 is not set
+# BR2_sh is not set
+# BR2_sh64 is not set
+# BR2_sparc is not set
+# BR2_sparc64 is not set
+# BR2_x86_64 is not set
+# BR2_generic_arm is not set
+# BR2_arm7tdmi is not set
+# BR2_arm610 is not set
+# BR2_arm710 is not set
+# BR2_arm720t is not set
+# BR2_arm920t is not set
+# BR2_arm922t is not set
+BR2_arm926t=y
+# BR2_arm10t is not set
+# BR2_arm1136jf_s is not set
+# BR2_arm1176jz_s is not set
+# BR2_arm1176jzf_s is not set
+# BR2_sa110 is not set
+# BR2_sa1100 is not set
+# BR2_xscale is not set
+# BR2_iwmmxt is not set
+BR2_ARM_TYPE="ARM926T"
+BR2_ARM_OABI=y
+# BR2_ARM_EABI is not set
+BR2_ARCH="arm"
+BR2_ENDIAN="LITTLE"
+BR2_GCC_TARGET_TUNE="arm9tdmi"
+
+#
+# Target options
+#
+
+#
+# Project Options
+#
+BR2_PROJECT="armadeus"
+BR2_HOSTNAME="armadeus"
+BR2_BANNER="Welcome to the Armadeus development environment."
+
+#
+# Preset Devices
+#
+# BR2_TARGET_ARM is not set
+# BR2_TARGET_ATMEL is not set
+# BR2_TARGET_SHARP is not set
+BR2_TARGET_ARMADEUS=y
+# BR2_TARGET_ARMADEUS_APF9328 is not set
+# BR2_TARGET_ARMADEUS_APM9328 is not set
+BR2_TARGET_ARMADEUS_APF27=y
+BR2_TARGET_ARMADEUS_NAME="apf27"
+BR2_PACKAGE_LINUX_ARM=y
+# BR2_PACKAGE_LINUX_VERSION_2_6_12 is not set
+# BR2_PACKAGE_LINUX_VERSION_2_6_17 is not set
+# BR2_PACKAGE_LINUX_VERSION_2_6_18_1 is not set
+# BR2_PACKAGE_LINUX_VERSION_2_6_23_1 is not set
+# BR2_PACKAGE_LINUX_VERSION_2_6_24 is not set
+BR2_PACKAGE_LINUX_VERSION_2_6_25=y
+BR2_PACKAGE_LINUX_VERSION="2.6.25-rc7"
+BR2_TARGET_U-BOOT=y
+
+#
+# Generic System Support
+#
+# BR2_TARGET_GENERIC_ACCESS_POINT is not set
+# BR2_TARGET_GENERIC_FIREWALL is not set
+# BR2_TARGET_GENERIC_DEV_SYSTEM is not set
+
+#
+# Build options
+#
+BR2_WGET="wget --passive-ftp"
+BR2_SVN_CO="svn co"
+BR2_SVN_UP="svn up"
+BR2_GIT="git clone"
+BR2_ZCAT="gzip -d -c"
+BR2_BZCAT="bzcat"
+BR2_TAR_OPTIONS=""
+BR2_DL_DIR="/local/downloads/"
+
+#
+# Mirrors and Download locations
+#
+BR2_SOURCEFORGE_MIRROR="easynews"
+
+#
+# Atmel Mirrors
+#
+BR2_ATMEL_MIRROR="ftp://at91dist:distrib@81.80.104.162/AT91_Third_Party_Design_Flow/Linux_Host/"
+BR2_AT91_PATCH_MIRROR="http://maxim.org.za/AT91RM9200/2.6/"
+BR2_STAGING_DIR="$(BUILD_DIR)/staging_dir"
+# BR2_FPU_SUFFIX is not set
+BR2_TOPDIR_PREFIX=""
+BR2_TOPDIR_SUFFIX=""
+BR2_ROOTFS_PREFIX="rootfs"
+BR2_ROOTFS_SUFFIX=""
+BR2_GNU_BUILD_SUFFIX="pc-linux-gnu"
+BR2_GNU_TARGET_SUFFIX="linux-uclibc"
+BR2_JLEVEL=1
+# BR2_PREFER_IMA is not set
+# BR2_DEPRECATED is not set
+BR2_RECENT=y
+BR2_STRIP_strip=y
+# BR2_STRIP_sstrip is not set
+# BR2_STRIP_none is not set
+# BR2_PREFER_STATIC_LIB is not set
+# BR2_HAVE_MANPAGES is not set
+# BR2_HAVE_INFOPAGES is not set
+BR2_UPDATE_CONFIG=y
+
+#
+# Toolchain
+#
+BR2_TOOLCHAIN_BUILDROOT=y
+# BR2_TOOLCHAIN_EXTERNAL is not set
+# BR2_TOOLCHAIN_EXTERNAL_SOURCE is not set
+BR2_TOOLCHAIN_SOURCE=y
+BR2_EXT_GCC_VERSION_4_1_2=y
+BR2_EXT_GCC_VERSION_4_2_1=y
+BR2_EXT_BINUTILS_VERSION_2_17=y
+BR2_EXT_UCLIBC_VERSION_0_9_29=y
+BR2_EXT_UCLIBC_VERSION_0_9_28_3=y
+
+#
+# Kernel Header Options
+#
+# BR2_KERNEL_HEADERS_2_4_25 is not set
+# BR2_KERNEL_HEADERS_2_4_27 is not set
+# BR2_KERNEL_HEADERS_2_4_29 is not set
+# BR2_KERNEL_HEADERS_2_4_31 is not set
+# BR2_KERNEL_HEADERS_2_6_9 is not set
+# BR2_KERNEL_HEADERS_2_6_11 is not set
+# BR2_KERNEL_HEADERS_2_6_12 is not set
+# BR2_KERNEL_HEADERS_2_6_20_4 is not set
+# BR2_KERNEL_HEADERS_2_6_20 is not set
+# BR2_KERNEL_HEADERS_2_6_21_5 is not set
+# BR2_KERNEL_HEADERS_2_6_21 is not set
+# BR2_KERNEL_HEADERS_2_6_22_1 is not set
+# BR2_KERNEL_HEADERS_2_6_22_10 is not set
+BR2_KERNEL_HEADERS_2_6_22=y
+# BR2_KERNEL_HEADERS_2_6_23 is not set
+# BR2_KERNEL_HEADERS_SNAP is not set
+BR2_DEFAULT_KERNEL_HEADERS="2.6.22.10"
+
+#
+# uClibc Options
+#
+# BR2_UCLIBC_VERSION_0_9_28_3 is not set
+BR2_UCLIBC_VERSION_0_9_29=y
+# BR2_UCLIBC_VERSION_SNAPSHOT is not set
+BR2_UCLIBC_CONFIG="toolchain/uClibc/uClibc-0.9.29.config"
+# BR2_ENABLE_LOCALE is not set
+# BR2_PTHREADS_NONE is not set
+# BR2_PTHREADS is not set
+BR2_PTHREADS_OLD=y
+# BR2_PTHREADS_NATIVE is not set
+# BR2_PTHREAD_DEBUG is not set
+# BR2_UCLIBC_PROGRAM_INVOCATION is not set
+
+#
+# Binutils Options
+#
+# BR2_BINUTILS_VERSION_2_17 is not set
+# BR2_BINUTILS_VERSION_2_17_50_0_17 is not set
+BR2_BINUTILS_VERSION_2_18=y
+# BR2_BINUTILS_VERSION_2_18_50_0_1 is not set
+BR2_BINUTILS_VERSION="2.18"
+BR2_EXTRA_BINUTILS_CONFIG_OPTIONS=""
+
+#
+# GCC Options
+#
+BR2_GCC_VERSION_3_4_6=y
+# BR2_GCC_VERSION_4_0_4 is not set
+# BR2_GCC_VERSION_4_1_2 is not set
+# BR2_GCC_VERSION_4_2_0 is not set
+# BR2_GCC_VERSION_4_2_1 is not set
+# BR2_GCC_IS_SNAP is not set
+# BR2_GCC_SUPPORTS_SYSROOT is not set
+# BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE is not set
+BR2_GCC_VERSION="3.4.6"
+# BR2_GCC_USE_SJLJ_EXCEPTIONS is not set
+BR2_EXTRA_GCC_CONFIG_OPTIONS=""
+BR2_GCC_CROSS_CXX=y
+# BR2_GCC_CROSS_FORTRAN is not set
+BR2_INSTALL_LIBSTDCPP=y
+# BR2_INSTALL_LIBGCJ is not set
+# BR2_INSTALL_OBJC is not set
+# BR2_INSTALL_FORTRAN is not set
+BR2_GCC_SHARED_LIBGCC=y
+
+#
+# Ccache Options
+#
+BR2_CCACHE=y
+
+#
+# Gdb Options
+#
+# BR2_PACKAGE_GDB is not set
+BR2_PACKAGE_GDB_SERVER=y
+BR2_PACKAGE_GDB_HOST=y
+# BR2_GDB_VERSION_6_2_1 is not set
+# BR2_GDB_VERSION_6_3 is not set
+# BR2_GDB_VERSION_6_4 is not set
+# BR2_GDB_VERSION_6_5 is not set
+BR2_GDB_VERSION_6_6=y
+# BR2_GDB_VERSION_SNAPSHOT is not set
+BR2_GDB_VERSION="6.6"
+
+#
+# elf2flt
+#
+# BR2_ELF2FLT is not set
+# BR2_MKLIBS is not set
+
+#
+# Common Toolchain Options
+#
+BR2_PACKAGE_SSTRIP_TARGET=y
+# BR2_PACKAGE_SSTRIP_HOST is not set
+BR2_ENABLE_MULTILIB=y
+BR2_LARGEFILE=y
+BR2_INET_IPV6=y
+BR2_INET_RPC=y
+BR2_USE_WCHAR=y
+BR2_SOFT_FLOAT=y
+BR2_TARGET_OPTIMIZATION="-Os -pipe"
+BR2_CROSS_TOOLCHAIN_TARGET_UTILS=y
+
+#
+# Package Selection for the target
+#
+BR2_PACKAGE_BUSYBOX=y
+# BR2_BUSYBOX_VERSION_1_2_2_1 is not set
+# BR2_BUSYBOX_VERSION_1_6_1 is not set
+# BR2_BUSYBOX_VERSION_1_7_0 is not set
+# BR2_BUSYBOX_VERSION_1_7_1 is not set
+BR2_BUSYBOX_VERSION_1_7_2=y
+# BR2_PACKAGE_BUSYBOX_SNAPSHOT is not set
+BR2_BUSYBOX_VERSION="1.7.2"
+BR2_PACKAGE_BUSYBOX_INSTALL_SYMLINKS=y
+BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox-1.6.0.config"
+BR2_PACKAGE_BUSYBOX_HIDE_OTHERS=y
+# BR2_PACKAGE_BUSYBOX_SKELETON is not set
+
+#
+# The minimum needed to build a uClibc development system
+#
+# BR2_PACKAGE_BASH is not set
+# BR2_PACKAGE_BZIP2 is not set
+# BR2_PACKAGE_DIFFUTILS is not set
+# BR2_PACKAGE_FLEX is not set
+# BR2_PACKAGE_GCC_TARGET is not set
+# BR2_PACKAGE_MAKE is not set
+
+#
+# Other development stuff
+#
+# BR2_PACKAGE_AUTOCONF is not set
+# BR2_PACKAGE_AUTOMAKE is not set
+# BR2_PACKAGE_BISON is not set
+# BR2_PACKAGE_CCACHE_TARGET is not set
+# BR2_PACKAGE_CVS is not set
+# BR2_PACKAGE_DISTCC is not set
+# BR2_PACKAGE_DMALLOC is not set
+# BR2_PACKAGE_EXPAT is not set
+# BR2_PACKAGE_FAKEROOT is not set
+BR2_HOST_FAKEROOT=y
+# BR2_PACKAGE_GETTEXT is not set
+# BR2_PACKAGE_LIBINTL is not set
+# BR2_PACKAGE_LIBGMP is not set
+# BR2_PACKAGE_LIBMPFR is not set
+# BR2_PACKAGE_LIBTOOL is not set
+# BR2_PACKAGE_M4 is not set
+# BR2_PACKAGE_PKGCONFIG is not set
+# BR2_READLINE is not set
+# BR2_PACKAGE_XERCES is not set
+
+#
+# Other stuff
+#
+# BR2_PACKAGE_AT is not set
+# BR2_PACKAGE_BERKELEYDB is not set
+# BR2_PACKAGE_BSDIFF is not set
+# BR2_PACKAGE_CUSTOMIZE is not set
+# BR2_PACKAGE_DASH is not set
+# BR2_PACKAGE_FILE is not set
+# BR2_PACKAGE_IPKG_C is not set
+# BR2_PACKAGE_IPKG_SH is not set
+# BR2_PACKAGE_KEXEC is not set
+# BR2_PACKAGE_LIBDAEMON is not set
+# BR2_PACKAGE_LIBELF is not set
+# BR2_PACKAGE_LIBEVENT is not set
+# BR2_PACKAGE_LIBFLOAT is not set
+# BR2_PACKAGE_LIBGCRYPT is not set
+# BR2_PACKAGE_LIBGPG_ERROR is not set
+# BR2_PACKAGE_LIBLOCKFILE is not set
+# BR2_PACKAGE_LIBSYSFS is not set
+# BR2_PACKAGE_LIBXML2 is not set
+# BR2_PACKAGE_LMBENCH is not set
+# BR2_PACKAGE_LOCKFILE_PROGS is not set
+# BR2_PACKAGE_LSOF is not set
+# BR2_PACKAGE_LTP-TESTSUITE is not set
+# BR2_PACKAGE_LTRACE is not set
+# BR2_PACKAGE_LTT is not set
+# BR2_PACKAGE_PORTAGE is not set
+# BR2_PACKAGE_SQLITE is not set
+# BR2_PACKAGE_STRACE is not set
+# BR2_PACKAGE_SUDO is not set
+BR2_NETWORK_SUPPORT=y
+
+#
+# Networking applications
+#
+# BR2_PACKAGE_ARGUS is not set
+# BR2_PACKAGE_AVAHI is not set
+# BR2_PACKAGE_BOA is not set
+# BR2_PACKAGE_BIND is not set
+# BR2_PACKAGE_BRIDGE is not set
+# BR2_PACKAGE_CURL is not set
+# BR2_PACKAGE_LIBCURL is not set
+# BR2_PACKAGE_DNSMASQ is not set
+# BR2_PACKAGE_DROPBEAR is not set
+# BR2_PACKAGE_ETHTOOL is not set
+# BR2_PACKAGE_HASERL is not set
+# BR2_PACKAGE_IRDA_UTILS is not set
+# BR2_PACKAGE_IPERF is not set
+# BR2_PACKAGE_IPROUTE2 is not set
+# BR2_PACKAGE_IPSEC_TOOLS is not set
+# BR2_PACKAGE_IPTABLES is not set
+# BR2_PACKAGE_L2TP is not set
+# BR2_PACKAGE_LIBCGI is not set
+# BR2_PACKAGE_LIBCGICC is not set
+# BR2_PACKAGE_LIBPCAP is not set
+# BR2_PACKAGE_LINKS is not set
+# BR2_PACKAGE_LRZSZ is not set
+# BR2_PACKAGE_MDNSRESPONDER is not set
+# BR2_PACKAGE_MROUTED is not set
+# BR2_PACKAGE_MUTT is not set
+# BR2_PACKAGE_NBD is not set
+# BR2_PACKAGE_NCFTP is not set
+# BR2_PACKAGE_NETKITBASE is not set
+# BR2_PACKAGE_NETKITTELNET is not set
+# BR2_PACKAGE_NETPLUG is not set
+# BR2_PACKAGE_NETSNMP is not set
+# BR2_PACKAGE_NFS_UTILS is not set
+# BR2_PACKAGE_NTP is not set
+# BR2_PACKAGE_OLSR is not set
+# BR2_PACKAGE_OPENNTPD is not set
+# BR2_PACKAGE_OPENSSH is not set
+# BR2_PACKAGE_OPENSSL is not set
+# BR2_PACKAGE_OPENVPN is not set
+# BR2_PACKAGE_OPENSWAN is not set
+BR2_PACKAGE_PORTMAP=y
+# BR2_PACKAGE_PPPD is not set
+# BR2_PACKAGE_RP_PPPOE is not set
+# BR2_PACKAGE_PPTP_LINUX is not set
+# BR2_PACKAGE_PROFTPD is not set
+# BR2_PACKAGE_QUAGGA is not set
+
+#
+# quagga suite
+#
+# BR2_PACKAGE_QUAGGA_ZEBRA is not set
+# BR2_PACKAGE_QUAGGA_BGPD is not set
+# BR2_PACKAGE_QUAGGA_RIPD is not set
+# BR2_PACKAGE_QUAGGA_RIPNGD is not set
+# BR2_PACKAGE_QUAGGA_OSPFD is not set
+# BR2_PACKAGE_QUAGGA_OSPF6D is not set
+# BR2_PACKAGE_QUAGGA_WATCHQUAGGA is not set
+# BR2_PACKAGE_QUAGGA_ISISD is not set
+# BR2_PACKAGE_RSYNC is not set
+# BR2_PACKAGE_SAMBA is not set
+# BR2_PACKAGE_SOCAT is not set
+# BR2_PACKAGE_STUNNEL is not set
+# BR2_PACKAGE_TCPDUMP is not set
+# BR2_PACKAGE_DHCPDUMP is not set
+# BR2_PACKAGE_TFTPD is not set
+# BR2_PACKAGE_TN5250 is not set
+# BR2_PACKAGE_TTCP is not set
+# BR2_PACKAGE_VPNC is not set
+# BR2_PACKAGE_VTUN is not set
+# BR2_PACKAGE_WIRELESS_TOOLS is not set
+BR2_BLOCKDEV_SUPPORT=y
+# BR2_PACKAGE_CH7024CTRL is not set
+# BR2_PACKAGE_DBUS is not set
+# BR2_PACKAGE_DM is not set
+# BR2_PACKAGE_DMRAID is not set
+# BR2_PACKAGE_E2FSPROGS is not set
+# BR2_PACKAGE_FPGAREGS is not set
+# BR2_PACKAGE_GADGETFS_TEST is not set
+# BR2_PACKAGE_HAL is not set
+# BR2_PACKAGE_HWDATA is not set
+# BR2_PACKAGE_IMXREGS is not set
+# BR2_PACKAGE_IOSTAT is not set
+# BR2_PACKAGE_LIBAIO is not set
+# BR2_PACKAGE_LIBRAW1394 is not set
+# BR2_PACKAGE_LIBUSB is not set
+# BR2_PACKAGE_LM_SENSORS is not set
+# BR2_PACKAGE_LVM2 is not set
+BR2_PACKAGE_MAX5821CTRL=y
+# BR2_PACKAGE_MDADM is not set
+# BR2_PACKAGE_MEMTESTER is not set
+# BR2_PACKAGE_MKDOSFS is not set
+BR2_PACKAGE_MTD=y
+BR2_PACKAGE_MTD_UTILS=y
+# BR2_PACKAGE_MTD_20061007 is not set
+# BR2_PACKAGE_MTD_20050122 is not set
+# BR2_PACKAGE_MTD_SNAPSHOT is not set
+
+#
+# MTD tools selection
+#
+BR2_PACKAGE_MTD_FLASH_ERASE=y
+BR2_PACKAGE_MTD_FLASH_ERASEALL=y
+BR2_PACKAGE_MTD_FLASH_INFO=y
+BR2_PACKAGE_MTD_FLASH_LOCK=y
+BR2_PACKAGE_MTD_FLASH_UNLOCK=y
+BR2_PACKAGE_MTD_FLASHCP=y
+BR2_PACKAGE_MTD_ERASE=y
+BR2_PACKAGE_MTD_JFFS2DUMP=y
+BR2_PACKAGE_MTD_JFFS3DUMP=y
+BR2_PACKAGE_MTD_SUMTOOL=y
+BR2_PACKAGE_MTD_FTL_CHECK=y
+BR2_PACKAGE_MTD_FTL_FORMAT=y
+BR2_PACKAGE_MTD_NFTL_FORMAT=y
+BR2_PACKAGE_MTD_NFTLDUMP=y
+BR2_PACKAGE_MTD_MKFSJFFS2=y
+BR2_PACKAGE_MTD_MKFSJFFS=y
+BR2_PACKAGE_MTD_NANDDUMP=y
+BR2_PACKAGE_MTD_NANDWRITE=y
+BR2_PACKAGE_MTD_MTD_DEBUG=y
+BR2_PACKAGE_MTD_DOCFDISK=y
+BR2_PACKAGE_MTD_DOC_LOADBIOS=y
+# BR2_PACKAGE_PCIUTILS is not set
+# BR2_PACKAGE_RAIDTOOLS is not set
+# BR2_PACKAGE_SETSERIAL is not set
+# BR2_PACKAGE_SMARTMONTOOLS is not set
+# BR2_PACKAGE_USBMOUNT is not set
+# BR2_PACKAGE_USBUTILS is not set
+# BR2_PACKAGE_WIPE is not set
+# BR2_PACKAGE_XFSPROGS is not set
+BR2_AUDIO_SUPPORT=y
+# BR2_PACKAGE_ALSA_LIB is not set
+# BR2_PACKAGE_ASTERISK is not set
+# BR2_PACKAGE_AUMIX is not set
+# BR2_PACKAGE_LIBMAD is not set
+# BR2_PACKAGE_LIBSNDFILE is not set
+
+#
+# libvorbis requires the package libogg to build
+#
+# BR2_PACKAGE_MADPLAY is not set
+# BR2_PACKAGE_MPG123 is not set
+BR2_GRAPHIC_SUPPORT=y
+
+#
+# text rendering libraries
+#
+# BR2_PACKAGE_NCURSES is not set
+# BR2_PACKAGE_NEWT is not set
+# BR2_PACKAGE_SLANG is not set
+
+#
+# text rendering applications
+#
+# BR2_PACKAGE_DIALOG is not set
+
+#
+# graphic libraries
+#
+# BR2_PACKAGE_ALLEGRO is not set
+# BR2_PACKAGE_DIRECTFB is not set
+# BR2_PACKAGE_IMAGEMAGICK is not set
+# BR2_PACKAGE_JPEG is not set
+# BR2_PACKAGE_LCD4LINUX is not set
+# BR2_PACKAGE_LIBPNG is not set
+# BR2_PACKAGE_LIBUNGIF is not set
+# BR2_PACKAGE_SDL is not set
+# BR2_PACKAGE_TIFF is not set
+
+#
+# busybox graphic applications
+#
+
+#
+# --> (May be broken in busybox)
+#
+# BR2_PACKAGE_FBV is not set
+# BR2_PACKAGE_FBSET is not set
+
+#
+# other GUIs
+#
+# BR2_PACKAGE_QTE is not set
+# BR2_PACKAGE_QTOPIA4 is not set
+BR2_PACKAGE_XSERVER_none=y
+# BR2_PACKAGE_XSERVER_x11r7 is not set
+# BR2_PACKAGE_XSERVER_xorg is not set
+# BR2_PACKAGE_XSERVER_tinyx is not set
+BR2_X11_PREFIX="/usr"
+
+#
+# X libraries and helper libraries
+#
+# BR2_PACKAGE_ATK is not set
+# BR2_PACKAGE_PANGO is not set
+# BR2_PACKAGE_LIBDRM is not set
+# BR2_PACKAGE_LIBGLIB12 is not set
+# BR2_PACKAGE_LIBGLIB2 is not set
+# BR2_PACKAGE_FONTCONFIG is not set
+# BR2_PACKAGE_FREETYPE is not set
+# BR2_PACKAGE_TSLIB is not set
+
+#
+# X Window managers
+#
+# BR2_PACKAGE_MATCHBOX is not set
+
+#
+# X applications
+#
+
+#
+# Video libraries/codecs and applications
+#
+# BR2_PACKAGE_MPLAYER is not set
+
+#
+# Demos
+#
+# BR2_PACKAGE_SDL_WATER is not set
+
+#
+# Games
+#
+# BR2_PACKAGE_PRBOOM is not set
+
+#
+# Misc
+#
+BR2_COMPRESSOR_SUPPORT=y
+BR2_PACKAGE_LZO=y
+# BR2_PACKAGE_LZMA_TARGET is not set
+# BR2_PACKAGE_LZMA_HOST is not set
+BR2_PACKAGE_ZLIB=y
+# BR2_PACKAGE_ZLIB_TARGET_HEADERS is not set
+BR2_SCRIPTING_SUPPORT=y
+# BR2_PACKAGE_LUA is not set
+# BR2_PACKAGE_MICROPERL is not set
+# BR2_PACKAGE_PYTHON is not set
+# BR2_PACKAGE_RUBY is not set
+# BR2_PACKAGE_TCL is not set
+# BR2_PACKAGE_PHP is not set
+
+#
+# Target filesystem options
+#
+
+#
+# filesystem for target device
+#
+# BR2_TARGET_ROOTFS_CRAMFS is not set
+# BR2_TARGET_ROOTFS_CLOOP is not set
+# BR2_TARGET_ROOTFS_EXT2 is not set
+BR2_TARGET_ROOTFS_JFFS2=y
+# BR2_TARGET_ROOTFS_JFFS2_DATAFLASH_1056 is not set
+# BR2_TARGET_ROOTFS_JFFS2_DATAFLASH_528 is not set
+BR2_TARGET_ROOTFS_JFFS2_FLASH_128=y
+# BR2_TARGET_ROOTFS_JFFS2_FLASH_64 is not set
+# BR2_TARGET_ROOTFS_JFFS2_CUSTOM is not set
+BR2_TARGET_ROOTFS_JFFS2_PAGESIZE=0x1000
+BR2_TARGET_ROOTFS_JFFS2_EBSIZE=0x20000
+# BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER is not set
+# BR2_JFFS2_TARGET_SREC is not set
+BR2_TARGET_ROOTFS_JFFS2_PAD=y
+BR2_TARGET_ROOTFS_JFFS2_PADSIZE=0x0
+BR2_TARGET_ROOTFS_JFFS2_LE=y
+# BR2_TARGET_ROOTFS_JFFS2_BE is not set
+# BR2_TARGET_ROOTFS_JFFS2_SQUASH is not set
+BR2_TARGET_ROOTFS_JFFS2_OUTPUT="$(IMAGE).jffs2"
+BR2_TARGET_ROOTFS_JFFS2_COPYTO=""
+# BR2_TARGET_ROOTFS_SQUASHFS is not set
+BR2_TARGET_ROOTFS_TAR=y
+BR2_TARGET_ROOTFS_TAR_NONE=y
+# BR2_TARGET_ROOTFS_TAR_GZIP is not set
+# BR2_TARGET_ROOTFS_TAR_BZIP2 is not set
+# BR2_TARGET_ROOTFS_TAR_LZMA is not set
+BR2_TARGET_ROOTFS_TAR_OPTIONS=""
+BR2_TARGET_ROOTFS_TAR_COPYTO=""
+# BR2_TARGET_ROOTFS_CPIO is not set
+# BR2_TARGET_ROOTFS_INITRAMFS is not set
+
+#
+# bootloader for target device
+#
+# BR2_PACKAGE_LINUX is not set
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <Fa...@us...> - 2008-04-02 08:10:00
|
Revision: 780
http://armadeus.svn.sourceforge.net/armadeus/?rev=780&view=rev
Author: FabM
Date: 2008-04-02 01:00:54 -0700 (Wed, 02 Apr 2008)
Log Message:
-----------
[LINUX][DRIVERS] fpga special drivers dependance
Modified Paths:
--------------
trunk/target/linux/modules/Kconfig
trunk/target/linux/modules/Makefile
Added Paths:
-----------
trunk/target/linux/modules/fpga/
trunk/target/linux/modules/fpga/Kconfig
trunk/target/linux/modules/fpga/Wb_button/
trunk/target/linux/modules/fpga/Wb_button/Kconfig
trunk/target/linux/modules/fpga/Wb_button/Makefile
trunk/target/linux/modules/fpga/Wb_button/button.c
trunk/target/linux/modules/fpga/Wb_button/button.h
trunk/target/linux/modules/fpga/Wb_button/button_specific.h
trunk/target/linux/modules/fpga/Wb_button/testbutton.c
trunk/target/linux/modules/fpga/Wb_led/
trunk/target/linux/modules/fpga/Wb_led/Kconfig
trunk/target/linux/modules/fpga/Wb_led/Makefile
trunk/target/linux/modules/fpga/Wb_led/led.c
trunk/target/linux/modules/fpga/Wb_led/led.h
trunk/target/linux/modules/fpga/Wb_led/led.mod.c
trunk/target/linux/modules/fpga/Wb_led/led_specific.h
trunk/target/linux/modules/fpga/fpga_devtools/
trunk/target/linux/modules/fpga/fpga_devtools/Kconfig
trunk/target/linux/modules/fpga/fpga_devtools/Makefile
trunk/target/linux/modules/fpga/fpga_devtools/fpga-loader.c
trunk/target/linux/modules/fpga/fpga_devtools/fpga-loader.h
trunk/target/linux/modules/fpga/fpga_devtools/fpgaloader.sh
trunk/target/linux/modules/fpga/fpga_devtools/target-fpga-loader.c
trunk/target/linux/modules/fpga/fpga_devtools/target-fpga-loader.h
trunk/target/linux/modules/fpga/fpga_devtools/xilinx-fpga-loader.c
trunk/target/linux/modules/fpga/fpga_devtools/xilinx-fpga-loader.h
trunk/target/linux/modules/fpga/keypad/
trunk/target/linux/modules/fpga/keypad/Kconfig
trunk/target/linux/modules/fpga/keypad/Makefile
trunk/target/linux/modules/fpga/keypad/imxkeypad.c
trunk/target/linux/modules/fpga/ps2keyboard/
trunk/target/linux/modules/fpga/ps2keyboard/Kconfig
trunk/target/linux/modules/fpga/ps2keyboard/Makefile
trunk/target/linux/modules/fpga/ps2keyboard/README
trunk/target/linux/modules/fpga/ps2keyboard/core.c
Removed Paths:
-------------
trunk/target/linux/modules/fpga_devtools/
trunk/target/linux/modules/keypad/
trunk/target/linux/modules/ps2keyboard/
Modified: trunk/target/linux/modules/Kconfig
===================================================================
--- trunk/target/linux/modules/Kconfig 2008-04-02 07:40:22 UTC (rev 779)
+++ trunk/target/linux/modules/Kconfig 2008-04-02 08:00:54 UTC (rev 780)
@@ -6,15 +6,10 @@
#
config ARMADEUS_DRIVERS
- boolean
- default n
-
-config ARMADEUS_DRIVERS
boolean "Support for specific Armadeus drivers"
default n
---help---
-
source "drivers/armadeus/generic/Kconfig"
source "drivers/armadeus/gpio/Kconfig"
@@ -22,12 +17,8 @@
comment "FPGA related"
depends on ARMADEUS_DRIVERS
-source "drivers/armadeus/fpga_devtools/Kconfig"
+source "drivers/armadeus/fpga/Kconfig"
-source "drivers/armadeus/keypad/Kconfig"
-
-source "drivers/armadeus/ps2keyboard/Kconfig"
-
comment "Handheld related"
depends on ARMADEUS_DRIVERS
@@ -40,6 +31,5 @@
source "drivers/armadeus/isp1761/Kconfig"
-
endmenu
Modified: trunk/target/linux/modules/Makefile
===================================================================
--- trunk/target/linux/modules/Makefile 2008-04-02 07:40:22 UTC (rev 779)
+++ trunk/target/linux/modules/Makefile 2008-04-02 08:00:54 UTC (rev 780)
@@ -7,7 +7,8 @@
# Part executed when called from kernel build system:
ifneq ($(KERNELRELEASE),)
-obj-$(CONFIG_ARMADEUS_DRIVERS) += gpio/ ps2keyboard/ keypad/ fpga_devtools/ pwm/ backlight/ isp1761/
+obj-$(CONFIG_ARMADEUS_DRIVERS) += gpio/ pwm/ backlight/ isp1761/ \
+ fpga/ps2keyboard/ fpga/keypad/ fpga/fpga_devtools/ fpga/Wb_led/ fpga/Wb_button/
# Part execute when called from standard make in this directory:
else
Added: trunk/target/linux/modules/fpga/Kconfig
===================================================================
--- trunk/target/linux/modules/fpga/Kconfig (rev 0)
+++ trunk/target/linux/modules/fpga/Kconfig 2008-04-02 08:00:54 UTC (rev 780)
@@ -0,0 +1,25 @@
+#
+# Armadeus custom drivers configuration
+#
+
+menu "FPGA Drivers "
+
+#
+config ARMADEUS_FPGA_DRIVERS
+ boolean "Support for FPGA specific drivers"
+ default n
+ ---help---
+ All drivers for FPGA components
+
+source "drivers/armadeus/fpga/fpga_devtools/Kconfig"
+
+source "drivers/armadeus/fpga/keypad/Kconfig"
+
+source "drivers/armadeus/fpga/ps2keyboard/Kconfig"
+
+source "drivers/armadeus/fpga/Wb_led/Kconfig"
+
+source "drivers/armadeus/fpga/Wb_button/Kconfig"
+
+endmenu
+
Added: trunk/target/linux/modules/fpga/Wb_button/Kconfig
===================================================================
--- trunk/target/linux/modules/fpga/Wb_button/Kconfig (rev 0)
+++ trunk/target/linux/modules/fpga/Wb_button/Kconfig 2008-04-02 08:00:54 UTC (rev 780)
@@ -0,0 +1,8 @@
+#
+#
+
+config ARMADEUS_BUTTON_DRIVER
+ tristate "Wishbone Button driver"
+ default n
+ depends on ARMADEUS_FPGA_DRIVERS
+ ---help---
Added: trunk/target/linux/modules/fpga/Wb_button/Makefile
===================================================================
--- trunk/target/linux/modules/fpga/Wb_button/Makefile (rev 0)
+++ trunk/target/linux/modules/fpga/Wb_button/Makefile 2008-04-02 08:00:54 UTC (rev 780)
@@ -0,0 +1,38 @@
+#
+# Makefile for the Armadeus Wb_button drivers
+#
+
+BASE_DIR="../../../../../buildroot/"
+
+REL=`grep "BR2_PACKAGE_LINUX_VERSION=" $(BASE_DIR).config | \
+ sed "s/BR2_PACKAGE_LINUX_VERSION=\\"//" | sed "s/\\"//"`
+
+ARMADEUS_KERNEL_DIR=$(BASE_DIR)build_arm/linux-$(REL)
+
+ifneq ($(KERNELRELEASE),)
+
+obj-$(CONFIG_ARMADEUS_BUTTON_DRIVER) += button.o
+
+# Part executed when called from standard make in this directory:
+# (preferably use Makefile in parent directory)
+
+else
+
+KDIR := $(ARMADEUS_KERNEL_DIR)
+PWD := $(shell pwd)
+
+default:
+ $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
+ -cp button.ko /tftpboot/
+
+test:
+ ~/armadeus/buildroot/build_arm/staging_dir/bin/arm-linux-gcc testbutton.c -o testbutton
+ chmod 755 testbutton
+ cp testbutton /tftpboot/
+
+clean:
+ rm -f *.*o \
+ rm -f Module.symvers
+
+endif
+
Property changes on: trunk/target/linux/modules/fpga/Wb_button/Makefile
___________________________________________________________________
Name: svn:executable
+ *
Added: trunk/target/linux/modules/fpga/Wb_button/button.c
===================================================================
--- trunk/target/linux/modules/fpga/Wb_button/button.c (rev 0)
+++ trunk/target/linux/modules/fpga/Wb_button/button.c 2008-04-02 08:00:54 UTC (rev 780)
@@ -0,0 +1,200 @@
+/* button.c
+ * Driver for bus_led fpga IP
+ * Fabien Marteau <fab...@ar...>
+ */
+
+#include "button.h"
+
+/*********************************
+ * simple fpga read/write
+ *********************************/
+
+
+static ssize_t button_fpga_read(void * addr,u16 *data,struct button_dev *dev){
+ *data = ioread16(addr);/* read the button value */
+ return 2;
+}
+
+
+static ssize_t button_fpga_write(void * addr,u16 *data,struct button_dev *dev){
+ ssize_t retval;
+
+ iowrite16(*data,addr);/* write the button value */
+ retval = 2;
+ return retval;
+}
+
+/**********************************
+ * irq management
+ * awake read process
+ * ********************************/
+
+static irqreturn_t fpga_interrupt(int irq,void *dev_id,struct pt_regs *reg){
+ struct button_dev *ldev = dev_id;
+ u16 data;
+
+ /* wake up reading process */
+ if(ldev->reading)up(&ldev->sem);
+ /* acknowledge irq_mngr */
+ data=1;
+ BUG_ON((button_fpga_write(ldev->fpga_virtual_base_address + FPGA_IRQ_ACK,&data,ldev))<0);
+
+ return IRQ_HANDLED;
+}
+
+/***********************************
+ * characters file /dev operations
+ * *********************************/
+ssize_t button_read(struct file *fildes, char __user *buff, size_t count, loff_t *offp){
+ struct button_dev *ldev = fildes->private_data;
+ u16 data=0;
+ ssize_t retval = 0;
+ DEFINE_WAIT(wait);
+
+ ldev->reading = 1;
+
+ if(*offp + count >= 1) /* Only one word can be read */
+ count = 1 - *offp;
+
+ if((retval=down_interruptible(&ldev->sem))<0)
+ goto out;
+
+ if((retval = button_fpga_read(ldev->fpga_virtual_base_address + FPGA_BUTTON,&data,ldev))<0)
+ goto out;
+
+ /* return data for user */
+ if(copy_to_user(buff,&data,2)){
+ printk(KERN_WARNING "read : copy to user data error\n");
+ retval = -EFAULT;
+ goto out;
+ }
+
+ *offp = *offp + count;
+ retval = 1;
+
+out:
+ PDEBUG("read : Return value %d\n",(int)retval);
+ ldev->reading = 0;
+ return retval;
+}
+
+
+int button_open(struct inode *inode, struct file *filp){
+ /* Allocate and fill any data structure to be put in filp->private_data */
+ filp->private_data = container_of(inode->i_cdev,struct button_dev, cdev);
+ PDEBUG( "file opened\n");
+ return 0;
+}
+
+/* ******************************
+ * Init and release functions
+ * ******************************/
+int button_release(struct inode *inode, struct file *filp){
+ PDEBUG( "released\n");
+ return 0;
+}
+
+/**********************************
+ * Module management
+ **********************************/
+static int __init button_init(void){
+
+ int result; /* error return */
+ int button_major,button_minor;
+ u16 data;
+ struct button_dev *sdev;
+
+ button_major = 252;
+ button_minor = 0;
+
+ /* Allocate a private structure and reference it as driver's data */
+ sdev = (struct button_dev *)kmalloc(sizeof(struct button_dev),GFP_KERNEL);
+ if(sdev == NULL){
+ printk(KERN_WARNING "button: unable to allocate private structure\n");
+ return -ENOMEM;
+ }
+
+ /* Get the major and minor device numbers */
+ PDEBUG("Get the major and minor device numbers\n");
+ if(button_major){
+ devno = MKDEV(button_major,button_minor);
+ result = register_chrdev_region(devno, N_DEV,BUTTON_NAME);
+ }else{
+ result = alloc_chrdev_region(&devno,button_minor,N_DEV,BUTTON_NAME);
+ button_major = MAJOR(devno);
+ }
+ printk(KERN_INFO "button: MAJOR: %d MINOR: %d\n",MAJOR(devno),MINOR(devno));
+ if(result < 0){
+ printk(KERN_WARNING "button: can't get major %d\n",button_major);
+ }
+
+ /* Init the cdev structure */
+ PDEBUG("Init the cdev structure\n");
+ cdev_init(&sdev->cdev,&button_fops);
+ sdev->cdev.owner = THIS_MODULE;
+
+ /* Add the device to the kernel, connecting cdev to major/minor number */
+ PDEBUG("Add the device to the kernel, connecting cdev to major/minor number \n");
+ result = cdev_add(&sdev->cdev,devno,1);
+ if(result < 0)printk(KERN_WARNING "button: can't add cdev\n");
+
+ /* Requested I/O memory */
+ sdev->fpga_virtual_base_address = (void*)IMX_CS1_VIRT;
+
+ /* irq registering */
+ if(request_irq(IRQ_GPIOA(1),(irq_handler_t)fpga_interrupt,IRQF_SHARED,FPGA_IRQ_NAME,sdev)<0){
+ printk(KERN_ERR "Can't request fpga irq\n");
+ goto error;
+ }
+ /* irq acknowledge */
+ data=1;
+ if((result=button_fpga_write(sdev->fpga_virtual_base_address + FPGA_IRQ_ACK,&data,sdev))<0)
+ goto error;
+ /* irq unmask */
+ data=1;
+ if((result=button_fpga_write(sdev->fpga_virtual_base_address + FPGA_IRQ_MASK,&data,sdev))<0)
+ goto error;
+
+ /* initiate mutex locked */
+ sdev->reading = 0;
+ init_MUTEX_LOCKED(&sdev->sem);
+
+
+ /* OK module inserted ! */
+ buttondev = sdev;
+ printk(KERN_INFO "button module insered\n");
+ return 0;
+
+
+error:
+ printk(KERN_ERR "%s: not inserted\n",BUTTON_NAME);
+ free_all();
+ return result;
+}
+
+static void __exit button_exit(void){
+ free_all();
+}
+
+static void free_all(void){
+ struct button_dev *sdev = buttondev;
+
+ /* free irq*/
+ free_irq(IRQ_GPIOA(1),sdev);
+
+ /* delete the cdev structure */
+ cdev_del(&sdev->cdev);
+
+ /* Free the allocated memory */
+ kfree(sdev);
+
+ /* Release I/O memories */
+ release_mem_region(FPGA_BASE_ADDR,FPGA_MEM_SIZE);
+
+ /* free major and minor number */
+ unregister_chrdev_region(devno,N_DEV);
+ printk(KERN_INFO "button module deleted\n");
+}
+
+module_init(button_init);
+module_exit(button_exit);
Added: trunk/target/linux/modules/fpga/Wb_button/button.h
===================================================================
--- trunk/target/linux/modules/fpga/Wb_button/button.h (rev 0)
+++ trunk/target/linux/modules/fpga/Wb_button/button.h 2008-04-02 08:00:54 UTC (rev 780)
@@ -0,0 +1,107 @@
+/* button.h
+ * Driver for Wb_button IP
+ * Fabien Marteau <fab...@ar...>
+ * 28 mars 2008
+ */
+
+
+#ifndef __BUTTON_H__
+#define __BUTTON_H__
+
+#include "button_specific.h"
+
+#include <linux/version.h>
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20)
+#include <linux/config.h>
+#endif
+
+/* form module/drivers */
+#include <linux/init.h>
+#include <linux/module.h>
+
+/* for file operations */
+#include <linux/fs.h>
+#include <linux/cdev.h>
+
+/* copy_to_user function */
+#include <asm/uaccess.h>
+
+/* request_mem_region */
+#include <linux/ioport.h>
+
+/* readw() writew() */
+#include <asm/io.h>
+
+/* hardware addresses */
+#include <asm/hardware.h>
+
+/* interruptions */
+#include <linux/interrupt.h>
+#include <asm/irq.h>
+#include <linux/wait.h>
+#include <asm/semaphore.h>
+
+/* measure time */
+#include <linux/jiffies.h>
+#endif
+
+/* for debugging messages*/
+#define BUTTON_DEBUG
+
+#undef PDEBUG
+#ifdef BUTTON_DEBUG
+# ifdef __KERNEL__
+ /* for kernel spage */
+# define PDEBUG(fmt,args...) printk(KERN_DEBUG "button : " fmt, ##args)
+# else
+ /* for user space */
+# define PDEBUG(fmt,args...) printk(stderr, fmt, ##args)
+# endif
+#else
+# define PDEBUG(fmt,args...) /* no debbuging message */
+#endif
+
+
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("Fabien Marteau <fab...@ar...> - ARMadeus Systems");
+MODULE_DESCRIPTION("button device driver");
+
+/* main device structure */
+struct button_dev{
+ struct cdev cdev; /* Char device structure */
+ struct semaphore sem; /* Mutex */
+ void * fpga_virtual_base_address; /* fpga register base address*/
+ wait_queue_head_t button_queue;
+ u8 reading;
+};
+
+/* major and minor number */
+
+#define N_DEV 1
+static dev_t devno; /* to store Major and minor numbers */
+static struct button_dev *buttondev;
+#define BUTTON_LENGTH 1
+struct resource *mem; /* pointer to fpga button */
+
+
+/* to read write button register */
+ssize_t button_read(struct file *fildes, char __user *buff,
+ size_t count, loff_t *offp);
+
+int button_open(struct inode *inode, struct file *filp);
+
+int button_release(struct inode *, struct file *filp);
+
+struct file_operations button_fops = {
+ .owner = THIS_MODULE,
+ .read = button_read,
+ .open = button_open,
+ .release = button_release,
+};
+
+static irqreturn_t fpga_interrupt(int irq,void *stuff,struct pt_regs *reg);
+
+static void free_all(void);
+
+static ssize_t button_fpga_read(void * addr, u16 *data , struct button_dev *dev);
+static ssize_t button_fpga_write(void * addr, u16 *data, struct button_dev *dev);
Added: trunk/target/linux/modules/fpga/Wb_button/button_specific.h
===================================================================
--- trunk/target/linux/modules/fpga/Wb_button/button_specific.h (rev 0)
+++ trunk/target/linux/modules/fpga/Wb_button/button_specific.h 2008-04-02 08:00:54 UTC (rev 780)
@@ -0,0 +1,14 @@
+#define BUTTON_NAME "button"
+#define FPGA_BUTTON 8
+#define FPGA_IRQ_MASK 0
+#define FPGA_IRQ_PEND 2
+#define FPGA_IRQ_ACK 2
+
+/* Fpga base address for led */
+#define FPGA_BASE_ADDR IMX_CS1_PHYS
+#define FPGA_MEM_SIZE IMX_CS1_SIZE
+#define FPGA_IRQ_NAME "fpga"
+
+/* interrupt position in irq_mngr */
+#define WB_BUTTON_IRQ 0x0001
+
Added: trunk/target/linux/modules/fpga/Wb_button/testbutton.c
===================================================================
--- trunk/target/linux/modules/fpga/Wb_button/testbutton.c (rev 0)
+++ trunk/target/linux/modules/fpga/Wb_button/testbutton.c 2008-04-02 08:00:54 UTC (rev 780)
@@ -0,0 +1,67 @@
+/* a little program to test button driver
+ * Fabien Marteau <fab...@ar...>
+ * 7 march 2008
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+/* file management */
+#include <sys/stat.h>
+#include <fcntl.h>
+
+/* as name said */
+#include <signal.h>
+
+/* sleep */
+#include <unistd.h>
+
+int fled;
+
+void quit(int pouet){
+ close(fled);
+ exit(0);
+}
+
+int main(int argc, char *argv[])
+{
+ unsigned short i,j;
+
+ /* quit when Ctrl-C pressed */
+ signal(SIGINT, quit);
+
+ j=0;
+
+ printf( "Testing button driver\n" );
+
+ if(argc < 2){
+ perror("invalide arguments number\ntestled <button_filename>\n");
+ exit(EXIT_FAILURE);
+ }
+
+ fled=open(argv[1],O_RDWR);
+ if(fled<0){
+ perror("can't open file\n");
+ exit(EXIT_FAILURE);
+ }
+
+ while(1){
+ i = (i==0)?1:0;
+ fflush(stdout);
+
+ /* read value */
+ if(read(fled,&j,1)<0){
+ perror("read error\n");
+ exit(EXIT_FAILURE);
+ }
+ printf("Read %d\n",j);
+
+ if(lseek(fled,0,SEEK_SET)<0){
+ perror("lseek error\n");
+ exit(EXIT_FAILURE);
+ }
+ }
+
+ close(fled);
+ exit(0);
+}
Added: trunk/target/linux/modules/fpga/Wb_led/Kconfig
===================================================================
--- trunk/target/linux/modules/fpga/Wb_led/Kconfig (rev 0)
+++ trunk/target/linux/modules/fpga/Wb_led/Kconfig 2008-04-02 08:00:54 UTC (rev 780)
@@ -0,0 +1,8 @@
+#
+#
+
+config ARMADEUS_LED_DRIVER
+ tristate "Wishbone Led driver"
+ default n
+ depends on ARMADEUS_FPGA_DRIVERS
+ ---help---
Added: trunk/target/linux/modules/fpga/Wb_led/Makefile
===================================================================
--- trunk/target/linux/modules/fpga/Wb_led/Makefile (rev 0)
+++ trunk/target/linux/modules/fpga/Wb_led/Makefile 2008-04-02 08:00:54 UTC (rev 780)
@@ -0,0 +1,37 @@
+#
+# Makefile for the Armadeus Wb_led drivers
+#
+
+BASE_DIR="../../../../../buildroot/"
+
+REL=`grep "BR2_PACKAGE_LINUX_VERSION=" $(BASE_DIR).config | \
+ sed "s/BR2_PACKAGE_LINUX_VERSION=\\"//" | sed "s/\\"//"`
+
+ARMADEUS_KERNEL_DIR=$(BASE_DIR)build_arm/linux-$(REL)
+
+ifneq ($(KERNELRELEASE),)
+
+obj-$(CONFIG_ARMADEUS_LED_DRIVER) += led.o
+
+# Part executed when called from standard make in this directory:
+# (preferably use Makefile in parent directory)
+
+else
+KDIR := $(ARMADEUS_KERNEL_DIR)
+PWD := $(shell pwd)
+
+default:
+ $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
+ -cp led.ko /tftpboot/
+
+test:
+ ~/armadeus/buildroot/build_arm/staging_dir/bin/arm-linux-gcc testled.c -o testled
+ chmod 755 testled
+ cp testled /tftpboot/
+
+clean:
+ rm -f *.*o \
+ rm -f Module.symvers
+
+endif
+
Property changes on: trunk/target/linux/modules/fpga/Wb_led/Makefile
___________________________________________________________________
Name: svn:executable
+ *
Added: trunk/target/linux/modules/fpga/Wb_led/led.c
===================================================================
--- trunk/target/linux/modules/fpga/Wb_led/led.c (rev 0)
+++ trunk/target/linux/modules/fpga/Wb_led/led.c 2008-04-02 08:00:54 UTC (rev 780)
@@ -0,0 +1,280 @@
+/* led.c
+ * Driver for bus_led fpga IP
+ * Fabien Marteau <fab...@ar...>
+ */
+
+#include "led.h"
+
+/*********************************
+ * simple fpga read/write
+ *********************************/
+
+static ssize_t led_fpga_read(void * addr,u16 *data,struct led_dev *dev){
+ *data = ioread16(addr);/* read the led value */
+ // PDEBUG( "read : value read : %x\n",*data);
+ return 2;
+}
+
+static ssize_t led_fpga_write(void * addr,u16 *data,struct led_dev *dev){
+ ssize_t retval;
+
+ iowrite16(*data,addr);/* write the led value */
+ retval = 2;
+ return retval;
+}
+
+/* *********************************
+ * Sysfs operations
+ * *********************************/
+
+static void kobj_release(struct kobject *kobj){
+ PDEBUG("led kobject released\n");
+}
+
+static int init_sysinterface(struct led_dev *ldev){
+ int ret = 0;
+
+ /* initializing kobject to 0 */
+ memset(&ldev->kobj,0,sizeof(struct kobject));
+ /* set kobject name */
+ if(unlikely(ret = kobject_set_name(&ldev->kobj,LED_NAME)))
+ goto out;
+ /* register */
+ if(unlikely(ret=kobject_register(&ldev->kobj)))
+ goto out;
+ /* register the kobj_type */
+ ldev->kobj.ktype = &kobjtype;
+ /* add status attribute */
+ if(unlikely(ret=sysfs_create_file(&ldev->kobj,&led_status_attr)));
+
+out:
+ return ret;
+}
+
+static ssize_t led_show_status(struct kobject *kobj,struct attribute *attr,char *buf){
+ ssize_t ret_size = 0;
+ struct led_dev *dev;
+ u16 data;
+
+ dev = container_of(kobj,struct led_dev,kobj);
+
+ if(down_interruptible(&dev->sem)){ /* take mutex */
+ printk(KERN_WARNING "led_show_status:can't take mutex\n");
+ return -ERESTARTSYS;
+ }
+
+ if((ret_size=led_fpga_read(dev->fpga_virtual_base_address + FPGA_LED,&data,dev))<0)
+ goto out;
+
+ PDEBUG("data : %d\n",data);
+ if(data&0x0001)ret_size = (ssize_t)sprintf(buf,"1\n");
+ else ret_size = (ssize_t)sprintf(buf,"0\n");
+
+out:
+ up(&dev->sem);
+ return ret_size;
+}
+
+static ssize_t led_store_status(struct kobject *kobj,struct attribute *attr,
+ const char *buff, size_t size){
+ struct led_dev *ldev = container_of(kobj,struct led_dev,kobj);
+ u16 data;
+
+ if(buff[0]=='1')
+ data=0x0001;
+ else if(buff[0]=='0')
+ data=0x0000;
+ else
+ return size;
+
+ if(down_interruptible(&ldev->sem))
+ return -ERESTARTSYS;
+
+ size=led_fpga_write(ldev->fpga_virtual_base_address + FPGA_LED,&data,ldev);
+
+ up(&ldev->sem);
+ return size ;
+}
+
+/***********************************
+ * characters file /dev operations
+ * *********************************/
+ssize_t led_read(struct file *fildes, char __user *buff, size_t count, loff_t *offp){
+ struct led_dev *ldev = fildes->private_data;
+ u16 data=0;
+ ssize_t retval = 0;
+
+ PDEBUG( "read : offset %d, count %d\n",(int)*offp,(int)count);
+ if(down_interruptible(&ldev->sem)) /* take mutex */
+ return -ERESTARTSYS;
+ if(*offp >= 1){ /* offset must be 0 or 1 */
+ goto out;
+ }
+ if(*offp + count >= 1) /* Only one word can be read */
+ count = 1 - *offp;
+
+ if((retval = led_fpga_read(ldev->fpga_virtual_base_address + FPGA_LED,&data,ldev))<0)
+ goto out;
+
+ /* return data for user */
+ if(copy_to_user(buff,&data,2)){
+ printk(KERN_WARNING "read : copy to user data error\n");
+ retval = -EFAULT;
+ goto out;
+ }
+
+ *offp = *offp + count;
+ retval = 1;
+
+out:
+ up(&ldev->sem); /* free mutex */
+ PDEBUG("read : Return value %d\n",(int)retval);
+ return retval;
+}
+
+ssize_t led_write(struct file *fildes, const char __user *buff,size_t count, loff_t *offp){
+ struct led_dev *ldev = fildes->private_data;
+ u16 data=0;
+ ssize_t retval = 0;
+
+
+ PDEBUG("write : offset %d, count %d\n",(int)*offp,(int)count);
+ if(down_interruptible(&ldev->sem))
+ return -ERESTARTSYS;
+ if(*offp != 0){ /* offset must be 0 */
+ goto out;
+ }
+ if(count != 1) /* Only one word can be read */
+ count = 1;
+
+ if(copy_from_user(&data,buff,1)){
+ printk(KERN_WARNING "write : copy from user error\n");
+ retval = -EFAULT;
+ goto out;
+ }
+
+ if((retval=led_fpga_write(ldev->fpga_virtual_base_address + FPGA_LED,&data,ldev))<0){
+ goto out;
+ }
+
+out:
+ up(&ldev->sem);
+ return retval;
+
+}
+
+int led_open(struct inode *inode, struct file *filp){
+ /* Allocate and fill any data structure to be put in filp->private_data */
+ filp->private_data = container_of(inode->i_cdev,struct led_dev, cdev);
+ PDEBUG( "Led opened\n");
+ return 0;
+}
+
+/* ******************************
+ * Init and release functions
+ * ******************************/
+int led_release(struct inode *inode, struct file *filp){
+ PDEBUG( "Led released\n");
+ return 0;
+}
+
+/**********************************
+ * Module management
+ **********************************/
+static int __init led_init(void){
+
+ int result; /* error return */
+ int led_major,led_minor;
+ u16 data;
+ struct led_dev *sdev;
+
+ led_major = 253;
+ led_minor = 0;
+
+ /* Allocate a private structure and reference it as driver's data */
+ PDEBUG("Allocate a private structure and reference it as driver s data\n");
+ sdev = (struct led_dev *)kmalloc(sizeof(struct led_dev),GFP_KERNEL);
+ if(sdev == NULL){
+ printk(KERN_WARNING "LED: unable to allocate private structure\n");
+ return -ENOMEM;
+ }
+
+ /* initiate mutex for accessing led */
+ PDEBUG("initiate mutex for accessing led\n");
+ init_MUTEX(&sdev->sem);
+
+ /* Get the major and minor device numbers */
+ PDEBUG("Get the major and minor device numbers\n");
+ if(led_major){
+ devno = MKDEV(led_major,led_minor);
+ result = register_chrdev_region(devno, N_DEV,LED_NAME);
+ }else{
+ result = alloc_chrdev_region(&devno,led_minor,N_DEV,LED_NAME);
+ led_major = MAJOR(devno);
+ }
+ printk(KERN_INFO "LED: MAJOR: %d MINOR: %d\n",MAJOR(devno),MINOR(devno));
+ if(result < 0){
+ printk(KERN_WARNING "LED: can't get major %d\n",led_major);
+ }
+
+ /* Init the cdev structure */
+ PDEBUG("Init the cdev structure\n");
+ cdev_init(&sdev->cdev,&led_fops);
+ sdev->cdev.owner = THIS_MODULE;
+
+ /* Add the device to the kernel, connecting cdev to major/minor number */
+ PDEBUG("Add the device to the kernel, connecting cdev to major/minor number \n");
+ result = cdev_add(&sdev->cdev,devno,1);
+ if(result < 0)printk(KERN_WARNING "LED: can't add cdev\n");
+
+ sdev->fpga_virtual_base_address = (void*)IMX_CS1_VIRT;
+
+ /* initialyzing sysfs */
+ PDEBUG(" initialyzing sysfs\n");
+ if(unlikely(result = init_sysinterface(sdev)))
+ goto error;
+
+ /* initialize led value */
+ data=1;
+ if((result=led_fpga_write(sdev->fpga_virtual_base_address + FPGA_LED,&data,sdev))<0)
+ goto error;
+
+ sdev->previousint = jiffies;
+ /* OK module inserted ! */
+ leddev=sdev;
+ printk(KERN_INFO "Led module insered\n");
+ return 0;
+
+error:
+ printk(KERN_ERR "%s: not inserted\n",LED_NAME);
+ free_all();
+ return result;
+}
+
+static void __exit led_exit(void){
+ free_all();
+}
+
+static void free_all(void){
+ struct led_dev *sdev;
+ sdev = leddev;
+
+ /* unregister kobj */
+ kobject_unregister(&sdev->kobj);
+
+ /* delete the cdev structure */
+ cdev_del(&sdev->cdev);
+
+ /* Free the allocated memory */
+ kfree(sdev);
+
+ /* Release I/O memories */
+ release_mem_region(FPGA_BASE_ADDR,FPGA_MEM_SIZE);
+
+ /* free major and minor number */
+ unregister_chrdev_region(devno,N_DEV);
+ printk(KERN_INFO "Led module deleted\n");
+}
+
+module_init(led_init);
+module_exit(led_exit);
Added: trunk/target/linux/modules/fpga/Wb_led/led.h
===================================================================
--- trunk/target/linux/modules/fpga/Wb_led/led.h (rev 0)
+++ trunk/target/linux/modules/fpga/Wb_led/led.h 2008-04-02 08:00:54 UTC (rev 780)
@@ -0,0 +1,123 @@
+/* led.h
+ * Driver for bus_led IP
+ * Fabien Marteau <fab...@ar...>
+ */
+
+
+#ifndef __LED_H__
+#define __LED_H__
+
+#include <linux/version.h>
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20)
+#include <linux/config.h>
+#endif
+
+/* specific header generated by orchestra */
+#include "led_specific.h"
+
+/* form module/drivers */
+#include <linux/init.h>
+#include <linux/module.h>
+
+/* linux device model */
+#include <linux/kobject.h>
+#include <linux/sysfs.h>
+#include <linux/sysdev.h>
+#include <linux/device.h>
+
+/* for file operations */
+#include <linux/fs.h>
+#include <linux/cdev.h>
+
+/* copy_to_user function */
+#include <asm/uaccess.h>
+
+/* request_mem_region */
+#include <linux/ioport.h>
+
+/* readw() writew() */
+#include <asm/io.h>
+
+/* hardware addresses */
+#include <asm/hardware.h>
+
+#endif
+
+/* for debugging messages*/
+#define LED_DEBUG
+
+#undef PDEBUG
+#ifdef LED_DEBUG
+# ifdef __KERNEL__
+ /* for kernel spage */
+# define PDEBUG(fmt,args...) printk(KERN_DEBUG "led : " fmt, ##args)
+# else
+ /* for user space */
+# define PDEBUG(fmt,args...) printk(stderr, fmt, ##args)
+# endif
+#else
+# define PDEBUG(fmt,args...) /* no debbuging message */
+#endif
+
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("Fabien Marteau <fab...@ar...> - ARMadeus Systems");
+MODULE_DESCRIPTION("Led device driver");
+
+/* major and minor number */
+#define N_DEV 1
+
+/* main device structure */
+struct led_dev{
+ struct cdev cdev; /* Char device structure */
+ struct semaphore sem; /* Mutex */
+ struct kobject kobj; /* kobject for sysfs entry */
+ void * fpga_virtual_base_address; /* fpga register base address*/
+ unsigned long previousint; /* last interruption time */
+};
+
+static void kobj_release(struct kobject *);
+static dev_t devno; /* to store Major and minor numbers */
+static struct led_dev *leddev;
+/* to read write led register */
+ssize_t led_read(struct file *fildes, char __user *buff,
+ size_t count, loff_t *offp);
+
+ssize_t led_write(struct file *fildes, const char __user *
+ buff,size_t count, loff_t *offp);
+int led_open(struct inode *inode, struct file *filp);
+
+int led_release(struct inode *, struct file *filp);
+
+struct file_operations led_fops = {
+ .owner = THIS_MODULE,
+ .read = led_read,
+ .write = led_write,
+ .open = led_open,
+ .release = led_release,
+};
+
+/* Sysfs operation */
+static struct attribute led_status_attr = {
+ .name = "status",
+ .owner = THIS_MODULE,
+ .mode = 0666,
+};
+
+static int init_sysinterface(struct led_dev *pdev);
+static ssize_t led_show_status(struct kobject *kobj,struct attribute *attr,char *buf);
+static ssize_t led_store_status(struct kobject *kobj,struct attribute *attr, const char *buff, size_t size);
+
+static struct sysfs_ops led_status_fs_ops = {
+ .show = led_show_status,
+ .store = led_store_status,
+};
+
+struct kobj_type kobjtype = {
+ .release = kobj_release,
+ .sysfs_ops = &led_status_fs_ops,
+};
+
+static void free_all(void);
+
+static ssize_t led_fpga_read(void * addr, u16 *data , struct led_dev *dev);
+static ssize_t led_fpga_write(void * addr, u16 *data, struct led_dev *dev);
Added: trunk/target/linux/modules/fpga/Wb_led/led.mod.c
===================================================================
--- trunk/target/linux/modules/fpga/Wb_led/led.mod.c (rev 0)
+++ trunk/target/linux/modules/fpga/Wb_led/led.mod.c 2008-04-02 08:00:54 UTC (rev 780)
@@ -0,0 +1,21 @@
+#include <linux/module.h>
+#include <linux/vermagic.h>
+#include <linux/compiler.h>
+
+MODULE_INFO(vermagic, VERMAGIC_STRING);
+
+struct module __this_module
+__attribute__((section(".gnu.linkonce.this_module"))) = {
+ .name = KBUILD_MODNAME,
+ .init = init_module,
+#ifdef CONFIG_MODULE_UNLOAD
+ .exit = cleanup_module,
+#endif
+ .arch = MODULE_ARCH_INIT,
+};
+
+static const char __module_depends[]
+__attribute_used__
+__attribute__((section(".modinfo"))) =
+"depends=";
+
Added: trunk/target/linux/modules/fpga/Wb_led/led_specific.h
===================================================================
--- trunk/target/linux/modules/fpga/Wb_led/led_specific.h (rev 0)
+++ trunk/target/linux/modules/fpga/Wb_led/led_specific.h 2008-04-02 08:00:54 UTC (rev 780)
@@ -0,0 +1,12 @@
+/* this file as been generated by orchestra
+ * do not modify it manualy
+ */
+
+#define FPGA_LED 4
+#define FPGA_IRQ_MASK 0
+#define FPGA_IRQ_PEND 2
+#define FPGA_IRQ_ACK 2
+
+#define FPGA_BASE_ADDR IMX_CS1_PHYS
+#define FPGA_MEM_SIZE IMX_CS1_SIZE
+#define LED_NAME "led"
Added: trunk/target/linux/modules/fpga/fpga_devtools/Kconfig
===================================================================
--- trunk/target/linux/modules/fpga/fpga_devtools/Kconfig (rev 0)
+++ trunk/target/linux/modules/fpga/fpga_devtools/Kconfig 2008-04-02 08:00:54 UTC (rev 780)
@@ -0,0 +1,9 @@
+#
+
+#
+config ARMADEUS_FPGA_TOOL_DRIVER
+ tristate "Armadeus FPGA configuration driver"
+ default n
+ depends on ARMADEUS_FPGA_DRIVERS
+ ---help---
+
Added: trunk/target/linux/modules/fpga/fpga_devtools/Makefile
===================================================================
--- trunk/target/linux/modules/fpga/fpga_devtools/Makefile (rev 0)
+++ trunk/target/linux/modules/fpga/fpga_devtools/Makefile 2008-04-02 08:00:54 UTC (rev 780)
@@ -0,0 +1,36 @@
+#
+# Makefile for the Armadeus FPGA loader driver
+# PATH=$HOME/nico/test/buildroot/build_arm_nofpu/staging_dir/bin:$PATH
+# make ARCH=arm
+# tftp -gr fpgaloader.ko -l /lib/modules/drivers/fpgaloader.ko 192.168.0.3
+# tftp -gr fpga_test.bit 192.168.0.3
+# insmod /lib/modules/drivers/fpgaloader.ko
+# dd if=fpga_test.bit of=/dev/fpga/loader
+
+
+BASE_DIR="../../../../buildroot/"
+
+REL=`grep "BR2_PACKAGE_LINUX_VERSION=" $(BASE_DIR).config | \
+ sed "s/BR2_PACKAGE_LINUX_VERSION=\\"//" | sed "s/\\"//"`
+
+ARMADEUS_KERNEL_DIR=$(BASE_DIR)build_arm_nofpu/linux-$(REL)
+
+ifneq ($(KERNELRELEASE),)
+
+obj-$(CONFIG_ARMADEUS_FPGA_TOOL_DRIVER) += fpgaloader.o
+fpgaloader-objs := target-fpga-loader.o xilinx-fpga-loader.o fpga-loader.o
+
+else
+KDIR := $(ARMADEUS_KERNEL_DIR)
+PWD := $(shell pwd)
+
+default:
+ $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
+
+clean:
+ rm -f *.*o \
+ rm -f Module.symvers
+
+
+endif
+
Added: trunk/target/linux/modules/fpga/fpga_devtools/fpga-loader.c
===================================================================
--- trunk/target/linux/modules/fpga/fpga_devtools/fpga-loader.c (rev 0)
+++ trunk/target/linux/modules/fpga/fpga_devtools/fpga-loader.c 2008-04-02 08:00:54 UTC (rev 780)
@@ -0,0 +1,284 @@
+/*
+ ***********************************************************************
+ *
+ * (c) Copyright 2006 Armadeus project
+ * Julien Boibessot <jul...@ar...>
+ * Nicolas Colombain <nic...@ar...>
+ * Generic Xilinx FPGA loader
+ *
+ * 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, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ **********************************************************************
+ */
+#include <linux/version.h>
+#include "fpga-loader.h"
+#include "xilinx-fpga-loader.h"
+#include <asm/arch/imx-regs.h>
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20)
+#include <linux/config.h>
+#endif
+#include <linux/module.h>
+#include <linux/kernel.h>
+#include <linux/fs.h>
+#include <linux/errno.h>
+#include <linux/types.h>
+#include <linux/proc_fs.h>
+#include <linux/init.h>
+#include <linux/fs.h>
+#include <linux/fcntl.h>
+#include <asm/system.h>
+#include <asm/io.h>
+#include <asm/uaccess.h>
+
+//static unsigned long init_map;
+struct semaphore fpga_sema;
+
+/* global variables */
+static int fpga_major = FPGA_MAJOR;
+Xilinx_desc* g_current_desc = NULL;
+
+static unsigned char fpga_descriptor = 0; // use default target_fpga_desc
+module_param( fpga_descriptor, byte, 0 );
+
+#define FPGA_BUFFER_SIZE 4096
+static unsigned char g_buffer[FPGA_BUFFER_SIZE];
+static unsigned char g_nb_users = 0;
+
+
+void __exit armadeus_fpga_cleanup(void);
+
+
+//------------------------------------------------
+//
+// Handles write() done on /dev/fpgaxx
+//
+static ssize_t armadeus_fpga_write(struct file *file, const char* pData, size_t count, loff_t *f_pos)
+{
+ ssize_t ret = 0;
+
+ // Get exclusive access
+ if (down_interruptible(&fpga_sema))
+ return -ERESTARTSYS;
+
+ if( count > FPGA_BUFFER_SIZE ) {
+ count = FPGA_BUFFER_SIZE;
+ }
+
+ // Get value to write from user space
+ ret = __copy_from_user( g_buffer, pData, count);
+ if (ret != 0) {
+ ret = -EFAULT;
+ goto out;
+ }
+
+ ret = xilinx_load( g_current_desc, g_buffer, count );
+
+out:
+ // Release exclusive access
+ up(&fpga_sema);
+
+ return( ret );
+}
+
+static int armadeus_fpga_open(struct inode *inode, struct file *file)
+{
+ int ret;
+
+ // Only one access at a time is permitted
+ if( g_nb_users > 0 )
+ return( -EBUSY );
+
+ g_nb_users++;
+ ret = xilinx_init_load( g_current_desc );
+
+ PRINTF("Opening /dev/fpga/loader%d file, %d %d\n", MINOR(inode->i_rdev), fpga_descriptor, ret);
+ return ret;
+}
+
+static int armadeus_fpga_release(struct inode *inode, struct file *file)
+{
+ if( g_nb_users > 0 )
+ g_nb_users--;
+
+ PRINTF("Closing access to /dev/fpga/loader%d\n", MINOR(inode->i_rdev));
+ return 0;
+}
+
+//------------------------------------------------
+// PROC file
+//
+static int procfile_fpga_read( char *buffer, __attribute__ ((unused)) char **start, off_t offset, int buffer_length, int *eof, __attribute__ ((unused)) void* data)
+{
+ int ret;
+
+ // We give all of our information in one go, so if the user asks us if we have more information the answer should always be no.
+ // This is important because the standard read function from the library would continue to issue the read system call until
+ // the kernel replies that it has no more information, or until its buffer is filled.
+ if( offset > 0 ) {
+ /* we have finished to read, return 0 */
+ ret = 0;
+ } else {
+ if ( data == NULL ){
+ ret = xilinx_get_descriptor_info( -1, buffer );
+ }
+ else {
+ ret = xilinx_get_descriptor_info( *((unsigned char*)data), buffer );
+ }
+ }
+
+ return ret;
+}
+
+
+static int procfile_fpga_write( __attribute__ ((unused)) struct file *file, const char *buf, unsigned long count, void *data)
+{
+ return count;
+}
+
+//------------------------------------------------
+// Handling of IOCTL calls
+//
+int armadeus_fpga_ioctl( struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg )
+{
+ int err = 0; int ret = 0;
+ unsigned int minor;
+
+ PRINTF( DRIVER_NAME " ## IOCTL received: (0x%x) ##\n", cmd );
+
+ // Extract the type and number bitfields, and don't decode wrong cmds: return ENOTTY (inappropriate ioctl) before access_ok()
+ if (_IOC_TYPE(cmd) != FPGA_IOCTL) return -ENOTTY;
+
+ // The direction is a bitmask, and VERIFY_WRITE catches R/W transfers. `Type' is user-oriented, while access_ok is kernel-oriented,
+ // so the concept of "read" and "write" is reversed
+ if (_IOC_DIR(cmd) & _IOC_READ)
+ err = !access_ok(VERIFY_WRITE, (void *)arg, _IOC_SIZE(cmd));
+ else if (_IOC_DIR(cmd) & _IOC_WRITE)
+ err = !access_ok(VERIFY_READ, (void *)arg, _IOC_SIZE(cmd));
+
+ if (err) return -EFAULT;
+
+ // Obtain exclusive access
+ if (down_interruptible(&fpga_sema))
+ return -ERESTARTSYS;
+ // Extract and test minor
+ minor = MINOR(inode->i_rdev);
+ if( minor > FPGA_MAX_MINOR ) {
+ printk("Minor outside range: %d !\n", minor);
+ return -EFAULT;
+ }
+
+ switch(cmd)
+ {
+ default:
+ return -ENOTTY;
+ break;
+ }
+ // Release exclusive access
+ up(&fpga_sema);
+
+ return ret;
+}
+
+//
+// Create /proc entries for direct access (with echo/cat) to GPIOs config
+//
+static int createProcEntries( void )
+{
+ static struct proc_dir_entry *fpga_Proc_File;
+
+ // Create main directory
+ proc_mkdir(FPGA_PROC_DIRNAME, NULL);
+ // Create proc file to handle GPIO values
+ fpga_Proc_File = create_proc_entry( FPGA_PROC_FILENAME, S_IWUSR |S_IRUSR | S_IRGRP | S_IROTH, NULL );
+
+ if( fpga_Proc_File == NULL )
+ {
+ printk(FPGA_DRIVER_NAME ": Could not register a" FPGA_PROC_FILENAME ". Terminating\n");
+ armadeus_fpga_cleanup();
+ return -ENOMEM;
+ }
+ else
+ {
+ fpga_Proc_File->read_proc = procfile_fpga_read;
+ fpga_Proc_File->write_proc = procfile_fpga_write;
+ }
+
+ return(0);
+}
+
+static struct file_operations fpga_fops = {
+ .owner = THIS_MODULE,
+ .write = armadeus_fpga_write,
+// .read = armadeus_fpga_read,
+ .open = armadeus_fpga_open,
+ .release = armadeus_fpga_release,
+ .ioctl = armadeus_fpga_ioctl,
+};
+
+//
+// Module's initialization function
+//
+int __init armadeus_fpga_init(void)
+{
+ static int result;
+
+ // Register the driver by getting a major number
+ result = register_chrdev(fpga_major, FPGA_DRIVER_NAME, &fpga_fops);
+ if (result < 0)
+ {
+ printk(KERN_WARNING FPGA_DRIVER_NAME ": can't get major %d\n", fpga_major);
+ return result;
+ }
+ if( fpga_major == 0 ) fpga_major = result; // dynamic Major allocation
+
+ // Creating /proc entries
+ result = createProcEntries();
+ if( result < 0 ) return( result );
+
+ // Initialise FPGA semaphore
+ sema_init(&fpga_sema, 1);
+
+ // initialize the current fpga descriptor with the one by default
+ g_current_desc = xilinx_get_descriptor(fpga_descriptor);
+ if( g_current_desc == NULL ){
+ return -EINVAL;
+ }
+
+ printk(FPGA_DRIVER_NAME " module " FPGA_DRIVER_VERSION " successfully loaded !\n");
+ return(0);
+}
+
+//
+// Module's cleanup function
+//
+void __exit armadeus_fpga_cleanup(void)
+{
+ PRINTF("Removing " FPGA_DRIVER_NAME " module: ");
+
+ // Remove /proc entries
+ remove_proc_entry(FPGA_PROC_FILENAME, NULL);
+ // De-register /dev interface
+ unregister_chrdev(fpga_major, FPGA_DRIVER_NAME);
+
+ PRINTF("Ok !\n ");
+}
+
+//------------------------------------------------
+
+module_init(armadeus_fpga_init);
+module_exit(armadeus_fpga_cleanup);
+
+MODULE_AUTHOR("JB / NC");
+MODULE_DESCRIPTION("Armadeus fpga's loading driver");
+MODULE_LICENSE("GPL");
Added: trunk/target/linux/modules/fpga/fpga_devtools/fpga-loader.h
===================================================================
--- trunk/target/linux/modules/fpga/fpga_devtools/fpga-loader.h (rev 0)
+++ trunk/target/linux/modules/fpga/fpga_devtools/fpga-loader.h 2008-04-02 08:00:54 UTC (rev 780)
@@ -0,0 +1,40 @@
+/*
+ ***********************************************************************
+ *
+ * (c) Copyright 2006 Armadeus project
+ * Julien Boibessot <jul...@ar...>
+ * Nicolas Colombain <nic...@ar...>
+ * Generic Xilinx FPGA loader
+ *
+ * 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, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ **********************************************************************
+ */
+
+#ifndef __FPGA_LOADER_H__
+#define __FPGA_LOADER_H__
+
+#define FPGA_PROC_DIRNAME "driver/fpga"
+#define FPGA_PROC_FILENAME FPGA_PROC_DIRNAME "/loader"
+
+#define FPGA_DRIVER_VERSION "v0.0.6"
+#define FPGA_DRIVER_NAME "fpgaloader"
+
+// By default, we use dynamic allocation of major numbers
+#define FPGA_MAJOR 0
+#define FPGA_MAX_MINOR 254
+
+#define FPGA_IOCTL 0x10000000 // !! TO BE BETTER DEFINED !!
+
+#endif // __FPGA_LOADER_H__
Added: trunk/target/linux/modules/fpga/fpga_devtools/fpgaloader.sh
===================================================================
--- trunk/target/linux/modules/fpga/fpga_devtools/fpgaloader.sh (rev 0)
+++ trunk/target/linux/modules/fpga/fpga_devtools/fpgaloader.sh 2008-04-02 08:00:54 UTC (rev 780)
@@ -0,0 +1,11 @@
+#!/bin/sh
+# Load FPGA main module
+modprobe fpgaloader fpga_descriptor=0
+
+FPGA_MAJOR=`cat /proc/devices | grep fpgaloader | cut -d " " -f 1`
+mkdir -p /dev/fpga
+
+# For general usage
+if [ ! -e /dev/fpga/fpgaloader ] ; then
+ mknod /dev/fpga/fpgaloader c $FPGA_MAJOR 0
+fi
Added: trunk/target/linux/modules/fpga/fpga_devtools/target-fpga-loader.c
===================================================================
--- trunk/target/linux/modules/fpga/fpga_devtools/target-fpga-loader.c (rev 0)
+++ trunk/target/linux/modules/fpga/fpga_devtools/target-fpga-loader.c 2008-04-02 08:00:54 UTC (rev 780)
@@ -0,0 +1,116 @@
+/*
+ **********************************************************************
+ * 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, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ **********************************************************************
+
+ (c) Copyright 2006 Armadeus project
+ Eric Jarrige <eri...@ar...>
+ Nicolas Colombain <nic...@ar...>
+ Target Xilinx FPGA support
+*/
+
+#include "target-fpga-loader.h"
+#include "xilinx-fpga-loader.h"
+#include <asm/arch/hardware.h>
+#include <asm/io.h>
+
+#define GPIO_PORT(x) ((x >> 5) & 3)
+#define GPIO_SET(x) (DR(GPIO_PORT(x)) |= (1<<(x & GPIO_PIN_MASK)))
+#define GPIO_CLEAR(x) (DR(GPIO_PORT(x)) &= ~(1<<(x & GPIO_PIN_MASK)))
+#define GPIO_WRITE(x,y) ( y ? GPIO_SET(x) : GPIO_CLEAR(x) )
+#define GPIO_READ(x) ((SSR (GPIO_PORT(x)) & (1<<(x & GPIO_PIN_MASK))))
+
+/*
+ * Set the FPGA's active-low program line to the specified level
+ */
+int fpga_pgm_fn( int assert )
+{
+ GPIO_WRITE( FPGA_PROGRAM, !assert);
+ return assert;
+}
+
+/*
+ * Set the FPGA's active-high clock line to the specified level
+ */
+int fpga_clk_fn( int assert_clk )
+{
+ GPIO_WRITE( FPGA_CLOCK, assert_clk);
+ return assert_clk;
+}
+
+/*
+ * Test the state of the active-low FPGA INIT line. Return 1 on INIT
+ * asserted (low).
+ */
+int fpga_init_fn( void )
+{
+ return(!GPIO_READ(FPGA_INIT));
+}
+
+/*
+ * Test the state of the active-high FPGA DONE pin
+ */
+int fpga_done_fn( void )
+{
+ return(GPIO_READ(FPGA_DONE));
+}
+
+/*
+ * Set the FPGA's data line to the specified level
+ */
+int fpga_wr_fn( int assert_write )
+{
+ GPIO_WRITE( FPGA_DIN, assert_write);
+ return assert_write;
+}
+
+int fpga_pre_fn( void )
+{
+ // Initialize GPIO pins
+ imx_gpio_mode (FPGA_INIT | GPIO_GIUS | GPIO_DR | GPIO_IN );
+ imx_gpio_mode (FPGA_DONE | GPIO_GIUS | GPIO_DR | GPIO_IN );
+ imx_gpio_mode (FPGA_DIN | GPIO_GIUS | GPIO_DR | GPIO_OUT );
+ imx_gpio_mode (FPGA_PROGRAM | GPIO_GIUS | GPIO_DR | GPIO_OUT );
+ imx_gpio_mode (FPGA_CLOCK | GPIO_GIUS | GPIO_DR | GPIO_OUT );
+ return 1;
+}
+
+
+Xilinx_Spartan_Slave_Serial_fns fpga_fns = {
+ fpga_pre_fn,
+ fpga_pgm_fn,
+ fpga_clk_fn,
+ fpga_init_fn,
+ fpga_done_fn,
+ fpga_wr_fn,
+};
+
+Xilinx_desc target_fpga_desc[NB_TARGET_DESC] = {
+
+ { // first supported configuration (default)
+ Xilinx_Spartan,
+ slave_serial,
+ XILINX_XC3S200_SIZE,
+ (void *) &fpga_fns
+ },
+
+ { // second one
+ Xilinx_Spartan,
+ slave_serial,
+ XILINX_XC3S400_SIZE,
+ (void *) &fpga_fns
+ }
+};
+
Added: trunk/target/linux/modules/fpga/fpga_devtools/target-fpga-loader.h
===================================================================
--- trunk/target/linux/modules/fpga/fpga_devtools/target-fpga-loader.h (rev 0)
+++ trunk/target/linux/modules/fpga/fpga_devtools/target-fpga-loader.h 2008-04-02 08:00:54 UTC (rev 780)
@@ -0,0 +1,40 @@
+/*
+ **********************************************************************
+ * 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, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ **********************************************************************
+
+ (c) Copyright 2006 Armadeus project
+ Eric Jarrige <eri...@ar...>
+ Nicolas Colombain <nic...@ar...>
+ Target Xilinx FPGA support
+
+*/
+#ifndef __TARGET_FPGA_LOADER_H__
+#define __TARGET_FPGA_LOADER_H__
+
+
+#include "xilinx-fpga-loader.h"
+#include <asm/arch/imx-regs.h>
+#include <asm/io.h>
+
+#define FPGA_INIT (GPIO_PORTB | 15) /* FPGA init pin (SSI input) */
+#define FPGA_DONE (GPIO_PORTB | 16) /* FPGA done pin (SSI input) */
+#define FPGA_DIN (GPIO_PORTB | 17) /* FPGA data pin (SSI output) */
+#define FPGA_PROGRAM (GPIO_PORTB | 18) /* FPGA prog pin (SSI output) */
+#define FPGA_CLOCK (GPIO_PORTB | 19) /* FPGA clk pin (SSI output) */
+
+#define NB_TARGET_DESC 2
+
+#endif // __TARGET_FPGA_LOADER_H__
Added: trunk/target/linux/modules/fpga/fpga_devtools/xilinx-fpga-loader.c
===================================================================
--- trunk/target/linux/modules/fpga/fpga_devtools/xilinx-fpga-loader.c (rev 0)
+++ trunk/target/linux/modules/fpga/fpga_devtools/xilinx-fpga-loader.c 2008-04-02 08:00:54 UTC (rev 780)
@@ -0,0 +1,277 @@
+/*
+ * (c) Copyright 2006 Armadeus project
+ * Nicolas Colombain <nic...@ar...>
+ * Xilinx FPGA support
+ *
+ * Based on the implementation(uBoot) of:
+ * Rich Ireland, Enterasys Networks, rir...@en....
+ * Keith Outwater, kei...@mv...
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ */
+
+#include "xilinx-fpga-loader.h"
+#include "target-fpga-loader.h"
+#include <asm/arch/imx-regs.h>
+#include <asm/io.h>
+#include <linux/time.h>
+#include <linux/kernel.h>
+#include <linux/errno.h>
+
+#define CONFIG_FPGA_DELAY()
+#define CFG_FPGA_WAIT 4000 // uS
+
+size_t bytecount = 0; // total bytes received
+extern Xilinx_desc target_fpga_desc[]; // target descriptor table
+
+/*
+ * Timeout function
+ */
+static unsigned long get_timer(unsigned long initTime)
+{
+ struct timeval tv;
+ do_gettimeofday(&tv);
+ if( tv.tv_usec > initTime ) // avoid overflow pb
+ return tv.tv_usec - initTime;
+ else
+ return initTime - tv.tv_usec;
+}
+
+/*
+ * dump the given descriptor infos
+ */
+static int xilinx_dump_descriptor_info( Xilinx_desc *desc, char* buffer )
+{
+ int len;
+ len = sprintf( buffer, "%s %s %u\n",
+ (desc->family == Xilinx_Spartan) ? "spartan":"unknown",
+ (desc->iface == slave_serial) ? "slave serial":"unknown",
+ desc->size );
+ return len;
+}
+
+/**
+ * program the FPGA.
+ * return 0 if success, >0 while programming, <0 if error detected
+ */
+static size_t spartan_serial_load (Xilinx_desc *desc, const char* buf, size_t bsize)
+{
+ Xilinx_Spartan_Slave_Serial_fns *fn = desc->iface_fns;
+ if (fn) {
+ unsigned long ts; /* timestamp */
+
+ /* Load the data */
+ if( bytecount<=desc->size ) {
+ int i;
+ unsigned char val;
+ size_t nbbyte = 0; // init local counter
+
+ while (nbbyte < bsize) {
+
+ /* Xilinx detects an error if INIT goes low (active)
+ while DONE is low (inactive) */
+ if ((*fn->done)() == 0 && (*fn->init)()) {
+ PRINTF ("** CRC error during FPGA load.\n");
+ return -ETIMEDOUT;
+ }
+ val = buf[nbbyte ++];
+ bytecount++;
+ i = 8;
+ do {
+ /* Deassert the clock */
+ (*fn->clk)(0);
+ CONFIG_FPGA_DELAY ();
+ /* Write data */
+ (*fn->wr)(val & 0x80);
+ CONFIG_FPGA_DELAY ();
+ /* Assert the clock */
+ (*fn->clk)(1);
+ CONFIG_FPGA_DELAY ();
+ val <<= 1;
+ i --;
+ } while (i > 0);
+ }
+ }
+ if( bytecount>=desc->size )
+ {
+ CONFIG_FPGA_DELAY ();
+
+ /* now check for done signal */
+ ts = get_timer(0); /* get current time */
+ (*fn->wr)(1);
+
+ while (! (*fn->done)()) {
+ CONFIG_FPGA_DELAY ();
+ (*fn->clk)(0); /* Deassert the clock pin */
+ CONFIG_FPGA_DELAY ();
+ (*fn->clk)(1); /* Assert the clock pin */
+
+ if (get_timer (ts) > CFG_FPGA_WAIT) { /* check the time */
+ PRINTF ("** Timeout waiting for DONE.\n");
+ return -ETIMEDOUT;
+ }
+ }
+ }
+ return bsize;
+ }
+ return -EINVAL;
+}
+
+/**
+ * initialize the FPGA programming interface.
+ * return 0 if success, <0 if error detected
+ */
+static int spartan_serial_init (Xilinx_desc *desc)
+{
+ Xilinx_Spartan_Slave_Serial_fns *fn = desc->iface_fns;
+ if (fn) {
+ unsigned long ts; /* timestamp */
+
+ if(*fn->pre){
+ (*fn->pre)(); //Run the pre configuration function if there is one.
+ }
+
+ /* Establish the initial state */
+ (*fn->pgm)(1); /* Assert the program, commit */
+
+ /* Wait for INIT state (init low) */
+ ts = get_timer(0); /* get current time */
+ do {
+ CONFIG_FPGA_DELAY ();
+ if (get_timer (ts) > CFG_FPGA_WAIT) { /* check the time */
+ PRINTF ("** Timeout waiting for INIT to start.\n");
+ return -ETIMEDOUT;
+ }
+ } while (!(*fn->init)());
+
+ /* Get ready for the burn */
+ CONFIG_FPGA_DELAY ();
+ (*fn->pgm)(0); /* Deassert the program, commit */
+
+ ts = get_timer(0); /* get current time */
+ /* Now wait for INIT to go high */
+ do {
+ CONFIG_FPGA_DELAY ();
+ if (get_timer (ts) > CFG_FPGA_WAIT) { /* check the time */
+ PRINTF ("** Timeout waiting for INIT to clear.\n");
+ return -ETIMEDOUT;
+ }
+ } while ((*fn->init)());
+
+ bytecount = 0; // reset byte count
+ return 0; // success
+ }
+ return -EINVAL;
+}
+
+/**
+ * program the FPGA.
+ * return 0 if success, >0 while programming, <0 if error detected
+ */
+size_t xilinx_load( Xilinx_desc *desc, const char *buf, size_t bsize )
+{
+ int ret = 0;
+
+ if( desc ) {
+ switch( desc->family ) // check family
+ {
+ case Xilinx_Spartan:
+ {
+ switch( desc->iface ) // check donwload hardware interface
+ {
+ case slave_serial: ret = spartan_serial_load( desc, buf, bsize ); break;
+ default: PRINTF("interface not supported!\n"); ret = -ENOSYS; break;
+ }
+ }
+ break;
+ default: PRINTF("family not supported!\n"); ret = -ENOSYS; break;
+ }
+ }
+ else {
+ PRINTF("invalid FPGA descriptor!\n");
+ ret = -EINVAL;
+ }
+ return ret;
+}
+
+/**
+ * initialize the FPGA programming interface.
+ * return 0 if success, <0 if error detected
+ */
+int xilinx_init_load( Xilinx_desc *desc )
+{
+ int ret = 0;
+
+ if( desc ) {
+ switch( desc->family ) // check family
+ {
+ case Xilinx_Spartan:
+ {
+ switch( desc->iface ) // check donwload hardware interface
+ {
+ case slave_serial: ret = spartan_serial_init( desc ); break;
+ default: PRINTF("interface not supported!\n"); ret = -ENOSYS; break;
+ }
+ }
+ break;
+ default: PRINTF("family not supported!\n"); ret = -ENOSYS; break;
+ }
+ }
+ else {
+ PRINTF("invalid FPGA descriptor!\n");
+ ret = -EINVAL;
+ }
+ return ret;
+}
+
+/**
+ * get the descriptor corresponding to desc_id
+ * return NULL if error
+ */
+Xilinx_desc * xilinx_get_descriptor( unsigned char desc_id )
+{
+ if( desc_id < NB_TARGET_DESC ){
+ return &(target_fpga_desc[desc_id]);
+ }
+ return NULL;
+}
+
+/**
+ * get the descriptor infos
+ */
+int xilinx_get_descriptor_info( int desc_id, char* buffer )
+{
+ int len = 0;
+
+ if( desc_id >= 0 ) {
+ len = xilinx_dump_descriptor_info( &target_fpga_desc[desc_id], buffer );
+ }
+ else { // all desc requested
+ unsigned char i;
+ for( i=0; i<NB_TARGET_DESC; i++ ) {
+ len += xilinx_dump_descriptor_info( &target_fpga_desc[i], buffer+len );
+ }
+ }
+
+ return len;
+}
+
+
+
Added: trunk/target/linux/modules/fpga/fpga_devtools/xilinx-fpga-loader.h
===================================================================
--- trunk/target/linux/modules/fpga/fpga_devtools/xilinx-fpga-loader.h (rev 0)
+++ trunk/target/linux/modules/fpga/fpga_devtools/xilinx-fpga-loader.h 2008-04-02 08:00:54 UTC (rev 780)
@@ -0,0 +1,117 @@
+/*
+ * (c) Copyright 2006 Armadeus project
+ * Nicolas Colombain <nic...@ar...>
+ * Xilinx FPGA support
+ *
+ * Based on the implementation(uBoot) of:
+ * Rich Ireland, Enterasys Networks, rir...@en....
+ * Keith Outwater, kei...@mv...
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ */
+#ifndef __XILINX_FPGA_H__
+#define __XILINX_FPGA_H__
+
+#include <linux/types.h>
+
+//#define FPGA_DEBUG
+#undef FPGA_DEBUG
+
+#ifdef FPGA_DEBUG
+#define PRINTF(fmt,args...) printk (fmt ,##args)
+#else
+#define PRINTF(fmt,args...)
+#endif
+
+
+
+/* Spartan-III */
+#define XILINX_XC3S50_SIZE 439264/8
+#define XILINX_XC3S200_SIZE 1047616/8
+#define XILINX_XC3S400_SIZE 1699136/8
+#define XILINX_XC3S1000_SIZE 3223488/8
+#define XIL...
[truncated message content] |
|
From: <ar...@us...> - 2008-04-02 07:40:15
|
Revision: 779
http://armadeus.svn.sourceforge.net/armadeus/?rev=779&view=rev
Author: artemys
Date: 2008-04-02 00:40:22 -0700 (Wed, 02 Apr 2008)
Log Message:
-----------
[LINUX][BUILDROOT] Add support for APF27 Linux kernel building (boots on devt board)
Modified Paths:
--------------
branches/apf2/buildroot/target/device/armadeus/Config.in
Added Paths:
-----------
branches/apf2/buildroot/target/device/armadeus/apf27/
branches/apf2/buildroot/target/device/armadeus/apf27/Config.in
branches/apf2/buildroot/target/device/armadeus/apf27/Makefile.in
branches/apf2/buildroot/target/device/armadeus/apf27/linux-2.6.25-rc7.config
branches/apf2/buildroot/target/device/armadeus/linux/kernel-patches/2.6.25-rc7/
branches/apf2/buildroot/target/device/armadeus/linux/kernel-patches/2.6.25-rc7/200-2xx_patches_are_for_apf27
branches/apf2/buildroot/target/device/armadeus/linux/kernel-patches/2.6.25-rc7/201-apf27-pengu-clean_header_files.diff
branches/apf2/buildroot/target/device/armadeus/linux/kernel-patches/2.6.25-rc7/202-apf27-pengu-clean_platform_part.diff
branches/apf2/buildroot/target/device/armadeus/linux/kernel-patches/2.6.25-rc7/203-apf27-pengu-separate_platform_part.diff
branches/apf2/buildroot/target/device/armadeus/linux/kernel-patches/2.6.25-rc7/204-apf27-pengu-mxc_serial_driver.diff
branches/apf2/buildroot/target/device/armadeus/linux/kernel-patches/2.6.25-rc7/205-apf27-pengu-mx2_platform_timer.diff
branches/apf2/buildroot/target/device/armadeus/linux/kernel-patches/2.6.25-rc7/206-apf27-pengu-mx2_platform_support.diff
branches/apf2/buildroot/target/device/armadeus/linux/kernel-patches/2.6.25-rc7/207-apf27-pengu-mx2_platform_clock_management.diff
branches/apf2/buildroot/target/device/armadeus/linux/kernel-patches/2.6.25-rc7/208-apf27-pengu-mx2_mach_support_sources.diff
branches/apf2/buildroot/target/device/armadeus/linux/kernel-patches/2.6.25-rc7/209-apf27-pengu-mx2_mach_support_headers.diff
branches/apf2/buildroot/target/device/armadeus/linux/kernel-patches/2.6.25-rc7/210-apf27-pengu-imx27_clock_management.diff
branches/apf2/buildroot/target/device/armadeus/linux/kernel-patches/2.6.25-rc7/211-apf27-pengu-mx2_mach_support_build.diff
branches/apf2/buildroot/target/device/armadeus/linux/kernel-patches/2.6.25-rc7/212-apf27-pengu-mx2_devices_base.diff
branches/apf2/buildroot/target/device/armadeus/linux/kernel-patches/2.6.25-rc7/213-apf27-pengu-mxc-gpio.diff
branches/apf2/buildroot/target/device/armadeus/linux/kernel-patches/2.6.25-rc7/214-apf27-pengu-drivers_mtd_cfi_probe_broken_mirrorbit.diff
branches/apf2/buildroot/target/device/armadeus/linux/kernel-patches/2.6.25-rc7/215-apf27-pengu-freescale_ads_bsp.diff
branches/apf2/buildroot/target/device/armadeus/linux/kernel-patches/2.6.25-rc7/216-apf27-pengu-phytec_pcm038_bsp.diff
branches/apf2/buildroot/target/device/armadeus/linux/kernel-patches/2.6.25-rc7/217-apf27-pengu-phytec_pcm970_baseboard.diff
branches/apf2/buildroot/target/device/armadeus/linux/kernel-patches/2.6.25-rc7/218-apf27-pengu-freescale_LogicPD_imx31.diff
branches/apf2/buildroot/target/device/armadeus/linux/kernel-patches/2.6.25-rc7/219-apf27-pengu-mx31_ads_defconfig.diff
branches/apf2/buildroot/target/device/armadeus/linux/kernel-patches/2.6.25-rc7/convert_patches_to_p1.sh
Modified: branches/apf2/buildroot/target/device/armadeus/Config.in
===================================================================
--- branches/apf2/buildroot/target/device/armadeus/Config.in 2008-03-31 13:39:45 UTC (rev 778)
+++ branches/apf2/buildroot/target/device/armadeus/Config.in 2008-04-02 07:40:22 UTC (rev 779)
@@ -18,6 +18,8 @@
bool "apf9328"
config BR2_TARGET_ARMADEUS_APM9328
bool "apm9328"
+config BR2_TARGET_ARMADEUS_APF27
+ bool "apf27"
endchoice
@@ -25,6 +27,7 @@
string
default "apm9328" if BR2_TARGET_ARMADEUS_APM9328
default "apf9328" if BR2_TARGET_ARMADEUS_APF9328
+ default "apf27" if BR2_TARGET_ARMADEUS_APF27
choice
prompt "Target SDRAM size"
@@ -78,6 +81,8 @@
bool "2.6.23.1"
config BR2_PACKAGE_LINUX_VERSION_2_6_24
bool "2.6.24"
+config BR2_PACKAGE_LINUX_VERSION_2_6_25
+ bool "2.6.25"
endchoice
config BR2_PACKAGE_LINUX_VERSION
@@ -87,6 +92,7 @@
default "2.6.18.1" if BR2_PACKAGE_LINUX_VERSION_2_6_18_1
default "2.6.23.1" if BR2_PACKAGE_LINUX_VERSION_2_6_23_1
default "2.6.24.3" if BR2_PACKAGE_LINUX_VERSION_2_6_24
+ default "2.6.25-rc7" if BR2_PACKAGE_LINUX_VERSION_2_6_25
config BR2_TARGET_U-BOOT
bool "U-Boot"
Added: branches/apf2/buildroot/target/device/armadeus/apf27/Config.in
===================================================================
Added: branches/apf2/buildroot/target/device/armadeus/apf27/Makefile.in
===================================================================
--- branches/apf2/buildroot/target/device/armadeus/apf27/Makefile.in (rev 0)
+++ branches/apf2/buildroot/target/device/armadeus/apf27/Makefile.in 2008-04-02 07:40:22 UTC (rev 779)
@@ -0,0 +1,3 @@
+U-BOOT_TARGET_NAME=apx9328
+LINUX_FORMAT=uImage
+LINUX_KCONFIG=$(ARMADEUS_CONFIG_PATH)/linux-$(BR2_PACKAGE_LINUX_VERSION).config
Added: branches/apf2/buildroot/target/device/armadeus/apf27/linux-2.6.25-rc7.config
===================================================================
--- branches/apf2/buildroot/target/device/armadeus/apf27/linux-2.6.25-rc7.config (rev 0)
+++ branches/apf2/buildroot/target/device/armadeus/apf27/linux-2.6.25-rc7.config 2008-04-02 07:40:22 UTC (rev 779)
@@ -0,0 +1,1041 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.25-rc7
+# Tue Apr 1 17:39:25 2008
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+# CONFIG_GENERIC_GPIO is not set
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ARCH_SUPPORTS_AOUT=y
+CONFIG_ZONE_DMA=y
+CONFIG_ARCH_MTD_XIP=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+# CONFIG_SWAP is not set
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+CONFIG_POSIX_MQUEUE=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_CGROUPS is not set
+CONFIG_GROUP_SCHED=y
+CONFIG_FAIR_GROUP_SCHED=y
+CONFIG_RT_GROUP_SCHED=y
+CONFIG_USER_SCHED=y
+# CONFIG_CGROUP_SCHED is not set
+# CONFIG_SYSFS_DEPRECATED_V2 is not set
+# CONFIG_RELAY is not set
+# CONFIG_NAMESPACES is not set
+# CONFIG_BLK_DEV_INITRD is not set
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+CONFIG_KALLSYMS_EXTRA_PASS=y
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+# CONFIG_COMPAT_BRK is not set
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_TIMERFD=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_PROFILING is not set
+# CONFIG_MARKERS is not set
+CONFIG_HAVE_OPROFILE=y
+# CONFIG_KPROBES is not set
+CONFIG_HAVE_KPROBES=y
+CONFIG_HAVE_KRETPROBES=y
+CONFIG_PROC_PAGE_MONITOR=y
+CONFIG_SLABINFO=y
+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 is not set
+CONFIG_IOSCHED_DEADLINE=y
+# CONFIG_IOSCHED_CFQ is not set
+# CONFIG_DEFAULT_AS is not set
+CONFIG_DEFAULT_DEADLINE=y
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="deadline"
+CONFIG_CLASSIC_RCU=y
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+CONFIG_ARCH_MXC=y
+# CONFIG_ARCH_ORION is not set
+# CONFIG_ARCH_PNX4008 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_ARCH_OMAP is not set
+# CONFIG_ARCH_MSM7X00A is not set
+
+#
+# Boot options
+#
+
+#
+# Power management
+#
+
+#
+# Freescale MXC Implementations
+#
+CONFIG_ARCH_MX2=y
+# CONFIG_ARCH_MX3 is not set
+
+#
+# MX2 family CPU support
+#
+CONFIG_MACH_MX27=y
+
+#
+# MX2 Platforms
+#
+# CONFIG_MACH_MX27ADS is not set
+CONFIG_MACH_PCM038=y
+CONFIG_MACH_PCM970_BASEBOARD=y
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_ARM926T=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5TJ=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_COPY_V4WB=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+# CONFIG_CPU_ICACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
+# CONFIG_CPU_CACHE_ROUND_ROBIN is not set
+# CONFIG_OUTER_CACHE is not set
+
+#
+# Bus support
+#
+# CONFIG_PCI_SYSCALL is not set
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+CONFIG_TICK_ONESHOT=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+CONFIG_PREEMPT=y
+CONFIG_HZ=100
+# CONFIG_AEABI is not set
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+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_SPARSEMEM_VMEMMAP_ENABLE is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE=""
+# CONFIG_XIP_KERNEL is not set
+# CONFIG_KEXEC is not set
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+# CONFIG_FPE_NWFPE is not set
+# CONFIG_FPE_FASTFPE is not set
+# CONFIG_VFP is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+# CONFIG_ARTHUR is not set
+
+#
+# Power management options
+#
+# CONFIG_PM is not set
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_PNP=y
+# CONFIG_IP_PNP_DHCP is not set
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_IP_MROUTE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_XFRM_TUNNEL is not set
+# CONFIG_INET_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+# CONFIG_INET_LRO is not set
+# CONFIG_INET_DIAG is not set
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+# CONFIG_IPV6 is not set
+# CONFIG_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL is not set
+# CONFIG_NETWORK_SECMARK is not set
+# CONFIG_NETFILTER is not set
+# CONFIG_IP_DCCP is not set
+# CONFIG_IP_SCTP is not set
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+# CONFIG_LLC2 is not set
+# CONFIG_IPX 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 is not set
+# CONFIG_NET_SCHED is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_CAN is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+# CONFIG_AF_RXRPC is not set
+
+#
+# Wireless
+#
+# CONFIG_CFG80211 is not set
+# CONFIG_WIRELESS_EXT is not set
+# CONFIG_MAC80211 is not set
+# CONFIG_IEEE80211 is not set
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+# CONFIG_FW_LOADER is not set
+# 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
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# 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
+# CONFIG_MTD_OOPS 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=y
+CONFIG_MTD_CFI_NOSWAP=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
+# 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 is not set
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_OTP is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# 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
+# CONFIG_MTD_XIP is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+CONFIG_MTD_PHYSMAP=y
+CONFIG_MTD_PHYSMAP_START=0x00000000
+CONFIG_MTD_PHYSMAP_LEN=0x0
+CONFIG_MTD_PHYSMAP_BANKWIDTH=2
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# 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 is not set
+# CONFIG_MTD_ONENAND is not set
+
+#
+# UBI - Unsorted block images
+#
+# CONFIG_MTD_UBI is not set
+# CONFIG_PARPORT is not set
+CONFIG_BLK_DEV=y
+# CONFIG_BLK_DEV_COW_COMMON is not set
+# CONFIG_BLK_DEV_LOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_RAM is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+# CONFIG_MISC_DEVICES is not set
+# CONFIG_HAVE_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+# CONFIG_SCSI_DMA is not set
+# CONFIG_SCSI_NETLINK is not set
+# CONFIG_ATA is not set
+# CONFIG_MD is not set
+CONFIG_NETDEVICES=y
+# CONFIG_NETDEVICES_MULTIQUEUE 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_VETH is not set
+# CONFIG_PHYLIB is not set
+CONFIG_NET_ETHERNET=y
+# CONFIG_MII is not set
+# CONFIG_AX88796 is not set
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 is not set
+# CONFIG_ENC28J60 is not set
+# CONFIG_IBM_NEW_EMAC_ZMII is not set
+# CONFIG_IBM_NEW_EMAC_RGMII is not set
+# CONFIG_IBM_NEW_EMAC_TAH is not set
+# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
+# CONFIG_B44 is not set
+CONFIG_FEC_OLD=y
+# CONFIG_NETDEV_1000 is not set
+# CONFIG_NETDEV_10000 is not set
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+# CONFIG_WLAN_80211 is not set
+# CONFIG_WAN is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+# CONFIG_ISDN 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_EVDEV=y
+# 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=y
+# CONFIG_TOUCHSCREEN_ADS7846 is not set
+# CONFIG_TOUCHSCREEN_FUJITSU is not set
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+# CONFIG_TOUCHSCREEN_UCB1400 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=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_IMX=y
+CONFIG_SERIAL_IMX_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_IPMI_HANDLER is not set
+# CONFIG_HW_RANDOM is not set
+# CONFIG_NVRAM is not set
+# CONFIG_R3964 is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+# CONFIG_I2C_CHARDEV is not set
+
+#
+# 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_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_STUB is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_DS1682 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_PCF8575 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_TPS65010 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
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_AT25 is not set
+# CONFIG_SPI_SPIDEV is not set
+# CONFIG_SPI_TLE62X0 is not set
+# CONFIG_W1 is not set
+# CONFIG_POWER_SUPPLY is not set
+# CONFIG_HWMON is not set
+# CONFIG_WATCHDOG is not set
+
+#
+# Sonics Silicon Backplane
+#
+CONFIG_SSB_POSSIBLE=y
+# CONFIG_SSB is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+# CONFIG_MFD_ASIC3 is not set
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=y
+CONFIG_VIDEO_V4L2_COMMON=y
+# CONFIG_VIDEO_V4L1 is not set
+CONFIG_VIDEO_V4L1_COMPAT=y
+CONFIG_VIDEO_V4L2=y
+CONFIG_VIDEO_CAPTURE_DRIVERS=y
+# CONFIG_VIDEO_ADV_DEBUG is not set
+CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
+# CONFIG_VIDEO_VIVI is not set
+# CONFIG_VIDEO_SAA5246A is not set
+# CONFIG_VIDEO_SAA5249 is not set
+# CONFIG_RADIO_ADAPTERS is not set
+# CONFIG_DVB_CORE is not set
+# CONFIG_DAB is not set
+
+#
+# Graphics support
+#
+# CONFIG_VGASTATE is not set
+# CONFIG_VIDEO_OUTPUT_CONTROL is not set
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+# CONFIG_FB_CFB_FILLRECT is not set
+# CONFIG_FB_CFB_COPYAREA is not set
+# CONFIG_FB_CFB_IMAGEBLIT is not set
+# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
+# CONFIG_FB_SYS_FILLRECT is not set
+# CONFIG_FB_SYS_COPYAREA is not set
+# CONFIG_FB_SYS_IMAGEBLIT is not set
+# CONFIG_FB_SYS_FOPS is not set
+CONFIG_FB_DEFERRED_IO=y
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+CONFIG_FONTS=y
+CONFIG_FONT_8x8=y
+# CONFIG_FONT_8x16 is not set
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+# CONFIG_FONT_MINI_4x6 is not set
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+# CONFIG_LOGO is not set
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+# CONFIG_HID_SUPPORT is not set
+# CONFIG_USB_SUPPORT is not set
+# CONFIG_MMC is not set
+# CONFIG_NEW_LEDS 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 is not set
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# I2C RTC drivers
+#
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1374 is not set
+# 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=y
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_M41T80 is not set
+# CONFIG_RTC_DRV_S35390A is not set
+
+#
+# SPI RTC drivers
+#
+# CONFIG_RTC_DRV_MAX6902 is not set
+# CONFIG_RTC_DRV_R9701 is not set
+# CONFIG_RTC_DRV_RS5C348 is not set
+
+#
+# Platform RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_DS1511 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_STK17TA8 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
+#
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+CONFIG_EXT2_FS_SECURITY=y
+CONFIG_EXT2_FS_XIP=y
+CONFIG_FS_XIP=y
+CONFIG_EXT3_FS=y
+CONFIG_EXT3_FS_XATTR=y
+CONFIG_EXT3_FS_POSIX_ACL=y
+CONFIG_EXT3_FS_SECURITY=y
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=y
+CONFIG_FS_MBCACHE=y
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+CONFIG_DNOTIFY=y
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_AUTOFS_FS=y
+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 is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=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_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_FS_WBUF_VERIFY is not set
+# 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_LZO is not set
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_ROMFS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+CONFIG_NETWORK_FILESYSTEMS=y
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+CONFIG_NFS_V4=y
+CONFIG_NFS_DIRECTIO=y
+# CONFIG_NFSD is not set
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+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 is not set
+# CONFIG_CIFS 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=y
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION 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
+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=y
+# 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 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+# CONFIG_NLS_ISO8859_1 is not set
+# 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
+# CONFIG_DLM is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_WARN_DEPRECATED=y
+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_FRAME_POINTER=y
+# CONFIG_SAMPLES is not set
+# CONFIG_DEBUG_USER is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+# CONFIG_SECURITY_FILE_CAPABILITIES is not set
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=y
+# CONFIG_CRYPTO_SEQIV is not set
+CONFIG_CRYPTO_MANAGER=y
+# CONFIG_CRYPTO_HMAC is not set
+# CONFIG_CRYPTO_XCBC is not set
+# CONFIG_CRYPTO_NULL is not set
+# CONFIG_CRYPTO_MD4 is not set
+CONFIG_CRYPTO_MD5=y
+# CONFIG_CRYPTO_SHA1 is not set
+# CONFIG_CRYPTO_SHA256 is not set
+# CONFIG_CRYPTO_SHA512 is not set
+# CONFIG_CRYPTO_WP512 is not set
+# CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_GF128MUL is not set
+# CONFIG_CRYPTO_ECB is not set
+CONFIG_CRYPTO_CBC=y
+# CONFIG_CRYPTO_PCBC is not set
+# CONFIG_CRYPTO_LRW is not set
+# CONFIG_CRYPTO_XTS is not set
+# CONFIG_CRYPTO_CTR is not set
+# CONFIG_CRYPTO_GCM is not set
+# CONFIG_CRYPTO_CCM is not set
+# CONFIG_CRYPTO_CRYPTD is not set
+CONFIG_CRYPTO_DES=y
+# CONFIG_CRYPTO_FCRYPT is not set
+# CONFIG_CRYPTO_BLOWFISH is not set
+# CONFIG_CRYPTO_TWOFISH is not set
+# CONFIG_CRYPTO_SERPENT is not set
+# CONFIG_CRYPTO_AES is not set
+# CONFIG_CRYPTO_CAST5 is not set
+# CONFIG_CRYPTO_CAST6 is not set
+# CONFIG_CRYPTO_TEA is not set
+# CONFIG_CRYPTO_ARC4 is not set
+# CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_ANUBIS is not set
+# CONFIG_CRYPTO_SEED is not set
+# CONFIG_CRYPTO_SALSA20 is not set
+# CONFIG_CRYPTO_DEFLATE is not set
+# CONFIG_CRYPTO_MICHAEL_MIC is not set
+# CONFIG_CRYPTO_CRC32C is not set
+# CONFIG_CRYPTO_CAMELLIA is not set
+# CONFIG_CRYPTO_TEST is not set
+# CONFIG_CRYPTO_AUTHENC is not set
+# CONFIG_CRYPTO_LZO is not set
+# CONFIG_CRYPTO_HW is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+# CONFIG_CRC_CCITT is not set
+# CONFIG_CRC16 is not set
+# CONFIG_CRC_ITU_T is not set
+CONFIG_CRC32=y
+# CONFIG_CRC7 is not set
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
Added: branches/apf2/buildroot/target/device/armadeus/linux/kernel-patches/2.6.25-rc7/200-2xx_patches_are_for_apf27
===================================================================
Added: branches/apf2/buildroot/target/device/armadeus/linux/kernel-patches/2.6.25-rc7/201-apf27-pengu-clean_header_files.diff
===================================================================
--- branches/apf2/buildroot/target/device/armadeus/linux/kernel-patches/2.6.25-rc7/201-apf27-pengu-clean_header_files.diff (rev 0)
+++ branches/apf2/buildroot/target/device/armadeus/linux/kernel-patches/2.6.25-rc7/201-apf27-pengu-clean_header_files.diff 2008-04-02 07:40:22 UTC (rev 779)
@@ -0,0 +1,411 @@
+Subject: [@num@/@total@] i.MXC family: Clean up
+From: Juergen Beisert <j.b...@pe...>
+
+Clean up current header files from doxygen style comments. There are
+probably more such comments left, but we start with these.
+
+This is 4876/1 in Russell's patch system.
+
+Things happend since last review:
+ - none
+
+Previous changes:
+ - needless blank lines removed (note by Russell King)
+ - re-format comments (note by Ross Wille)
+
+Signed-off-by: Juergen Beisert <j.b...@pe...>
+Signed-off-by: Ross Wille <wi...@fr...>
+
+---
+ include/asm-arm/arch-mxc/board-mx31ads.h | 124 +++++++++++--------------------
+ include/asm-arm/arch-mxc/dma.h | 7 -
+ include/asm-arm/arch-mxc/hardware.h | 8 --
+ include/asm-arm/arch-mxc/io.h | 15 ---
+ include/asm-arm/arch-mxc/irqs.h | 17 ----
+ include/asm-arm/arch-mxc/memory.h | 13 ---
+ include/asm-arm/arch-mxc/mxc.h | 6 -
+ include/asm-arm/arch-mxc/system.h | 18 ----
+ include/asm-arm/arch-mxc/vmalloc.h | 14 ---
+ 9 files changed, 61 insertions(+), 161 deletions(-)
+
+Index: include/asm-arm/arch-mxc/memory.h
+===================================================================
+--- linux/include/asm-arm/arch-mxc/memory.h.orig
++++ linux/include/asm-arm/arch-mxc/memory.h
+@@ -13,24 +13,17 @@
+
+ #include <asm/hardware.h>
+
+-/*!
+- * @file memory.h
+- * @brief This file contains macros needed by the Linux kernel and drivers.
+- *
+- * @ingroup Memory
+- */
+-
+-/*!
++/*
+ * Virtual view <-> DMA view memory address translations
+ * This macro is used to translate the virtual address to an address
+ * suitable to be passed to set_dma_addr()
+ */
+ #define __virt_to_bus(a) __virt_to_phys(a)
+
+-/*!
++/*
+ * Used to convert an address for DMA operations to an address that the
+ * kernel can use.
+ */
+ #define __bus_to_virt(a) __phys_to_virt(a)
+
+-#endif /* __ASM_ARCH_MXC_MEMORY_H__ */
++#endif /* __ASM_ARCH_MXC_MEMORY_H__ */
+Index: include/asm-arm/arch-mxc/vmalloc.h
+===================================================================
+--- linux/include/asm-arm/arch-mxc/vmalloc.h.orig
++++ linux/include/asm-arm/arch-mxc/vmalloc.h
+@@ -20,17 +20,7 @@
+ #ifndef __ASM_ARCH_MXC_VMALLOC_H__
+ #define __ASM_ARCH_MXC_VMALLOC_H__
+
+-/*!
+- * @file vmalloc.h
+- *
+- * @brief This file contains platform specific macros for vmalloc.
+- *
+- * @ingroup System
+- */
+-
+-/*!
+- * vmalloc ending address
+- */
++/* vmalloc ending address */
+ #define VMALLOC_END 0xF4000000
+
+-#endif /* __ASM_ARCH_MXC_VMALLOC_H__ */
++#endif /* __ASM_ARCH_MXC_VMALLOC_H__ */
+Index: include/asm-arm/arch-mxc/irqs.h
+===================================================================
+--- linux/include/asm-arm/arch-mxc/irqs.h.orig
++++ linux/include/asm-arm/arch-mxc/irqs.h
+@@ -13,26 +13,15 @@
+
+ #include <asm/hardware.h>
+
+-/*!
+- * @file irqs.h
+- * @brief This file defines the number of normal interrupts and fast interrupts
+- *
+- * @ingroup Interrupt
+- */
+-
+ #define MXC_IRQ_TO_EXPIO(irq) ((irq) - MXC_EXP_IO_BASE)
+
+ #define MXC_IRQ_TO_GPIO(irq) ((irq) - MXC_GPIO_INT_BASE)
+ #define MXC_GPIO_TO_IRQ(x) (MXC_GPIO_INT_BASE + x)
+
+-/*!
+- * Number of normal interrupts
+- */
++/* Number of normal interrupts */
+ #define NR_IRQS MXC_MAX_INTS
+
+-/*!
+- * Number of fast interrupts
+- */
++/* Number of fast interrupts */
+ #define NR_FIQS MXC_MAX_INTS
+
+-#endif /* __ASM_ARCH_MXC_IRQS_H__ */
++#endif /* __ASM_ARCH_MXC_IRQS_H__ */
+Index: include/asm-arm/arch-mxc/hardware.h
+===================================================================
+--- linux/include/asm-arm/arch-mxc/hardware.h.orig
++++ linux/include/asm-arm/arch-mxc/hardware.h
+@@ -8,12 +8,6 @@
+ * published by the Free Software Foundation.
+ */
+
+-/*!
+- * @file hardware.h
+- * @brief This file contains the hardware definitions of the board.
+- *
+- * @ingroup System
+- */
+ #ifndef __ASM_ARCH_MXC_HARDWARE_H__
+ #define __ASM_ARCH_MXC_HARDWARE_H__
+
+@@ -49,4 +43,4 @@
+ MXC_MAX_EXP_IO_LINES + \
+ MXC_MAX_VIRTUAL_INTS)
+
+-#endif /* __ASM_ARCH_MXC_HARDWARE_H__ */
++#endif /* __ASM_ARCH_MXC_HARDWARE_H__ */
+Index: include/asm-arm/arch-mxc/io.h
+===================================================================
+--- linux/include/asm-arm/arch-mxc/io.h.orig
++++ linux/include/asm-arm/arch-mxc/io.h
+@@ -8,24 +8,13 @@
+ * published by the Free Software Foundation.
+ */
+
+-/*!
+- * @file io.h
+- * @brief This file contains some memory mapping macros.
+- * @note There is no real ISA or PCI buses. But have to define these macros
+- * for some drivers to compile.
+- *
+- * @ingroup System
+- */
+-
+ #ifndef __ASM_ARCH_MXC_IO_H__
+ #define __ASM_ARCH_MXC_IO_H__
+
+-/*! Allow IO space to be anywhere in the memory */
++/* Allow IO space to be anywhere in the memory */
+ #define IO_SPACE_LIMIT 0xffffffff
+
+-/*!
+- * io address mapping macro
+- */
++/* io address mapping macro */
+ #define __io(a) ((void __iomem *)(a))
+
+ #define __mem_pci(a) (a)
+Index: include/asm-arm/arch-mxc/dma.h
+===================================================================
+--- linux/include/asm-arm/arch-mxc/dma.h.orig
++++ linux/include/asm-arm/arch-mxc/dma.h
+@@ -11,11 +11,4 @@
+ #ifndef __ASM_ARCH_MXC_DMA_H__
+ #define __ASM_ARCH_MXC_DMA_H__
+
+-/*!
+- * @file dma.h
+- * @brief This file contains Unified DMA API for all MXC platforms.
+- * The API is platform independent.
+- *
+- * @ingroup SDMA
+- */
+ #endif
+Index: include/asm-arm/arch-mxc/mxc.h
+===================================================================
+--- linux/include/asm-arm/arch-mxc/mxc.h.orig
++++ linux/include/asm-arm/arch-mxc/mxc.h
+@@ -31,9 +31,7 @@
+ #define MXC_GPT_GPTICR2 IO_ADDRESS(GPT1_BASE_ADDR + 0x20)
+ #define MXC_GPT_GPTCNT IO_ADDRESS(GPT1_BASE_ADDR + 0x24)
+
+-/*!
+- * GPT Control register bit definitions
+- */
++/* GPT Control register bit definitions */
+ #define GPTCR_FO3 (1 << 31)
+ #define GPTCR_FO2 (1 << 30)
+ #define GPTCR_FO1 (1 << 29)
+@@ -146,4 +144,4 @@
+ #define IIM_PROD_REV_SH 3
+ #define IIM_PROD_REV_LEN 5
+
+-#endif /* __ASM_ARCH_MXC_H__ */
++#endif /* __ASM_ARCH_MXC_H__ */
+Index: include/asm-arm/arch-mxc/board-mx31ads.h
+===================================================================
+--- linux/include/asm-arm/arch-mxc/board-mx31ads.h.orig
++++ linux/include/asm-arm/arch-mxc/board-mx31ads.h
+@@ -11,107 +11,77 @@
+ #ifndef __ASM_ARCH_MXC_BOARD_MX31ADS_H__
+ #define __ASM_ARCH_MXC_BOARD_MX31ADS_H__
+
+-/*!
+- * @name PBC Controller parameters
+- */
+-/*! @{ */
+-/*!
+- * Base address of PBC controller
+- */
++/* Base address of PBC controller */
+ #define PBC_BASE_ADDRESS IO_ADDRESS(CS4_BASE_ADDR)
+ /* Offsets for the PBC Controller register */
+-/*!
+- * PBC Board status register offset
+- */
++
++/* PBC Board status register offset */
+ #define PBC_BSTAT 0x000002
+-/*!
+- * PBC Board control register 1 set address.
+- */
++
++/* PBC Board control register 1 set address */
+ #define PBC_BCTRL1_SET 0x000004
+-/*!
+- * PBC Board control register 1 clear address.
+- */
++
++/* PBC Board control register 1 clear address */
+ #define PBC_BCTRL1_CLEAR 0x000006
+-/*!
+- * PBC Board control register 2 set address.
+- */
++
++/* PBC Board control register 2 set address */
+ #define PBC_BCTRL2_SET 0x000008
+-/*!
+- * PBC Board control register 2 clear address.
+- */
++
++/* PBC Board control register 2 clear address */
+ #define PBC_BCTRL2_CLEAR 0x00000A
+-/*!
+- * PBC Board control register 3 set address.
+- */
++
++/* PBC Board control register 3 set address */
+ #define PBC_BCTRL3_SET 0x00000C
+-/*!
+- * PBC Board control register 3 clear address.
+- */
++
++/* PBC Board control register 3 clear address */
+ #define PBC_BCTRL3_CLEAR 0x00000E
+-/*!
+- * PBC Board control register 4 set address.
+- */
++
++/* PBC Board control register 4 set address */
+ #define PBC_BCTRL4_SET 0x000010
+-/*!
+- * PBC Board control register 4 clear address.
+- */
++
++/* PBC Board control register 4 clear address */
+ #define PBC_BCTRL4_CLEAR 0x000012
+-/*!
+- * PBC Board status register 1.
+- */
++
++/* PBC Board status register 1 */
+ #define PBC_BSTAT1 0x000014
+-/*!
+- * PBC Board interrupt status register.
+- */
++
++/* PBC Board interrupt status register */
+ #define PBC_INTSTATUS 0x000016
+-/*!
+- * PBC Board interrupt current status register.
+- */
++
++/* PBC Board interrupt current status register */
+ #define PBC_INTCURR_STATUS 0x000018
+-/*!
+- * PBC Interrupt mask register set address.
+- */
++
++/* PBC Interrupt mask register set address */
+ #define PBC_INTMASK_SET 0x00001A
+-/*!
+- * PBC Interrupt mask register clear address.
+- */
++
++/* PBC Interrupt mask register clear address */
+ #define PBC_INTMASK_CLEAR 0x00001C
+
+-/*!
+- * External UART A.
+- */
++/* External UART A */
+ #define PBC_SC16C652_UARTA 0x010000
+-/*!
+- * External UART B.
+- */
++
++/* External UART B */
+ #define PBC_SC16C652_UARTB 0x010010
+-/*!
+- * Ethernet Controller IO base address.
+- */
++
++/* Ethernet Controller IO base address */
+ #define PBC_CS8900A_IOBASE 0x020000
+-/*!
+- * Ethernet Controller Memory base address.
+- */
++
++/* Ethernet Controller Memory base address */
+ #define PBC_CS8900A_MEMBASE 0x021000
+-/*!
+- * Ethernet Controller DMA base address.
+- */
++
++/* Ethernet Controller DMA base address */
+ #define PBC_CS8900A_DMABASE 0x022000
+-/*!
+- * External chip select 0.
+- */
++
++/* External chip select 0 */
+ #define PBC_XCS0 0x040000
+-/*!
+- * LCD Display enable.
+- */
++
++/* LCD Display enable */
+ #define PBC_LCD_EN_B 0x060000
+-/*!
+- * Code test debug enable.
+- */
++
++/* Code test debug enable */
+ #define PBC_CODE_B 0x070000
+-/*!
+- * PSRAM memory select.
+- */
++
++/* PSRAM memory select */
+ #define PBC_PSRAM_B 0x5000000
+
+ #define PBC_INTSTATUS_REG (PBC_INTSTATUS + PBC_BASE_ADDRESS)
+@@ -139,4 +109,4 @@
+
+ #define MXC_MAX_EXP_IO_LINES 16
+
+-#endif /* __ASM_ARCH_MXC_BOARD_MX31ADS_H__ */
++#endif /* __ASM_ARCH_MXC_BOARD_MX31ADS_H__ */
+Index: include/asm-arm/arch-mxc/system.h
+===================================================================
+--- linux/include/asm-arm/arch-mxc/system.h.orig
++++ linux/include/asm-arm/arch-mxc/system.h
+@@ -21,30 +21,14 @@
+ #ifndef __ASM_ARCH_MXC_SYSTEM_H__
+ #define __ASM_ARCH_MXC_SYSTEM_H__
+
+-/*!
+- * @file system.h
+- * @brief This file contains idle and reset functions.
+- *
+- * @ingroup System
+- */
+-
+-/*!
+- * This function puts the CPU into idle mode. It is called by default_idle()
+- * in process.c file.
+- */
+ static inline void arch_idle(void)
+ {
+ cpu_do_idle();
+ }
+
+-/*
+- * This function resets the system. It is called by machine_restart().
+- *
+- * @param mode indicates different kinds of resets
+- */
+ static inline void arch_reset(char mode)
+ {
+ cpu_reset(0);
+ }
+
+-#endif /* __ASM_ARCH_MXC_SYSTEM_H__ */
++#endif /* __ASM_ARCH_MXC_SYSTEM_H__ */
Added: branches/apf2/buildroot/target/device/armadeus/linux/kernel-patches/2.6.25-rc7/202-apf27-pengu-clean_platform_part.diff
===================================================================
--- branches/apf2/buildroot/target/device/armadeus/linux/kernel-patches/2.6.25-rc7/202-apf27-pengu-clean_platform_part.diff (rev 0)
+++ branches/apf2/buildroot/target/device/armadeus/linux/kernel-patches/2.6.25-rc7/202-apf27-pengu-clean_platform_part.diff 2008-04-02 07:40:22 UTC (rev 779)
@@ -0,0 +1,56 @@
+Subject: [@num@/@total@] i.MXC family: Clean up current platform code
+From: Juergen Beisert <j.b...@pe...>
+
+This patch cleans up the in-kernel platform code from doxygen comments.
+We don't know how this could have leak in, but anyway.
+
+This is 4877/1 in Russell's patch system.
+
+Changes since last release:
+ - none
+
+Signed-off-by: Juergen Beisert <j.b...@pe...>
+Signed-off-by: Ross Wille <wi...@fr...>
+
+---
+
+ arch/arm/plat-mxc/irq.c | 14 +++-----------
+ 1 file changed, 3 insertions(+), 11 deletions(-)
+
+Index: arch/arm/plat-mxc/irq.c
+===================================================================
+--- linux/arch/arm/plat-mxc/irq.c.orig
++++ linux/arch/arm/plat-mxc/irq.c
+@@ -19,21 +19,13 @@
+ #include <asm/mach/irq.h>
+ #include <asm/arch/common.h>
+
+-/*!
+- * Disable interrupt number "irq" in the AVIC
+- *
+- * @param irq interrupt source number
+- */
++/* Disable interrupt number "irq" in the AVIC */
+ static void mxc_mask_irq(unsigned int irq)
+ {
+ __raw_writel(irq, AVIC_INTDISNUM);
+ }
+
+-/*!
+- * Enable interrupt number "irq" in the AVIC
+- *
+- * @param irq interrupt source number
+- */
++/* Enable interrupt number "irq" in the AVIC */
+ static void mxc_unmask_irq(unsigned int irq)
+ {
+ __raw_writel(irq, AVIC_INTENNUM);
+@@ -45,7 +37,7 @@ static struct irq_chip mxc_avic_chip = {
+ .unmask = mxc_unmask_irq,
+ };
+
+-/*!
++/*
+ * This function initializes the AVIC hardware and disables all the
+ * interrupts. It registers the interrupt enable and disable functions
+ * to the kernel for each interrupt source.
Added: branches/apf2/buildroot/target/device/armadeus/linux/kernel-patches/2.6.25-rc7/203-apf27-pengu-separate_platform_part.diff
===================================================================
--- branches/apf2/buildroot/target/device/armadeus/linux/kernel-patches/2.6.25-rc7/203-apf27-pengu-separate_platform_part.diff (rev 0)
+++ branches/apf2/buildroot/target/device/armadeus/linux/kernel-patches/2.6.25-rc7/203-apf27-pengu-separate_platform_part.diff 2008-04-02 07:40:22 UTC (rev 779)
@@ -0,0 +1,161 @@
+Subject: [@num@/@total@] i.MXC family: Separate current platform code
+From: Juergen Beisert <j.b...@pe...>
+
+This patch separates the current code into i.MX2 and i.MX3 and modifies
+the Kconfig files to reflect this separation in the menus.
+
+Things happend since last review:
+ - make i.MX3 compile again
+ - fix some structure names to be conform with all the shared/common sources
+ from i.MX1/i.MX2
+
+Previous changes:
+ - stay conform to other Kconfig files (note from Russell King)
+
+Signed-off-by: Juergen Beisert <j.b...@pe...>
+
+---
+
+ arch/arm/plat-mxc/Kconfig | 2 +-
+ include/asm-arm/arch-mxc/hardware.h | 25 +++++--------------------
+ include/asm-arm/arch-mxc/irqs.h | 4 +++-
+ include/asm-arm/arch-mxc/mx31.h | 30 +++++++++++++++++++++++++++++-
+ include/asm-arm/arch-mxc/mxc.h | 5 +++++
+ 5 files changed, 43 insertions(+), 23 deletions(-)
+
+Index: arch/arm/plat-mxc/Kconfig
+===================================================================
+--- linux/arch/arm/plat-mxc/Kconfig.orig
++++ linux/arch/arm/plat-mxc/Kconfig
+@@ -4,7 +4,7 @@ menu "Freescale MXC Implementations"
+
+ choice
+ prompt "MXC/iMX System Type"
+- default 0
++ default ARCH_MX3
+
+ config ARCH_MX3
+ bool "MX3-based"
+Index: include/asm-arm/arch-mxc/hardware.h
+===================================================================
+--- linux/include/asm-arm/arch-mxc/hardware.h.orig
++++ linux/include/asm-arm/arch-mxc/hardware.h
+@@ -13,34 +13,19 @@
+
+ #include <asm/sizes.h>
+
+-#include <asm/arch/mx31.h>
++#ifdef CONFIG_ARCH_MX3
++# include <asm/arch/mx31.h>
++#endif
+
+ #include <asm/arch/mxc.h>
+
+-#define MXC_MAX_GPIO_LINES (GPIO_NUM_PIN * GPIO_PORT_NUM)
+-
+ /*
+ * ---------------------------------------------------------------------------
+ * Board specific defines
+ * ---------------------------------------------------------------------------
+ */
+-#define MXC_EXP_IO_BASE (MXC_GPIO_INT_BASE + MXC_MAX_GPIO_LINES)
+-
+-#include <asm/arch/board-mx31ads.h>
+-
+-#ifndef MXC_MAX_EXP_IO_LINES
+-#define MXC_MAX_EXP_IO_LINES 0
++#ifdef CONFIG_MACH_MX31ADS
++# include <asm/arch/board-mx31ads.h>
+ #endif
+
+-#define MXC_MAX_VIRTUAL_INTS 16
+-#define MXC_VIRTUAL_INTS_BASE (MXC_EXP_IO_BASE + MXC_MAX_EXP_IO_LINES)
+-#define MXC_SDIO1_CARD_IRQ MXC_VIRTUAL_INTS_BASE
+-#define MXC_SDIO2_CARD_IRQ (MXC_VIRTUAL_INTS_BASE + 1)
+-#define MXC_SDIO3_CARD_IRQ (MXC_VIRTUAL_INTS_BASE + 2)
+-
+-#define MXC_MAX_INTS (MXC_MAX_INT_LINES + \
+- MXC_MAX_GPIO_LINES + \
+- MXC_MAX_EXP_IO_LINES + \
+- MXC_MAX_VIRTUAL_INTS)
+-
+ #endif /* __ASM_ARCH_MXC_HARDWARE_H__ */
+Index: include/asm-arm/arch-mxc/mx31.h
+===================================================================
+--- linux/include/asm-arm/arch-mxc/mx31.h.orig
++++ linux/include/asm-arm/arch-mxc/mx31.h
+@@ -317,6 +317,8 @@
+ #define MXC_MAX_INT_LINES 64
+
+ #define MXC_GPIO_INT_BASE MXC_MAX_INT_LINES
++#define MXC_MAX_GPIO_LINES (GPIO_NUM_PIN * GPIO_PORT_NUM)
++#define MXC_MAX_VIRTUAL_INTS 16
+
+ /*!
+ * Number of GPIO port as defined in the IC Spec
+@@ -329,7 +331,33 @@
+
+ #define PROD_SIGNATURE 0x1 /* For MX31 */
+
++/* silicon revisions specific to i.MX31 */
++#define CHIP_REV_1_0 0x10
++#define CHIP_REV_1_1 0x11
++#define CHIP_REV_1_2 0x12
++#define CHIP_REV_1_3 0x13
++#define CHIP_REV_2_0 0x20
++#define CHIP_REV_2_1 0x21
++#define CHIP_REV_2_2 0x22
++#define CHIP_REV_2_3 0x23
++#define CHIP_REV_3_0 0x30
++#define CHIP_REV_3_1 0x31
++#define CHIP_REV_3_2 0x32
++
+ #define SYSTEM_REV_MIN CHIP_REV_1_0
+ #define SYSTEM_REV_NUM 3
+
+-#endif /* __ASM_ARCH_MXC_MX31_H__ */
++#if !defined(__ASSEMBLY__) && !defined(__MXC_BOOT_UNCOMPRESS)
++
++/* this is a i.MX31 CPU */
++#define cpu_is_mx31() (1)
++
++extern unsigned int system_rev;
++
++static inline int mx31_revision(void)
++{
++ return system_rev;
++}
++#endif
++
++#endif /* __ASM_ARCH_MXC_MX31_H__ */
+Index: include/asm-arm/arch-mxc/mxc.h
+===================================================================
+--- linux/include/asm-arm/arch-mxc/mxc.h.orig
++++ linux/include/asm-arm/arch-mxc/mxc.h
+@@ -15,6 +15,11 @@
+ #error "Do not include directly."
+ #endif
+
++/* clean up all things that are not used */
++#ifndef CONFIG_ARCH_MX3
++# define cpu_is_mx31() (0)
++#endif
++
+ /*
+ *****************************************
+ * GPT Register definitions *
+Index: include/asm-arm/arch-mxc/irqs.h
+===================================================================
+--- linux/include/asm-arm/arch-mxc/irqs.h.orig
++++ linux/include/asm-arm/arch-mxc/irqs.h
+@@ -19,7 +19,9 @@
+ #define MXC_GPIO_TO_IRQ(x) (MXC_GPIO_INT_BASE + x)
+
+ /* Number of normal interrupts */
+-#define NR_IRQS MXC_MAX_INTS
++#define NR_IRQS (MXC_MAX_INT_LINES + \
++ MXC_MAX_GPIO_LINES + \
++ MXC_MAX_VIRTUAL_INTS)
+
+ /* Number of fast interrupts */
+ #define NR_FIQS MXC_MAX_INTS
Added: branches/apf2/buildroot/target/device/armadeus/linux/kernel-patches/2.6.25-rc7/204-apf27-pengu-mxc_serial_driver.diff
===================================================================
--- branches/apf2/buildroot/target/device/armadeus/linux/kernel-patches/2.6.25-rc7/204-apf27-pengu-mxc_serial_driver.diff (rev 0)
+++ branches/apf2/buildroot/target/device/armadeus/linux/kernel-patches/2.6.25-rc7/204-apf27-pengu-mxc_serial_driver.diff 2008-04-02 07:40:22 UTC (rev 779)
@@ -0,0 +1,919 @@
+Subject: [@num@/@total@] i.MX: add MX3/MX2 support for i.MX internal UART driver
+From: Sascha Hauer <s....@pe...>
+
+This patch adds MX2 and MX3 support for the i.MX internal
+uart driver. Note that on MX3 we do not have any clock
+functions, so you have to adjust MX3_UART_REFFREQ for now.
+
+Signed-off-by: Sascha Hauer <s....@pe...>
+
+---
+
+ arch/arm/mach-mx3/Makefile | 2
+ arch/arm/mach-mx3/devices.c | 122 +++++++++
+ arch/arm/mach-mx3/mx31ads.c | 7
+ drivers/serial/Kconfig | 2
+ drivers/serial/imx.c | 451 ++++++++++++++++++++++++++++--------
+ include/asm-arm/arch-imx/imx-uart.h | 2
+ include/asm-arm/arch-mxc/imx-uart.h | 14 +
+ 7 files changed, 507 insertions(+), 93 deletions(-)
+
+Index: arch/arm/mach-mx3/devices.c
+===================================================================
+--- /dev/null
++++ linux/arch/arm/mach-mx3/devices.c
+@@ -0,0 +1,122 @@
++/*
++ * Copyright 2006-2007 Freescale Semiconductor, Inc. All Rights Reserved.
++ * Copyright 2008 Juergen Beisert, ke...@pe...
++ *
++ * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ */
++
++#include <linux/module.h>
++#include <linux/platform_device.h>
++#include <linux/serial.h>
++#include <asm/hardware.h>
++#include <asm/arch/imx-uart.h>
++
++static struct resource uart0 = {
++ .start = UART1_BASE_ADDR,
++ .end = UART1_BASE_ADDR + 0x0B5,
++ .flags = IORESOURCE_MEM
++};
++
++static struct platform_device mxc_uart_device0 = {
++ .name = "imx-uart",
++ .id = 0,
++ .resource = &uart0,
++ .num_resources = 1,
++};
++
++static struct resource uart1 = {
++ .start = UART2_BASE_ADDR,
++ .end = UART2_BASE_ADDR + 0x0B5,
++ .flags = IORESOURCE_MEM
++};
++
++static struct platform_device mxc_uart_device1 = {
++ .name = "imx-uart",
++ .id = 1,
++ .resource = &uart1,
++ .num_resources = 1,
++};
++
++static struct resource uart2 = {
++ .start = UART3_BASE_ADDR,
++ .end = UART3_BASE_ADDR + 0x0B5,
++ .flags = IORESOURCE_MEM
++};
++
++static struct platform_device mxc_uart_device2 = {
++ .name = "imx-uart",
++ .id = 2,
++ .resource = &uart2,
++ .num_resources = 1,
++};
++
++static struct resource uart3 = {
++ .start = UART4_BASE_ADDR,
++ .end = UART4_BASE_ADDR + 0x0B5,
++ .flags = IORESOURCE_MEM
++};
++
++static struct platform_device mxc_uart_device3 = {
++ .name = "imx-uart",
++ .id = 3,
++ .resource = &uart3,
++ .num_resources = 1,
++};
++
++static struct resource uart4 = {
++ .start = UART5_BASE_ADDR,
++ .end = UART5_BASE_ADDR + 0x0B5,
++ .flags = IORESOURCE_MEM
++};
++
++static struct platform_device mxc_uart_device4 = {
++ .name = "imx-uart",
++ .id = 4,
++ .resource = &uart4,
++ .num_resources = 1,
++};
++
++/*
++ * Register only those UARTs that physically exist
++ */
++int __init imx_init_uart(int uart_no, struct imxuart_platform_data *pdata)
++{
++ switch (uart_no) {
++ case 0:
++ mxc_uart_device0.dev.platform_data = pdata;
++ platform_device_register(&mxc_uart_device0);
++ break;
++ case 1:
++ mxc_uart_device1.dev.platform_data = pdata;
++ platform_device_register(&mxc_uart_device1);
++ break;
++ case 2:
++ mxc_uart_device2.dev.platform_data = pdata;
++ platform_device_register(&mxc_uart_device2);
++ break;
++ case 3:
++ mxc_uart_device3.dev.platform_data = pdata;
++ platform_device_register(&mxc_uart_device3);
++ break;
++ case 4:
++ mxc_uart_device4.dev.platform_data = pdata;
++ platform_device_register(&mxc_uart_device4);
++ break;
++ default:
++ return -ENODEV;
++ }
++
++ return 0;
++}
++
+Index: arch/arm/mach-mx3/mx31ads.c
+===================================================================
+--- linux/arch/arm/mach-mx3/mx31ads.c.orig
++++ linux/arch/arm/mach-mx3/mx31ads.c
+@@ -29,6 +29,7 @@
+ #include <asm/memory.h>
+ #include <asm/mach/map.h>
+ #include <asm/arch/common.h>
++#include <asm/arch/imx-uart.h>
+
+ /*!
+ * @file mx31ads.c
+@@ -118,11 +119,17 @@ void __init mx31ads_map_io(void)
+ iotable_init(mx31ads_io_desc, ARRAY_SIZE(mx31ads_io_desc));
+ }
+
++static struct imxuart_platform_data uart0_pdata = {
++ .flags = IMXUART_HAVE_RTSCTS,
++};
++
+ /*!
+ * Board specific initialization.
+ */
+ static void __init mxc_board_init(void)
+ {
++ imx_init_uart(0, &uart0_pdata);
++
+ mxc_init_extuart();
+ }
+
+Index: drivers/serial/Kconfig
+===================================================================
+--- linux/drivers/serial/Kconfig.orig
++++ linux/drivers/serial/Kconfig
+@@ -753,7 +753,7 @@ config BFIN_UART3_CTSRTS
+
+ config SERIAL_IMX
+ bool "IMX serial port support"
+- depends on ARM && ARCH_IMX
++ depends on ARM && (ARCH_IMX || ARCH_MXC)
+ select SERIAL_CORE
+ help
+ If you have a machine based on a Motorola IMX CPU you
+Index: drivers/serial/imx.c
+===================================================================
+--- linux/drivers/serial/imx.c.orig
++++ linux/drivers/serial/imx.c
+@@ -40,6 +40,7 @@
+ #include <linux/tty_flip.h>
+ #include <linux/serial_core.h>
+ #include <linux/serial.h>
++#include <linux/clk.h>
+
+ #include <asm/io.h>
+ #include <asm/irq.h>
+@@ -61,6 +62,11 @@
+ #define UBIR 0xa4 /* BRM Incremental Register */
+ #define UBMR 0xa8 /* BRM Modulator Register */
+ #define UBRC 0xac /* Baud Rate Count Register */
++#if defined CONFIG_ARCH_MX2 || defined CONFIG_ARCH_MX3
++#define ONEMS 0xb0 /* One Millisecond register */
++#define UTS 0xb4 /* UART Test Register */
++#endif
++#ifdef CONFIG_ARCH_IMX
+ #define BIPR1 0xb0 /* Incremental Preset Register 1 */
+ #define BIPR2 0xb4 /* Incremental Preset Register 2 */
+ #define BIPR3 0xb8 /* Incremental Preset Register 3 */
+@@ -70,6 +76,7 @@
+ #define BMPR3 0xc8 /* BRM Modulator Register 3 */
+ #define BMPR4 0xcc /* BRM Modulator Register 4 */
+ #define UTS 0xd0 /* UART Test Register */
++#endif
+
+ /* UART Control Register Bit Fields.*/
+ #define URXD_CHARRDY (1<<15)
+@@ -89,7 +96,12 @@
+ #define UCR1_RTSDEN (1<<5) /* RTS delta interrupt enable */
+ #define UCR1_SNDBRK (1<<4) /* Send break */
+ #define UCR1_TDMAEN (1<<3) /* Transmitter ready DMA enable */
++#ifdef CONFIG_ARCH_IMX
+ #define UCR1_UARTCLKEN (1<<2) /* UART clock enabled */
++#endif
++#if defined CONFIG_ARCH_MX2 || defined CONFIG_ARCH_MX3
++#define UCR1_UARTCLKEN (0) /* not present on mx2/mx3 */
++#endif
+ #define UCR1_DOZE (1<<1) /* Doze */
+ #define UCR1_UARTEN (1<<0) /* UART enabled */
+ #define UCR2_ESCI (1<<15) /* Escape seq interrupt enable */
+@@ -163,17 +175,20 @@
+ #define UTS_SOFTRST (1<<0) /* Software reset */
+
+ /* We've been assigned a range on the "Low-density serial ports" major */
++#ifdef CONFIG_ARCH_IMX
+ #define SERIAL_IMX_MAJOR 204
+ #define MINOR_START 41
++#define DEV_NAME "ttySMX"
++#define MAX_INTERNAL_IRQ IMX_IRQS
++#endif
+
+-#define NR_PORTS 2
+-
+-#define IMX_ISR_PASS_LIMIT 256
+-
+-/*
+- * This is the size of our serial port register set.
+- */
+-#define UART_PORT_SIZE 0x100
++#if defined CONFIG_ARCH_MX2 || defined CONFIG_ARCH_MX3
++#define SERIAL_IMX_MAJOR 207
++#define MINOR_START 16
++#define DEV_NAME "ttymxc"
++#define MX3_UART_REFFREQ 64000000
++#define MAX_INTERNAL_IRQ MXC_MAX_INT_LINES
++#endif
+
+ /*
+ * This determines how often we check the modem status signals
+@@ -191,8 +206,23 @@ struct imx_port {
+ unsigned int old_status;
+ int txirq,rxirq,rtsirq;
+ int have_rtscts:1;
++ struct clk *clk;
++ const char *clk_name;
+ };
+
++static int imx_uart_get_perclk(struct imx_port *sport)
++{
++#ifdef CONFIG_ARCH_IMX
++ return imx_get_perclk1();
++#endif
++#ifdef CONFIG_ARCH_MX2
++ return clk_get_rate(sport->clk);
++#endif
++#ifdef CONFIG_ARCH_MX3
++ return MX3_UART_REFFREQ; /* FIXME */
++#endif
++}
++
+ /*
+ * Handle any change of modem status signal since we were last called.
+ */
+@@ -358,66 +388,80 @@ static irqreturn_t imx_rxint(int irq, vo
+ struct tty_struct *tty = sport->port.info->tty;
+ unsigned long flags, temp;
+
+- rx = readl(sport->port.membase + URXD0);
+ spin_lock_irqsave(&sport->port.lock,flags);
+
+- do {
++ while (readl(sport->port.membase + USR2) & USR2_RDR) {
+ flg = TTY_NORMAL;
+ sport->port.icount.rx++;
+
++ rx = readl(sport->port.membase + URXD0);
++
+ temp = readl(sport->port.membase + USR2);
+ if( temp & USR2_BRCD ) {
+ writel(temp | USR2_BRCD, sport->port.membase + USR2);
+ if(uart_handle_break(&sport->port))
+- goto ignore_char;
++ continue;
+ }
+
+ if (uart_handle_sysrq_char
+ (&sport->port, (unsigned char)rx))
+- goto ignore_char;
++ continue;
+
+- if( rx & (URXD_PRERR | URXD_OVRRUN | URXD_FRMERR) )
+- goto handle_error;
++ if (rx & (URXD_PRERR | URXD_OVRRUN | URXD_FRMERR)) {
++ if (rx & URXD_PRERR)
++ sport->port.icount.parity++;
++ else if (rx & URXD_FR...
[truncated message content] |
|
From: <ar...@us...> - 2008-03-31 13:39:41
|
Revision: 778
http://armadeus.svn.sourceforge.net/armadeus/?rev=778&view=rev
Author: artemys
Date: 2008-03-31 06:39:45 -0700 (Mon, 31 Mar 2008)
Log Message:
-----------
Creating SVN branch for APF2 developments
Added Paths:
-----------
branches/apf2/
Copied: branches/apf2 (from rev 777, trunk)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ar...@us...> - 2008-03-31 13:21:05
|
Revision: 777
http://armadeus.svn.sourceforge.net/armadeus/?rev=777&view=rev
Author: artemys
Date: 2008-03-31 06:21:07 -0700 (Mon, 31 Mar 2008)
Log Message:
-----------
[LINUX] Add (partial) 2.6.24 kernel support + libertas over SPI control
Modified Paths:
--------------
trunk/buildroot/target/device/armadeus/Config.in
Added Paths:
-----------
trunk/buildroot/target/device/armadeus/apf9328/linux-2.6.24.3.config
trunk/buildroot/target/device/armadeus/apf9328/linux-2.6.24.config
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.24.3/
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.24.3/013-linux-2.6.24.3-framebuff.diff
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.24.3/014-linux-2.6.24.3-i2c-imx.diff
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.24.3/021-linux-2.6.24.3-apf9328.diff
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.24.3/022-linux-2.6.24.3-apf9328-mtd.diff
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.24.3/023-linux-2.6.24-fblcd-kconfig.diff
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.24.3/030-linux-2.6-imx_udc.diff
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.24.3/031-linux-2.6.24.3-imx-udc.diff
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.24.3/040-linux-2.6.24.3-imx_mmc.diff
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.24.3/041-linux-2.6.24.3-imx_irq.diff
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.24.3/050-linux-2.6.24.3-armadeus-kconfig.diff
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.24.3/062-linux-2.6.24.3-max1027.diff
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.24.3/070-linux-2.6.24.3-framebuffer-16bits-color-part1.diff
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.24.3/070-linux-2.6.24.3-framebuffer-16bits-color-part2.diff
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.24.3/071-linux-2.6.24.3-framebuffer-8bpp-switch.diff
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.24.3/072-linux-2.6.24.3-add-backlight-imxfb.diff
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.24.3/073-linux-2.6.24.3-tsc2102.diff
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.24.3/074-linux-2.6.24.3-tsc2102-touchscreen.diff
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.24.3/075-linux-2.6.24.3-spi2-reg-irq-defines.diff
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.24.3/076-linux-2.6.24.3-arm-vmlinux-ld-script-patch-for-new-binutils.diff
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.24.3/077-linux-2.6.24.3-arm-checksyscalls.diff
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.24.3/078-linux-2.6.24.3-set_imx_fb_info-section-mismatch.diff
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.24.3/081-can-proto-numbers.diff
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.24.3/082-can-core.diff
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.24.3/083-can-raw-proto.diff
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.24.3/084-can-bcm-proto.diff
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.24.3/085-can-vcan-driver.diff
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.24.3/088-mcp2515.diff
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.24.3/090-linux-2.6.24.3-add_libertas_SPI_support_to_APF9328.diff
trunk/buildroot/target/device/armadeus/linux/kernel-patches/create_patches.sh
Modified: trunk/buildroot/target/device/armadeus/Config.in
===================================================================
--- trunk/buildroot/target/device/armadeus/Config.in 2008-03-16 14:41:42 UTC (rev 776)
+++ trunk/buildroot/target/device/armadeus/Config.in 2008-03-31 13:21:07 UTC (rev 777)
@@ -76,6 +76,8 @@
bool "2.6.18.1"
config BR2_PACKAGE_LINUX_VERSION_2_6_23_1
bool "2.6.23.1"
+config BR2_PACKAGE_LINUX_VERSION_2_6_24
+ bool "2.6.24"
endchoice
config BR2_PACKAGE_LINUX_VERSION
@@ -84,6 +86,7 @@
default "2.6.17" if BR2_PACKAGE_LINUX_VERSION_2_6_17
default "2.6.18.1" if BR2_PACKAGE_LINUX_VERSION_2_6_18_1
default "2.6.23.1" if BR2_PACKAGE_LINUX_VERSION_2_6_23_1
+ default "2.6.24.3" if BR2_PACKAGE_LINUX_VERSION_2_6_24
config BR2_TARGET_U-BOOT
bool "U-Boot"
Added: trunk/buildroot/target/device/armadeus/apf9328/linux-2.6.24.3.config
===================================================================
--- trunk/buildroot/target/device/armadeus/apf9328/linux-2.6.24.3.config (rev 0)
+++ trunk/buildroot/target/device/armadeus/apf9328/linux-2.6.24.3.config 2008-03-31 13:21:07 UTC (rev 777)
@@ -0,0 +1,1216 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.24.3
+# Sun Mar 16 19:55:20 2008
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=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_PID_NS is not set
+# CONFIG_AUDIT is not set
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_CGROUPS is not set
+CONFIG_FAIR_GROUP_SCHED=y
+CONFIG_FAIR_USER_SCHED=y
+# CONFIG_FAIR_CGROUP_SCHED is not set
+CONFIG_SYSFS_DEPRECATED=y
+# CONFIG_RELAY is not set
+# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=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=y
+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_SLABINFO=y
+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 is not set
+CONFIG_IOSCHED_DEADLINE=y
+# CONFIG_IOSCHED_CFQ is not set
+# CONFIG_DEFAULT_AS is not set
+CONFIG_DEFAULT_DEADLINE=y
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="deadline"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+CONFIG_ARCH_IMX=y
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_PNX4008 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_ARCH_OMAP is not set
+
+#
+# Boot options
+#
+
+#
+# Power management
+#
+
+#
+# IMX Implementations
+#
+# CONFIG_ARCH_MX1ADS is not set
+CONFIG_MACH_APF9328=y
+CONFIG_IMX_APF9328_FLASH_8MB=y
+# CONFIG_IMX_APF9328_FLASH_16MB is not set
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_ARM920T=y
+CONFIG_CPU_32v4T=y
+CONFIG_CPU_ABRT_EV4T=y
+CONFIG_CPU_CACHE_V4WT=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_COPY_V4WB=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+# CONFIG_CPU_ICACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
+# CONFIG_OUTER_CACHE is not set
+
+#
+# Bus support
+#
+# CONFIG_PCI_SYSCALL is not set
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+# CONFIG_TICK_ONESHOT is not set
+# CONFIG_NO_HZ is not set
+# CONFIG_HIGH_RES_TIMERS is not set
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+CONFIG_PREEMPT=y
+CONFIG_HZ=100
+# CONFIG_AEABI is not set
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+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_SPARSEMEM_VMEMMAP_ENABLE is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
+# CONFIG_LEDS is not set
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE=""
+# CONFIG_XIP_KERNEL is not set
+# CONFIG_KEXEC is not set
+
+#
+# CPU Frequency scaling
+#
+# CONFIG_CPU_FREQ is not set
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+# CONFIG_FPE_NWFPE is not set
+CONFIG_FPE_FASTFPE=y
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+# CONFIG_ARTHUR is not set
+
+#
+# Power management options
+#
+# CONFIG_PM is not set
+CONFIG_SUSPEND_UP_POSSIBLE=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+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 is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+CONFIG_IP_PNP_RARP=y
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_XFRM_TUNNEL is not set
+# CONFIG_INET_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+CONFIG_INET_XFRM_MODE_BEET=y
+# CONFIG_INET_LRO is not set
+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_IPV6 is not set
+# CONFIG_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL is not set
+# CONFIG_NETWORK_SECMARK is not set
+# CONFIG_NETFILTER is not set
+# CONFIG_IP_DCCP is not set
+# CONFIG_IP_SCTP is not set
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+# CONFIG_LLC2 is not set
+# CONFIG_IPX 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 is not set
+# CONFIG_NET_SCHED is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_CAN is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+# CONFIG_AF_RXRPC is not set
+
+#
+# Wireless
+#
+# CONFIG_CFG80211 is not set
+CONFIG_WIRELESS_EXT=y
+# CONFIG_MAC80211 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 is not set
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_STANDALONE=y
+# CONFIG_PREVENT_FIRMWARE_BUILD is not set
+CONFIG_FW_LOADER=m
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# 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
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# 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
+# CONFIG_MTD_OOPS 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=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# 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=0x10000000
+CONFIG_MTD_PHYSMAP_LEN=0x10000000
+CONFIG_MTD_PHYSMAP_BANKWIDTH=2
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+CONFIG_MTD_APF9328=y
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# 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 is not set
+# CONFIG_MTD_ONENAND is not set
+
+#
+# UBI - Unsorted block images
+#
+# CONFIG_MTD_UBI is not set
+# CONFIG_PARPORT is not set
+CONFIG_BLK_DEV=y
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=m
+CONFIG_BLK_DEV_CRYPTOLOOP=m
+CONFIG_BLK_DEV_NBD=m
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=1
+CONFIG_BLK_DEV_RAM_SIZE=2048
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_EEPROM_93CX6 is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+# CONFIG_SCSI_DMA is not set
+# CONFIG_SCSI_NETLINK is not set
+# CONFIG_ATA is not set
+# CONFIG_MD is not set
+CONFIG_NETDEVICES=y
+# CONFIG_NETDEVICES_MULTIQUEUE 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_VETH is not set
+# CONFIG_PHYLIB is not set
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+# CONFIG_AX88796 is not set
+# CONFIG_SMC91X is not set
+CONFIG_DM9000=y
+# CONFIG_IBM_NEW_EMAC_ZMII is not set
+# CONFIG_IBM_NEW_EMAC_RGMII is not set
+# CONFIG_IBM_NEW_EMAC_TAH is not set
+# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
+# CONFIG_B44 is not set
+# CONFIG_NETDEV_1000 is not set
+# CONFIG_NETDEV_10000 is not set
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+CONFIG_WLAN_80211=y
+CONFIG_LIBERTAS=m
+CONFIG_LIBERTAS_SDIO=m
+CONFIG_LIBERTAS_DEBUG=y
+# CONFIG_HOSTAP is not set
+# CONFIG_WAN is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP 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 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=y
+CONFIG_INPUT_MOUSEDEV_PSAUX=y
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=320
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=240
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+CONFIG_KEYBOARD_ATKBD=y
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_KEYBOARD_GPIO is not set
+CONFIG_INPUT_MOUSE=y
+CONFIG_MOUSE_PS2=y
+# CONFIG_MOUSE_PS2_ALPS is not set
+# CONFIG_MOUSE_PS2_LOGIPS2PP is not set
+# CONFIG_MOUSE_PS2_SYNAPTICS is not set
+# CONFIG_MOUSE_PS2_LIFEBOOK is not set
+# CONFIG_MOUSE_PS2_TRACKPOINT is not set
+# CONFIG_MOUSE_PS2_TOUCHKIT is not set
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_APPLETOUCH is not set
+# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_MOUSE_GPIO is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+CONFIG_INPUT_MISC=y
+# CONFIG_INPUT_ATI_REMOTE is not set
+# CONFIG_INPUT_ATI_REMOTE2 is not set
+# CONFIG_INPUT_KEYSPAN_REMOTE is not set
+# CONFIG_INPUT_POWERMATE is not set
+# CONFIG_INPUT_YEALINK is not set
+CONFIG_INPUT_UINPUT=m
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+CONFIG_SERIO_SERPORT=y
+CONFIG_SERIO_LIBPS2=y
+# CONFIG_SERIO_RAW is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+CONFIG_VT_HW_CONSOLE_BINDING=y
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=m
+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_IMX=y
+CONFIG_SERIAL_IMX_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_IPMI_HANDLER is not set
+CONFIG_HW_RANDOM=y
+# CONFIG_NVRAM is not set
+# CONFIG_R3964 is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+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_GPIO is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_STUB is not set
+CONFIG_I2C_IMX=y
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_DS1682 is not set
+CONFIG_SENSORS_EEPROM=m
+CONFIG_SENSORS_PCF8574=m
+CONFIG_SENSORS_PCA9539=m
+CONFIG_SENSORS_PCF8591=m
+CONFIG_SENSORS_MAX6875=m
+# 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_DEBUG is not set
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+CONFIG_SPI_BITBANG=m
+CONFIG_SPI_IMX=m
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_AT25 is not set
+# CONFIG_SPI_SPIDEV is not set
+# CONFIG_SPI_TLE62X0 is not set
+# CONFIG_SPI_TSC2102 is not set
+# CONFIG_W1 is not set
+# CONFIG_POWER_SUPPLY is not set
+CONFIG_HWMON=m
+# CONFIG_HWMON_VID 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_ADT7470 is not set
+# CONFIG_SENSORS_ATXP1 is not set
+# CONFIG_SENSORS_DS1621 is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_F71882FG is not set
+# CONFIG_SENSORS_F75375S 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 is not set
+# 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_MAX1027=m
+# 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_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_VT1211 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
+# CONFIG_WATCHDOG is not set
+
+#
+# Sonics Silicon Backplane
+#
+CONFIG_SSB_POSSIBLE=y
+# CONFIG_SSB 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 is not set
+
+#
+# Graphics support
+#
+# CONFIG_VGASTATE is not set
+CONFIG_VIDEO_OUTPUT_CONTROL=m
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
+# CONFIG_FB_SYS_FILLRECT is not set
+# CONFIG_FB_SYS_COPYAREA is not set
+# CONFIG_FB_SYS_IMAGEBLIT is not set
+# CONFIG_FB_SYS_FOPS is not set
+CONFIG_FB_DEFERRED_IO=y
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+CONFIG_FB_MODE_HELPERS=y
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+CONFIG_FB_IMX=y
+CONFIG_FB_IMX_MICROTIPS_MTF_T035_TFT=y
+# CONFIG_FB_IMX_SHARP_LQ057_TFT is not set
+# CONFIG_FB_IMX_OPTREX_F51900_CSTN is not set
+# CONFIG_FB_IMX_MOTOROLA_A910_TFT is not set
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_VIRTUAL is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_LCD_CLASS_DEVICE=m
+# CONFIG_LCD_LTV350QV is not set
+CONFIG_BACKLIGHT_CLASS_DEVICE=m
+# CONFIG_BACKLIGHT_CORGI is not set
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+# CONFIG_FONTS is not set
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+CONFIG_LOGO=y
+# CONFIG_LOGO_LINUX_MONO is not set
+# CONFIG_LOGO_LINUX_VGA16 is not set
+# CONFIG_LOGO_LINUX_CLUT224 is not set
+CONFIG_LOGO_ARMADEUS_CLUT224=y
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+# CONFIG_SND is not set
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=y
+# CONFIG_HID_DEBUG is not set
+# CONFIG_HIDRAW is not set
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+# CONFIG_USB_ARCH_HAS_OHCI is not set
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+# CONFIG_USB is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=m
+# CONFIG_USB_GADGET_DEBUG is not set
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_AMD5536UDC is not set
+# CONFIG_USB_GADGET_ATMEL_USBA is not set
+# CONFIG_USB_GADGET_FSL_USB2 is not set
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+# CONFIG_USB_GADGET_M66592 is not set
+CONFIG_USB_GADGET_IMX=y
+CONFIG_USB_IMX=m
+# 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 is not set
+CONFIG_USB_ZERO=m
+# CONFIG_USB_ETH is not set
+CONFIG_USB_GADGETFS=m
+# CONFIG_USB_FILE_STORAGE is not set
+CONFIG_USB_G_SERIAL=m
+# CONFIG_USB_MIDI_GADGET is not set
+
+#
+# Armadeus specific drivers
+#
+CONFIG_ARMADEUS_DRIVERS=y
+CONFIG_ARMADEUS_GENERIC_DRIVER=m
+CONFIG_ARMADEUS_GPIO_DRIVER=m
+CONFIG_ARMADEUS_PPDEV_DRIVER=m
+
+#
+# FPGA related
+#
+CONFIG_ARMADEUS_FPGA_TOOL_DRIVER=m
+CONFIG_ARMADEUS_KEYPAD_DRIVER=y
+CONFIG_ARMADEUS_PS2KBD_DRIVER=m
+
+#
+# Handheld related
+#
+CONFIG_ARMADEUS_PWM_DRIVER=m
+CONFIG_IMX_BACKLIGHT=m
+
+#
+# Communication bus related:
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+# CONFIG_MMC_UNSAFE_RESUME is not set
+
+#
+# MMC/SD Card Drivers
+#
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_BLOCK_BOUNCE=y
+# CONFIG_SDIO_UART is not set
+
+#
+# MMC/SD Host Controller Drivers
+#
+CONFIG_MMC_IMX=y
+CONFIG_MMC_SPI=m
+# CONFIG_NEW_LEDS 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 is not set
+CONFIG_RTC_DRV_DS1374=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
+#
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+CONFIG_EXT2_FS_SECURITY=y
+CONFIG_EXT2_FS_XIP=y
+CONFIG_FS_XIP=y
+CONFIG_EXT3_FS=y
+CONFIG_EXT3_FS_XATTR=y
+CONFIG_EXT3_FS_POSIX_ACL=y
+CONFIG_EXT3_FS_SECURITY=y
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=y
+CONFIG_FS_MBCACHE=y
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+# 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=y
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+CONFIG_AUTOFS_FS=y
+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 is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=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_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_FS_WBUF_VERIFY is not set
+# 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_LZO is not set
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_CRAMFS is not set
+# 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
+CONFIG_NETWORK_FILESYSTEMS=y
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+CONFIG_NFS_V4=y
+CONFIG_NFS_DIRECTIO=y
+# CONFIG_NFSD is not set
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+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 is not set
+# CONFIG_CIFS 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=y
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION 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
+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=y
+# 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 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+# CONFIG_NLS_ISO8859_1 is not set
+# 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
+# CONFIG_DLM is not set
+CONFIG_INSTRUMENTATION=y
+# CONFIG_PROFILING is not set
+# CONFIG_MARKERS is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_WARN_DEPRECATED=y
+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=y
+# CONFIG_DEBUG_SHIRQ is not set
+CONFIG_DETECT_SOFTLOCKUP=y
+CONFIG_SCHED_DEBUG=y
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_TIMER_STATS is not set
+# CONFIG_DEBUG_SLAB is not set
+CONFIG_DEBUG_PREEMPT=y
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_RT_MUTEX_TESTER is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_LOCK_ALLOC is not set
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_LOCK_STAT is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_DEBUG_KOBJECT is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+CONFIG_DEBUG_INFO=y
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_LIST is not set
+# CONFIG_DEBUG_SG is not set
+CONFIG_FRAME_POINTER=y
+CONFIG_FORCED_INLINING=y
+# CONFIG_BOOT_PRINTK_DELAY is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_SAMPLES is not set
+# CONFIG_DEBUG_USER is not set
+# CONFIG_DEBUG_ERRORS is not set
+# CONFIG_DEBUG_LL is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+# CONFIG_SECURITY_FILE_CAPABILITIES is not set
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_MANAGER=y
+# CONFIG_CRYPTO_HMAC is not set
+# CONFIG_CRYPTO_XCBC is not set
+# CONFIG_CRYPTO_NULL is not set
+# CONFIG_CRYPTO_MD4 is not set
+CONFIG_CRYPTO_MD5=y
+# CONFIG_CRYPTO_SHA1 is not set
+# CONFIG_CRYPTO_SHA256 is not set
+# CONFIG_CRYPTO_SHA512 is not set
+# CONFIG_CRYPTO_WP512 is not set
+# CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_GF128MUL is not set
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=y
+# CONFIG_CRYPTO_PCBC is not set
+# CONFIG_CRYPTO_LRW is not set
+# CONFIG_CRYPTO_XTS is not set
+# CONFIG_CRYPTO_CRYPTD is not set
+CONFIG_CRYPTO_DES=y
+# CONFIG_CRYPTO_FCRYPT is not set
+# CONFIG_CRYPTO_BLOWFISH is not set
+# CONFIG_CRYPTO_TWOFISH is not set
+# CONFIG_CRYPTO_SERPENT is not set
+CONFIG_CRYPTO_AES=m
+# CONFIG_CRYPTO_CAST5 is not set
+# CONFIG_CRYPTO_CAST6 is not set
+# CONFIG_CRYPTO_TEA is not set
+CONFIG_CRYPTO_ARC4=m
+# CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_ANUBIS is not set
+# CONFIG_CRYPTO_SEED is not set
+# CONFIG_CRYPTO_DEFLATE is not set
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+# CONFIG_CRYPTO_CAMELLIA is not set
+# CONFIG_CRYPTO_TEST is not set
+# CONFIG_CRYPTO_AUTHENC is not set
+# CONFIG_CRYPTO_HW is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+# CONFIG_CRC_CCITT is not set
+# CONFIG_CRC16 is not set
+CONFIG_CRC_ITU_T=m
+CONFIG_CRC32=y
+CONFIG_CRC7=m
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
Added: trunk/buildroot/target/device/armadeus/apf9328/linux-2.6.24.config
===================================================================
--- trunk/buildroot/target/device/armadeus/apf9328/linux-2.6.24.config (rev 0)
+++ trunk/buildroot/target/device/armadeus/apf9328/linux-2.6.24.config 2008-03-31 13:21:07 UTC (rev 777)
@@ -0,0 +1,1212 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.23.1
+# Wed Dec 12 22:36:50 2007
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=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=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_SYSFS_DEPRECATED=y
+# CONFIG_RELAY is not set
+# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=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=y
+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 is not set
+CONFIG_IOSCHED_DEADLINE=y
+# CONFIG_IOSCHED_CFQ is not set
+# CONFIG_DEFAULT_AS is not set
+CONFIG_DEFAULT_DEADLINE=y
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="deadline"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+CONFIG_ARCH_IMX=y
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_PNX4008 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_ARCH_OMAP is not set
+
+#
+# Boot options
+#
+
+#
+# Power management
+#
+
+#
+# IMX Implementations
+#
+# CONFIG_ARCH_MX1ADS is not set
+# CONFIG_MACH_MX1FS2 is not set
+# CONFIG_MACH_SCB9328 is not set
+CONFIG_MACH_APF9328=y
+CONFIG_IMX_APF9328_FLASH_8MB=y
+# CONFIG_IMX_APF9328_FLASH_16MB is not set
+CONFIG_IMX_SCB9328_RAM_16MB=y
+# CONFIG_IMX_SCB9328_RAM_32MB is not set
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_ARM920T=y
+CONFIG_CPU_32v4T=y
+CONFIG_CPU_ABRT_EV4T=y
+CONFIG_CPU_CACHE_V4WT=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_COPY_V4WB=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+# CONFIG_CPU_ICACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
+# CONFIG_OUTER_CACHE is not set
+
+#
+# Bus support
+#
+# CONFIG_PCI_SYSCALL is not set
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+# CONFIG_TICK_ONESHOT is not set
+# CONFIG_NO_HZ is not set
+# CONFIG_HIGH_RES_TIMERS is not set
+CONFIG_PREEMPT=y
+CONFIG_HZ=100
+# CONFIG_AEABI is not set
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+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=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
+# CONFIG_LEDS is not set
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE=""
+# CONFIG_XIP_KERNEL is not set
+# CONFIG_KEXEC is not set
+
+#
+# CPU Frequency scaling
+#
+# CONFIG_CPU_FREQ is not set
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+# CONFIG_FPE_NWFPE is not set
+CONFIG_FPE_FASTFPE=y
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+# CONFIG_ARTHUR is not set
+
+#
+# Power management options
+#
+# CONFIG_PM is not set
+CONFIG_SUSPEND_UP_POSSIBLE=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+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 is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+CONFIG_IP_PNP_RARP=y
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_XFRM_TUNNEL is not set
+# CONFIG_INET_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+CONFIG_INET_XFRM_MODE_BEET=y
+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_IPV6 is not set
+# CONFIG_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL is not set
+# CONFIG_NETWORK_SECMARK is not set
+# CONFIG_NETFILTER is not set
+# CONFIG_IP_DCCP is not set
+# CONFIG_IP_SCTP is not set
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+# CONFIG_LLC2 is not set
+# CONFIG_IPX 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 is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_CAN is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+# CONFIG_AF_RXRPC is not set
+
+#
+# Wireless
+#
+# CONFIG_CFG80211 is not set
+# CONFIG_WIRELESS_EXT is not set
+# CONFIG_MAC80211 is not set
+# CONFIG_IEEE80211 is not set
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+# CONFIG_PREVENT_FIRMWARE_BUILD is not set
+# CONFIG_FW_LOADER is not set
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# 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
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# 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=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# 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=0x10000000
+CONFIG_MTD_PHYSMAP_LEN=0x10000000
+CONFIG_MTD_PHYSMAP_BANKWIDTH=2
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_SCB9328 is not set
+CONFIG_MTD_APF9328=y
+# CONFIG_MTD_MX1FS2 is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# 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 is not set
+# CONFIG_MTD_ONENAND is not set
+
+#
+# UBI - Unsorted block images
+#
+# CONFIG_MTD_UBI is not set
+# CONFIG_PARPORT is not set
+CONFIG_BLK_DEV=y
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=m
+CONFIG_BLK_DEV_CRYPTOLOOP=m
+CONFIG_BLK_DEV_NBD=m
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=1
+CONFIG_BLK_DEV_RAM_SIZE=2048
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+# CONFIG_SCSI_DMA is not set
+# CONFIG_SCSI_NETLINK is not set
+# CONFIG_ATA is not set
+# CONFIG_MD is not set
+CONFIG_NETDEVICES=y
+# CONFIG_NETDEVICES_MULTIQUEUE 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_PHYLIB is not set
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+# CONFIG_AX88796 is not set
+# CONFIG_SMC91X is not set
+CONFIG_DM9000=y
+# CONFIG_NETDEV_1000 is not set
+# CONFIG_NETDEV_10000 is not set
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+# CONFIG_WLAN_80211 is not set
+# CONFIG_WAN is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP 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 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=y
+CONFIG_INPUT_MOUSEDEV_PSAUX=y
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=320
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=240
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_TSDEV=m
+CONFIG_INPUT_TSDEV_SCREEN_X=320
+CONFIG_INPUT_TSDEV_SCREEN_Y=240
+# CONFIG_INPUT_EVDEV is not set
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+CONFIG_KEYBOARD_ATKBD=y
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_KEYBOARD_GPIO is not set
+CONFIG_INPUT_MOUSE=y
+CONFIG_MOUSE_PS2=y
+# CONFIG_MOUSE_PS2_ALPS is not set
+# CONFIG_MOUSE_PS2_LOGIPS2PP is not set
+# CONFIG_MOUSE_PS2_SYNAPTICS is not set
+# CONFIG_MOUSE_PS2_LIFEBOOK is not set
+# CONFIG_MOUSE_PS2_TRACKPOINT is not set
+# CONFIG_MOUSE_PS2_TOUCHKIT is not set
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_APPLETOUCH is not set
+# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_MOUSE_GPIO is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+CONFIG_INPUT_MISC=y
+# CONFIG_INPUT_ATI_REMOTE is not set
+# CONFIG_INPUT_ATI_REMOTE2 is not set
+# CONFIG_INPUT_KEYSPAN_REMOTE is not set
+# CONFIG_INPUT_POWERMATE is not set
+# CONFIG_INPUT_YEALINK is not set
+CONFIG_INPUT_UINPUT=m
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+CONFIG_SERIO_SERPORT=y
+CONFIG_SERIO_LIBPS2=y
+# CONFIG_SERIO_RAW is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+CONFIG_VT_HW_CONSOLE_BINDING=y
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=m
+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_IMX=y
+CONFIG_SERIAL_IMX_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_IPMI_HANDLER is not set
+# CONFIG_WATCHDOG is not set
+CONFIG_HW_RANDOM=y
+# CONFIG_NVRAM is not set
+# CONFIG_R3964 is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+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_GPIO is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_STUB is not set
+CONFIG_I2C_IMX=y
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_DS1682 is not set
+CONFIG_SENSORS_EEPROM=m
+CONFIG_SENSORS_PCF8574=m
+CONFIG_SENSORS_PCA9539=m
+CONFIG_SENSORS_PCF8591=m
+CONFIG_SENSORS_MAX6875=m
+# 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_DEBUG is not set
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+CONFIG_SPI_BITBANG=m
+CONFIG_SPI_IMX=m
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_AT25 is not set
+# CONFIG_SPI_SPIDEV is not set
+# CONFIG_SPI_TLE62X0 is not set
+# CONFIG_SPI_TSC2102 is not set
+# CONFIG_W1 is not set
+CONFIG_HWMON=m
+# 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 is not set
+# 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_MAX1027=m
+# 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_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_VT1211 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
+CONFIG_MISC_DEVICES=y
+# CONFIG_EEPROM_93CX6 is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+# CONFIG_NEW_LEDS is not set
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+# CONFIG_DVB_CORE is not set
+# CONFIG_DAB is not set
+
+#
+# Graphics support
+#
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_LCD_CLASS_DEVICE=m
+CONFIG_BACKLIGHT_CLASS_DEVICE=m
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+# CONFIG_VGASTATE is not set
+CONFIG_VIDEO_OUTPUT_CONTROL=m
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_SYS_FILLRECT is not set
+# CONFIG_FB_SYS_COPYAREA is not set
+# CONFIG_FB_SYS_IMAGEBLIT is not set
+# CONFIG_FB_SYS_FOPS is not set
+CONFIG_FB_DEFERRED_IO=y
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+CONFIG_FB_MODE_HELPERS=y
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+CONFIG_FB_IMX=y
+CONFIG_FB_IMX_MICROTIPS_MTF_T035_TFT=y
+# CONFIG_FB_IMX_SHARP_LQ057_TFT is not set
+# CONFIG_FB_IMX_OPTREX_F51900_CSTN is not set
+# CONFIG_FB_IMX_MOTOROLA_A910_TFT is not set
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_VIRTUAL is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+# CONFIG_FONTS is not set
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+CONFIG_LOGO=y
+# CONFIG_LOGO_LINUX_MONO is not set
+# CONFIG_LOGO_LINUX_VGA16 is not set
+# CONFIG_LOGO_LINUX_CLUT224 is not set
+CONFIG_LOGO_ARMADEUS_CLUT224=y
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+# CONFIG_SND is not set
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=y
+# CONFIG_HID_DEBUG is not set
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+# CONFIG_USB_ARCH_HAS_OHCI is not set
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+# CONFIG_USB is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=m
+# CONFIG_USB_GADGET_DEBUG is not set
+# 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 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+# CONFIG_USB_GADGET_M66592 is not set
+CONFIG_USB_GADGET_IMX=y
+CONFIG_USB_IMX=m
+# 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 is not set
+CONFIG_USB_ZERO=m
+# CONFIG_USB_ETH is not set
+CONFIG_USB_GADGETFS=m
+# CONFIG_USB_FILE_STORAGE is not set
+CONFIG_USB_G_SERIAL=m
+# CONFIG_USB_MIDI_GADGET is not set
+
+#
+# Armadeus specific drivers
+#
+CONFIG_ARMADEUS_DRIVERS=y
+CONFIG_ARMADEUS_GENERIC_DRIVER=m
+CONFIG_ARMADEUS_GPIO_DRIVER=m
+CONFIG_ARMADEUS_PPDEV_DRIVER=m
+
+#
+# FPGA related
+#
+CONFIG_ARMADEUS_FPGA_TOOL_DRIVER=m
+CONFIG_ARMADEUS_KEYPAD_DRIVER=y
+CONFIG_ARMADEUS_PS2KBD_DRIVER=m
+
+#
+# Handheld related
+#
+CONFIG_ARMADEUS_PWM_DRIVER=m
+CONFIG_IMX_BACKLIGHT=m
+
+#
+# Communication bus related:
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+# CONFIG_MMC_UNSAFE_RESUME is not set
+
+#
+# MMC/SD Card Drivers
+#
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_BLOCK_BOUNCE=y
+
+#
+# MMC/SD Host Controller Drivers
+#
+CONFIG_MMC_IMX=y
+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 is not set
+# 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_DS1374=y
+# 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 is not set
+
+#
+# DMA Clients
+#
+
+#
+# DMA Devices
+#
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+CONFIG_EXT2_FS_SECURITY=y
+CONFIG_EXT2_FS_XIP=y
+CONFIG_FS_XIP=y
+CONFIG_EXT3_FS=y
+CONFIG_EXT3_FS_XATTR=y
+CONFIG_EXT3_FS_POSIX_ACL=y
+CONFIG_EXT3_FS_SECURITY=y
+# 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=y
+# 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=y
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+CONFIG_AUTOFS_FS=y
+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 is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=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 is not set
+# 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=y
+# CONFIG_NFSD is not set
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+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 is not set
+# CONFIG_CIFS 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=y
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION 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=y
+# 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...
[truncated message content] |
|
From: <jo...@us...> - 2008-03-16 14:41:38
|
Revision: 776
http://armadeus.svn.sourceforge.net/armadeus/?rev=776&view=rev
Author: jorasse
Date: 2008-03-16 07:41:42 -0700 (Sun, 16 Mar 2008)
Log Message:
-----------
[Linux] Changed imxkeypad kernel default configuration to be built as a module.
Modified Paths:
--------------
trunk/buildroot/target/device/armadeus/apf9328/linux-2.6.23.1.config
Modified: trunk/buildroot/target/device/armadeus/apf9328/linux-2.6.23.1.config
===================================================================
--- trunk/buildroot/target/device/armadeus/apf9328/linux-2.6.23.1.config 2008-03-16 12:58:29 UTC (rev 775)
+++ trunk/buildroot/target/device/armadeus/apf9328/linux-2.6.23.1.config 2008-03-16 14:41:42 UTC (rev 776)
@@ -836,7 +836,7 @@
# FPGA related
#
CONFIG_ARMADEUS_FPGA_TOOL_DRIVER=m
-CONFIG_ARMADEUS_KEYPAD_DRIVER=y
+CONFIG_ARMADEUS_KEYPAD_DRIVER=m
CONFIG_ARMADEUS_PS2KBD_DRIVER=m
#
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jo...@us...> - 2008-03-16 12:58:24
|
Revision: 775
http://armadeus.svn.sourceforge.net/armadeus/?rev=775&view=rev
Author: jorasse
Date: 2008-03-16 05:58:29 -0700 (Sun, 16 Mar 2008)
Log Message:
-----------
[Linux] updated imx keypad driver compatibility with recent linux kernel and fixed some bugs.
Modified Paths:
--------------
trunk/target/linux/modules/Makefile
trunk/target/linux/modules/keypad/Kconfig
trunk/target/linux/modules/keypad/Makefile
trunk/target/linux/modules/keypad/imxkeypad.c
Modified: trunk/target/linux/modules/Makefile
===================================================================
--- trunk/target/linux/modules/Makefile 2008-03-14 13:01:08 UTC (rev 774)
+++ trunk/target/linux/modules/Makefile 2008-03-16 12:58:29 UTC (rev 775)
@@ -7,7 +7,7 @@
# Part executed when called from kernel build system:
ifneq ($(KERNELRELEASE),)
-obj-$(CONFIG_ARMADEUS_DRIVERS) += gpio/ ps2keyboard/ fpga_devtools/ pwm/ backlight/ isp1761/
+obj-$(CONFIG_ARMADEUS_DRIVERS) += gpio/ ps2keyboard/ keypad/ fpga_devtools/ pwm/ backlight/ isp1761/
# Part execute when called from standard make in this directory:
else
Modified: trunk/target/linux/modules/keypad/Kconfig
===================================================================
--- trunk/target/linux/modules/keypad/Kconfig 2008-03-14 13:01:08 UTC (rev 774)
+++ trunk/target/linux/modules/keypad/Kconfig 2008-03-16 12:58:29 UTC (rev 775)
@@ -2,9 +2,9 @@
#
config ARMADEUS_KEYPAD_DRIVER
- boolean "Armadeus keypad driver"
+ tristate "Armadeus keypad driver"
default n
depends on ARMADEUS_DRIVERS
---help---
- GPIO can be used to control a matrix keypad with this driver
+ GPIO pins can be used to control a matrix keypad with this driver
Modified: trunk/target/linux/modules/keypad/Makefile
===================================================================
--- trunk/target/linux/modules/keypad/Makefile 2008-03-14 13:01:08 UTC (rev 774)
+++ trunk/target/linux/modules/keypad/Makefile 2008-03-16 12:58:29 UTC (rev 775)
@@ -1,21 +1,20 @@
#
-# Makefile for the Armadeus keypad drivers
+# Makefile for the imx keypad drivers
#
-# unfinished state; to be continued
-BASE_DIR="../../../../buildroot/"
-
-REL=`grep "BR2_PACKAGE_LINUX_VERSION=" $(BASE_DIR).config | \
- sed "s/BR2_PACKAGE_LINUX_VERSION=\\"//" | sed "s/\\"//"`
-
-ARMADEUS_KERNEL_DIR=$(BASE_DIR)build_arm_nofpu/linux-$(REL)
-
+# Part executed when called from kernel build system:
ifneq ($(KERNELRELEASE),)
-obj-m += imxkeypad.o
+obj-$(CONFIG_ARMADEUS_KEYPAD_DRIVER) += imxkeypad.o
+# Part executed when called from standard make in this directory:
+# (preferably use Makefile in parent directory)
else
-#KDIR := /lib/modules/$(shell uname -r)/build
+
+BASE_DIR="../../../../buildroot/"
+REL=`grep "BR2_PACKAGE_LINUX_VERSION=" $(BASE_DIR).config | \
+ sed "s/BR2_PACKAGE_LINUX_VERSION=\\"//" | sed "s/\\"//"`
+ARMADEUS_KERNEL_DIR=$(BASE_DIR)build_arm_nofpu/linux-$(REL)
KDIR := $(ARMADEUS_KERNEL_DIR)
PWD := $(shell pwd)
@@ -24,10 +23,6 @@
clean:
rm -f *.*o
-
-install:
- echo "Installing drivers..."
- echo "type: cp *.ko $(BASE_DIR)build_arm_nofpu/root/lib/modules/2.6.12/kernel/drivers/"
+ rm -f Module.symvers
endif
-
Modified: trunk/target/linux/modules/keypad/imxkeypad.c
===================================================================
--- trunk/target/linux/modules/keypad/imxkeypad.c 2008-03-14 13:01:08 UTC (rev 774)
+++ trunk/target/linux/modules/keypad/imxkeypad.c 2008-03-16 12:58:29 UTC (rev 775)
@@ -1,11 +1,12 @@
/*
- * Copyright (c) 2006 Eric Jarrige
+ * imxkeypad driver for Linux/ARM Armadeus project
*
+ * Copyright (c) 2006-2008 Eric Jarrige
+ *
* Based on LoCoMo keyboard driver
*/
/*
- * imxkeypad driver for Linux/ARM
*/
/*
@@ -25,7 +26,7 @@
*
*/
-#include <linux/config.h>
+#include <linux/autoconf.h>
#include <linux/slab.h>
#include <linux/module.h>
#include <linux/moduleparam.h>
@@ -35,35 +36,29 @@
#include <linux/delay.h>
#include <linux/device.h>
#include <linux/interrupt.h>
+#include <linux/irq.h>
#include <linux/ioport.h>
#include <asm/io.h>
-#include <asm/arch/imx-regs.h>
+#include <asm/arch/hardware.h>
#include <asm/irq.h>
-MODULE_AUTHOR("Eric Jarrige <jo...@us...>");
+MODULE_AUTHOR("Eric Jarrige");
MODULE_DESCRIPTION("IMX keypad driver");
MODULE_LICENSE("GPL");
-#define KPD_ROW_IDX 0
-#define KPD_COL_IDX 1
+#define DEBUG
#define KPD_MAX_ROWS 8
-#define KPD_ROWS 4
-#define KPD_ROWS_BIT_OFFSET 3
+#define KPD_MAX_COLS 8
-#define KPD_MAX_COLS 16
-#define KPD_COLS 4
-#define KPD_COLS_BIT_OFFSET 7
+#define KB_ROWMASK(r) (1 << (r + kpdPtr->rows_offset))
+#define SCANCODE(c,r) ( (c * kpdPtr->num_rows) + (r) )
-#define IMXKEYPAD_NUMKEYS (KPD_ROWS * KPD_COLS)
-#define KB_ROWMASK(r) (1 << (r + KPD_ROWS_BIT_OFFSET))
-#define SCANCODE(c,r) ( (c * KPD_ROWS) + (r) )
-
#define KB_DELAY 8
#define SCAN_INTERVAL (HZ/10)
-static unsigned char imxkeypad_keycode[IMXKEYPAD_NUMKEYS] = {
+static unsigned char imxkeypad_keycode[KPD_MAX_ROWS * KPD_MAX_COLS] = {
KEY_LEFT, KEY_RIGHT, KEY_ENTER, KEY_ESC, /* 0 - 3 */
KEY_3, KEY_6, KEY_9, KEY_SPACE, /* 4 - 7 */
KEY_2, KEY_5, KEY_8, KEY_0, /* 8 - 11 */
@@ -71,40 +66,28 @@
};
struct imxkeypad {
- unsigned char keycode[IMXKEYPAD_NUMKEYS];
- struct input_dev input;
+ unsigned char keycode[KPD_MAX_ROWS * KPD_MAX_COLS];
+ struct input_dev *input;
char phys[32];
- unsigned long base;
int num_rows;
int rows_offset;
int num_cols;
int cols_offset;
-
+ int port;
+ int irqs[KPD_MAX_ROWS];
spinlock_t lock;
struct timer_list timer;
char irq_disabled;
+ int debouncing;
};
-static int irq[KPD_MAX_ROWS] = {
- IRQ_GPIOA(0+KPD_ROWS_BIT_OFFSET),
- IRQ_GPIOA(1+KPD_ROWS_BIT_OFFSET),
- IRQ_GPIOA(2+KPD_ROWS_BIT_OFFSET),
- IRQ_GPIOA(3+KPD_ROWS_BIT_OFFSET)
-};
-static unsigned int num_irq = KPD_ROWS;
-module_param_array(irq, int, &num_irq, 0000);
-MODULE_PARM_DESC(irq, "irqs asserted on key pressed");
+static int io_port=0;
+module_param(io_port, int, 0000);
+MODULE_PARM_DESC(io_port, "GPIO port (0..3)");
-static long int io_addr[]={(long)&DR(0),(long)&SSR(0)};
-module_param_array(io_addr, long, NULL, 0000);
-MODULE_PARM_DESC(io_addr, "control and status register addresses");
-#define CTRL_REG (io_addr[0])
-#define STAT_REG (io_addr[1])
-
-
static long int size[]={4,4};
module_param_array(size, long, NULL, 0000);
MODULE_PARM_DESC(size, "matrix size: num rows, num cols");
@@ -114,237 +97,224 @@
MODULE_PARM_DESC(bit_offset, "rows and cols bits offset in registers");
/* helper functions for reading the keyboard matrix */
-static inline void imxkeypad_charge_all(unsigned long membase)
+static inline void imxkeypad_charge_all(struct imxkeypad *kpdPtr)
{
- DR(0) |= (((1<<KPD_COLS)-1)<<KPD_COLS_BIT_OFFSET);
+ DR(kpdPtr->port) |=
+ (((1<<(kpdPtr->num_cols))-1)<<(kpdPtr->cols_offset));
}
-static inline void imxkeypad_activate_all(unsigned long membase)
+static inline void imxkeypad_activate_all(struct imxkeypad *kpdPtr)
{
- DR(0) &= ~(((1<<KPD_COLS)-1)<<KPD_COLS_BIT_OFFSET);
+ DR(kpdPtr->port) &= ~(((1<<(kpdPtr->num_cols))-1)<<(kpdPtr->cols_offset));
}
-static inline void imxkeypad_activate_col(unsigned long membase, int col)
+static inline void imxkeypad_activate_col(struct imxkeypad *kpdPtr, int col)
{
- DR(0) &= ~(1 << (col + KPD_COLS_BIT_OFFSET));
+ DR(kpdPtr->port) &= ~(1 << (col + kpdPtr->cols_offset));
}
-static inline void imxkeypad_reset_col(unsigned long membase, int col)
+static inline void imxkeypad_reset_col(struct imxkeypad *kpdPtr, int col)
{
- DR(0) |= (1 << (col + KPD_COLS_BIT_OFFSET));
+ DR(kpdPtr->port) |= (1 << (col + kpdPtr->cols_offset));
}
/*
- * The LoCoMo keyboard only generates interrupts when a key is pressed.
+ * The imx keypad only generates interrupts when a key is pressed.
* So when a key is pressed, we enable a timer. This timer scans the
* keyboard, and this is how we detect when the key is released.
*/
/* Scan the hardware keyboard and push any changes up through the input layer */
-static void imxkeypad_scankeyboard(struct imxkeypad *imxkeypad, struct pt_regs *regs)
+static void imxkeypad_scankeyboard(struct imxkeypad *kpdPtr)
{
- unsigned int row, col, rowd, scancode;
- unsigned long flags;
+ unsigned int row, col, scancode;
+ unsigned long rowd;
unsigned int num_pressed;
- unsigned long membase = imxkeypad->base;
- spin_lock_irqsave(&imxkeypad->lock, flags);
+ imxkeypad_charge_all(kpdPtr);
- if (!imxkeypad->irq_disabled) {
- for (row = 0; row < num_irq; row++) {
- disable_irq_nosync(irq[row]);
- }
- imxkeypad->irq_disabled = 1;
- }
- //disable_irq_nosync(irq);
-
-
- if (regs)
- input_regs(&imxkeypad->input, regs);
-
- imxkeypad_charge_all(membase);
-
num_pressed = 0;
- for (col = 0; col < KPD_COLS; col++) {
+ for (col = 0; col < kpdPtr->num_cols; col++) {
- imxkeypad_activate_col(membase, col);
+ imxkeypad_activate_col(kpdPtr, col);
udelay(KB_DELAY);
- rowd = ~readl(&SSR(0));
- for (row = 0; row < KPD_ROWS; row++ ) {
+ rowd = ~(SSR(kpdPtr->port));
+ for (row = 0; row < kpdPtr->num_rows; row++ ) {
scancode = SCANCODE(col, row);
if (rowd & KB_ROWMASK(row)) {
- num_pressed += 1;
- input_report_key(&imxkeypad->input, imxkeypad->keycode[scancode], 1);
- } else {
- input_report_key(&imxkeypad->input, imxkeypad->keycode[scancode], 0);
+ num_pressed++;
+ input_report_key(kpdPtr->input, kpdPtr->keycode[scancode], 1);
+ kpdPtr->debouncing = 1;
+ printk(KERN_DEBUG "key index: %d\n", scancode);
+ } else if (1 >= kpdPtr->debouncing) {
+ input_report_key(kpdPtr->input, kpdPtr->keycode[scancode], 0);
}
}
- imxkeypad_reset_col(membase, col);
+ imxkeypad_reset_col(kpdPtr, col);
}
- imxkeypad_activate_all(membase);
+ imxkeypad_activate_all(kpdPtr);
- input_sync(&imxkeypad->input);
+ input_sync(kpdPtr->input);
- /* if any keys are pressed, enable the timer */
- if (num_pressed)
- mod_timer(&imxkeypad->timer, jiffies + SCAN_INTERVAL);
- printk(KERN_ERR "imxkeypad: polling\n");
+ /* on key release repeat some scan to remove debounce */
+ if ((!num_pressed)&&(0 <= kpdPtr->debouncing)) {
+ kpdPtr->debouncing--;
+ }
- if ((!num_pressed)&&(imxkeypad->irq_disabled)) {
- for (row = 0; row < num_irq; row++) {
- enable_irq(irq[row]);
+ if ((!num_pressed)&&(kpdPtr->irq_disabled)&&(0 >= kpdPtr->debouncing)) {
+ for (row = 0; row < kpdPtr->num_rows; row++) {
+ enable_irq(kpdPtr->irqs[row]);
}
- imxkeypad->irq_disabled = 0;
+ kpdPtr->irq_disabled = 0;
+ } else {
+ /* if any keys are pressed or still checking debounce, enable the timer */
+ mod_timer(&kpdPtr->timer, jiffies + SCAN_INTERVAL);
}
- spin_unlock_irqrestore(&imxkeypad->lock, flags);
-
-
}
/*
* imxkeypad interrupt handler.
*/
-static irqreturn_t imxkeypad_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+static irqreturn_t imxkeypad_interrupt(int irq, void *dev_id/*, struct pt_regs *regs*/)
{
- struct imxkeypad *imxkeypad = dev_id;
- /** wait chattering delay **/
- /* udelay(100); */
+ struct imxkeypad *kpdPtr = dev_id;
+ unsigned int row;
+
+ if (!kpdPtr->irq_disabled) {
+ for (row = 0; row < kpdPtr->num_rows; row++) {
+ disable_irq(kpdPtr->irqs[row]);
+ }
+ kpdPtr->irq_disabled = 1;
+ kpdPtr->debouncing = 1;
+ }
- printk(KERN_ERR "imxkeypad: interrupt\n");
- //imxkeypad_scankeyboard(imxkeypad, regs);
- mod_timer(&imxkeypad->timer, jiffies + SCAN_INTERVAL);
+ printk(KERN_DEBUG "keypad int\n");
+ mod_timer(&kpdPtr->timer, jiffies + SCAN_INTERVAL);
+
return IRQ_HANDLED;
}
/*
- * LoCoMo timer checking for released keys
+ * imxkeypad timer checking for released keys
*/
static void imxkeypad_timer_callback(unsigned long data)
{
- struct imxkeypad *imxkeypad = (struct imxkeypad *) data;
- imxkeypad_scankeyboard(imxkeypad, NULL);
+ struct imxkeypad *kpdPtr = (struct imxkeypad *) data;
+ imxkeypad_scankeyboard(kpdPtr);
}
-static struct imxkeypad imxkeypad = {
- .phys = "imxkeypad/input0",
-};
+static struct imxkeypad imxkeypad;
static int __init imxkeypad_init(void)
{
int i, ret;
- printk("Initializing Armadeus keypad driver\n");
+ printk(KERN_INFO "Initializing Armadeus keypad driver\n");
-// imxkeypad = kmalloc(sizeof(struct imxkeypad), GFP_KERNEL);
-// if (!imxkeypad)
-// return -ENOMEM;
-
memset(&imxkeypad, 0, sizeof(struct imxkeypad));
- /* try and claim memory region */
-// if (!request_mem_region((unsigned long) dev->mapbase,
-// dev->length,
-// LOCOMO_DRIVER_NAME(dev))) {
-// ret = -EBUSY;
-// printk(KERN_ERR "imxkeypad: Can't acquire access to io memory for keyboard\n");
-// goto free;
-// }
-
-// imxkeypad->ldev = dev;
-// locomo_set_drvdata(dev, imxkeypad);
-
-// imxkeypad->base = (unsigned long) dev->mapbase;
-
spin_lock_init(&imxkeypad.lock);
init_timer(&imxkeypad.timer);
imxkeypad.timer.function = imxkeypad_timer_callback;
imxkeypad.timer.data = (unsigned long) &imxkeypad;
-
- imxkeypad.input.evbit[0] = BIT(EV_KEY) | BIT(EV_REP);
+ strcpy(imxkeypad.phys, "imxkeypad/input0");
- init_input_dev(&imxkeypad.input);
- imxkeypad.input.keycode = imxkeypad.keycode;
- imxkeypad.input.keycodesize = sizeof(unsigned char);
- imxkeypad.input.keycodemax = ARRAY_SIZE(imxkeypad_keycode);
- imxkeypad.input.private = &imxkeypad;
+ imxkeypad.input = input_allocate_device();
+ if (!imxkeypad.input) {
+ printk(KERN_ERR "imxkeypad: Can't allocate device structure\n");
+ goto out;
+ }
+ imxkeypad.input->evbit[0] = BIT(EV_KEY) | BIT(EV_REP);
+
+ imxkeypad.input->keycode = imxkeypad.keycode;
+ imxkeypad.input->keycodesize = sizeof(unsigned char);
+ imxkeypad.input->keycodemax = ARRAY_SIZE(imxkeypad_keycode);
+ imxkeypad.input->private = &imxkeypad;
+ imxkeypad.input->name = "imxkeypad";
+ imxkeypad.input->phys = imxkeypad.phys;
+ imxkeypad.input->id.bustype = BUS_HOST;
+ imxkeypad.input->id.vendor = 0x0001;
+ imxkeypad.input->id.product = 0x0001;
+ imxkeypad.input->id.version = 0x0100;
+
+
+
+ printk(KERN_DEBUG "imxkeypad matrix size: %ld rows, %ld cols\n", size[0], size[1]);
+ imxkeypad.num_rows = size[0];
+ imxkeypad.num_cols = size[1];
+
+ printk(KERN_DEBUG "imxkeypad bit_offset : rows %ld bits, cols %ld bits\n", bit_offset[0], bit_offset[1]);
+ imxkeypad.rows_offset = bit_offset[0];
+ imxkeypad.cols_offset = bit_offset[1];
+
+ printk(KERN_DEBUG "imxkeypad GPIO port: %d\n", io_port);
+ imxkeypad.port = io_port;
+
+ /* init keycode table */
memcpy(imxkeypad.keycode, imxkeypad_keycode, sizeof(imxkeypad.keycode));
- for (i = 0; i < IMXKEYPAD_NUMKEYS; i++)
- set_bit(imxkeypad.keycode[i], imxkeypad.input.keybit);
- clear_bit(0, imxkeypad.input.keybit);
+ for (i = 0; i < (imxkeypad.num_cols*imxkeypad.num_rows); i++)
+ set_bit(imxkeypad.keycode[i], imxkeypad.input->keybit);
+ clear_bit(0, imxkeypad.input->keybit);
- imxkeypad.input.name = "imxkeypad";
- imxkeypad.input.phys = imxkeypad.phys;
- imxkeypad.input.id.bustype = BUS_HOST;
- //imxkeypad.input.id.vendor = 0x0001;
- //imxkeypad.input.id.product = 0x0001;
- //imxkeypad.input.id.version = 0x0100;
+ /* init each gpios row pin as an input with pullup */
+ for (i = 0; i < imxkeypad.num_rows; i++) {
+ imx_gpio_mode( (imxkeypad.port<<GPIO_PORT_SHIFT)
+ | GPIO_GIUS | GPIO_IN | GPIO_PUEN
+ | (imxkeypad.rows_offset + i) );
+ }
+ /* init each gpios column pin as an output */
+ for (i = 0; i < imxkeypad.num_cols; i++) {
+ imx_gpio_mode( (imxkeypad.port<<GPIO_PORT_SHIFT)
+ | GPIO_GIUS | GPIO_OUT | GPIO_DR
+ | (imxkeypad.cols_offset + i) );
+
+ }
+ /* Activate every column to detect any key pressed */
+ imxkeypad_activate_all(&imxkeypad);
+ input_register_device(imxkeypad.input);
+
/* attempt to get the interrupts */
- for (i = 0; i < num_irq; i++) {
- //imxkeypad.irq[i] = IRQ_GPIOA(i+KPD_ROWS_BIT_OFFSET);
- printk(KERN_ERR "imxkeypad: requesting irq %d\n", irq[i]);
- ret = request_irq(irq[i], imxkeypad_interrupt, 0, "imxkeypad", &imxkeypad);
+ for (i = 0; i < imxkeypad.num_rows; i++) {
+ imxkeypad.irqs[i] = IMX_IRQS + 32*imxkeypad.port + imxkeypad.rows_offset + i;
+ printk(KERN_DEBUG "imxkeypad: requesting irq %d\n", imxkeypad.irqs[i]);
+ ret = request_irq(imxkeypad.irqs[i], imxkeypad_interrupt, 0, "imxkeypad", &imxkeypad);
if (ret) {
printk(KERN_ERR "imxkeypad: Can't get irq for keyboard\n");
- goto out;
+ goto free;
}
+ else set_irq_type( imxkeypad.irqs[i], IRQF_TRIGGER_FALLING );
}
- printk(KERN_ERR "imxkeypad io_addr ctrl: %lx, status: %lx\n", io_addr[0], io_addr[1]);
-
- printk(KERN_ERR "imxkeypad matrix size: %ld rows, %ld cols\n", size[0], size[1]);
- printk(KERN_ERR "imxkeypad bit_offset : rows %ld bits, cols %ld bits\n", bit_offset[0], bit_offset[1]);
-
- input_register_device(&imxkeypad.input);
-
- imxkeypad_activate_all(0);
-
- //mod_timer(&imxkeypad.timer, jiffies + SCAN_INTERVAL);
-
- printk(KERN_INFO "input: Armadeus keypad on imxkeypad\n");
-
return 0;
+free:
+ input_unregister_device(imxkeypad.input);
out:
-// release_mem_region((unsigned long) dev->mapbase, dev->length);
-//free:
-// kfree(imxkeypad);
-
-
return 0;
-
}
static void __exit imxkeypad_exit(void)
{
int i;
-// driver_unregister(&keyboard_driver.drv);
- for (i = 0; i < num_irq; i++) {
- free_irq(irq[i], &imxkeypad);
+ for (i = 0; i < imxkeypad.num_rows; i++) {
+ free_irq(imxkeypad.irqs[i], &imxkeypad);
}
del_timer_sync(&imxkeypad.timer);
- input_unregister_device(&imxkeypad.input);
-
-// release_mem_region((unsigned long) dev->mapbase, dev->length);
-
-// kfree(imxkeypad);
-
- printk(KERN_INFO "input: Armadeus keypad terminated\n");
-
-
+ input_unregister_device(imxkeypad.input);
}
module_init(imxkeypad_init);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <Fa...@us...> - 2008-03-14 13:01:08
|
Revision: 774
http://armadeus.svn.sourceforge.net/armadeus/?rev=774&view=rev
Author: FabM
Date: 2008-03-14 06:01:08 -0700 (Fri, 14 Mar 2008)
Log Message:
-----------
[target] Interruption ok
Modified Paths:
--------------
trunk/target/linux/modules/led/README
trunk/target/linux/modules/led/led.c
trunk/target/linux/modules/led/led.h
Removed Paths:
-------------
trunk/target/linux/modules/led/TODO
Modified: trunk/target/linux/modules/led/README
===================================================================
--- trunk/target/linux/modules/led/README 2008-03-14 12:54:53 UTC (rev 773)
+++ trunk/target/linux/modules/led/README 2008-03-14 13:01:08 UTC (rev 774)
@@ -1,4 +1,9 @@
-Driver for fpga IP bus_led -> armadeus/firmware/led/
+Driver for fpga IP Wishbone_example -> armadeus/firmware/Wishbone_example/
+Can be use with very simple IP -> armadeus/firmware/bus_led but changing led address
+in led.h :
+#define FPGA_LED 0
+Instead of
+#define FPGA_LED 4
Fabien Marteau <fab...@ar...>
@@ -18,11 +23,7 @@
only LSB will switch led, 1 will switch off led and 0 will
witch on. To read value, just read the file.
- To test read/write testled.c can be used, to compile :
- make test
- then launch the binary :
- >./testled led
-
+
* Sysfs /sys/fpgaled/status
Sysfs is created at /sys/fpgaled/status, to print the led status:
@@ -30,7 +31,7 @@
To switch the status :
>echo 1 > /sys/fpgaled/status
-* interruption
+* interruption (not for ip bus_led)
Led value is toggled on interruption, to use it, apf9328.c has to
be modified with line (buildroot/build_arm/linux-2.6.23.1/arch/arm/mach-imx/apf9328.c) :
@@ -41,3 +42,11 @@
# define FPGA_INT_GPIOA 1
set_irq_type(IRQ_GPIOA(FPGA_INT_GPIOA),IRQF_TRIGGER_RISING);
At the end of the file.
+
+* little test software
+
+ To test read/write testled.c can be used, to compile :
+ make test
+ then launch the binary :
+ >./testled led
+
Deleted: trunk/target/linux/modules/led/TODO
===================================================================
--- trunk/target/linux/modules/led/TODO 2008-03-14 12:54:53 UTC (rev 773)
+++ trunk/target/linux/modules/led/TODO 2008-03-14 13:01:08 UTC (rev 774)
@@ -1 +0,0 @@
- - a proper sysfs entry
Modified: trunk/target/linux/modules/led/led.c
===================================================================
--- trunk/target/linux/modules/led/led.c 2008-03-14 12:54:53 UTC (rev 773)
+++ trunk/target/linux/modules/led/led.c 2008-03-14 13:01:08 UTC (rev 774)
@@ -37,10 +37,10 @@
/* acknoledge irq */
data = 0x0001;
fpga_write(ldev->fpga_virtual_base_address + FPGA_IRQ_ACK,&data,ldev);
- /* read led value */
- fpga_read(ldev->fpga_virtual_base_address,&data,ldev);
- data = ((data&0x0001)==1)?data&0xfffe:data|0x0001;
- fpga_write(ldev->fpga_virtual_base_address,&data,ldev);
+ /* read button value */
+ fpga_read(ldev->fpga_virtual_base_address + FPGA_BUTTON,&data,ldev);
+ data = ((data&0x0001)==1)?0x0001:0x0000;
+ fpga_write(ldev->fpga_virtual_base_address + FPGA_LED,&data,ldev);
up(&ldev->sem);
PDEBUG("time %ldticks\n",jiffies-ldev->previousint);
@@ -90,7 +90,7 @@
return -ERESTARTSYS;
}
- if((ret_size=fpga_read(dev->fpga_virtual_base_address,&data,dev))<0)
+ if((ret_size=fpga_read(dev->fpga_virtual_base_address + FPGA_LED,&data,dev))<0)
goto out;
PDEBUG("data : %d\n",data);
@@ -117,7 +117,7 @@
if(down_interruptible(&ldev->sem))
return -ERESTARTSYS;
- size=fpga_write(ldev->fpga_virtual_base_address,&data,ldev);
+ size=fpga_write(ldev->fpga_virtual_base_address + FPGA_LED,&data,ldev);
up(&ldev->sem);
return size ;
@@ -140,7 +140,7 @@
if(*offp + count >= 1) /* Only one word can be read */
count = 1 - *offp;
- if((retval = fpga_read(ldev->fpga_virtual_base_address,&data,ldev))<0)
+ if((retval = fpga_read(ldev->fpga_virtual_base_address + FPGA_LED,&data,ldev))<0)
goto out;
/* return data for user */
@@ -180,7 +180,7 @@
goto out;
}
- if((retval=fpga_write(ldev->fpga_virtual_base_address,&data,ldev))<0){
+ if((retval=fpga_write(ldev->fpga_virtual_base_address + FPGA_LED,&data,ldev))<0){
goto out;
}
@@ -274,10 +274,18 @@
printk(KERN_ERR "Can't request fpga irq\n");
goto error;
}
+ /* irq ack */
+ data=1;
+ if((result=fpga_write(sdev->fpga_virtual_base_address + FPGA_IRQ_ACK,&data,sdev))<0)
+ goto error;
/* irq unmask */
data=1;
if((result=fpga_write(sdev->fpga_virtual_base_address + FPGA_IRQ_MASK,&data,sdev))<0)
goto error;
+ /* initialize led value */
+ data=1;
+ if((result=fpga_write(sdev->fpga_virtual_base_address + FPGA_LED,&data,sdev))<0)
+ goto error;
sdev->previousint = jiffies;
/* OK module inserted ! */
Modified: trunk/target/linux/modules/led/led.h
===================================================================
--- trunk/target/linux/modules/led/led.h 2008-03-14 12:54:53 UTC (rev 773)
+++ trunk/target/linux/modules/led/led.h 2008-03-14 13:01:08 UTC (rev 774)
@@ -68,7 +68,9 @@
# define PDEBUG(fmt,args...) /* no debbuging message */
#endif
-#define FPGA_IRQ_MASK 4
+#define FPGA_BUTTON 8
+#define FPGA_LED 4
+#define FPGA_IRQ_MASK 0
#define FPGA_IRQ_PEND 2
#define FPGA_IRQ_ACK 2
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <Fa...@us...> - 2008-03-14 12:54:48
|
Revision: 773
http://armadeus.svn.sourceforge.net/armadeus/?rev=773&view=rev
Author: FabM
Date: 2008-03-14 05:54:53 -0700 (Fri, 14 Mar 2008)
Log Message:
-----------
[firmware] Wisbone simple design example
Modified Paths:
--------------
trunk/firmware/bus_led/src/bus_led.ucf
trunk/firmware/bus_led/src/bus_led_top.vhd
trunk/firmware/bus_led/testbench/led_top_tb.vhd
Added Paths:
-----------
trunk/firmware/Wisbone_example/
trunk/firmware/Wisbone_example/Makefile
trunk/firmware/Wisbone_example/README
trunk/firmware/Wisbone_example/src/
trunk/firmware/Wisbone_example/src/Wb_button.vhd
trunk/firmware/Wisbone_example/src/Wb_led.ucf
trunk/firmware/Wisbone_example/src/Wb_led.vhd
trunk/firmware/Wisbone_example/src/Wb_top.vhd
trunk/firmware/Wisbone_example/src/intercon.vhd
trunk/firmware/Wisbone_example/src/wishbone/
trunk/firmware/Wisbone_example/src/wishbone/imx_wrapper.vhd
trunk/firmware/Wisbone_example/src/wishbone/irq_mngr.vhd
trunk/firmware/Wisbone_example/src/wishbone/syscon.vhd
trunk/firmware/Wisbone_example/testbench/
trunk/firmware/Wisbone_example/testbench/Wb_top_tb.vhd
Added: trunk/firmware/Wisbone_example/Makefile
===================================================================
--- trunk/firmware/Wisbone_example/Makefile (rev 0)
+++ trunk/firmware/Wisbone_example/Makefile 2008-03-14 12:54:53 UTC (rev 773)
@@ -0,0 +1,236 @@
+# Makefile for VHDL synthesis and simulation
+# version 1.0
+# Fabien Marteau
+
+# project name
+PROJECT=Wb_top
+# vhdl files
+FILES = src/Wb_top.vhd src/Wb_button.vhd src/intercon.vhd src/wishbone/imx_wrapper.vhd src/wishbone/irq_mngr.vhd src/Wb_led.vhd src/wishbone/syscon.vhd
+# pin configuration
+UCF_FILE = src/Wb_led.ucf
+# Synthesis constraints file
+XCF_FILE =
+# testbench
+SIMTOP = wb_top_tb
+SIMFILES = ../apf_pkg/apf_test_pkg.vhd testbench/Wb_top_tb.vhd
+# Simu break condition
+GHDL_SIM_OPT = --assert-level=error
+#GHDL_SIM_OPT = --stop-time=500ns
+
+# FPGA options
+PART = xc3s200-4-tq144
+
+############################
+# Personnals options
+############################
+
+CAT=../Xtools/catcolor
+BRIEF=../Xtools/brief.py
+
+
+############################
+# Xilinx options
+############################
+BIN = bin
+WORK = work
+
+SYNTH = xst
+NGDBUILD = ngdbuild
+MAP = map
+PAR = par
+TRACE = trce
+BITGEN = bitgen
+
+ifdef $(XCF_FILE)
+XCF = -uc $(XCF_FILE)\n
+endif
+
+##############################
+# GHDL options
+##############################
+
+SIMDIR = simu
+SYNTHFILES = bin/bus_led_ise/netgen/synthesis
+
+GHDL_CMD = ghdl
+GHDL_FLAGS = --ieee=synopsys --warn-no-vital-generic
+#GHDL_FLAGS = --ieee=synopsys -P~/Xilinx92i/coregen/ip/xilinx/primary/com/xilinx/ip/unisim --warn-no-vital-generic
+
+VIEW_CMD = /usr/bin/gtkwave
+
+OBJS_FILES = $(patsubst %.vhd, %.o, $(notdir $(FILES)) )
+OBJS_SIMFILES = $(patsubst %.vhd, %.o, $(notdir $(SIMFILES)) )
+
+#################################
+# Synthesis with xst
+#################################
+
+messages : bit
+ $(BRIEF) $(BIN)/$(PROJECT)
+
+
+bit : $(BIN)/$(PROJECT).ncd trace
+ -$(BITGEN) -intstyle xflow -w \
+ -g DebugBitstream:No \
+ -g Binary:yes \
+ -g CRC:Enable \
+ -g ConfigRate:6 \
+ -g CclkPin:PullUp \
+ -g M0Pin:PullUp \
+ -g M1Pin:PullUp \
+ -g M2Pin:PullUp \
+ -g ProgPin:PullUp \
+ -g DonePin:PullUp \
+ -g TckPin:PullUp \
+ -g TdiPin:PullUp \
+ -g TdoPin:PullUp \
+ -g TmsPin:PullUp \
+ -g UnusedPin:PullDown \
+ -g UserID:0xFFFFFFFF \
+ -g DCMShutdown:Disable \
+ -g DCIUpdateMode:AsRequired \
+ -g StartUpClk:CClk \
+ -g DONE_cycle:4 \
+ -g GTS_cycle:5 \
+ -g GWE_cycle:6 \
+ -g LCK_cycle:NoWait \
+ -g Match_cycle:Auto \
+ -g Security:None \
+ -g DonePipe:No \
+ -g DriveDone:No \
+ $(BIN)/$(PROJECT).ncd > $(BIN)/$(PROJECT).bitlog
+ $(CAT) $(BIN)/$(PROJECT).bitlog
+ -cp $(BIN)/$(PROJECT).bit /tftpboot/
+ -cp $(BIN)/$(PROJECT).bin /tftpboot/
+
+trace: $(BIN)/$(PROJECT).ncd $(BIN)/$(PROJECT).pcf
+ -$(TRACE) -intstyle xflow -e 3 -l 3 -s 4 -xml $(BIN)/$(PROJECT) $(BIN)/$(PROJECT).ncd -o $(BIN)/$(PROJECT).twr $(BIN)/$(PROJECT).pcf
+ $(CAT) $(BIN)/$(PROJECT).tracelog
+
+$(BIN)/$(PROJECT).ncd : par
+
+par : $(BIN)/$(PROJECT)_map.ncd $(BIN)/$(PROJECT).pcf
+ - sh -c 'pid=$$$$; $(PAR) -w -intstyle xflow -ol std -t 1 $(BIN)/$(PROJECT)_map.ncd $(BIN)/$(PROJECT).ncd $(BIN)/$(PROJECT).pcf | (sed "/^PAR done/q";kill $$pid)' > $(BIN)/$(PROJECT).parlog
+ $(CAT) $(BIN)/$(PROJECT).parlog
+ - killall -9 par
+
+$(BIN)/$(PROJECT).pcf $(BIN)/$(PROJECT)_map.ncd : map
+
+map : $(BIN)/$(PROJECT).ngd
+ - sh -c 'pid=$$$$ ; $(MAP) -intstyle xflow -p $(PART) -cm area -pr b -k 4 -c 100 -o $(BIN)/$(PROJECT)_map.ncd $(BIN)/$(PROJECT).ngd $(BIN)/$(PROJECT).pcf | (sed "/^See MAP report file/q" ; kill $$pid ) ' > $(BIN)/$(PROJECT).maplog
+ $(CAT) $(BIN)/$(PROJECT).maplog
+ - killall -9 map
+
+$(BIN)/$(PROJECT).ngd : ngdbuild
+
+ngdbuild : $(BIN)/$(PROJECT).ngr $(BIN)/$(PROJECT).ngc $(BIN)/$(PROJECT).lso
+ -$(NGDBUILD) -intstyle xflow -dd _ngo -nt timestamp -p $(PART) $(BIN)/$(PROJECT).ngc $(BIN)/$(PROJECT).ngd -uc $(UCF_FILE) > $(BIN)/$(PROJECT).ngdlog
+ $(CAT) $(BIN)/$(PROJECT).ngdlog
+
+$(BIN)/$(PROJECT).ngc $(BIN)/$(PROJECT).ngr $(BIN)/$(PROJECT).lso : synthesis
+
+synthesis : $(BIN)/$(PROJECT).prj $(BIN)/$(PROJECT).xst
+ $(SYNTH) -ifn $(BIN)/$(PROJECT).xst -ofn $(BIN)/$(PROJECT).log \
+ | sed "s/^ERROR/[01\;31mERROR[00m/"\
+ | sed "s/^WARNING/[01\;33mWARNING[00m/"\
+ | sed "s/^INFO/[01\;32mINFO[0m/"
+
+$(BIN)/$(PROJECT).xst $(BIN)/$(PROJECT).prj :
+ @mkdir -p $(BIN)
+ @touch $(BIN)/$(PROJECT);
+ @for f in $(FILES); do \
+ echo vhdl $(WORK) \"$$f\" >> $(BIN)/$(PROJECT).prj;\
+ done
+ @echo work > $(BIN)/$(PROJECT).lso
+ @mkdir -p ./bin/xst/projnav.tmp
+ @echo " \
+ set -tmpdir "./bin/xst/projnav.tmp" \n\
+ set -xsthdpdir "./bin/xst" \n\
+ run \n\
+ -ifn $(BIN)/$(PROJECT).prj \n\
+ -ifmt mixed \n\
+ -ofn $(BIN)/$(PROJECT) \n\
+ -ofmt NGC \n\
+ -p $(PART) \n\
+ -top $(PROJECT) \n\
+ -opt_mode Speed \n\
+ -opt_level 1 \n\
+ $(XCF)\
+ -iuc NO \n\
+ -lso $(BIN)/$(PROJECT).lso \n\
+ -keep_hierarchy NO \n\
+ -rtlview Yes \n\
+ -glob_opt AllClockNets \n\
+ -read_cores YES \n\
+ -write_timing_constraints NO \n\
+ -cross_clock_analysis NO \n\
+ -hierarchy_separator / \n\
+ -bus_delimiter <> \n\
+ -case maintain \n\
+ -slice_utilization_ratio 100 \n\
+ -bram_utilization_ratio 100 \n\
+ -verilog2001 YES \n\
+ -fsm_extract YES -fsm_encoding Auto \n\
+ -safe_implementation No \n\
+ -fsm_style lut \n\
+ -ram_extract Yes \n\
+ -ram_style Auto \n\
+ -rom_extract Yes \n\
+ -mux_style Auto \n\
+ -decoder_extract YES \n\
+ -priority_extract YES \n\
+ -shreg_extract YES \n\
+ -shift_extract YES \n\
+ -xor_collapse YES \n\
+ -rom_style Auto \n\
+ -auto_bram_packing NO \n\
+ -mux_extract YES \n\
+ -resource_sharing YES \n\
+ -async_to_sync NO \n\
+ -mult_style auto \n\
+ -iobuf YES \n\
+ -max_fanout 500 \n\
+ -bufg 8 \n\
+ -register_duplication YES \n\
+ -register_balancing No \n\
+ -slice_packing YES \n\
+ -optimize_primitives NO \n\
+ -use_clock_enable Yes \n\
+ -use_sync_set Yes \n\
+ -use_sync_reset Yes \n\
+ -iob auto \n\
+ -equivalent_register_removal YES \n\
+ -slice_utilization_ratio_maxmargin 5\n\
+ " >> $(BIN)/$(PROJECT).xst
+
+clean : ghdl-clean
+ -rm -rf $(BIN)
+ -rm -rf _ngo
+ -rm xilinx_device_details.xml
+
+########################
+# Simulation with GHDL
+########################
+
+ghdl-compil :
+ mkdir -p simu
+ $(GHDL_CMD) -i $(GHDL_FLAGS) --workdir=simu --work=work $(SIMFILES) $(FILES)
+ $(GHDL_CMD) -m $(GHDL_FLAGS) --workdir=simu --work=work $(SIMTOP)
+ @mv $(SIMTOP) simu/$(SIMTOP)
+
+#TODO: make it working !
+ghdl-simsynth :
+ $(GHDL_CMD) -i $(GHDL_FLAGS) --workdir=simu --work=work $(SYNTHFILES) $(SIMFILES)
+ $(GHDL_CMD) -m $(GHDL_FLAGS) --workdir=simu --work=work $(SIMTOP)
+ @mv $(SIMTOP) simu/$(SIMTOP)
+
+ghdl-run :
+ @$(SIMDIR)/$(SIMTOP) $(GHDL_SIM_OPT) --vcdgz=$(SIMDIR)/$(SIMTOP).vcdgz
+
+ghdl-view:
+ gunzip --stdout $(SIMDIR)/$(SIMTOP).vcdgz | $(VIEW_CMD) --vcd
+
+ghdl-clean :
+ $(GHDL_CMD) --clean --workdir=simu
+ -rm -rf simu
+
Added: trunk/firmware/Wisbone_example/README
===================================================================
--- trunk/firmware/Wisbone_example/README (rev 0)
+++ trunk/firmware/Wisbone_example/README 2008-03-14 12:54:53 UTC (rev 773)
@@ -0,0 +1,22 @@
+This project is an exemple for wishbone interface . There are three Wb slaves :
+
+* irq_mngr : this slave joins irq from others wishbone IP and
+ send it to i.mx processor.To manage these irq
+ two registers are available :
+ irq_mask ( addr : 0x0000) : enable irq writing 1
+ irq_pend/irq_ack (addr : 0x0002) : writing 1 acknowledge irq
+ and reading 1 inform that an irq pending.
+ This design use one irq for button push and release.
+
+* Wb_led : a simple led register, one led is branched on register LSB.
+ To switch on led write '0' on led register. Address register
+ is :
+ LED (addr : 0x0004)
+* Wb_button: Simple button register, when button is pressed, register LSB
+ is '0', and when it's release LSB is '1'. On each switching
+ an interuption is send to irq_mngr.
+ button (addr : 0x0008)
+
+see
+http://www.armadeus.com/wiki/index.php?title=FpgaArchitecture#La_composition_du_syst.C3.A8me_Wishbone
+(french) for more information about designing wishbone IP.
Added: trunk/firmware/Wisbone_example/src/Wb_button.vhd
===================================================================
--- trunk/firmware/Wisbone_example/src/Wb_button.vhd (rev 0)
+++ trunk/firmware/Wisbone_example/src/Wb_button.vhd 2008-03-14 12:54:53 UTC (rev 773)
@@ -0,0 +1,87 @@
+---------------------------------------------------------------------------
+-- Company : ARMades Systems
+-- Author(s) : Fabien Marteau <fab...@ar...>
+--
+-- Creation Date : 10/03/2008
+-- File : Wb_button.vhd
+--
+-- Abstract :
+--
+---------------------------------------------------------------------------
+
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.numeric_std.all;
+
+---------------------------------------------------------------------------
+Entity Wb_button is
+---------------------------------------------------------------------------
+ port
+ (
+ -- global signals
+ gls_reset : in std_logic ;
+ gls_clk : in std_logic ;
+ -- Wishbone signals
+-- wbs_writedata : in std_logic_vector( 15 downto 0);
+ wbs_readdata : out std_logic_vector( 15 downto 0);
+ wbs_strobe : in std_logic ;
+ wbs_write : in std_logic ;
+ wbs_ack : out std_logic;
+ -- irq
+ wbs_irq_s : out std_logic ;
+ -- fpga input
+ button : in std_logic
+ );
+end entity;
+
+
+---------------------------------------------------------------------------
+Architecture Wb_button_1 of Wb_button is
+ ---------------------------------------------------------------------------
+ signal button_r : std_logic ;
+ signal reg : std_logic_vector( 15 downto 0);
+begin
+
+ -- connect button
+ cbutton : process(gls_clk,gls_reset)
+ begin
+ if gls_reset = '1' then
+ reg <= (others => '0');
+ elsif rising_edge(gls_clk) then
+ reg <= "000000000000000"&button;
+ end if;
+ end process cbutton;
+
+
+ -- rise interruption
+ pbutton : process(gls_clk,gls_reset)
+ begin
+ if gls_reset = '1' then
+ wbs_irq_s <= '0';
+ button_r <= '0';
+ elsif rising_edge(gls_clk) then
+ if button_r /= button then
+ wbs_irq_s <= '1';
+ else
+ wbs_irq_s <= '0';
+ end if;
+ button_r <= button;
+ end if;
+ end process pbutton;
+
+ -- register reading process
+ pread : process(gls_clk,gls_reset)
+ begin
+ if(gls_reset = '1') then
+ wbs_ack <= '0';
+ wbs_readdata <= (others => '0');
+ elsif(falling_edge(gls_clk)) then
+ wbs_ack <= '1';
+ if(wbs_strobe = '1' and wbs_write = '0')then
+ wbs_readdata <= reg;
+ end if;
+ end if;
+ end process pread;
+
+end architecture Wb_button_1;
+
Added: trunk/firmware/Wisbone_example/src/Wb_led.ucf
===================================================================
--- trunk/firmware/Wisbone_example/src/Wb_led.ucf (rev 0)
+++ trunk/firmware/Wisbone_example/src/Wb_led.ucf 2008-03-14 12:54:53 UTC (rev 773)
@@ -0,0 +1,58 @@
+# Clock at 96MHz
+NET "clk" LOC = "P55" | IOSTANDARD = LVCMOS33 ;
+NET "clk" TNM_NET = "clk";
+TIMESPEC "TS_clk" = PERIOD "clk" 10.42 ns HIGH 50 %;
+
+# IMX controls
+NET "imx_cs_n" LOC = "P59" | IOSTANDARD = LVCMOS33;
+NET "imx_eb3_n" LOC = "P60" | IOSTANDARD = LVCMOS33;
+NET "imx_oe_n" LOC = "P63" | IOSTANDARD = LVCMOS33;
+
+# IMX interruption
+NET "imx_irq" LOC = "P68" | IOSTANDARD = LVCMOS33;
+
+# IMX address bus
+NET "imx_addr<1>" LOC = "P23" | IOSTANDARD = LVCMOS33;
+NET "imx_addr<2>" LOC = "P24" | IOSTANDARD = LVCMOS33;
+NET "imx_addr<3>" LOC = "P25" | IOSTANDARD = LVCMOS33;
+NET "imx_addr<4>" LOC = "P26" | IOSTANDARD = LVCMOS33;
+NET "imx_addr<5>" LOC = "P27" | IOSTANDARD = LVCMOS33;
+NET "imx_addr<6>" LOC = "P28" | IOSTANDARD = LVCMOS33;
+NET "imx_addr<7>" LOC = "P30" | IOSTANDARD = LVCMOS33;
+NET "imx_addr<8>" LOC = "P31" | IOSTANDARD = LVCMOS33;
+NET "imx_addr<9>" LOC = "P32" | IOSTANDARD = LVCMOS33;
+NET "imx_addr<10>" LOC = "P33" | IOSTANDARD = LVCMOS33;
+NET "imx_addr<11>" LOC = "P35" | IOSTANDARD = LVCMOS33;
+NET "imx_addr<12>" LOC = "P36" | IOSTANDARD = LVCMOS33;
+
+# IMX data bus
+NET "imx_data<0>" LOC = "P1" | IOSTANDARD = LVCMOS33;
+NET "imx_data<1>" LOC = "P2" | IOSTANDARD = LVCMOS33;
+NET "imx_data<2>" LOC = "P4" | IOSTANDARD = LVCMOS33;
+NET "imx_data<3>" LOC = "P5" | IOSTANDARD = LVCMOS33;
+NET "imx_data<4>" LOC = "P6" | IOSTANDARD = LVCMOS33;
+NET "imx_data<5>" LOC = "P7" | IOSTANDARD = LVCMOS33;
+NET "imx_data<6>" LOC = "P8" | IOSTANDARD = LVCMOS33;
+NET "imx_data<7>" LOC = "P10" | IOSTANDARD = LVCMOS33;
+NET "imx_data<8>" LOC = "P11" | IOSTANDARD = LVCMOS33;
+NET "imx_data<9>" LOC = "P12" | IOSTANDARD = LVCMOS33;
+NET "imx_data<10>" LOC = "P13" | IOSTANDARD = LVCMOS33;
+NET "imx_data<11>" LOC = "P14" | IOSTANDARD = LVCMOS33;
+NET "imx_data<12>" LOC = "P15" | IOSTANDARD = LVCMOS33;
+NET "imx_data<13>" LOC = "P17" | IOSTANDARD = LVCMOS33;
+NET "imx_data<14>" LOC = "P18" | IOSTANDARD = LVCMOS33;
+NET "imx_data<15>" LOC = "P20" | IOSTANDARD = LVCMOS33;
+
+###############################################
+# fpga specific
+###############################################
+
+# led output
+NET "LED" LOC = "P116" | IOSTANDARD = LVCMOS33 ;
+# Button input
+NET "button" LOC = "P102" | IOSTANDARD = LVCMOS33 ;
+
+# Test (X10 on devfull) connection
+#NET "imx_data0_test" LOC = "P102" | IOSTANDARD = LVCMOS33 ;
+#NET "imx_addr1_test" LOC = "P97" | IOSTANDARD = LVCMOS33 ;
+
Added: trunk/firmware/Wisbone_example/src/Wb_led.vhd
===================================================================
--- trunk/firmware/Wisbone_example/src/Wb_led.vhd (rev 0)
+++ trunk/firmware/Wisbone_example/src/Wb_led.vhd 2008-03-14 12:54:53 UTC (rev 773)
@@ -0,0 +1,64 @@
+---------------------------------------------------------------------------
+-- Company : ARMadeus Systems
+-- Author(s) : Fabien Marteau
+--
+-- Creation Date : 05/03/2008
+-- File : Wb_led.vhd
+--
+-- Abstract : drive one led with Wishbone bus
+--
+---------------------------------------------------------------------------
+
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.numeric_std.all;
+
+-----------------------------------------------------------------------
+ Entity Wb_led is
+-----------------------------------------------------------------------
+ port
+ (
+ -- Syscon signals
+ gls_reset : in std_logic ;
+ gls_clk : in std_logic ;
+ -- Wishbone signals
+ wbs_writedata : in std_logic_vector( 15 downto 0);
+ wbs_readdata : out std_logic_vector( 15 downto 0);
+ wbs_strobe : in std_logic ;
+ wbs_write : in std_logic ;
+ wbs_ack : out std_logic;
+ -- out signals
+ LED : out std_logic
+ );
+end entity;
+
+
+-----------------------------------------------------------------------
+Architecture Wb_led_1 of Wb_led is
+-----------------------------------------------------------------------
+ signal reg : std_logic_vector( 15 downto 0);
+begin
+
+-- connect led
+LED <= reg(0);
+
+-- manage register
+reg_bloc : process(gls_clk,gls_reset)
+begin
+ if gls_reset = '1' then
+ reg <= (others => '0');
+ elsif rising_edge(gls_clk) then
+ if ((wbs_strobe and wbs_write) = '1' ) then
+ reg <= wbs_writedata;
+ else
+ reg <= reg;
+ end if;
+ end if;
+
+end process reg_bloc;
+
+wbs_ack <= wbs_strobe;
+wbs_readdata <= reg;
+
+end architecture Wb_led_1;
+
Added: trunk/firmware/Wisbone_example/src/Wb_top.vhd
===================================================================
--- trunk/firmware/Wisbone_example/src/Wb_top.vhd (rev 0)
+++ trunk/firmware/Wisbone_example/src/Wb_top.vhd 2008-03-14 12:54:53 UTC (rev 773)
@@ -0,0 +1,371 @@
+---------------------------------------------------------------------------
+-- Company : ARMadeus Systems
+-- Author(s) : Fabien Marteau (fab...@ar...)
+--
+-- Creation Date : 05/03/2008
+-- File : Wb_top.vhd
+--
+-- Abstract :
+--
+---------------------------------------------------------------------------
+
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.numeric_std.all;
+
+---------------------------------------------------------------------------
+Entity Wb_top is
+---------------------------------------------------------------------------
+port
+(
+ -- imx EIM connexion
+ imx_addr : in std_logic_vector( 12 downto 0);
+ imx_data : inout std_logic_vector( 15 downto 0);
+ imx_cs_n : in std_logic;
+ imx_eb3_n : in std_logic ;
+ imx_oe_n : in std_logic ;
+ -- clock
+ clk : in std_logic ;
+ -- fpga specific
+ LED : out std_logic;
+ button : in std_logic ;
+
+ -- irq
+ imx_irq : out std_logic
+
+);
+end entity;
+
+
+---------------------------------------------------------------------------
+Architecture Wb_top_1 of Wb_top is
+---------------------------------------------------------------------------
+ component imx_wrapper
+ port (
+ -- i.MX Signals
+ imx_address : in std_logic_vector(12 downto 1);
+ imx_data : inout std_logic_vector(15 downto 0);
+ imx_cs_n : in std_logic;
+ imx_oe_n : in std_logic;
+ imx_eb3_n : in std_logic;
+
+ -- Global Signals
+ gls_reset : in std_logic;
+ gls_clk : in std_logic;
+
+ -- Wishbone interface signals
+ wbm_address : out std_logic_vector(12 downto 0); -- Address bus
+ wbm_readdata : in std_logic_vector(15 downto 0); -- Data bus for read access
+ wbm_writedata : out std_logic_vector(15 downto 0); -- Data bus for write access
+ wbm_strobe : out std_logic; -- Data Strobe
+ wbm_write : out std_logic; -- Write access
+ wbm_sel : out std_logic_vector(1 downto 0); -- select LSB or/and MSB byte
+ wbm_ack : in std_logic ;
+ wbm_cycle : out std_logic -- bus cycle in progress
+ );
+ end component;
+
+ component syscon
+ port(
+ -- external signals
+ ext_clk : in std_logic ;
+ ext_reset : in std_logic ;
+ --internal signals
+ gls_clk : out std_logic ;
+ gls_reset : out std_logic
+ );
+ end component;
+
+ component intercon
+ port (
+ -- imx wishbone master connexion
+ gls_reset_m1 : out std_logic ;
+ gls_clk_m1 : out std_logic ;
+
+ wbm_address_m1 : in std_logic_vector( 12 downto 0);
+ wbm_readdata_m1 : out std_logic_vector( 15 downto 0);
+ wbm_writedata_m1 : in std_logic_vector( 15 downto 0);
+ wbm_strobe_m1 : in std_logic ;
+ wbm_write_m1 : in std_logic ;
+ wbm_sel_m1 : in std_logic_vector( 1 downto 0);
+ wbm_ack_m1 : out std_logic ;
+ wbm_cycle_m1 : in std_logic ;
+
+ -- led wishbone slave connexion
+ gls_reset_s1 : out std_logic ;
+ gls_clk_s1 : out std_logic ;
+ wbs_writedata_s1 : out std_logic_vector( 15 downto 0);
+ wbs_readdata_s1 : in std_logic_vector( 15 downto 0);
+ wbs_strobe_s1 : out std_logic ;
+ wbs_write_s1 : out std_logic ;
+ wbs_ack_s1 : in std_logic ;
+
+ -- button slave connexion
+ gls_reset_s2 : out std_logic ;
+ gls_clk_s2 : out std_logic ;
+-- wbs_writedata_s2 : out std_logic_vector( 15 downto 0);
+ wbs_readdata_s2 : in std_logic_vector( 15 downto 0);
+ wbs_strobe_s2 : out std_logic ;
+ wbs_write_s2 : out std_logic ;
+ wbs_ack_s2 : in std_logic ;
+
+ wbs_irq_s2 : in std_logic ;
+
+ -- irq slave connexion
+ gls_reset_s3 : out std_logic ;
+ gls_clk_s3 : out std_logic ;
+ wbs_address_s3 : out std_logic ;
+ wbs_writedata_s3 : out std_logic_vector( 15 downto 0);
+ wbs_readdata_s3 : in std_logic_vector( 15 downto 0);
+ wbs_strobe_s3 : out std_logic ;
+ wbs_write_s3 : out std_logic ;
+ wbs_ack_s3 : in std_logic ;
+ wbs_irq_s3 : out std_logic;
+
+ -- syscon connection
+ gls_reset_sys : in std_logic ;
+ gls_clk_sys : in std_logic
+ );
+ end component intercon;
+
+ component Wb_led
+ port(
+ -- Syscon signals
+ gls_reset : in std_logic ;
+ gls_clk : in std_logic ;
+ -- Wishbone signals
+ wbs_writedata : in std_logic_vector( 15 downto 0);
+ wbs_readdata : out std_logic_vector( 15 downto 0);
+ wbs_strobe : in std_logic ;
+ wbs_write : in std_logic ;
+ wbs_ack : out std_logic;
+ -- out signals
+ LED : out std_logic
+ );
+ end component;
+
+ component Wb_button
+ port (
+ -- global signals
+ gls_reset : in std_logic ;
+ gls_clk : in std_logic ;
+-- wbs_writedata : in std_logic_vector( 15 downto 0);
+ wbs_readdata : out std_logic_vector( 15 downto 0);
+ wbs_strobe : in std_logic ;
+ wbs_write : in std_logic ;
+ wbs_ack : out std_logic ;
+
+ -- irq
+ wbs_irq_s : out std_logic ;
+
+ -- fpga input
+ button : in std_logic
+ );
+ end component;
+
+ component irq_mngr
+ generic
+ (
+ irq_count : integer := 1;
+ irq_level : std_logic := '1'
+ );
+ port (
+ -- Global Signals
+ gls_clk : in std_logic;
+ gls_reset : in std_logic;
+
+ -- Wishbone interface signals
+ wbs_s1_address : in std_logic; -- Address bus
+ wbs_s1_readdata : out std_logic_vector(15 downto 0); -- Data bus for read access
+ wbs_s1_writedata : in std_logic_vector(15 downto 0); -- Data bus for write access
+ wbs_s1_ack : out std_logic; -- Access acknowledge
+ wbs_s1_strobe : in std_logic; -- Data Strobe
+ wbs_s1_write : in std_logic; -- Write access
+ -- irq from other IP
+ wbs_s1_irq : in std_logic_vector(irq_count-1 downto 0);
+
+ -- Component external signals
+ gls_irq : out std_logic -- IRQ request
+ );
+ end component irq_mngr;
+
+ -- irq_mngr connection signal
+ signal gls_clk_s3 : std_logic ;
+ signal gls_reset_s3 : std_logic ;
+ signal wbs_address_s3 : std_logic ;
+ signal wbs_readdata_s3 : std_logic_vector(15 downto 0);
+ signal wbs_writedata_s3: std_logic_vector( 15 downto 0);
+ signal wbs_ack_s3 : std_logic ;
+ signal wbs_strobe_s3 : std_logic ;
+ signal wbs_write_s3 : std_logic ;
+ signal wbs_irq_s3 : std_logic;
+
+ -- button connection signal
+ signal gls_reset_s2 : std_logic ;
+ signal gls_clk_s2 : std_logic ;
+ signal wbs_readdata_s2 : std_logic_vector(15 downto 0);
+--signal wbs_writedata_s2: std_logic_vector( 15 downto 0);
+ signal wbs_ack_s2 : std_logic ;
+ signal wbs_strobe_s2 : std_logic ;
+ signal wbs_write_s2 : std_logic ;
+
+ signal wbs_irq_s2 : std_logic ;
+
+ -- imx_wrapper connection signals
+ signal gls_reset_m1 : std_logic ;
+ Signal gls_clk_m1 : std_logic ;
+ signal wbm_address_m1 : std_logic_vector( 12 downto 0);
+ Signal wbm_readdata_m1 : std_logic_vector( 15 downto 0);
+ Signal wbm_writedata_m1 : std_logic_vector( 15 downto 0);
+ Signal wbm_strobe_m1 : std_logic ;
+ signal wbm_write_m1 : std_logic ;
+ Signal wbm_sel_m1 : std_logic_vector( 1 downto 0);
+ signal wbm_ack_m1 : std_logic ;
+ Signal wbm_cycle_m1 : std_logic ;
+
+ -- led connection signals
+ Signal gls_reset_s1 : std_logic ;
+ Signal gls_clk_s1 : std_logic ;
+ Signal wbs_writedata_s1 : std_logic_vector( 15 downto 0);
+ Signal wbs_readdata_s1 : std_logic_vector( 15 downto 0);
+ Signal wbs_strobe_s1 : std_logic ;
+ Signal wbs_write_s1 : std_logic ;
+ Signal wbs_ack_s1 : std_logic ;
+
+ -- syscon connection signals
+ Signal gls_reset_sys : std_logic ;
+ Signal gls_clk_sys : std_logic ;
+
+
+begin
+
+ connect_imx_wrapper : imx_wrapper
+ port map (
+ imx_address => imx_addr(12 downto 1),
+ imx_data => imx_data,
+ imx_cs_n => imx_cs_n,
+ imx_oe_n => imx_oe_n,
+ imx_eb3_n => imx_eb3_n,
+
+ gls_reset => gls_reset_m1,
+ gls_clk => gls_clk_m1,
+
+ wbm_address => wbm_address_m1,
+ wbm_readdata => wbm_readdata_m1,
+ wbm_writedata => wbm_writedata_m1,
+ wbm_strobe => wbm_strobe_m1,
+ wbm_write => wbm_write_m1,
+ wbm_sel => wbm_sel_m1,
+ wbm_ack => wbm_ack_m1,
+ wbm_cycle => wbm_cycle_m1
+ );
+
+ connect_Wb_led : Wb_led
+ port map (
+ gls_reset => gls_reset_s1,
+ gls_clk => gls_clk_s1,
+
+ wbs_writedata => wbs_writedata_s1,
+ wbs_readdata => wbs_readdata_s1,
+ wbs_strobe => wbs_strobe_s1,
+ wbs_write => wbs_write_s1,
+ wbs_ack => wbs_ack_s1,
+
+ LED => LED
+ );
+
+ connect_syscon : syscon
+ port map (
+ ext_clk => clk,
+ ext_reset => '0',
+
+ gls_clk => gls_clk_sys,
+ gls_reset => gls_reset_sys
+ );
+
+ connect_intercon : intercon
+ port map (
+ -- imx_wrapper connexion
+ gls_reset_m1 => gls_reset_m1,
+ gls_clk_m1 => gls_clk_m1,
+ wbm_address_m1 => wbm_address_m1,
+ wbm_readdata_m1 => wbm_readdata_m1,
+ wbm_writedata_m1 => wbm_writedata_m1,
+ wbm_strobe_m1 => wbm_strobe_m1,
+ wbm_write_m1 => wbm_write_m1,
+ wbm_sel_m1 => wbm_sel_m1,
+ wbm_ack_m1 => wbm_ack_m1,
+ wbm_cycle_m1 => wbm_cycle_m1,
+ -- led connexion
+ gls_reset_s1 => gls_reset_s1,
+ gls_clk_s1 => gls_clk_s1,
+ wbs_writedata_s1 => wbs_writedata_s1,
+ wbs_readdata_s1 => wbs_readdata_s1,
+ wbs_strobe_s1 => wbs_strobe_s1,
+ wbs_write_s1 => wbs_write_s1,
+ wbs_ack_s1 => wbs_ack_s1,
+ -- button connexion
+ gls_reset_s2 => gls_reset_s2,
+ gls_clk_s2 => gls_clk_s2,
+-- wbs_writedata_s2 => wbs_writedata_s2,
+ wbs_readdata_s2 => wbs_readdata_s2,
+ wbs_strobe_s2 => wbs_strobe_s2,
+ wbs_write_s2 => wbs_write_s2,
+ wbs_ack_s2 => wbs_ack_s2,
+
+ wbs_irq_s2 => wbs_irq_s2,
+ -- irq connexion
+ gls_reset_s3 => gls_reset_s3,
+ gls_clk_s3 => gls_clk_s3,
+ wbs_address_s3 => wbs_address_s3,
+ wbs_writedata_s3 => wbs_writedata_s3,
+ wbs_readdata_s3 => wbs_readdata_s3,
+ wbs_strobe_s3 => wbs_strobe_s3,
+ wbs_write_s3 => wbs_write_s3,
+ wbs_ack_s3 => wbs_ack_s3,
+ wbs_irq_s3 => wbs_irq_s3,
+ -- global signals
+ gls_reset_sys => gls_reset_sys,
+ gls_clk_sys => gls_clk_sys
+ );
+
+ connect_button : Wb_button
+ port map (
+ -- global signals
+ gls_reset => gls_reset_s2,
+ gls_clk => gls_clk_s2,
+-- wbs_writedata => wbs_writedata_s2,
+ wbs_readdata => wbs_readdata_s2,
+ wbs_strobe => wbs_strobe_s2,
+ wbs_write => wbs_write_s2,
+ wbs_ack => wbs_ack_s2,
+
+ -- irq
+ wbs_irq_s => wbs_irq_s2,
+
+ -- fpga input
+ button => button
+ );
+
+ connect_irq_mngr : irq_mngr
+ port map (
+ -- Global Signals
+ gls_clk => gls_clk_s3,
+ gls_reset => gls_reset_s3,
+
+ -- Wishbone interface signals
+ wbs_s1_address => wbs_address_s3, -- Address bus
+ wbs_s1_readdata => wbs_readdata_s3, -- Data bus for read access
+ wbs_s1_writedata => wbs_writedata_s3, -- Data bus for write access
+ wbs_s1_ack => wbs_ack_s3, -- Access acknowledge
+ wbs_s1_strobe => wbs_strobe_s3, -- Data Strobe
+ wbs_s1_write => wbs_write_s3, -- Write access
+ -- irq from other IP
+ wbs_s1_irq(0) => wbs_irq_s3,
+
+ -- Component external signals
+ gls_irq => imx_irq
+ );
+
+end architecture Wb_top_1;
+
Added: trunk/firmware/Wisbone_example/src/intercon.vhd
===================================================================
--- trunk/firmware/Wisbone_example/src/intercon.vhd (rev 0)
+++ trunk/firmware/Wisbone_example/src/intercon.vhd 2008-03-14 12:54:53 UTC (rev 773)
@@ -0,0 +1,150 @@
+---------------------------------------------------------------------------
+-- Company : ARMadeus Systems
+-- Author(s) : Fabien Marteau
+--
+-- Creation Date : 05/03/2008
+-- File : intercon.vhd
+--
+-- Abstract : connect master wishbone device with
+-- slave(s) wishbone device
+--
+---------------------------------------------------------------------------
+
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.numeric_std.all;
+
+---------------------------------------------------------------------------
+Entity intercon is
+---------------------------------------------------------------------------
+ port
+ (
+ -- imx wishbone master connexion
+ gls_reset_m1 : out std_logic ;
+ gls_clk_m1 : out std_logic ;
+
+ wbm_address_m1 : in std_logic_vector( 12 downto 0);
+ wbm_readdata_m1 : out std_logic_vector( 15 downto 0);
+ wbm_writedata_m1 : in std_logic_vector( 15 downto 0);
+ wbm_strobe_m1 : in std_logic ;
+ wbm_write_m1 : in std_logic ;
+ wbm_sel_m1 : in std_logic_vector( 1 downto 0);
+ wbm_ack_m1 : out std_logic ;
+ wbm_cycle_m1 : in std_logic ;
+
+ -- led wishbone slave connexion
+ gls_reset_s1 : out std_logic ;
+ gls_clk_s1 : out std_logic ;
+ wbs_writedata_s1 : out std_logic_vector( 15 downto 0);
+ wbs_readdata_s1 : in std_logic_vector( 15 downto 0);
+ wbs_strobe_s1 : out std_logic ;
+ wbs_write_s1 : out std_logic ;
+ wbs_ack_s1 : in std_logic ;
+
+ -- button slave connexion
+ gls_reset_s2 : out std_logic ;
+ gls_clk_s2 : out std_logic ;
+ wbs_readdata_s2 : in std_logic_vector( 15 downto 0);
+ wbs_strobe_s2 : out std_logic ;
+ wbs_write_s2 : out std_logic ;
+ wbs_ack_s2 : in std_logic ;
+
+ wbs_irq_s2 : in std_logic ;
+
+ -- irq slave connexion
+ gls_reset_s3 : out std_logic ;
+ gls_clk_s3 : out std_logic ;
+ wbs_address_s3 : out std_logic ;
+ wbs_writedata_s3 : out std_logic_vector( 15 downto 0);
+ wbs_readdata_s3 : in std_logic_vector( 15 downto 0);
+ wbs_strobe_s3 : out std_logic ;
+ wbs_write_s3 : out std_logic ;
+ wbs_ack_s3 : in std_logic ;
+ wbs_irq_s3 : out std_logic ;
+
+ -- syscon connection
+ gls_reset_sys : in std_logic ;
+ gls_clk_sys : in std_logic
+ );
+end entity;
+
+---------------------------------------------------------------------------
+Architecture intercon_1 of intercon is
+---------------------------------------------------------------------------
+ signal led_cs : std_logic ;
+ signal button_cs : std_logic ;
+ signal irq_cs : std_logic ;
+ signal cs :std_logic_vector( 2 downto 0);
+begin
+
+ -- clock and reset management
+ gls_reset_s1 <= gls_reset_sys;
+ gls_clk_s1 <= gls_clk_sys;
+
+ gls_reset_s2 <= gls_reset_sys;
+ gls_clk_s2 <= gls_clk_sys;
+
+ gls_reset_s3 <= gls_reset_sys;
+ gls_clk_s3 <= gls_clk_sys;
+
+ gls_reset_m1 <= gls_reset_sys;
+ gls_clk_m1 <= gls_clk_sys;
+
+ -----------------------------
+ -- master => slave connexions
+ -----------------------------
+ -- address decode
+ irq_cs <= '1' when wbm_address_m1 = "0000000000000" or wbm_address_m1 = "0000000000010"
+ else '0';
+ led_cs <= '1' when wbm_address_m1 = "0000000000100"
+ else '0';
+ button_cs <= '1' when wbm_address_m1 = "0000000001000"
+ else '0';
+
+ wbs_address_s3 <= wbm_address_m1(1);
+
+ -- control signals
+ -- for led (s1)
+ wbs_writedata_s1 <= wbm_writedata_m1 when (wbm_write_m1 and led_cs)='1'
+ else (others => '0');
+ wbs_strobe_s1 <= (wbm_strobe_m1 and led_cs);
+ wbs_write_s1 <= (wbm_write_m1 and led_cs);
+ -- for button(s2) read only
+ wbs_strobe_s2 <= (wbm_strobe_m1 and button_cs);
+ wbs_write_s2 <= '0';
+
+ -- for irq (s3)
+ wbs_writedata_s3 <= wbm_writedata_m1 when (wbm_write_m1 and irq_cs)='1'
+ else (others => '0');
+ wbs_strobe_s3 <= (wbm_strobe_m1 and irq_cs);
+ wbs_write_s3 <= (wbm_write_m1 and irq_cs);
+
+ -----------------------------
+ -- slave => master connexions
+ -----------------------------
+ cs(0) <= led_cs;
+ cs(1) <= button_cs;
+ cs(2) <= irq_cs;
+
+ with cs select
+ wbm_readdata_m1 <= wbs_readdata_s1 when "001",
+ wbs_readdata_s2 when "010",
+ wbs_readdata_s3 when "100",
+ (others => '0') when others;
+ with cs select
+ wbm_ack_m1 <= wbs_ack_s1 when "001",
+ wbs_ack_s2 when "010",
+ wbs_ack_s3 when "100",
+ '0' when others;
+
+
+ -- irq management
+ wbs_irq_s3 <= wbs_irq_s2;
+
+ -- open connexion
+-- wbm_sel_m1 => open;
+-- wbm_cycle_m1 => open;
+-- wbs_ack_s1 => open;
+
+end architecture intercon_1;
+
Added: trunk/firmware/Wisbone_example/src/wishbone/imx_wrapper.vhd
===================================================================
--- trunk/firmware/Wisbone_example/src/wishbone/imx_wrapper.vhd (rev 0)
+++ trunk/firmware/Wisbone_example/src/wishbone/imx_wrapper.vhd 2008-03-14 12:54:53 UTC (rev 773)
@@ -0,0 +1,96 @@
+-------------------------------------------------------------------------------
+--
+-- File : imx_wrapper.vhd
+-- Related files : (none)
+--
+-- Author(s) : Fabrice Mousset (fab...@la...)
+-- Project : i.MX wrapper to Wishbone bus
+--
+-- Creation Date : 2007/01/19
+--
+-- Description : This is the top file of the IP
+-------------------------------------------------------------------------------
+-- Modifications :
+-----
+-- 2008/03/05
+-- Fabien Marteau (fab...@ar...)
+-- adding comments and changing some signals names
+--
+-------------------------------------------------------------------------------
+
+library IEEE;
+ use IEEE.std_logic_1164.all;
+ use IEEE.numeric_std.all;
+
+-- ----------------------------------------------------------------------------
+ Entity imx_wrapper is
+-- ----------------------------------------------------------------------------
+ port
+ (
+ -- i.MX Signals
+ imx_address : in std_logic_vector(12 downto 1);
+ imx_data : inout std_logic_vector(15 downto 0);
+ imx_cs_n : in std_logic;
+ imx_oe_n : in std_logic;
+ imx_eb3_n : in std_logic;
+
+ -- Global Signals
+ gls_reset : in std_logic;
+ gls_clk : in std_logic;
+
+ -- Wishbone interface signals
+ wbm_address : out std_logic_vector(12 downto 0); -- Address bus
+ wbm_readdata : in std_logic_vector(15 downto 0); -- Data bus for read access
+ wbm_writedata : out std_logic_vector(15 downto 0); -- Data bus for write access
+ wbm_strobe : out std_logic; -- Data Strobe
+ wbm_write : out std_logic; -- Write access
+ wbm_sel : out std_logic_vector(1 downto 0); -- select LSB or/and MSB byte
+ wbm_ack : in std_logic ; -- acknowledge
+ wbm_cycle : out std_logic -- bus cycle in progress
+ );
+ end entity;
+
+-- ----------------------------------------------------------------------------
+ Architecture RTL of imx_wrapper is
+-- ----------------------------------------------------------------------------
+
+signal write : std_logic;
+signal read : std_logic;
+signal sel : std_logic_vector(1 downto 0);
+signal strobe : std_logic;
+signal writedata : std_logic_vector(15 downto 0);
+signal address : std_logic_vector(12 downto 0);
+
+begin
+
+-- ----------------------------------------------------------------------------
+-- External signals synchronization process
+-- ----------------------------------------------------------------------------
+process(gls_clk, gls_reset)
+begin
+ if(gls_reset='1') then
+ write <= '0';
+ read <= '0';
+ sel <= "00";
+ strobe <= '0';
+ writedata <= (others => '0');
+ address <= (others => '0');
+ elsif(rising_edge(gls_clk)) then
+ strobe <= not (imx_cs_n) and not(imx_oe_n and imx_eb3_n);
+ write <= not (imx_cs_n or imx_eb3_n);
+ read <= not (imx_cs_n or imx_oe_n);
+ address <= imx_address & '0';
+ writedata <= imx_data;
+ end if;
+end process;
+
+wbm_address <= address when (strobe = '1') else (others => '0');
+wbm_writedata <= writedata when (write = '1') else (others => '0');
+wbm_strobe <= strobe;
+wbm_write <= write;
+wbm_sel <= strobe & strobe;
+wbm_cycle <= strobe;
+
+imx_data <= wbm_readdata when(read = '1') else (others => 'Z');
+
+end architecture RTL;
Added: trunk/firmware/Wisbone_example/src/wishbone/irq_mngr.vhd
===================================================================
--- trunk/firmware/Wisbone_example/src/wishbone/irq_mngr.vhd (rev 0)
+++ trunk/firmware/Wisbone_example/src/wishbone/irq_mngr.vhd 2008-03-14 12:54:53 UTC (rev 773)
@@ -0,0 +1,142 @@
+-------------------------------------------------------------------------------
+--
+-- File : irq_mnrg.vhd
+-- Related files : (none)
+--
+-- Author(s) : Fabrice Mousset (fab...@la...)
+-- Project : Wishbone Interruption Manager
+--
+-- Creation Date : 2007/01/05
+--
+-- Description : This is the top file of the IP
+-------------------------------------------------------------------------------
+-- Modifications :
+--
+-------------------------------------------------------------------------------
+
+library IEEE;
+ use IEEE.std_logic_1164.all;
+ use IEEE.numeric_std.all;
+
+-- ----------------------------------------------------------------------------
+ Entity irq_mngr is
+-- ----------------------------------------------------------------------------
+ generic
+ (
+ irq_count : integer := 16;
+ irq_level : std_logic := '1'
+ );
+ port
+ (
+ -- Global Signals
+ gls_clk : in std_logic;
+ gls_reset : in std_logic;
+
+ -- Wishbone interface signals
+ wbs_s1_address : in std_logic; -- Address bus
+ wbs_s1_readdata : out std_logic_vector(15 downto 0); -- Data bus for read access
+ wbs_s1_writedata : in std_logic_vector(15 downto 0); -- Data bus for write access
+ wbs_s1_ack : out std_logic; -- Access acknowledge
+ wbs_s1_strobe : in std_logic; -- Data Strobe
+ wbs_s1_write : in std_logic; -- Write access
+ -- irq from other IP
+ wbs_s1_irq : in std_logic_vector(irq_count-1 downto 0);
+
+ -- Component external signals
+ gls_irq : out std_logic -- IRQ request
+ );
+ end entity;
+
+-- ----------------------------------------------------------------------------
+ Architecture RTL of irq_mngr is
+-- ----------------------------------------------------------------------------
+
+signal irq_r : std_logic_vector(irq_count-1 downto 0);
+signal irq_pend : std_logic_vector(irq_count-1 downto 0);
+signal irq_ack : std_logic_vector(irq_count-1 downto 0);
+signal irq_mask : std_logic_vector(irq_count-1 downto 0);
+
+signal readdata : std_logic_vector(15 downto 0);
+
+signal rd_ack : std_logic;
+signal wr_ack : std_logic;
+
+begin
+
+-- ----------------------------------------------------------------------------
+-- External signals synchronization process
+-- ----------------------------------------------------------------------------
+process(gls_clk, gls_reset)
+begin
+ if(gls_reset='1') then
+ irq_r <= (others => '0');
+ elsif(rising_edge(gls_clk)) then
+ irq_r <= wbs_s1_irq;
+ end if;
+end process;
+
+-- ----------------------------------------------------------------------------
+-- Interruption requests latching process
+-- ----------------------------------------------------------------------------
+process(gls_clk, gls_reset)
+begin
+ if(gls_reset='1') then
+ irq_pend <= (others => '0');
+ elsif(rising_edge(gls_clk)) then
+ irq_pend <= ((irq_pend or (irq_r and irq_mask)) and not (irq_ack));
+ end if;
+end process;
+
+-- ----------------------------------------------------------------------------
+-- Register reading process
+-- ----------------------------------------------------------------------------
+process(gls_clk, gls_reset)
+begin
+ if(gls_reset='1') then
+ rd_ack <= '0';
+ readdata <= (others => '0');
+ elsif(falling_edge(gls_clk)) then
+ rd_ack <= '0';
+
+ if(wbs_s1_strobe = '1' and wbs_s1_write = '0') then
+ rd_ack <= '1';
+ if(wbs_s1_address = '0') then
+ readdata(irq_count-1 downto 0) <= irq_mask;
+ else
+ readdata(irq_count-1 downto 0) <= irq_pend;
+ end if;
+ end if;
+ end if;
+end process;
+
+-- ----------------------------------------------------------------------------
+-- Register update process
+-- ----------------------------------------------------------------------------
+process(gls_clk, gls_reset)
+begin
+ if(gls_reset='1') then
+ irq_ack <= (others => '0');
+ wr_ack <= '0';
+ irq_mask <= (others => '0');
+ elsif(falling_edge(gls_clk)) then
+ irq_ack <= (others => '0');
+ wr_ack <= '0';
+
+ if(wbs_s1_strobe = '1' and wbs_s1_write = '1') then
+ wr_ack <= '1';
+ if(wbs_s1_address = '0') then
+ irq_mask <= wbs_s1_writedata(irq_count-1 downto 0);
+ else
+ irq_ack <= wbs_s1_writedata(irq_count-1 downto 0);
+ end if;
+ end if;
+ end if;
+end process;
+
+gls_irq <= irq_level when(unsigned(irq_pend) /= 0 and gls_reset = '0') else
+ not irq_level;
+
+wbs_s1_ack <= rd_ack or wr_ack;
+wbs_s1_readdata <= readdata when (wbs_s1_strobe = '1' and wbs_s1_write = '0') else (others => 'Z');
+
+end architecture RTL;
Added: trunk/firmware/Wisbone_example/src/wishbone/syscon.vhd
===================================================================
--- trunk/firmware/Wisbone_example/src/wishbone/syscon.vhd (rev 0)
+++ trunk/firmware/Wisbone_example/src/wishbone/syscon.vhd 2008-03-14 12:54:53 UTC (rev 773)
@@ -0,0 +1,56 @@
+---------------------------------------------------------------------------
+-- Company : ARMadeus Systems
+-- Author(s) : Fabien Marteau
+--
+-- Creation Date : 05/03/2008
+-- File : syscon.vhd
+--
+-- Abstract :
+--
+---------------------------------------------------------------------------
+
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.numeric_std.all;
+
+---------------------------------------------------------------------------
+Entity syscon is
+---------------------------------------------------------------------------
+port
+(
+ -- external signals
+ ext_clk : in std_logic ;
+ ext_reset : in std_logic ;
+ --internal signals
+ gls_clk : out std_logic ;
+ gls_reset : out std_logic
+);
+end entity;
+
+
+---------------------------------------------------------------------------
+Architecture syscon_1 of syscon is
+---------------------------------------------------------------------------
+
+signal dly: std_logic := '0';
+signal rst: std_logic := '0';
+
+begin
+----------------------------------------------------------------------------
+-- RESET signal generator.
+----------------------------------------------------------------------------
+process(ext_clk)
+begin
+ if(rising_edge(ext_clk)) then
+ dly <= ( not(ext_reset) and dly and not(rst) )
+ or ( not(ext_reset) and not(dly) and rst );
+
+ rst <= ( not(ext_reset) and not(dly) and not(rst) );
+ end if;
+end process;
+
+gls_clk <= ext_clk;
+gls_reset <= rst;
+
+end architecture syscon_1;
+
Added: trunk/firmware/Wisbone_example/testbench/Wb_top_tb.vhd
===================================================================
--- trunk/firmware/Wisbone_example/testbench/Wb_top_tb.vhd (rev 0)
+++ trunk/firmware/Wisbone_example/testbench/Wb_top_tb.vhd 2008-03-14 12:54:53 UTC (rev 773)
@@ -0,0 +1,157 @@
+----------------------------------------------------------------------------------
+-- Company : ARMadeus Systems
+-- Author(s) : Fabien Marteau
+--
+-- Creation Date : 14/02/2008
+-- File : led_top_tb.vhd
+--
+-- Abstract : Testbench for simple design that switch a led with the imx
+--
+----------------------------------------------------------------------------------
+
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.numeric_std.all;
+use ieee.std_logic_arith.all;
+
+--library SIMPRIM;
+--use SIMPRIM.VCOMPONENTS.ALL;
+--use SIMPRIM.VPACKAGE.ALL;
+
+use work.apf_test_pkg.ALL;
+----------------------------------------------------------------------------------
+Entity Wb_top_tb is
+----------------------------------------------------------------------------------
+ end entity Wb_top_tb;
+
+
+----------------------------------------------------------------------------------
+Architecture RTL of Wb_top_tb is
+ ----------------------------------------------------------------------------------
+
+ CONSTANT HALF_PERIODE : time := 5 ns; -- Half clock period
+
+ signal imx_data : std_logic_vector(15 downto 0);
+ signal imx_addr : std_logic_vector (12 downto 0);
+ signal imx_cs_n : std_logic ;
+ signal imx_eb3_n : std_logic ;
+ signal imx_oe_n : std_logic ;
+ signal clk : std_logic ;
+ signal LED : std_logic ;
+ signal imx_irq : std_logic ;
+ signal button : std_logic ;
+
+ component Wb_top
+ port (
+ -- imx EIM connexion
+ imx_addr : in std_logic_vector( 12 downto 0);
+ imx_data : inout std_logic_vector( 15 downto 0);
+ imx_cs_n : in std_logic;
+ imx_eb3_n : in std_logic ;
+ imx_oe_n : in std_logic ;
+ -- clock
+ clk : in std_logic ;
+ -- fpga specific
+ LED : out std_logic;
+ button : in std_logic ;
+ -- irq
+ imx_irq : out std_logic
+ );
+ end component Wb_top;
+begin
+
+ connect_Wb_led : Wb_top
+ port map(imx_data => imx_data,
+ imx_addr => imx_addr,
+ imx_cs_n => imx_cs_n,
+ imx_eb3_n => imx_eb3_n,
+ imx_oe_n => imx_oe_n,
+ clk => clk,
+ LED => LED,
+ button => button,
+ imx_irq => imx_irq);
+
+ -- test read/write
+ stimulus : process
+ variable value : std_logic_vector (15 downto 0);
+ begin
+ imx_oe_n <= '1';
+ imx_eb3_n <= '1';
+ imx_cs_n <= '1';
+ imx_addr <= (others => 'Z');
+ imx_data <= (others => 'Z');
+ button <= '0';
+
+ wait for HALF_PERIODE*10;
+
+ -- reset irq_pend
+ imx_write(x"0002",x"0000",
+ clk,imx_cs_n,imx_oe_n,
+ imx_eb3_n,imx_addr(12 downto 1),imx_data);
+ -- write on irq_mask
+ imx_write(x"0004",x"ffff",
+ clk,imx_cs_n,imx_oe_n,
+ imx_eb3_n,imx_addr(12 downto 1),imx_data);
+ -- read led value
+ imx_read(x"0000",value,
+ clk,imx_cs_n,imx_oe_n,
+ imx_eb3_n,imx_addr(12 downto 1),imx_data);
+ assert value(0) = '0' report "Wrong led value" severity error;
+
+ -- push button
+ button <= '1';
+ wait for HALF_PERIODE*20;
+ assert imx_irq = '1' report "IRQ not raised" severity error;
+ -- read button value
+ imx_read(x"0008",value,
+ clk,imx_cs_n,imx_oe_n,
+ imx_eb3_n,imx_addr(12 downto 1),imx_data);
+ assert value(0) = '1' report "Failed to read button" severity error;
+
+ -- Read irq pending
+ imx_read(x"0002",value,
+ clk,imx_cs_n,imx_oe_n,
+ imx_eb3_n,imx_addr(12 downto 1),imx_data);
+ assert value(0) = '1' report "IRQ pending error" severity error;
+ -- Acknowledge irq
+ imx_write(x"0002",x"ffff",
+ clk,imx_cs_n,imx_oe_n,
+ imx_eb3_n,imx_addr(12 downto 1),imx_data);
+ imx_read(x"0002",value,
+ clk,imx_cs_n,imx_oe_n,
+ imx_eb3_n,imx_addr(12 downto 1),imx_data);
+ assert value(0) = '0' report "Acknowledge error" severity error;
+
+ -- release button
+ button <= '0';
+ wait for HALF_PERIODE*20;
+ -- Acknowledge irq
+ imx_write(x"0002",x"ffff",
+ clk,imx_cs_n,imx_oe_n,
+ imx_eb3_n,imx_addr(12 downto 1),imx_data);
+ imx_read(x"0002",value,
+ clk,imx_cs_n,imx_oe_n,
+ imx_eb3_n,imx_addr(12 downto 1),imx_data);
+ --read button value
+ imx_read(x"0008",value,
+ clk,imx_cs_n,imx_oe_n,
+ imx_eb3_n,imx_addr(12 downto 1),imx_data);
+ assert value(0) = '0' report "Low read button error" severity error;
+
+
+
+
+ wait for HALF_PERIODE*10;
+ assert false report "End of test" severity error;
+ end process stimulus;
+
+ -- 100MHz Clock
+ Clockp : process
+ begin
+ clk <= '1';
+ wait for HALF_PERIODE;
+ clk <= '0';
+ wait for HALF_PERIODE;
+ end process Clockp;
+
+end architecture RTL;
Modified: trunk/firmware/bus_led/src/bus_led.ucf
===================================================================
--- trunk/firmware/bus_led/src/bus_led.ucf 2008-03-13 12:26:00 UTC (rev 772)
+++ trunk/firmware/bus_led/src/bus_led.ucf 2008-03-14 12:54:53 UTC (rev 773)
@@ -3,12 +3,13 @@
NET "clk" TNM_NET = "clk";
TIMESPEC "TS_clk" = PERIOD "clk" 10.42 ns HIGH 50 %;
+# IMX control
NET "imx_cs_n" LOC = "P59" | IOSTANDARD = LVCMOS33;
NET "imx_eb3_n" LOC = "P60" | IOSTANDARD = LVCMOS33;
NET "imx_oe_n" LOC = "P63" | IOSTANDARD = LVCMOS33;
-NET "LED" LOC = "P116" | IOSTANDARD = LVCMOS33 ;
+# IMX address bus
NET "imx_addr<1>" LOC = "P23" | IOSTANDARD = LVCMOS33;
NET "imx_addr<2>" LOC = "P24" | IOSTANDARD = LVCMOS33;
NET "imx_addr<3>" LOC = "P25" | IOSTANDARD = LVCMOS33;
@@ -22,7 +23,7 @@
NET "imx_addr<11>" LOC = "P35" | IOSTANDARD = LVCMOS33;
NET "imx_addr<12>" LOC = "P36" | IOSTANDARD = LVCMOS33;
-# IMX connection
+# IMX data bus
NET "imx_data<0>" LOC = "P1" | IOSTANDARD = LVCMOS33;
NET "imx_data<1>" LOC = "P2" | IOSTANDARD = LVCMOS33;
NET "imx_data<2>" LOC = "P4" | IOSTANDARD = LVCMOS33;
@@ -40,6 +41,13 @@
NET "imx_data<14>" LOC = "P18" | IOSTANDARD = LVCMOS33;
NET "imx_data<15>" LOC = "P20" | IOSTANDARD = LVCMOS33;
+###############################################
+# fpga specific
+###############################################
+
+# led output
+NET "LED" LOC = "P116" | IOSTANDARD = LVCMOS33 ;
+
# Test (X10 on devfull) connection
NET "imx_data0_test" LOC = "P102" | IOSTANDARD = LVCMOS33 ;
NET "imx_addr1_test" LOC = "P97" | IOSTANDARD = LVCMOS33 ;
Modified: trunk/firmware/bus_led/src/bus_led_top.vhd
===================================================================
--- trunk/firmware/bus_led/src/bus_led_top.vhd 2008-03-13 12:26:00 UTC (rev 772)
+++ trunk/firmware/bus_led/src/bus_led_top.vhd 2008-03-14 12:54:53 UTC (rev 773)
@@ -27,15 +27,15 @@
entity bus_led_top
is
port (
- imx_data : inout std_logic_vector(15 downto 0);
- imx_data0_test : out std_logic;
- imx_addr1_test : out std_logic ;
- imx_addr : in std_logic_vector(12 downto 1);
- imx_cs_n : in std_logic ;
- imx_eb3_n : in std_logic ;
- imx_oe_n : in std_logic ;
- clk : in std_logic ;
- LED : out std_logic);
+ imx_data : inout std_logic_vector(15 downto 0);
+ imx_data0_test : out std_logic;
+ imx_addr1_test : out std_logic ;
+ imx_addr : in std_logic_vector(12 downto 1);
+ imx_cs_n : in std_logic ;
+ imx_eb3_n : in std_logic ;
+ imx_oe_n : in std_logic ;
+ clk : in std_logic ;
+ LED : out std_logic);
end entity bus_led_top ;
@@ -43,14 +43,14 @@
of bus_led_top is
component bus_led
port(
- imx_data : inout std_logic_vector(15 downto 0);
- imx_addr : in std_logic_vector(12 downto 1);
- imx_cs_n : in std_logic ;
- imx_eb3_n : in std_logic ;
- imx_oe_n : in std_logic ;
- clk : in std_logic ;
- LED : out std_logic ;
- Rst_n : in std_logic);
+ imx_data : inout std_logic_vector(15 downto 0);
+ imx_addr : in std_logic_vector(12 downto 1);
+ imx_cs_n : in std_logic ;
+ imx_eb3_n : in std_logic ;
+ imx_oe_n : in std_logic ;
+ clk : in std_logic ;
+ LED : out std_logic ;
+ Rst_n : in std_logic);
end component;
-- Asynchrone reset active low
@@ -63,14 +63,14 @@
connect_bus_led : bus_led
port map(
- imx_data => imx_data,
- imx_addr => imx_addr,
- imx_cs_n => imx_cs_n,
- imx_eb3_n => imx_eb3_n,
- imx_oe_n => imx_oe_n,
- clk => clk,
- LED => LED,
- Rst_n => Rst_n);
+ imx_data => imx_data,
+ imx_addr => imx_addr,
+ imx_cs_n => imx_cs_n,
+ imx_eb3_n => imx_eb3_n,
+ imx_oe_n => imx_oe_n,
+ clk => clk,
+ LED => LED,
+ Rst_n => Rst_n);
end architecture ;
Modified: trunk/firmware/bus_led/testbench/led_top_tb.vhd
===================================================================
--- trunk/firmware/bus_led/testbench/led_top_tb.vhd 2008-03-13 12:26:00 UTC (rev 772)
+++ trunk/firmware/bus_led/testbench/led_top_tb.vhd 2008-03-14 12:54:53 UTC (rev 773)
@@ -13,8 +13,13 @@
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.numeric_std.all;
use ieee.std_logic_arith.all;
+
+library SIMPRIM;
+use SIMPRIM.VCOMPONENTS.ALL;
+use SIMPRIM.VPACKAGE.ALL;
+
use work.apf_test_pkg.ALL;
-
+use simprim.all;
----------------------------------------------------------------------------------
Entity led_top_tb is
----------------------------------------------------------------------------------
@@ -50,8 +55,21 @@
clk : in std_logic ;
LED : out std_logic );
end component bus_led_top;
+begin
-begin
+ connect_bus_led : bus_led_top
+ port map(
+ imx_data => imx_data,
+ imx_data0_test => imx_data0_test,
+ imx_addr1_test => imx_addr1_test,
+ imx_addr => imx_addr,
+ imx_cs_n => imx_cs_n,
+ imx_eb3_n => imx_eb3_n,
+ imx_oe_n => imx_oe_n,
+ clk => clk,
+ LED => LED);
+
+
-- Test stimulus
stimulus : process
variable value : std_logic_vector (15 downto 0);
@@ -72,6 +90,7 @@
clk,imx_cs_n,imx_oe_n,
imx_eb3_n,imx_addr(12 downto 1),imx_data);
assert value = conv_std_logic_vector(i,16) report "error reading imx_data" severity error;
+ assert false report "faux" severity error;
end loop;
assert false report "End of test" severity error;
@@ -86,19 +105,4 @@
wait for HALF_PERIODE;
end process Clockp;
- connect_bus_led : bus_led_top
- port map(
- imx_data => imx_data,
- imx_data0_test => imx_data0_test,
- imx_addr1_test => imx_addr1_test,
- imx_addr => imx_addr,
- imx_cs_n => imx_cs_n,
- imx_eb3_n => imx_eb3_n,
- imx_oe_n => imx_oe_n,
- clk => clk,
- LED => LED);
-
--- Rst_n => Rst_n);
-
end architecture RTL;
-
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <th...@us...> - 2008-03-13 12:25:57
|
Revision: 772
http://armadeus.svn.sourceforge.net/armadeus/?rev=772&view=rev
Author: thom25
Date: 2008-03-13 05:26:00 -0700 (Thu, 13 Mar 2008)
Log Message:
-----------
[LINUX] adjust usb host first read timing
Modified Paths:
--------------
trunk/target/linux/modules/isp1761/apf9328-isp1761.c
Modified: trunk/target/linux/modules/isp1761/apf9328-isp1761.c
===================================================================
--- trunk/target/linux/modules/isp1761/apf9328-isp1761.c 2008-03-12 14:24:07 UTC (rev 771)
+++ trunk/target/linux/modules/isp1761/apf9328-isp1761.c 2008-03-13 12:26:00 UTC (rev 772)
@@ -33,9 +33,9 @@
#define CFG_CS3_WRITE_PROTECT 0 /* 1 : write access prohibited */
#define CFG_CS3_EB_SIGNAL_CONTROL_WRITE 1 /* 1 when EB is used as write signal*/
-#define CFG_CS3_READ_CYC_LGTH 95 /* ns */
+#define CFG_CS3_READ_CYC_LGTH 105 /* ns */
#define CFG_CS3_OE_ASSERT_DLY 35 /* ns */
-#define CFG_CS3_OE_NEG_DLY 30 /* ns */
+#define CFG_CS3_OE_NEG_DLY 35 /* ns */
#define CFG_CS3_CS_NEG_LGTH 30 /* max 30 ns CS HIGH to CS LOW at 100MHz*/
#define CFG_CS3_XTRA_DEAD_CYC 0 /* ns from CS HIGH to tristate bus */
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <Fa...@us...> - 2008-03-12 14:24:58
|
Revision: 771
http://armadeus.svn.sourceforge.net/armadeus/?rev=771&view=rev
Author: FabM
Date: 2008-03-12 07:24:07 -0700 (Wed, 12 Mar 2008)
Log Message:
-----------
[target] Led driver with /dev, /sys and interruption
Modified Paths:
--------------
trunk/target/linux/modules/led/README
trunk/target/linux/modules/led/led.c
trunk/target/linux/modules/led/led.h
Modified: trunk/target/linux/modules/led/README
===================================================================
--- trunk/target/linux/modules/led/README 2008-03-12 11:57:53 UTC (rev 770)
+++ trunk/target/linux/modules/led/README 2008-03-12 14:24:07 UTC (rev 771)
@@ -1,26 +1,43 @@
Driver for fpga IP bus_led -> armadeus/firmware/led/
Fabien Marteau <fab...@ar...>
-To use it configure fpga with bus_led then insert led.ko with insmod :
->insmod led.ko
-Watch dmesg :
-LED: MAJOR: 253 MINOR: 0
-Led module inserted
+* Character device
-Then make a character file with wright major and minor number :
->mknod led c 253 0
+ To use it configure fpga with bus_led then insert led.ko with insmod :
+ >insmod led.ko
+
+ Watch dmesg :
+ LED: MAJOR: 253 MINOR: 0
+ Led module inserted
+
+ Then make a character file with wright major and minor number :
+ >mknod led c 253 0
+
+ Then led can be switched on/off writing a character in node file,
+ only LSB will switch led, 1 will switch off led and 0 will
+ witch on. To read value, just read the file.
-Then led can be switched on/off writing a character in node file,
-only LSB will switch led, 1 will switch off led and 0 will
-witch on. To read value, just read the file.
+ To test read/write testled.c can be used, to compile :
+ make test
+ then launch the binary :
+ >./testled led
+
+* Sysfs /sys/fpgaled/status
-To test read/write testled.c can be used, to compile :
-make test
-then launch the binary :
->./testled led
+ Sysfs is created at /sys/fpgaled/status, to print the led status:
+ >cat /sys/fpgaled/status
+ To switch the status :
+ >echo 1 > /sys/fpgaled/status
+
+* interruption
-Sysfs is created at /sys/fpgaled/status, to print the led status:
->cat /sys/fpgaled/status
-To switch the status :
->echo 1 > /sys/fpgaled/status
+ Led value is toggled on interruption, to use it, apf9328.c has to
+ be modified with line (buildroot/build_arm/linux-2.6.23.1/arch/arm/mach-imx/apf9328.c) :
+
+#ifdef CONFIG_CAN_MCP251X
+ set_irq_type( IRQ_GPIOC(CAN_MPC251X_INT_GPIOC), IRQF_TRIGGER_FALLING );
+#endif // CONFIG_CAN_MCP251X
+# define FPGA_INT_GPIOA 1
+ set_irq_type(IRQ_GPIOA(FPGA_INT_GPIOA),IRQF_TRIGGER_RISING);
+ At the end of the file.
Modified: trunk/target/linux/modules/led/led.c
===================================================================
--- trunk/target/linux/modules/led/led.c 2008-03-12 11:57:53 UTC (rev 770)
+++ trunk/target/linux/modules/led/led.c 2008-03-12 14:24:07 UTC (rev 771)
@@ -1,10 +1,55 @@
-/* Driver for bus_led fpga IP
+/* led.c
+ * Driver for bus_led fpga IP
* Fabien Marteau <fab...@ar...>
- * 4 march 2008
*/
#include "led.h"
+/*********************************
+ * simple fpga read/write
+ *********************************/
+
+static ssize_t fpga_read(void * addr,u16 *data,struct led_dev *dev){
+ *data = ioread16(addr);/* read the led value */
+ // PDEBUG( "read : value read : %x\n",*data);
+ return 2;
+}
+
+static ssize_t fpga_write(void * addr,u16 *data,struct led_dev *dev){
+ ssize_t retval;
+
+ iowrite16(*data,addr);/* write the led value */
+ retval = 2;
+ return retval;
+}
+
+/**********************************
+ * irq management
+ * ********************************/
+
+static irqreturn_t fpga_interrupt(int irq,void *dev_id,struct pt_regs *reg){
+ struct led_dev *ldev = dev_id;
+ u16 data;
+
+ if(down_trylock(&ldev->sem))
+ return IRQ_HANDLED;
+
+ /* acknoledge irq */
+ data = 0x0001;
+ fpga_write(ldev->fpga_virtual_base_address + FPGA_IRQ_ACK,&data,ldev);
+ /* read led value */
+ fpga_read(ldev->fpga_virtual_base_address,&data,ldev);
+ data = ((data&0x0001)==1)?data&0xfffe:data|0x0001;
+ fpga_write(ldev->fpga_virtual_base_address,&data,ldev);
+
+ up(&ldev->sem);
+ PDEBUG("time %ldticks\n",jiffies-ldev->previousint);
+ ldev->previousint = jiffies;
+ return IRQ_HANDLED;
+}
+
+
+
/* *********************************
* Sysfs operations
* *********************************/
@@ -36,27 +81,23 @@
static ssize_t led_show_status(struct kobject *kobj,struct attribute *attr,char *buf){
ssize_t ret_size = 0;
struct led_dev *dev;
- void * virt_addr;
u16 data;
dev = container_of(kobj,struct led_dev,kobj);
- if(down_interruptible(&dev->sem)) /* take mutex */
+ if(down_interruptible(&dev->sem)){ /* take mutex */
+ printk(KERN_WARNING "led_show_status:can't take mutex\n");
return -ERESTARTSYS;
-
- virt_addr = ioremap(IMX_CS1_PHYS,1);/* translate hardware address to virtual */
- if(virt_addr==NULL){
- printk(KERN_WARNING "ioremap error\n");
- return -EFAULT;
}
- data = ioread16(virt_addr);/* read the led value */
- PDEBUG( "show : value read : %x\n",data);
- iounmap(virt_addr);
+ if((ret_size=fpga_read(dev->fpga_virtual_base_address,&data,dev))<0)
+ goto out;
+ PDEBUG("data : %d\n",data);
if(data&0x0001)ret_size = (ssize_t)sprintf(buf,"1\n");
else ret_size = (ssize_t)sprintf(buf,"0\n");
+out:
up(&dev->sem);
return ret_size;
}
@@ -64,8 +105,6 @@
static ssize_t led_store_status(struct kobject *kobj,struct attribute *attr,
const char *buff, size_t size){
struct led_dev *ldev = container_of(kobj,struct led_dev,kobj);
- void * virt_addr;
- ssize_t retval=0;
u16 data;
if(buff[0]=='1')
@@ -78,20 +117,10 @@
if(down_interruptible(&ldev->sem))
return -ERESTARTSYS;
- virt_addr = ioremap(IMX_CS1_PHYS,1);/* translate hardware address to virtual */
- if(virt_addr==NULL){
- printk(KERN_WARNING "write : ioremap error\n");
- retval = -EFAULT;
- goto out;
- }
- iowrite16(data,virt_addr);/* write the led value */
- iounmap(virt_addr);
- PDEBUG( "write : Value wrote : %x\n",data);
+ size=fpga_write(ldev->fpga_virtual_base_address,&data,ldev);
up(&ldev->sem);
return size ;
-out:
- return retval;
}
/***********************************
@@ -99,7 +128,6 @@
* *********************************/
ssize_t led_read(struct file *fildes, char __user *buff, size_t count, loff_t *offp){
struct led_dev *ldev = fildes->private_data;
- void * virt_addr;
u16 data=0;
ssize_t retval = 0;
@@ -112,19 +140,9 @@
if(*offp + count >= 1) /* Only one word can be read */
count = 1 - *offp;
- virt_addr = ioremap(IMX_CS1_PHYS,1);/* translate hardware address to virtual */
- if(virt_addr==NULL){
- printk(KERN_WARNING "ioremap error\n");
- return -EFAULT;
- }
- PDEBUG("read : Virtual fpga adress : %lx\n",(long int)virt_addr);
- PDEBUG("read : Real fpga adress : %lx\n",(long int)IMX_CS1_PHYS);
- // rmb();
- data = ioread16(virt_addr);/* read the led value */
- PDEBUG( "read : value read : %x\n",data);
+ if((retval = fpga_read(ldev->fpga_virtual_base_address,&data,ldev))<0)
+ goto out;
- iounmap(virt_addr);
-
/* return data for user */
if(copy_to_user(buff,&data,2)){
printk(KERN_WARNING "read : copy to user data error\n");
@@ -143,7 +161,6 @@
ssize_t led_write(struct file *fildes, const char __user *buff,size_t count, loff_t *offp){
struct led_dev *ldev = fildes->private_data;
- void * virt_addr;
u16 data=0;
ssize_t retval = 0;
@@ -157,28 +174,20 @@
if(count != 1) /* Only one word can be read */
count = 1;
- virt_addr = ioremap(IMX_CS1_PHYS,1);/* translate hardware address to virtual */
- if(virt_addr==NULL){
- printk(KERN_WARNING "write : ioremap error\n");
- retval = -EFAULT;
- goto out;
- }
- PDEBUG("write : Virtual fpga adress : %lx\n",(long int)virt_addr);
- PDEBUG("write : Real fpga adress : %lx\n",(long int)IMX_CS1_PHYS);
- // rmb();
if(copy_from_user(&data,buff,1)){
printk(KERN_WARNING "write : copy from user error\n");
retval = -EFAULT;
goto out;
}
- PDEBUG( "write : user buff value %d\n",(int)data);
- iowrite16(data,virt_addr);/* write the led value */
- iounmap(virt_addr);
- PDEBUG( "write : Value wrote : %x\n",data);
- retval = 1;
+
+ if((retval=fpga_write(ldev->fpga_virtual_base_address,&data,ldev))<0){
+ goto out;
+ }
+
out:
up(&ldev->sem);
return retval;
+
}
int led_open(struct inode *inode, struct file *filp){
@@ -202,7 +211,8 @@
static int __init led_init(void){
int result; /* error return */
- int led_major,led_minor;
+ int led_major,led_minor;
+ u16 data;
led_major = 253;
led_minor = 0;
@@ -221,7 +231,7 @@
init_MUTEX(&sdev->sem);
/* Get the major and minor device numbers */
- PDEBUG("Get the major and minor device numbers");
+ PDEBUG("Get the major and minor device numbers\n");
if(led_major){
devno = MKDEV(led_major,led_minor);
result = register_chrdev_region(devno, N_DEV,"led");
@@ -240,21 +250,37 @@
sdev->cdev.owner = THIS_MODULE;
/* Add the device to the kernel, connecting cdev to major/minor number */
- PDEBUG(" Add the device to the kernel, connecting cdev to major/minor number \n");
+ PDEBUG("Add the device to the kernel, connecting cdev to major/minor number \n");
result = cdev_add(&sdev->cdev,devno,1);
if(result < 0)printk(KERN_WARNING "LED: can't add cdev\n");
/* Requested I/O memory */
PDEBUG(" Requested I/O memory \n");
- mem = request_mem_region(LED_BASE_ADDR,LED_LENGTH,"led");
+ mem = request_mem_region(IMX_CS1_PHYS,IMX_CS1_SIZE,"led");
if(mem == NULL)
printk(KERN_ERR "LED: Error memory allocation\n");
+ if((sdev->fpga_virtual_base_address = ioremap(IMX_CS1_PHYS,IMX_CS1_SIZE))==NULL){
+ printk(KERN_ERR "ioremap error\n");
+ goto error;
+ }
/* initialyzing sysfs */
- PDEBUG(" initialyzing sysfs");
+ PDEBUG(" initialyzing sysfs\n");
if(unlikely(result = init_sysinterface(sdev)))
goto error;
+ /* irq registering */
+ if(request_irq(IRQ_GPIOA(1),(irq_handler_t)fpga_interrupt,IRQF_SAMPLE_RANDOM,"fpga",sdev)<0){
+ printk(KERN_ERR "Can't request fpga irq\n");
+ goto error;
+ }
+ /* irq unmask */
+ data=1;
+ if((result=fpga_write(sdev->fpga_virtual_base_address + FPGA_IRQ_MASK,&data,sdev))<0)
+ goto error;
+
+ sdev->previousint = jiffies;
+ /* OK module inserted ! */
printk(KERN_INFO "Led module insered\n");
return 0;
@@ -269,6 +295,10 @@
}
static void free_all(void){
+
+ /* free irq*/
+ free_irq(IRQ_GPIOA(1),sdev);
+
/* unregister kobj */
kobject_unregister(&sdev->kobj);
@@ -279,7 +309,7 @@
kfree(sdev);
/* Release I/O memories */
- release_mem_region(LED_BASE_ADDR,LED_LENGTH);
+ release_mem_region(IMX_CS1_PHYS,IMX_CS1_SIZE);
/* free major and minor number */
unregister_chrdev_region(devno,N_DEV);
Modified: trunk/target/linux/modules/led/led.h
===================================================================
--- trunk/target/linux/modules/led/led.h 2008-03-12 11:57:53 UTC (rev 770)
+++ trunk/target/linux/modules/led/led.h 2008-03-12 14:24:07 UTC (rev 771)
@@ -1,6 +1,12 @@
-/* Driver for bus_led IP
+/* led.h
+ * Driver for bus_led IP
* Fabien Marteau <fab...@ar...>
- * 4 march 2008
+ * ----------------
+ * 12 march 2008
+ * switching led on interruption
+ * ----------------
+ * 4 march 2008
+ * initial version
*/
@@ -37,6 +43,13 @@
/* hardware addresses */
#include <asm/hardware.h>
+
+/* interruptions */
+#include <linux/interrupt.h>
+#include <asm/irq.h>
+
+/* measure time */
+#include <linux/jiffies.h>
#endif
/* for debugging messages*/
@@ -55,16 +68,21 @@
# define PDEBUG(fmt,args...) /* no debbuging message */
#endif
+#define FPGA_IRQ_MASK 4
+#define FPGA_IRQ_PEND 2
+#define FPGA_IRQ_ACK 2
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Fabien Marteau <fab...@ar...> - ARMadeus Systems");
MODULE_DESCRIPTION("Led device driver");
-/* cdev struct */
+/* main device structure */
struct led_dev{
struct cdev cdev; /* Char device structure */
struct semaphore sem; /* Mutex */
- struct kobject kobj;
+ struct kobject kobj; /* kobject for sysfs entry */
+ void * fpga_virtual_base_address; /* fpga register base address*/
+ unsigned long previousint; /* last interruption time */
};
static void kobj_release(struct kobject *);
@@ -121,5 +139,9 @@
.sysfs_ops = &led_status_fs_ops,
};
+static irqreturn_t fpga_interrupt(int irq,void *stuff,struct pt_regs *reg);
static void free_all(void);
+
+static ssize_t fpga_read(void * addr, u16 *data , struct led_dev *dev);
+static ssize_t fpga_write(void * addr, u16 *data, struct led_dev *dev);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <th...@us...> - 2008-03-12 11:57:51
|
Revision: 770
http://armadeus.svn.sourceforge.net/armadeus/?rev=770&view=rev
Author: thom25
Date: 2008-03-12 04:57:53 -0700 (Wed, 12 Mar 2008)
Log Message:
-----------
[TOOLCHAIN] fix bug 1904713: Unable to generate a JFFS2 image after a make
clean
Modified Paths:
--------------
trunk/patches/001-buildroot.diff
Modified: trunk/patches/001-buildroot.diff
===================================================================
--- trunk/patches/001-buildroot.diff 2008-03-12 10:41:33 UTC (rev 769)
+++ trunk/patches/001-buildroot.diff 2008-03-12 11:57:53 UTC (rev 770)
@@ -8,3 +8,14 @@
# This must be last
source "target/generic/Config.in"
+--- buildrootref/Makefile 2007-10-27 09:15:37.000000000 +0200
++++ buildroot/Makefile 2008-03-11 12:17:43.000000000 +0100
+@@ -328,7 +328,7 @@ _source-check:
+ #
+ #############################################################
+ clean: $(TARGETS_CLEAN)
+- rm -rf $(STAGING_DIR) $(TARGET_DIR) $(IMAGE)
++ rm -rf $(STAGING_DIR) $(TARGET_DIR) $(IMAGE) $(PROJECT_BUILD_DIR)/.root
+
+ dirclean: $(TARGETS_DIRCLEAN)
+ rm -rf $(STAGING_DIR) $(TARGET_DIR) $(IMAGE)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <Fa...@us...> - 2008-03-12 10:41:27
|
Revision: 769
http://armadeus.svn.sourceforge.net/armadeus/?rev=769&view=rev
Author: FabM
Date: 2008-03-12 03:41:33 -0700 (Wed, 12 Mar 2008)
Log Message:
-----------
[target] Makefile and read correction
Modified Paths:
--------------
trunk/target/linux/debug/fpgaregs/Makefile
Modified: trunk/target/linux/debug/fpgaregs/Makefile
===================================================================
--- trunk/target/linux/debug/fpgaregs/Makefile 2008-03-12 10:17:13 UTC (rev 768)
+++ trunk/target/linux/debug/fpgaregs/Makefile 2008-03-12 10:41:33 UTC (rev 769)
@@ -1,8 +1,9 @@
+CC=../../../buildroot/build_arm/staging_dir/bin/arm-linux-gcc
all: fpgaregs
-imxregs: fpgaregs.c
- arm-linux-gcc fpgaregs.c -o $@
+fpgaregs: fpgaregs.c
+ $(CC) -Wall fpgaregs.c -o $@
clean:
rm -f *.o
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <Fa...@us...> - 2008-03-12 10:17:08
|
Revision: 768
http://armadeus.svn.sourceforge.net/armadeus/?rev=768&view=rev
Author: FabM
Date: 2008-03-12 03:17:13 -0700 (Wed, 12 Mar 2008)
Log Message:
-----------
Immonde ^M supprim?\195?\169s
Modified Paths:
--------------
trunk/target/linux/debug/fpgaregs/fpgaregs.c
Modified: trunk/target/linux/debug/fpgaregs/fpgaregs.c
===================================================================
--- trunk/target/linux/debug/fpgaregs/fpgaregs.c 2008-03-07 18:07:11 UTC (rev 767)
+++ trunk/target/linux/debug/fpgaregs/fpgaregs.c 2008-03-12 10:17:13 UTC (rev 768)
@@ -1,12 +1,12 @@
-/*
- * fpgaregs.h - Tool to display and modify fpga registers from Linux's userspace
- *
- * Author/Maintainer: --- armadeus -----
- * Derivated from pxaregs (c) Copyright 2002 by M&N Logistik-L�ungen Online GmbH
- *
- * This tool is placed under the GPL.
- *
-*/
+/*
+ * fpgaregs.h - Tool to display and modify fpga registers from Linux's userspace
+ *
+ * Author/Maintainer: --- armadeus -----
+ * Derivated from pxaregs (c) Copyright 2002 by M&N Logistik-L�ungen Online GmbH
+ *
+ * This tool is placed under the GPL.
+ *
+*/
#include <stdio.h>
#include <unistd.h>
@@ -23,15 +23,15 @@
// fd for /dev/mem
static int fd = -1;
-typedef unsigned short u16;
-typedef unsigned int u32;
+typedef unsigned short u16;
+typedef unsigned int u32;
-#define FPGA_BASE_ADDR 0x12000000
-// Size of mmapping:
-#define MAP_SIZE 4096
-#define MAP_MASK ( MAP_SIZE - 1 )
-
+#define FPGA_BASE_ADDR 0x12000000
+// Size of mmapping:
+#define MAP_SIZE 4096
+#define MAP_MASK ( MAP_SIZE - 1 )
+
// Get value of the register at the given address
static u16 getmem(u32 addr)
{
@@ -58,9 +58,9 @@
}
regaddr = map + (addr & MAP_MASK);
- val = *(u32*) regaddr;
+ val = *(u32*) regaddr;
munmap(0,MAP_SIZE);
- printf("read 0x%04x at 0x%08x\n", val, addr);
+ printf("read 0x%04x at 0x%08x\n", val, addr);
return val;
}
@@ -68,7 +68,7 @@
// Modify register value at given address
static void putmem(u32 addr, u32 val)
{
- void *map=0;
+ void *map=0;
void *regaddr=0;
static int fd = -1;
@@ -92,32 +92,32 @@
}
regaddr = map + (addr & MAP_MASK);
- // printf("Mapped addr: 0x%04x\n", regaddr);
+ // printf("Mapped addr: 0x%04x\n", regaddr);
*(u32*) regaddr = val;
munmap(0,MAP_SIZE);
}
-
-u16 toInt(char * string)
-{
- char temp;
- u16 result = 0;
-
- while( *string )
- {
- temp = *string;
- if( (temp>='0') && (temp<='9') )
- temp = temp - '0';
- else if( (temp>='a') && (temp<='f') )
- temp = temp -'a' + 10;
-
- result = (result<<4) + temp;
- string++;
- }
- return result;
-}
-
-
+
+u16 toInt(char * string)
+{
+ char temp;
+ u16 result = 0;
+
+ while( *string )
+ {
+ temp = *string;
+ if( (temp>='0') && (temp<='9') )
+ temp = temp - '0';
+ else if( (temp>='a') && (temp<='f') )
+ temp = temp -'a' + 10;
+
+ result = (result<<4) + temp;
+ string++;
+ }
+ return result;
+}
+
+
/////////////////////////////////////////////////////////////////////////////////////
// MAIN
//
@@ -125,22 +125,22 @@
{
// Dump the content of the provided register
if (argc == 2)
- {
+ {
getmem(toInt(argv[1])+FPGA_BASE_ADDR);
return 0;
}
// Put value to given register
if (argc == 3)
- {
+ {
putmem( toInt(argv[1])+FPGA_BASE_ADDR, toInt(argv[2]) );
return 0;
}
-
+
// In all other cases, print Usage
- printf("Usage: fpgareg addr [value]\n"
- "addr: address in fpga (max 2ffe)\n"
- "value: value to write (16bit max ffff). Option \n");
+ printf("Usage: fpgareg addr [value]\n"
+ "addr: address in fpga (max 2ffe)\n"
+ "value: value to write (16bit max ffff). Option \n");
return 1;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <Fa...@us...> - 2008-03-07 18:07:14
|
Revision: 767
http://armadeus.svn.sourceforge.net/armadeus/?rev=767&view=rev
Author: FabM
Date: 2008-03-07 10:07:11 -0800 (Fri, 07 Mar 2008)
Log Message:
-----------
[target]Driver led upgraded with sysfs at /sys/fpgaled/
Modified Paths:
--------------
trunk/target/linux/modules/led/Makefile
trunk/target/linux/modules/led/README
trunk/target/linux/modules/led/led.c
trunk/target/linux/modules/led/led.h
Added Paths:
-----------
trunk/target/linux/modules/led/testled.c
Modified: trunk/target/linux/modules/led/Makefile
===================================================================
--- trunk/target/linux/modules/led/Makefile 2008-03-04 09:11:14 UTC (rev 766)
+++ trunk/target/linux/modules/led/Makefile 2008-03-07 18:07:11 UTC (rev 767)
@@ -24,6 +24,11 @@
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
cp led.ko /tftpboot/
+test:
+ ~/armadeus/buildroot/build_arm/staging_dir/bin/arm-linux-gcc testled.c -o testled
+ chmod 755 testled
+ cp testled /tftpboot/
+
clean:
rm -f *.*o \
rm -f Module.symvers
Modified: trunk/target/linux/modules/led/README
===================================================================
--- trunk/target/linux/modules/led/README 2008-03-04 09:11:14 UTC (rev 766)
+++ trunk/target/linux/modules/led/README 2008-03-07 18:07:11 UTC (rev 767)
@@ -4,13 +4,23 @@
To use it configure fpga with bus_led then insert led.ko with insmod :
>insmod led.ko
-watch dmesg :
+Watch dmesg :
LED: MAJOR: 253 MINOR: 0
-Led module insered
+Led module inserted
-then make a character file with wright major and minor number :
+Then make a character file with wright major and minor number :
>mknod led c 253 0
-Then led can be switched on/off writing a character in nod file,
+Then led can be switched on/off writing a character in node file,
only LSB will switch led, 1 will switch off led and 0 will
witch on. To read value, just read the file.
+
+To test read/write testled.c can be used, to compile :
+make test
+then launch the binary :
+>./testled led
+
+Sysfs is created at /sys/fpgaled/status, to print the led status:
+>cat /sys/fpgaled/status
+To switch the status :
+>echo 1 > /sys/fpgaled/status
Modified: trunk/target/linux/modules/led/led.c
===================================================================
--- trunk/target/linux/modules/led/led.c 2008-03-04 09:11:14 UTC (rev 766)
+++ trunk/target/linux/modules/led/led.c 2008-03-07 18:07:11 UTC (rev 767)
@@ -1,17 +1,109 @@
-/* Driver for bus_led IP
+/* Driver for bus_led fpga IP
* Fabien Marteau <fab...@ar...>
* 4 march 2008
*/
#include "led.h"
+/* *********************************
+ * Sysfs operations
+ * *********************************/
+
+static void kobj_release(struct kobject *kobj){
+ PDEBUG("led kobject released\n");
+}
+
+static int init_sysinterface(struct led_dev *ldev){
+ int ret = 0;
+
+ /* initializing kobject to 0 */
+ memset(&ldev->kobj,0,sizeof(struct kobject));
+ /* set kobject name */
+ if(unlikely(ret = kobject_set_name(&ldev->kobj,"fpgaled")))
+ goto out;
+ /* register */
+ if(unlikely(ret=kobject_register(&ldev->kobj)))
+ goto out;
+ /* register the kobj_type */
+ ldev->kobj.ktype = &kobjtype;
+ /* add status attribute */
+ if(unlikely(ret=sysfs_create_file(&ldev->kobj,&led_status_attr)));
+
+out:
+ return ret;
+}
+
+static ssize_t led_show_status(struct kobject *kobj,struct attribute *attr,char *buf){
+ ssize_t ret_size = 0;
+ struct led_dev *dev;
+ void * virt_addr;
+ u16 data;
+
+ dev = container_of(kobj,struct led_dev,kobj);
+
+ if(down_interruptible(&dev->sem)) /* take mutex */
+ return -ERESTARTSYS;
+
+ virt_addr = ioremap(IMX_CS1_PHYS,1);/* translate hardware address to virtual */
+ if(virt_addr==NULL){
+ printk(KERN_WARNING "ioremap error\n");
+ return -EFAULT;
+ }
+ data = ioread16(virt_addr);/* read the led value */
+ PDEBUG( "show : value read : %x\n",data);
+
+ iounmap(virt_addr);
+
+ if(data&0x0001)ret_size = (ssize_t)sprintf(buf,"1\n");
+ else ret_size = (ssize_t)sprintf(buf,"0\n");
+
+ up(&dev->sem);
+ return ret_size;
+}
+
+static ssize_t led_store_status(struct kobject *kobj,struct attribute *attr,
+ const char *buff, size_t size){
+ struct led_dev *ldev = container_of(kobj,struct led_dev,kobj);
+ void * virt_addr;
+ ssize_t retval=0;
+ u16 data;
+
+ if(buff[0]=='1')
+ data=0x0001;
+ else if(buff[0]=='0')
+ data=0x0000;
+ else
+ return size;
+
+ if(down_interruptible(&ldev->sem))
+ return -ERESTARTSYS;
+
+ virt_addr = ioremap(IMX_CS1_PHYS,1);/* translate hardware address to virtual */
+ if(virt_addr==NULL){
+ printk(KERN_WARNING "write : ioremap error\n");
+ retval = -EFAULT;
+ goto out;
+ }
+ iowrite16(data,virt_addr);/* write the led value */
+ iounmap(virt_addr);
+ PDEBUG( "write : Value wrote : %x\n",data);
+
+ up(&ldev->sem);
+ return size ;
+out:
+ return retval;
+}
+
+/***********************************
+ * characters file /dev operations
+ * *********************************/
ssize_t led_read(struct file *fildes, char __user *buff, size_t count, loff_t *offp){
struct led_dev *ldev = fildes->private_data;
void * virt_addr;
u16 data=0;
ssize_t retval = 0;
- PDEBUG( "offset %d, count %d\n",(int)*offp,(int)count);
+ PDEBUG( "read : offset %d, count %d\n",(int)*offp,(int)count);
if(down_interruptible(&ldev->sem)) /* take mutex */
return -ERESTARTSYS;
if(*offp >= 1){ /* offset must be 0 or 1 */
@@ -25,16 +117,17 @@
printk(KERN_WARNING "ioremap error\n");
return -EFAULT;
}
- PDEBUG("Virtual fpga adress : %lx\n",(long int)virt_addr);
- PDEBUG("Real fpga adress : %lx\n",(long int)IMX_CS1_PHYS);
+ PDEBUG("read : Virtual fpga adress : %lx\n",(long int)virt_addr);
+ PDEBUG("read : Real fpga adress : %lx\n",(long int)IMX_CS1_PHYS);
// rmb();
data = ioread16(virt_addr);/* read the led value */
- PDEBUG( "Value read : %x\n",data);
+ PDEBUG( "read : value read : %x\n",data);
iounmap(virt_addr);
/* return data for user */
if(copy_to_user(buff,&data,2)){
+ printk(KERN_WARNING "read : copy to user data error\n");
retval = -EFAULT;
goto out;
}
@@ -44,18 +137,18 @@
out:
up(&ldev->sem); /* free mutex */
- PDEBUG("Return value %d\n",(int)retval);
+ PDEBUG("read : Return value %d\n",(int)retval);
return retval;
}
ssize_t led_write(struct file *fildes, const char __user *buff,size_t count, loff_t *offp){
struct led_dev *ldev = fildes->private_data;
void * virt_addr;
- u16 data;
- ssize_t retval = -ENOMEM;
+ u16 data=0;
+ ssize_t retval = 0;
- PDEBUG("offset %d, count %d\n",(int)*offp,(int)count);
+ PDEBUG("write : offset %d, count %d\n",(int)*offp,(int)count);
if(down_interruptible(&ldev->sem))
return -ERESTARTSYS;
if(*offp != 0){ /* offset must be 0 */
@@ -66,41 +159,46 @@
virt_addr = ioremap(IMX_CS1_PHYS,1);/* translate hardware address to virtual */
if(virt_addr==NULL){
- printk(KERN_WARNING "ioremap error\n");
- return -EFAULT;
+ printk(KERN_WARNING "write : ioremap error\n");
+ retval = -EFAULT;
+ goto out;
}
- PDEBUG("Virtual fpga adress : %lx\n",(long int)virt_addr);
- PDEBUG( "Real fpga adress : %lx\n",(long int)IMX_CS1_PHYS);
+ PDEBUG("write : Virtual fpga adress : %lx\n",(long int)virt_addr);
+ PDEBUG("write : Real fpga adress : %lx\n",(long int)IMX_CS1_PHYS);
// rmb();
- if(copy_from_user(&data,buff,2)){
+ if(copy_from_user(&data,buff,1)){
+ printk(KERN_WARNING "write : copy from user error\n");
retval = -EFAULT;
goto out;
}
- PDEBUG( "user buff value %d\n",(int)data);
- data = data;
- iowrite16(data,virt_addr);/* read the led value */
+ PDEBUG( "write : user buff value %d\n",(int)data);
+ iowrite16(data,virt_addr);/* write the led value */
iounmap(virt_addr);
- PDEBUG( "Value wrote : %x\n",data);
-
-
+ PDEBUG( "write : Value wrote : %x\n",data);
+ retval = 1;
out:
up(&ldev->sem);
return retval;
}
int led_open(struct inode *inode, struct file *filp){
-
/* Allocate and fill any data structure to be put in filp->private_data */
filp->private_data = container_of(inode->i_cdev,struct led_dev, cdev);
PDEBUG( "Led opened\n");
return 0;
}
+/* ******************************
+ * Init and release functions
+ * ******************************/
int led_release(struct inode *inode, struct file *filp){
PDEBUG( "Led released\n");
return 0;
}
+/**********************************
+ * Module management
+ **********************************/
static int __init led_init(void){
int result; /* error return */
@@ -111,6 +209,7 @@
mem = NULL;
/* Allocate a private structure and reference it as driver's data */
+ PDEBUG("Allocate a private structure and reference it as driver s data\n");
sdev = (struct led_dev *)kmalloc(sizeof(struct led_dev),GFP_KERNEL);
if(sdev == NULL){
printk(KERN_WARNING "LED: unable to allocate private structure\n");
@@ -118,9 +217,11 @@
}
/* initiate mutex for accessing led */
+ PDEBUG("initiate mutex for accessing led\n");
init_MUTEX(&sdev->sem);
/* Get the major and minor device numbers */
+ PDEBUG("Get the major and minor device numbers");
if(led_major){
devno = MKDEV(led_major,led_minor);
result = register_chrdev_region(devno, N_DEV,"led");
@@ -134,27 +235,43 @@
}
/* Init the cdev structure */
+ PDEBUG("Init the cdev structure\n");
cdev_init(&sdev->cdev,&led_fops);
sdev->cdev.owner = THIS_MODULE;
/* Add the device to the kernel, connecting cdev to major/minor number */
+ PDEBUG(" Add the device to the kernel, connecting cdev to major/minor number \n");
result = cdev_add(&sdev->cdev,devno,1);
if(result < 0)printk(KERN_WARNING "LED: can't add cdev\n");
-
/* Requested I/O memory */
+ PDEBUG(" Requested I/O memory \n");
mem = request_mem_region(LED_BASE_ADDR,LED_LENGTH,"led");
if(mem == NULL)
printk(KERN_ERR "LED: Error memory allocation\n");
+ /* initialyzing sysfs */
+ PDEBUG(" initialyzing sysfs");
+ if(unlikely(result = init_sysinterface(sdev)))
+ goto error;
-
printk(KERN_INFO "Led module insered\n");
return 0;
+
+error:
+ printk(KERN_ERR "%s: not inserted\n",DRIVER_NAME);
+ free_all();
+ return result;
}
static void __exit led_exit(void){
+ free_all();
+}
+static void free_all(void){
+ /* unregister kobj */
+ kobject_unregister(&sdev->kobj);
+
/* delete the cdev structure */
cdev_del(&sdev->cdev);
Modified: trunk/target/linux/modules/led/led.h
===================================================================
--- trunk/target/linux/modules/led/led.h 2008-03-04 09:11:14 UTC (rev 766)
+++ trunk/target/linux/modules/led/led.h 2008-03-07 18:07:11 UTC (rev 767)
@@ -19,6 +19,8 @@
/* linux device model */
#include <linux/kobject.h>
#include <linux/sysfs.h>
+#include <linux/sysdev.h>
+#include <linux/device.h>
/* for file operations */
#include <linux/fs.h>
@@ -55,15 +57,20 @@
MODULE_LICENSE("GPL");
-MODULE_AUTHOR("Fabien Marteau - ARMadeus Systems");
+MODULE_AUTHOR("Fabien Marteau <fab...@ar...> - ARMadeus Systems");
MODULE_DESCRIPTION("Led device driver");
/* cdev struct */
struct led_dev{
struct cdev cdev; /* Char device structure */
struct semaphore sem; /* Mutex */
+ struct kobject kobj;
};
+static void kobj_release(struct kobject *);
+
+#define DRIVER_NAME "led"
+
/* major and minor number */
#define N_DEV 1
static dev_t devno; /* to store Major and minor numbers */
@@ -74,12 +81,13 @@
#define LED_LENGTH 1
struct resource *mem; /* pointer to fpga led */
+
+/* to read write led register */
ssize_t led_read(struct file *fildes, char __user *buff,
size_t count, loff_t *offp);
ssize_t led_write(struct file *fildes, const char __user *
buff,size_t count, loff_t *offp);
-
int led_open(struct inode *inode, struct file *filp);
int led_release(struct inode *, struct file *filp);
@@ -93,3 +101,25 @@
};
+/* Sysfs operation */
+static struct attribute led_status_attr = {
+ .name = "status",
+ .owner = THIS_MODULE,
+ .mode = 0666,
+};
+static int init_sysinterface(struct led_dev *pdev);
+static ssize_t led_show_status(struct kobject *kobj,struct attribute *attr,char *buf);
+static ssize_t led_store_status(struct kobject *kobj,struct attribute *attr, const char *buff, size_t size);
+
+static struct sysfs_ops led_status_fs_ops = {
+ .show = led_show_status,
+ .store = led_store_status,
+};
+
+struct kobj_type kobjtype = {
+ .release = kobj_release,
+ .sysfs_ops = &led_status_fs_ops,
+};
+
+
+static void free_all(void);
Added: trunk/target/linux/modules/led/testled.c
===================================================================
--- trunk/target/linux/modules/led/testled.c (rev 0)
+++ trunk/target/linux/modules/led/testled.c 2008-03-07 18:07:11 UTC (rev 767)
@@ -0,0 +1,72 @@
+/* a little program to test led driver
+ * Fabien Marteau <fab...@ar...>
+ * 7 march 2008
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+/* file management */
+#include <sys/stat.h>
+#include <fcntl.h>
+
+#include <signal.h>
+
+/* sleep */
+#include <unistd.h>
+
+int fled;
+
+void quit(int pouet){
+ close(fled);
+ exit(0);
+}
+
+int main(int argc, char *argv[])
+{
+ unsigned short i,j;
+
+ /* quit when Ctrl-C pressed */
+ signal(SIGINT, quit);
+
+ j=0;
+
+ printf( "Testing led driver\n" );
+
+ if(argc < 2){
+ perror("invalide arguments number\ntestled <led_filename>\n");
+ exit(EXIT_FAILURE);
+ }
+
+ fled=open(argv[1],O_RDWR);
+ if(fled<0){
+ perror("can't open file\n");
+ exit(EXIT_FAILURE);
+ }
+
+ while(1){
+ i = (i==0)?1:0;
+ printf("Write %d,",i);
+ fflush(stdout);
+ /* write i in led register */
+ if(write(fled, &i, 1)<0){
+ perror("write error\n");
+ exit(EXIT_FAILURE);
+ }
+ if(read(fled,&j,1)<0){
+ perror("read error\n");
+ exit(EXIT_FAILURE);
+ }
+ printf("Read %d\n",j);
+
+ if(lseek(fled,0,SEEK_SET)<0){
+ perror("lseek error\n");
+ exit(EXIT_FAILURE);
+ }
+
+ sleep(1);/* wait one second */
+ }
+
+ close(fled);
+ exit(0);
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <Fa...@us...> - 2008-03-04 09:11:07
|
Revision: 766
http://armadeus.svn.sourceforge.net/armadeus/?rev=766&view=rev
Author: FabM
Date: 2008-03-04 01:11:14 -0800 (Tue, 04 Mar 2008)
Log Message:
-----------
[TARGET] driver for bus_led IP
Added Paths:
-----------
trunk/target/linux/modules/led/
trunk/target/linux/modules/led/Kconfig
trunk/target/linux/modules/led/Makefile
trunk/target/linux/modules/led/README
trunk/target/linux/modules/led/TODO
trunk/target/linux/modules/led/led.c
trunk/target/linux/modules/led/led.h
Added: trunk/target/linux/modules/led/Kconfig
===================================================================
--- trunk/target/linux/modules/led/Kconfig (rev 0)
+++ trunk/target/linux/modules/led/Kconfig 2008-03-04 09:11:14 UTC (rev 766)
@@ -0,0 +1,8 @@
+#
+#
+
+config ARMADEUS_LED_DRIVER
+ tristate "Led driver"
+ default n
+ depends on ARMADEUS_DRIVERS
+ ---help---
Added: trunk/target/linux/modules/led/Makefile
===================================================================
--- trunk/target/linux/modules/led/Makefile (rev 0)
+++ trunk/target/linux/modules/led/Makefile 2008-03-04 09:11:14 UTC (rev 766)
@@ -0,0 +1,32 @@
+#
+# Makefile for the Armadeus bus_led drivers
+#
+
+# Part executed when called from kernel build system:
+ifneq ($(KERNELRELEASE),)
+
+obj-$(CONFIG_ARMADEUS_GPIO_DRIVER) += led.o
+
+led := led.o
+
+# Part executed when called from standard make in this directory:
+# (preferably use Makefile in parent directory)
+else
+
+BASE_DIR="../../../../buildroot/"
+REL=`grep "BR2_PACKAGE_LINUX_VERSION=" $(BASE_DIR).config | \
+ sed "s/BR2_PACKAGE_LINUX_VERSION=\\"//" | sed "s/\\"//"`
+ARMADEUS_KERNEL_DIR=$(BASE_DIR)build_arm/linux-$(REL)
+KDIR := $(ARMADEUS_KERNEL_DIR)
+PWD := $(shell pwd)
+
+default:
+ $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
+ cp led.ko /tftpboot/
+
+clean:
+ rm -f *.*o \
+ rm -f Module.symvers
+
+endif
+
Property changes on: trunk/target/linux/modules/led/Makefile
___________________________________________________________________
Name: svn:executable
+ *
Added: trunk/target/linux/modules/led/README
===================================================================
--- trunk/target/linux/modules/led/README (rev 0)
+++ trunk/target/linux/modules/led/README 2008-03-04 09:11:14 UTC (rev 766)
@@ -0,0 +1,16 @@
+Driver for fpga IP bus_led -> armadeus/firmware/led/
+Fabien Marteau <fab...@ar...>
+
+To use it configure fpga with bus_led then insert led.ko with insmod :
+>insmod led.ko
+
+watch dmesg :
+LED: MAJOR: 253 MINOR: 0
+Led module insered
+
+then make a character file with wright major and minor number :
+>mknod led c 253 0
+
+Then led can be switched on/off writing a character in nod file,
+only LSB will switch led, 1 will switch off led and 0 will
+witch on. To read value, just read the file.
Added: trunk/target/linux/modules/led/TODO
===================================================================
--- trunk/target/linux/modules/led/TODO (rev 0)
+++ trunk/target/linux/modules/led/TODO 2008-03-04 09:11:14 UTC (rev 766)
@@ -0,0 +1 @@
+ - a proper sysfs entry
Added: trunk/target/linux/modules/led/led.c
===================================================================
--- trunk/target/linux/modules/led/led.c (rev 0)
+++ trunk/target/linux/modules/led/led.c 2008-03-04 09:11:14 UTC (rev 766)
@@ -0,0 +1,173 @@
+/* Driver for bus_led IP
+ * Fabien Marteau <fab...@ar...>
+ * 4 march 2008
+ */
+
+#include "led.h"
+
+ssize_t led_read(struct file *fildes, char __user *buff, size_t count, loff_t *offp){
+ struct led_dev *ldev = fildes->private_data;
+ void * virt_addr;
+ u16 data=0;
+ ssize_t retval = 0;
+
+ PDEBUG( "offset %d, count %d\n",(int)*offp,(int)count);
+ if(down_interruptible(&ldev->sem)) /* take mutex */
+ return -ERESTARTSYS;
+ if(*offp >= 1){ /* offset must be 0 or 1 */
+ goto out;
+ }
+ if(*offp + count >= 1) /* Only one word can be read */
+ count = 1 - *offp;
+
+ virt_addr = ioremap(IMX_CS1_PHYS,1);/* translate hardware address to virtual */
+ if(virt_addr==NULL){
+ printk(KERN_WARNING "ioremap error\n");
+ return -EFAULT;
+ }
+ PDEBUG("Virtual fpga adress : %lx\n",(long int)virt_addr);
+ PDEBUG("Real fpga adress : %lx\n",(long int)IMX_CS1_PHYS);
+ // rmb();
+ data = ioread16(virt_addr);/* read the led value */
+ PDEBUG( "Value read : %x\n",data);
+
+ iounmap(virt_addr);
+
+ /* return data for user */
+ if(copy_to_user(buff,&data,2)){
+ retval = -EFAULT;
+ goto out;
+ }
+
+ *offp = *offp + count;
+ retval = 1;
+
+out:
+ up(&ldev->sem); /* free mutex */
+ PDEBUG("Return value %d\n",(int)retval);
+ return retval;
+}
+
+ssize_t led_write(struct file *fildes, const char __user *buff,size_t count, loff_t *offp){
+ struct led_dev *ldev = fildes->private_data;
+ void * virt_addr;
+ u16 data;
+ ssize_t retval = -ENOMEM;
+
+
+ PDEBUG("offset %d, count %d\n",(int)*offp,(int)count);
+ if(down_interruptible(&ldev->sem))
+ return -ERESTARTSYS;
+ if(*offp != 0){ /* offset must be 0 */
+ goto out;
+ }
+ if(count != 1) /* Only one word can be read */
+ count = 1;
+
+ virt_addr = ioremap(IMX_CS1_PHYS,1);/* translate hardware address to virtual */
+ if(virt_addr==NULL){
+ printk(KERN_WARNING "ioremap error\n");
+ return -EFAULT;
+ }
+ PDEBUG("Virtual fpga adress : %lx\n",(long int)virt_addr);
+ PDEBUG( "Real fpga adress : %lx\n",(long int)IMX_CS1_PHYS);
+ // rmb();
+ if(copy_from_user(&data,buff,2)){
+ retval = -EFAULT;
+ goto out;
+ }
+ PDEBUG( "user buff value %d\n",(int)data);
+ data = data;
+ iowrite16(data,virt_addr);/* read the led value */
+ iounmap(virt_addr);
+ PDEBUG( "Value wrote : %x\n",data);
+
+
+out:
+ up(&ldev->sem);
+ return retval;
+}
+
+int led_open(struct inode *inode, struct file *filp){
+
+ /* Allocate and fill any data structure to be put in filp->private_data */
+ filp->private_data = container_of(inode->i_cdev,struct led_dev, cdev);
+ PDEBUG( "Led opened\n");
+ return 0;
+}
+
+int led_release(struct inode *inode, struct file *filp){
+ PDEBUG( "Led released\n");
+ return 0;
+}
+
+static int __init led_init(void){
+
+ int result; /* error return */
+ int led_major,led_minor;
+
+ led_major = 253;
+ led_minor = 0;
+ mem = NULL;
+
+ /* Allocate a private structure and reference it as driver's data */
+ sdev = (struct led_dev *)kmalloc(sizeof(struct led_dev),GFP_KERNEL);
+ if(sdev == NULL){
+ printk(KERN_WARNING "LED: unable to allocate private structure\n");
+ return -ENOMEM;
+ }
+
+ /* initiate mutex for accessing led */
+ init_MUTEX(&sdev->sem);
+
+ /* Get the major and minor device numbers */
+ if(led_major){
+ devno = MKDEV(led_major,led_minor);
+ result = register_chrdev_region(devno, N_DEV,"led");
+ }else{
+ result = alloc_chrdev_region(&devno,led_minor,N_DEV,"led");
+ led_major = MAJOR(devno);
+ }
+ printk(KERN_INFO "LED: MAJOR: %d MINOR: %d\n",MAJOR(devno),MINOR(devno));
+ if(result < 0){
+ printk(KERN_WARNING "LED: can't get major %d\n",led_major);
+ }
+
+ /* Init the cdev structure */
+ cdev_init(&sdev->cdev,&led_fops);
+ sdev->cdev.owner = THIS_MODULE;
+
+ /* Add the device to the kernel, connecting cdev to major/minor number */
+ result = cdev_add(&sdev->cdev,devno,1);
+ if(result < 0)printk(KERN_WARNING "LED: can't add cdev\n");
+
+
+ /* Requested I/O memory */
+ mem = request_mem_region(LED_BASE_ADDR,LED_LENGTH,"led");
+ if(mem == NULL)
+ printk(KERN_ERR "LED: Error memory allocation\n");
+
+
+
+ printk(KERN_INFO "Led module insered\n");
+ return 0;
+}
+
+static void __exit led_exit(void){
+
+ /* delete the cdev structure */
+ cdev_del(&sdev->cdev);
+
+ /* Free the allocated memory */
+ kfree(sdev);
+
+ /* Release I/O memories */
+ release_mem_region(LED_BASE_ADDR,LED_LENGTH);
+
+ /* free major and minor number */
+ unregister_chrdev_region(devno,N_DEV);
+ printk(KERN_INFO "Led module deleted\n");
+}
+
+module_init(led_init);
+module_exit(led_exit);
Added: trunk/target/linux/modules/led/led.h
===================================================================
--- trunk/target/linux/modules/led/led.h (rev 0)
+++ trunk/target/linux/modules/led/led.h 2008-03-04 09:11:14 UTC (rev 766)
@@ -0,0 +1,95 @@
+/* Driver for bus_led IP
+ * Fabien Marteau <fab...@ar...>
+ * 4 march 2008
+ */
+
+
+#ifndef __LED_H__
+#define __LED_H__
+
+#include <linux/version.h>
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20)
+#include <linux/config.h>
+#endif
+
+/* form module/drivers */
+#include <linux/init.h>
+#include <linux/module.h>
+
+/* linux device model */
+#include <linux/kobject.h>
+#include <linux/sysfs.h>
+
+/* for file operations */
+#include <linux/fs.h>
+#include <linux/cdev.h>
+
+/* copy_to_user function */
+#include <asm/uaccess.h>
+
+/* request_mem_region */
+#include <linux/ioport.h>
+
+/* readw() writew() */
+#include <asm/io.h>
+
+/* hardware addresses */
+#include <asm/hardware.h>
+#endif
+
+/* for debugging messages*/
+#define LED_DEBUG
+
+#undef PDEBUG
+#ifdef LED_DEBUG
+# ifdef __KERNEL__
+ /* for kernel spage */
+# define PDEBUG(fmt,args...) printk(KERN_DEBUG "led : " fmt, ##args)
+# else
+ /* for user space */
+# define PDEBUG(fmt,args...) printk(stderr, fmt, ##args)
+# endif
+#else
+# define PDEBUG(fmt,args...) /* no debbuging message */
+#endif
+
+
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("Fabien Marteau - ARMadeus Systems");
+MODULE_DESCRIPTION("Led device driver");
+
+/* cdev struct */
+struct led_dev{
+ struct cdev cdev; /* Char device structure */
+ struct semaphore sem; /* Mutex */
+};
+
+/* major and minor number */
+#define N_DEV 1
+static dev_t devno; /* to store Major and minor numbers */
+struct led_dev *sdev;
+
+/* Fpga base address for led */
+#define LED_BASE_ADDR 0x12000000
+#define LED_LENGTH 1
+struct resource *mem; /* pointer to fpga led */
+
+ssize_t led_read(struct file *fildes, char __user *buff,
+ size_t count, loff_t *offp);
+
+ssize_t led_write(struct file *fildes, const char __user *
+ buff,size_t count, loff_t *offp);
+
+int led_open(struct inode *inode, struct file *filp);
+
+int led_release(struct inode *, struct file *filp);
+
+struct file_operations led_fops = {
+ .owner = THIS_MODULE,
+ .read = led_read,
+ .write = led_write,
+ .open = led_open,
+ .release = led_release,
+};
+
+
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <Fa...@us...> - 2008-03-03 16:12:43
|
Revision: 765
http://armadeus.svn.sourceforge.net/armadeus/?rev=765&view=rev
Author: FabM
Date: 2008-03-03 08:12:47 -0800 (Mon, 03 Mar 2008)
Log Message:
-----------
[FIRMWARE] bus_led synchronized
Modified Paths:
--------------
trunk/firmware/Xtools/brief.py
trunk/firmware/apf_pkg/apf_test_pkg.vhd
trunk/firmware/bus_led/Makefile
trunk/firmware/bus_led/src/bus_led.ucf
trunk/firmware/bus_led/src/bus_led.vhd
trunk/firmware/bus_led/testbench/led_top_tb.vhd
Modified: trunk/firmware/Xtools/brief.py
===================================================================
--- trunk/firmware/Xtools/brief.py 2008-03-03 13:19:41 UTC (rev 764)
+++ trunk/firmware/Xtools/brief.py 2008-03-03 16:12:47 UTC (rev 765)
@@ -43,7 +43,7 @@
file.close()
print '---------------------------------------------------'
print ' trace messages :'
-file = open(sys.argv[1] + ".tracelog",'r')
+file = open(sys.argv[1] + ".twr",'r')
report(file)
file.close()
print '---------------------------------------------------'
Modified: trunk/firmware/apf_pkg/apf_test_pkg.vhd
===================================================================
--- trunk/firmware/apf_pkg/apf_test_pkg.vhd 2008-03-03 13:19:41 UTC (rev 764)
+++ trunk/firmware/apf_pkg/apf_test_pkg.vhd 2008-03-03 16:12:47 UTC (rev 765)
@@ -10,7 +10,7 @@
use ieee.std_logic_1164.all;
package apf_test_pkg is
- -- read and write procedures
+ -- read and write procedures
procedure imx_write(
address : in std_logic_vector (15 downto 0);
value : in std_logic_vector (15 downto 0);
@@ -23,14 +23,14 @@
);
procedure imx_read(
- address : in std_logic_vector (15 downto 0);
- value : out std_logic_vector (15 downto 0);
- signal gls_clk : in std_logic ;
- signal imx_cs_n : out std_logic ;
- signal imx_oe_n : out std_logic ;
- signal imx_eb3_n : out std_logic ;
- signal imx_address : out std_logic_vector (12 downto 1);
- signal imx_data : in std_logic_vector (15 downto 0)
+address : in std_logic_vector (15 downto 0);
+value : out std_logic_vector (15 downto 0);
+signal gls_clk : in std_logic ;
+signal imx_cs_n : out std_logic ;
+signal imx_oe_n : out std_logic ;
+signal imx_eb3_n : out std_logic ;
+signal imx_address : out std_logic_vector (12 downto 1);
+signal imx_data : in std_logic_vector (15 downto 0)
);
@@ -38,7 +38,7 @@
package body apf_test_pkg is
- -- Write value from imx
+ -- Write value from imx
procedure imx_write(
address : in std_logic_vector (15 downto 0);
value : in std_logic_vector (15 downto 0);
@@ -50,7 +50,7 @@
signal imx_data : out std_logic_vector (15 downto 0)
) is
begin
- -- Write value
+ -- Write value
wait until falling_edge(gls_clk);
wait for 4 ns;
imx_address <= address(12 downto 1);
@@ -68,19 +68,19 @@
imx_data <= (others => 'Z');
end procedure imx_write;
- -- Read a value from imx
+-- Read a value from imx
procedure imx_read(
-address : in std_logic_vector (15 downto 0);
-value : out std_logic_vector (15 downto 0);
-signal gls_clk : in std_logic ;
-signal imx_cs_n : out std_logic ;
-signal imx_oe_n : out std_logic ;
-signal imx_eb3_n : out std_logic ;
-signal imx_address : out std_logic_vector (12 downto 1);
-signal imx_data : in std_logic_vector (15 downto 0)
+ address : in std_logic_vector (15 downto 0);
+ value : out std_logic_vector (15 downto 0);
+ signal gls_clk : in std_logic ;
+ signal imx_cs_n : out std_logic ;
+ signal imx_oe_n : out std_logic ;
+ signal imx_eb3_n : out std_logic ;
+ signal imx_address : out std_logic_vector (12 downto 1);
+ signal imx_data : in std_logic_vector (15 downto 0)
) is
begin
- -- Read value
+ -- Read value
wait until falling_edge(gls_clk);
wait for 4 ns;
imx_address <= address(12 downto 1);
Modified: trunk/firmware/bus_led/Makefile
===================================================================
--- trunk/firmware/bus_led/Makefile 2008-03-03 13:19:41 UTC (rev 764)
+++ trunk/firmware/bus_led/Makefile 2008-03-03 16:12:47 UTC (rev 765)
@@ -103,7 +103,7 @@
cp $(BIN)/$(PROJECT).bit /tftpboot/
trace: $(BIN)/$(PROJECT).ncd $(BIN)/$(PROJECT).pcf
- -$(TRACE) -intstyle xflow -e 3 -l 3 -s 5 -xml $(BIN)/$(PROJECT) $(BIN)/$(PROJECT).ncd -o $(BIN)/$(PROJECT).twr $(BIN)/$(PROJECT).pcf > $(BIN)/$(PROJECT).tracelog
+ -$(TRACE) -intstyle xflow -e 3 -l 3 -s 5 -xml $(BIN)/$(PROJECT) $(BIN)/$(PROJECT).ncd -o $(BIN)/$(PROJECT).twr $(BIN)/$(PROJECT).pcf
$(CAT) $(BIN)/$(PROJECT).tracelog
$(BIN)/$(PROJECT).ncd : par
Modified: trunk/firmware/bus_led/src/bus_led.ucf
===================================================================
--- trunk/firmware/bus_led/src/bus_led.ucf 2008-03-03 13:19:41 UTC (rev 764)
+++ trunk/firmware/bus_led/src/bus_led.ucf 2008-03-03 16:12:47 UTC (rev 765)
@@ -1,7 +1,7 @@
# Clock at 96MHz
NET "clk" LOC = "P55" | IOSTANDARD = LVCMOS33 ;
NET "clk" TNM_NET = "clk";
-TIMESPEC "TS_clk" = PERIOD "clk" 10 ns HIGH 50 %;
+TIMESPEC "TS_clk" = PERIOD "clk" 10.42 ns HIGH 50 %;
NET "imx_cs_n" LOC = "P59" | IOSTANDARD = LVCMOS33;
NET "imx_eb3_n" LOC = "P60" | IOSTANDARD = LVCMOS33;
Modified: trunk/firmware/bus_led/src/bus_led.vhd
===================================================================
--- trunk/firmware/bus_led/src/bus_led.vhd 2008-03-03 13:19:41 UTC (rev 764)
+++ trunk/firmware/bus_led/src/bus_led.vhd 2008-03-03 16:12:47 UTC (rev 765)
@@ -36,51 +36,69 @@
---------------------------------------------------------------------------
Architecture RTL of bus_led is
---------------------------------------------------------------------------
- signal Reg : std_logic_vector(15 downto 0) := (others => '0');
+ signal Reg : std_logic_vector(15 downto 0) := (others => '0');
+ signal address : std_logic_vector(11 downto 0);
+ signal readdata : std_logic_vector(15 downto 0);
+ signal writedata : std_logic_vector(15 downto 0);
+ signal read : std_logic;
+ signal write : std_logic;
begin
-- Led connection
LED <= Reg(0);
- write : process (clk,Rst_n)
+ imx_data <= readdata when (read = '1') else (others => 'Z');
+
+ -----------------------------------------------------
+ -- Synchro external signal
+ -----------------------------------------------------
+ sync_proc : process(clk, rst_n)
+ begin
+ if Rst_n = '0' then
+ address <= (others => '0');
+ read <= '0';
+ write <= '0';
+ elsif rising_edge(clk) then
+ write <= not (imx_cs_n or imx_eb3_n);
+ read <= not (imx_cs_n or imx_oe_n);
+ address <= imx_addr;
+ writedata <= imx_data;
+ end if;
+ end process;
+
+ writeprocess : process (clk,Rst_n)
begin
if Rst_n = '0' then
Reg <= (others => '0');
elsif rising_edge(clk) then
- if (imx_cs_n = '0' and imx_oe_n = '1' and imx_eb3_n = '0' ) then
- case imx_addr is
+ if (write = '1') then
+ case address is
when "000000000000" =>
-- Save imx_data value in Reg
- Reg <= imx_data;
- when others =>
- Reg <= Reg;
+ Reg <= writedata;
+ when others => Null;
end case;
-
end if;
end if;
- end process write;
+ end process writeprocess;
- read : process (clk, Rst_n)
+ readprocess : process (clk, Rst_n)
begin
if Rst_n = '0' then
- imx_data <= (others => 'Z');
- elsif falling_edge(clk) then
- if(imx_cs_n = '0' and imx_oe_n = '0' and imx_eb3_n = '1' ) then
- case imx_addr is
+ readdata <= (others => '0');
+ elsif rising_edge(clk) then
+ readdata <= (others => '0');
+ if(read = '1') then
+ case address is
when "000000000000" =>
-- Write Reg value on imx_data bus
- imx_data <= Reg;
- when others =>
- -- High impedance if others address
- imx_data <= (others => 'Z');
+ readdata <= Reg;
+ when others => Null;
end case;
- else
- -- High impedance if others address
- imx_data <= (others => 'Z');
end if;
end if;
- end process read;
+ end process readprocess;
end architecture RTL;
Modified: trunk/firmware/bus_led/testbench/led_top_tb.vhd
===================================================================
--- trunk/firmware/bus_led/testbench/led_top_tb.vhd 2008-03-03 13:19:41 UTC (rev 764)
+++ trunk/firmware/bus_led/testbench/led_top_tb.vhd 2008-03-03 16:12:47 UTC (rev 765)
@@ -65,8 +65,12 @@
wait for HALF_PERIODE*20;
for i in 0 to 600 loop
- imx_write(x"0000",conv_std_logic_vector(i,16),clk,imx_cs_n,imx_oe_n,imx_eb3_n,imx_addr(12 downto 1),imx_data);
- imx_read(x"0000",value,clk,imx_cs_n,imx_oe_n,imx_eb3_n,imx_addr(12 downto 1),imx_data);
+ imx_write(x"0000",conv_std_logic_vector(i,16),
+ clk,imx_cs_n,imx_oe_n,
+ imx_eb3_n,imx_addr(12 downto 1),imx_data);
+ imx_read(x"0000",value,
+ clk,imx_cs_n,imx_oe_n,
+ imx_eb3_n,imx_addr(12 downto 1),imx_data);
assert value = conv_std_logic_vector(i,16) report "error reading imx_data" severity error;
end loop;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <Fa...@us...> - 2008-03-03 13:19:38
|
Revision: 764
http://armadeus.svn.sourceforge.net/armadeus/?rev=764&view=rev
Author: FabM
Date: 2008-03-03 05:19:41 -0800 (Mon, 03 Mar 2008)
Log Message:
-----------
[firmware][bus_led] Simple design to switch led,[apf_pkg] package for simulate read and write (imx), [Xtools] some tools to report synthezis problems
Added Paths:
-----------
trunk/firmware/Xtools/
trunk/firmware/Xtools/brief.py
trunk/firmware/Xtools/catcolor
trunk/firmware/apf_pkg/
trunk/firmware/apf_pkg/apf_test_pkg.vhd
trunk/firmware/bus_led/
trunk/firmware/bus_led/Makefile
trunk/firmware/bus_led/README
trunk/firmware/bus_led/TODO
trunk/firmware/bus_led/src/
trunk/firmware/bus_led/src/bus_led.ucf
trunk/firmware/bus_led/src/bus_led.vhd
trunk/firmware/bus_led/src/bus_led_top.vhd
trunk/firmware/bus_led/testbench/
trunk/firmware/bus_led/testbench/led_top_tb.vhd
Added: trunk/firmware/Xtools/brief.py
===================================================================
--- trunk/firmware/Xtools/brief.py (rev 0)
+++ trunk/firmware/Xtools/brief.py 2008-03-03 13:19:41 UTC (rev 764)
@@ -0,0 +1,54 @@
+#!/usr/bin/python
+# Just a little script to print
+# message from Xilinx synthesis
+# Fabien Marteau
+# 23/02/2008
+
+import re
+import sys
+
+
+def report(file):
+ # Key words message definition
+ error = re.compile('^error',re.I)
+ warning = re.compile('^warning',re.I)
+ info = re.compile('^info',re.I)
+ for line in file:
+ if error.match(line):
+ print error.sub('\033[01;31mERROR\033[00m',line)
+ if warning.match(line):
+ print warning.sub('\033[01;33mWARNING\033[00m',line)
+ if info.match(line):
+ print info.sub('\033[01;32mINFO\033[00m',line)
+
+print '---------------------------------------------------'
+print ' Xst messages :'
+file = open(sys.argv[1] + ".log" , 'r')
+report(file)
+file.close()
+print '---------------------------------------------------'
+print ' Ngdbuild messages :'
+file = open(sys.argv[1] + ".ngdlog",'r')
+report(file)
+file.close()
+print '---------------------------------------------------'
+print ' Map messages :'
+file = open(sys.argv[1] + ".maplog",'r')
+report(file)
+file.close()
+print '---------------------------------------------------'
+print ' Par messages :'
+file = open(sys.argv[1] + ".parlog",'r')
+report(file)
+file.close()
+print '---------------------------------------------------'
+print ' trace messages :'
+file = open(sys.argv[1] + ".tracelog",'r')
+report(file)
+file.close()
+print '---------------------------------------------------'
+print ' Bit messages :'
+file = open(sys.argv[1] + ".bitlog",'r')
+report(file)
+file.close()
+
Property changes on: trunk/firmware/Xtools/brief.py
___________________________________________________________________
Name: svn:executable
+ *
Added: trunk/firmware/Xtools/catcolor
===================================================================
--- trunk/firmware/Xtools/catcolor (rev 0)
+++ trunk/firmware/Xtools/catcolor 2008-03-03 13:19:41 UTC (rev 764)
@@ -0,0 +1,7 @@
+#!/bin/bash
+cat $1 \
+ | sed "s/^ERROR/[01\;31mERROR[00m/"\
+ | sed "s/^WARNING/[01\;33mWARNING[00m/"\
+ | sed "s/^INFO/[01\;32mINFO[0m/"
+
+
Property changes on: trunk/firmware/Xtools/catcolor
___________________________________________________________________
Name: svn:executable
+ *
Added: trunk/firmware/apf_pkg/apf_test_pkg.vhd
===================================================================
--- trunk/firmware/apf_pkg/apf_test_pkg.vhd (rev 0)
+++ trunk/firmware/apf_pkg/apf_test_pkg.vhd 2008-03-03 13:19:41 UTC (rev 764)
@@ -0,0 +1,103 @@
+
+----------------------------------------------
+-- Design Name : Test bench utils
+-- File Name : apf_test_pkg.vhw
+-- Function : Defines communication function between imx and fpga
+-- Author : Fabien Marteau
+-- Version : 1.00
+---------------------------------------------
+library ieee;
+use ieee.std_logic_1164.all;
+
+package apf_test_pkg is
+ -- read and write procedures
+ procedure imx_write(
+ address : in std_logic_vector (15 downto 0);
+ value : in std_logic_vector (15 downto 0);
+ signal gls_clk : in std_logic ;
+ signal imx_cs_n : out std_logic ;
+ signal imx_oe_n : out std_logic ;
+ signal imx_eb3_n : out std_logic ;
+ signal imx_address : out std_logic_vector (12 downto 1);
+ signal imx_data : out std_logic_vector (15 downto 0)
+);
+
+procedure imx_read(
+ address : in std_logic_vector (15 downto 0);
+ value : out std_logic_vector (15 downto 0);
+ signal gls_clk : in std_logic ;
+ signal imx_cs_n : out std_logic ;
+ signal imx_oe_n : out std_logic ;
+ signal imx_eb3_n : out std_logic ;
+ signal imx_address : out std_logic_vector (12 downto 1);
+ signal imx_data : in std_logic_vector (15 downto 0)
+ );
+
+
+end package apf_test_pkg;
+
+package body apf_test_pkg is
+
+ -- Write value from imx
+ procedure imx_write(
+ address : in std_logic_vector (15 downto 0);
+ value : in std_logic_vector (15 downto 0);
+ signal gls_clk : in std_logic ;
+ signal imx_cs_n : out std_logic ;
+ signal imx_oe_n : out std_logic ;
+ signal imx_eb3_n : out std_logic ;
+ signal imx_address : out std_logic_vector (12 downto 1);
+ signal imx_data : out std_logic_vector (15 downto 0)
+) is
+begin
+ -- Write value
+ wait until falling_edge(gls_clk);
+ wait for 4 ns;
+ imx_address <= address(12 downto 1);
+ imx_cs_n <= '0';
+ imx_eb3_n <= '0';
+ wait until falling_edge(gls_clk);
+ wait for 2500 ps;
+ imx_data <= value;
+ wait until falling_edge(gls_clk); --
+ wait until falling_edge(gls_clk); -- WSC = 2
+ wait for 1 ns;
+ imx_cs_n <= '1';
+ imx_eb3_n <= '1';
+ imx_address <= (others => 'Z');
+ imx_data <= (others => 'Z');
+end procedure imx_write;
+
+ -- Read a value from imx
+procedure imx_read(
+address : in std_logic_vector (15 downto 0);
+value : out std_logic_vector (15 downto 0);
+signal gls_clk : in std_logic ;
+signal imx_cs_n : out std_logic ;
+signal imx_oe_n : out std_logic ;
+signal imx_eb3_n : out std_logic ;
+signal imx_address : out std_logic_vector (12 downto 1);
+signal imx_data : in std_logic_vector (15 downto 0)
+ ) is
+ begin
+ -- Read value
+ wait until falling_edge(gls_clk);
+ wait for 4 ns;
+ imx_address <= address(12 downto 1);
+ imx_cs_n <= '0';
+ imx_oe_n <= '0';
+ wait until falling_edge(gls_clk);--
+ wait until falling_edge(gls_clk);-- WSC = 2
+ wait until rising_edge(gls_clk);
+ value := imx_data;
+ wait until falling_edge(gls_clk);
+ imx_cs_n <= '1';
+ imx_oe_n <= '1';
+ imx_address <= (others => 'Z');
+ wait for 20 ns;
+
+ end procedure imx_read;
+
+
+
+end package body apf_test_pkg;
Added: trunk/firmware/bus_led/Makefile
===================================================================
--- trunk/firmware/bus_led/Makefile (rev 0)
+++ trunk/firmware/bus_led/Makefile 2008-03-03 13:19:41 UTC (rev 764)
@@ -0,0 +1,235 @@
+# Makefile for VHDL synthesis and simulation
+# version 1.0
+# Fabien Marteau
+
+# project name
+PROJECT=bus_led_top
+# vhdl files
+FILES = src/bus_led.vhd src/bus_led_top.vhd
+# pin configuration
+UCF_FILE = src/bus_led.ucf
+# Synthesis constraints file
+XCF_FILE =
+# testbench
+SIMTOP = led_top_tb
+SIMFILES = ../apf_pkg/apf_test_pkg.vhd testbench/led_top_tb.vhd
+# Simu break condition
+GHDL_SIM_OPT = --assert-level=error
+#GHDL_SIM_OPT = --stop-time=500ns
+
+# FPGA options
+PART = xc3s200-4-tq144
+
+############################
+# Personnals options
+############################
+
+CAT=../Xtools/catcolor
+BRIEF=../Xtools/brief.py
+
+
+############################
+# Xilinx options
+############################
+BIN = bin
+WORK = work
+
+SYNTH = xst
+NGDBUILD = ngdbuild
+MAP = map
+PAR = par
+TRACE = trce
+BITGEN = bitgen
+
+ifdef $(XCF_FILE)
+XCF = -uc $(XCF_FILE)\n
+endif
+
+##############################
+# GHDL options
+##############################
+
+SIMDIR = simu
+SYNTHFILES = bin/bus_led_ise/netgen/synthesis
+
+GHDL_CMD = ghdl
+GHDL_FLAGS = --ieee=synopsys --warn-no-vital-generic
+#GHDL_FLAGS = --ieee=synopsys -P~/Xilinx92i/coregen/ip/xilinx/primary/com/xilinx/ip/unisim --warn-no-vital-generic
+
+VIEW_CMD = /usr/bin/gtkwave
+
+OBJS_FILES = $(patsubst %.vhd, %.o, $(notdir $(FILES)) )
+OBJS_SIMFILES = $(patsubst %.vhd, %.o, $(notdir $(SIMFILES)) )
+
+#################################
+# Synthesis with xst
+#################################
+
+messages : bit
+ $(BRIEF) $(BIN)/$(PROJECT)
+
+
+bit : $(BIN)/$(PROJECT).ncd trace
+ -$(BITGEN) -intstyle xflow -w \
+ -g DebugBitstream:No \
+ -g Binary:no \
+ -g CRC:Enable \
+ -g ConfigRate:6 \
+ -g CclkPin:PullUp \
+ -g M0Pin:PullUp \
+ -g M1Pin:PullUp \
+ -g M2Pin:PullUp \
+ -g ProgPin:PullUp \
+ -g DonePin:PullUp \
+ -g TckPin:PullUp \
+ -g TdiPin:PullUp \
+ -g TdoPin:PullUp \
+ -g TmsPin:PullUp \
+ -g UnusedPin:PullDown \
+ -g UserID:0xFFFFFFFF \
+ -g DCMShutdown:Disable \
+ -g DCIUpdateMode:AsRequired \
+ -g StartUpClk:CClk \
+ -g DONE_cycle:4 \
+ -g GTS_cycle:5 \
+ -g GWE_cycle:6 \
+ -g LCK_cycle:NoWait \
+ -g Match_cycle:Auto \
+ -g Security:None \
+ -g DonePipe:No \
+ -g DriveDone:No \
+ $(BIN)/$(PROJECT).ncd > $(BIN)/$(PROJECT).bitlog
+ $(CAT) $(BIN)/$(PROJECT).bitlog
+ cp $(BIN)/$(PROJECT).bit /tftpboot/
+
+trace: $(BIN)/$(PROJECT).ncd $(BIN)/$(PROJECT).pcf
+ -$(TRACE) -intstyle xflow -e 3 -l 3 -s 5 -xml $(BIN)/$(PROJECT) $(BIN)/$(PROJECT).ncd -o $(BIN)/$(PROJECT).twr $(BIN)/$(PROJECT).pcf > $(BIN)/$(PROJECT).tracelog
+ $(CAT) $(BIN)/$(PROJECT).tracelog
+
+$(BIN)/$(PROJECT).ncd : par
+
+par : $(BIN)/$(PROJECT)_map.ncd $(BIN)/$(PROJECT).pcf
+ - sh -c 'pid=$$$$; $(PAR) -w -intstyle xflow -ol std -t 1 $(BIN)/$(PROJECT)_map.ncd $(BIN)/$(PROJECT).ncd $(BIN)/$(PROJECT).pcf | (sed "/^PAR done/q";kill $$pid)' > $(BIN)/$(PROJECT).parlog
+ $(CAT) $(BIN)/$(PROJECT).parlog
+ - killall -9 par
+
+$(BIN)/$(PROJECT).pcf $(BIN)/$(PROJECT)_map.ncd : map
+
+map : $(BIN)/$(PROJECT).ngd
+ - sh -c 'pid=$$$$ ; $(MAP) -intstyle xflow -p $(PART) -cm area -pr b -k 4 -c 100 -o $(BIN)/$(PROJECT)_map.ncd $(BIN)/$(PROJECT).ngd $(BIN)/$(PROJECT).pcf | (sed "/^See MAP report file/q" ; kill $$pid ) ' > $(BIN)/$(PROJECT).maplog
+ $(CAT) $(BIN)/$(PROJECT).maplog
+ - killall -9 map
+
+$(BIN)/$(PROJECT).ngd : ngdbuild
+
+ngdbuild : $(BIN)/$(PROJECT).ngr $(BIN)/$(PROJECT).ngc $(BIN)/$(PROJECT).lso
+ -$(NGDBUILD) -intstyle xflow -dd _ngo -nt timestamp -p $(PART) $(BIN)/$(PROJECT).ngc $(BIN)/$(PROJECT).ngd -uc $(UCF_FILE) > $(BIN)/$(PROJECT).ngdlog
+ $(CAT) $(BIN)/$(PROJECT).ngdlog
+
+$(BIN)/$(PROJECT).ngc $(BIN)/$(PROJECT).ngr $(BIN)/$(PROJECT).lso : synthesis
+
+synthesis : $(BIN)/$(PROJECT).prj $(BIN)/$(PROJECT).xst
+ $(SYNTH) -ifn $(BIN)/$(PROJECT).xst -ofn $(BIN)/$(PROJECT).log \
+ | sed "s/^ERROR/[01\;31mERROR[00m/"\
+ | sed "s/^WARNING/[01\;33mWARNING[00m/"\
+ | sed "s/^INFO/[01\;32mINFO[0m/"
+
+$(BIN)/$(PROJECT).xst $(BIN)/$(PROJECT).prj :
+ @mkdir -p $(BIN)
+ @touch $(BIN)/$(PROJECT);
+ @for f in $(FILES); do \
+ echo vhdl $(WORK) \"$$f\" >> $(BIN)/$(PROJECT).prj;\
+ done
+ @echo work > $(BIN)/$(PROJECT).lso
+ @mkdir -p ./bin/xst/projnav.tmp
+ @echo " \
+ set -tmpdir "./bin/xst/projnav.tmp" \n\
+ set -xsthdpdir "./bin/xst" \n\
+ run \n\
+ -ifn $(BIN)/$(PROJECT).prj \n\
+ -ifmt mixed \n\
+ -ofn $(BIN)/$(PROJECT) \n\
+ -ofmt NGC \n\
+ -p $(PART) \n\
+ -top $(PROJECT) \n\
+ -opt_mode Speed \n\
+ -opt_level 1 \n\
+ $(XCF)\
+ -iuc NO \n\
+ -lso $(BIN)/$(PROJECT).lso \n\
+ -keep_hierarchy NO \n\
+ -rtlview Yes \n\
+ -glob_opt AllClockNets \n\
+ -read_cores YES \n\
+ -write_timing_constraints NO \n\
+ -cross_clock_analysis NO \n\
+ -hierarchy_separator / \n\
+ -bus_delimiter <> \n\
+ -case maintain \n\
+ -slice_utilization_ratio 100 \n\
+ -bram_utilization_ratio 100 \n\
+ -verilog2001 YES \n\
+ -fsm_extract YES -fsm_encoding Auto \n\
+ -safe_implementation No \n\
+ -fsm_style lut \n\
+ -ram_extract Yes \n\
+ -ram_style Auto \n\
+ -rom_extract Yes \n\
+ -mux_style Auto \n\
+ -decoder_extract YES \n\
+ -priority_extract YES \n\
+ -shreg_extract YES \n\
+ -shift_extract YES \n\
+ -xor_collapse YES \n\
+ -rom_style Auto \n\
+ -auto_bram_packing NO \n\
+ -mux_extract YES \n\
+ -resource_sharing YES \n\
+ -async_to_sync NO \n\
+ -mult_style auto \n\
+ -iobuf YES \n\
+ -max_fanout 500 \n\
+ -bufg 8 \n\
+ -register_duplication YES \n\
+ -register_balancing No \n\
+ -slice_packing YES \n\
+ -optimize_primitives NO \n\
+ -use_clock_enable Yes \n\
+ -use_sync_set Yes \n\
+ -use_sync_reset Yes \n\
+ -iob auto \n\
+ -equivalent_register_removal YES \n\
+ -slice_utilization_ratio_maxmargin 5\n\
+ " >> $(BIN)/$(PROJECT).xst
+
+clean : ghdl-clean
+ -rm -rf $(BIN)
+ -rm -rf _ngo
+ -rm xilinx_device_details.xml
+
+########################
+# Simulation with GHDL
+########################
+
+ghdl-compil :
+ mkdir -p simu
+ $(GHDL_CMD) -i $(GHDL_FLAGS) --workdir=simu --work=work $(SIMFILES) $(FILES)
+ $(GHDL_CMD) -m $(GHDL_FLAGS) --workdir=simu --work=work $(SIMTOP)
+ @mv $(SIMTOP) simu/$(SIMTOP)
+
+#TODO: make it working !
+ghdl-simsynth :
+ $(GHDL_CMD) -i $(GHDL_FLAGS) --workdir=simu --work=work $(SYNTHFILES) $(SIMFILES)
+ $(GHDL_CMD) -m $(GHDL_FLAGS) --workdir=simu --work=work $(SIMTOP)
+ @mv $(SIMTOP) simu/$(SIMTOP)
+
+ghdl-run :
+ @$(SIMDIR)/$(SIMTOP) $(GHDL_SIM_OPT) --vcdgz=$(SIMDIR)/$(SIMTOP).vcdgz
+
+ghdl-view:
+ gunzip --stdout $(SIMDIR)/$(SIMTOP).vcdgz | $(VIEW_CMD) --vcd
+
+ghdl-clean :
+ $(GHDL_CMD) --clean --workdir=simu
+ -rm -rf simu
+
Added: trunk/firmware/bus_led/README
===================================================================
--- trunk/firmware/bus_led/README (rev 0)
+++ trunk/firmware/bus_led/README 2008-03-03 13:19:41 UTC (rev 764)
@@ -0,0 +1,60 @@
+Simple design to blink a led from the i.mx.
+
+1) Description
+
+Led is branched on fpga P116 with this schematics :
+
+ 3.3v
+ -----
+ |
+ -----
+ | |
+ | | 330 Ohms
+ | |
+ -----
+ |
+ -------
+ \ / --/
+ \ / /--->
+ -------
+ |
+FPGA16 -----
+(P116)
+
+See ucf file in sr/bus_led.ucf for more details
+NET "LED" LOC = "P116" | IOSTANDARD = LVCMOS33 ;
+
+To change the value from uboot use mw.w command and write
+on address 0x12000000 :
+mw.w 12000000 0001 1 # led off
+mw.w 12000000 0000 1 # led on
+
+2) Simulation
+
+The testbench is in testbench/ directory using apf_test_pkg.vhd in
+apf_pkg/ directory, to simulate it you can use ghdl using the makefile.
+compile:
+>make ghdl-compil
+
+run (the end of test finish with assert error "end of test"):
+>make ghdl-run
+
+And see graph result with gtkwave:
+>make ghdl-view
+
+3) Synthesis
+
+To synthetize the design, you need Xilinx webpack installed correctly
+and you can use make:
+>make
+This will make synthesis, place & route and bitgen, and will copy the
+bitstream in /tftpboot/ directory
+
+4) Configure
+
+To configure, you need tftpboot installed on your computer, and on
+uboot type:
+>tftpboot 08000000 bus_led_top.bit
+>fpga load 0 08000000 1ffd5
+
+
Added: trunk/firmware/bus_led/TODO
===================================================================
--- trunk/firmware/bus_led/TODO (rev 0)
+++ trunk/firmware/bus_led/TODO 2008-03-03 13:19:41 UTC (rev 764)
@@ -0,0 +1,3 @@
+
+ - correct the design with correct synchro
+ - include the linux driver
Added: trunk/firmware/bus_led/src/bus_led.ucf
===================================================================
--- trunk/firmware/bus_led/src/bus_led.ucf (rev 0)
+++ trunk/firmware/bus_led/src/bus_led.ucf 2008-03-03 13:19:41 UTC (rev 764)
@@ -0,0 +1,46 @@
+# Clock at 96MHz
+NET "clk" LOC = "P55" | IOSTANDARD = LVCMOS33 ;
+NET "clk" TNM_NET = "clk";
+TIMESPEC "TS_clk" = PERIOD "clk" 10 ns HIGH 50 %;
+
+NET "imx_cs_n" LOC = "P59" | IOSTANDARD = LVCMOS33;
+NET "imx_eb3_n" LOC = "P60" | IOSTANDARD = LVCMOS33;
+NET "imx_oe_n" LOC = "P63" | IOSTANDARD = LVCMOS33;
+
+NET "LED" LOC = "P116" | IOSTANDARD = LVCMOS33 ;
+
+NET "imx_addr<1>" LOC = "P23" | IOSTANDARD = LVCMOS33;
+NET "imx_addr<2>" LOC = "P24" | IOSTANDARD = LVCMOS33;
+NET "imx_addr<3>" LOC = "P25" | IOSTANDARD = LVCMOS33;
+NET "imx_addr<4>" LOC = "P26" | IOSTANDARD = LVCMOS33;
+NET "imx_addr<5>" LOC = "P27" | IOSTANDARD = LVCMOS33;
+NET "imx_addr<6>" LOC = "P28" | IOSTANDARD = LVCMOS33;
+NET "imx_addr<7>" LOC = "P30" | IOSTANDARD = LVCMOS33;
+NET "imx_addr<8>" LOC = "P31" | IOSTANDARD = LVCMOS33;
+NET "imx_addr<9>" LOC = "P32" | IOSTANDARD = LVCMOS33;
+NET "imx_addr<10>" LOC = "P33" | IOSTANDARD = LVCMOS33;
+NET "imx_addr<11>" LOC = "P35" | IOSTANDARD = LVCMOS33;
+NET "imx_addr<12>" LOC = "P36" | IOSTANDARD = LVCMOS33;
+
+# IMX connection
+NET "imx_data<0>" LOC = "P1" | IOSTANDARD = LVCMOS33;
+NET "imx_data<1>" LOC = "P2" | IOSTANDARD = LVCMOS33;
+NET "imx_data<2>" LOC = "P4" | IOSTANDARD = LVCMOS33;
+NET "imx_data<3>" LOC = "P5" | IOSTANDARD = LVCMOS33;
+NET "imx_data<4>" LOC = "P6" | IOSTANDARD = LVCMOS33;
+NET "imx_data<5>" LOC = "P7" | IOSTANDARD = LVCMOS33;
+NET "imx_data<6>" LOC = "P8" | IOSTANDARD = LVCMOS33;
+NET "imx_data<7>" LOC = "P10" | IOSTANDARD = LVCMOS33;
+NET "imx_data<8>" LOC = "P11" | IOSTANDARD = LVCMOS33;
+NET "imx_data<9>" LOC = "P12" | IOSTANDARD = LVCMOS33;
+NET "imx_data<10>" LOC = "P13" | IOSTANDARD = LVCMOS33;
+NET "imx_data<11>" LOC = "P14" | IOSTANDARD = LVCMOS33;
+NET "imx_data<12>" LOC = "P15" | IOSTANDARD = LVCMOS33;
+NET "imx_data<13>" LOC = "P17" | IOSTANDARD = LVCMOS33;
+NET "imx_data<14>" LOC = "P18" | IOSTANDARD = LVCMOS33;
+NET "imx_data<15>" LOC = "P20" | IOSTANDARD = LVCMOS33;
+
+# Test (X10 on devfull) connection
+NET "imx_data0_test" LOC = "P102" | IOSTANDARD = LVCMOS33 ;
+NET "imx_addr1_test" LOC = "P97" | IOSTANDARD = LVCMOS33 ;
+
Added: trunk/firmware/bus_led/src/bus_led.vhd
===================================================================
--- trunk/firmware/bus_led/src/bus_led.vhd (rev 0)
+++ trunk/firmware/bus_led/src/bus_led.vhd 2008-03-03 13:19:41 UTC (rev 764)
@@ -0,0 +1,86 @@
+---------------------------------------------------------------------------
+-- Company : ARMadeus Systems
+-- Author(s) : Fabien Marteau
+--
+-- Creation Date : 15/02/2008
+-- File : bus_led.vhd
+--
+-- Abstract :
+--
+---------------------------------------------------------------------------
+
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.numeric_std.all;
+
+---------------------------------------------------------------------------
+Entity bus_led is
+ ---------------------------------------------------------------------------
+ port
+ (
+ -- imx signals
+ imx_data : inout std_logic_vector(15 downto 0);
+ imx_addr : in std_logic_vector(12 downto 1);
+ imx_cs_n : in std_logic ;
+ imx_eb3_n : in std_logic ;
+ imx_oe_n : in std_logic ;
+ -- Clock 96MHz
+ clk : in std_logic ;
+ LED : out std_logic ;
+ -- Reset active low
+ Rst_n : in std_logic
+ );
+end entity;
+
+
+---------------------------------------------------------------------------
+Architecture RTL of bus_led is
+ ---------------------------------------------------------------------------
+ signal Reg : std_logic_vector(15 downto 0) := (others => '0');
+
+begin
+
+ -- Led connection
+ LED <= Reg(0);
+
+ write : process (clk,Rst_n)
+ begin
+ if Rst_n = '0' then
+ Reg <= (others => '0');
+ elsif rising_edge(clk) then
+ if (imx_cs_n = '0' and imx_oe_n = '1' and imx_eb3_n = '0' ) then
+ case imx_addr is
+ when "000000000000" =>
+ -- Save imx_data value in Reg
+ Reg <= imx_data;
+ when others =>
+ Reg <= Reg;
+ end case;
+
+ end if;
+ end if;
+ end process write;
+
+ read : process (clk, Rst_n)
+ begin
+ if Rst_n = '0' then
+ imx_data <= (others => 'Z');
+ elsif falling_edge(clk) then
+ if(imx_cs_n = '0' and imx_oe_n = '0' and imx_eb3_n = '1' ) then
+ case imx_addr is
+ when "000000000000" =>
+ -- Write Reg value on imx_data bus
+ imx_data <= Reg;
+ when others =>
+ -- High impedance if others address
+ imx_data <= (others => 'Z');
+ end case;
+ else
+ -- High impedance if others address
+ imx_data <= (others => 'Z');
+ end if;
+ end if;
+ end process read;
+
+end architecture RTL;
+
Added: trunk/firmware/bus_led/src/bus_led_top.vhd
===================================================================
--- trunk/firmware/bus_led/src/bus_led_top.vhd (rev 0)
+++ trunk/firmware/bus_led/src/bus_led_top.vhd 2008-03-03 13:19:41 UTC (rev 764)
@@ -0,0 +1,76 @@
+----------------------------------------------------------------------------------
+-- Company: ARMadeus Systems
+-- Engineer: Fabien Marteau
+--
+-- Create Date:
+-- Design Name:
+-- Module Name:
+-- Project Name:
+-- Target Devices:
+-- Tool versions:
+-- Description:
+--
+-- Dependencies:
+--
+-- Revision:
+-- Revision 0.01 - File Created
+-- Additional Comments:
+--
+----------------------------------------------------------------------------------
+
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.numeric_std.all;
+
+
+
+entity bus_led_top
+is
+ port (
+ imx_data : inout std_logic_vector(15 downto 0);
+ imx_data0_test : out std_logic;
+ imx_addr1_test : out std_logic ;
+ imx_addr : in std_logic_vector(12 downto 1);
+ imx_cs_n : in std_logic ;
+ imx_eb3_n : in std_logic ;
+ imx_oe_n : in std_logic ;
+ clk : in std_logic ;
+ LED : out std_logic);
+
+end entity bus_led_top ;
+
+architecture hierarchical
+ of bus_led_top is
+ component bus_led
+ port(
+ imx_data : inout std_logic_vector(15 downto 0);
+ imx_addr : in std_logic_vector(12 downto 1);
+ imx_cs_n : in std_logic ;
+ imx_eb3_n : in std_logic ;
+ imx_oe_n : in std_logic ;
+ clk : in std_logic ;
+ LED : out std_logic ;
+ Rst_n : in std_logic);
+ end component;
+
+ -- Asynchrone reset active low
+ signal Rst_n : std_logic ;
+ begin
+
+ Rst_n <= '1';
+ imx_data0_test <= imx_data(0);
+ imx_addr1_test <= imx_addr(1);
+
+ connect_bus_led : bus_led
+ port map(
+ imx_data => imx_data,
+ imx_addr => imx_addr,
+ imx_cs_n => imx_cs_n,
+ imx_eb3_n => imx_eb3_n,
+ imx_oe_n => imx_oe_n,
+ clk => clk,
+ LED => LED,
+ Rst_n => Rst_n);
+
+end architecture ;
+
Added: trunk/firmware/bus_led/testbench/led_top_tb.vhd
===================================================================
--- trunk/firmware/bus_led/testbench/led_top_tb.vhd (rev 0)
+++ trunk/firmware/bus_led/testbench/led_top_tb.vhd 2008-03-03 13:19:41 UTC (rev 764)
@@ -0,0 +1,100 @@
+----------------------------------------------------------------------------------
+-- Company : ARMadeus Systems
+-- Author(s) : Fabien Marteau
+--
+-- Creation Date : 14/02/2008
+-- File : led_top_tb.vhd
+--
+-- Abstract : Testbench for simple design that switch a led with the imx
+--
+----------------------------------------------------------------------------------
+
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.numeric_std.all;
+use ieee.std_logic_arith.all;
+use work.apf_test_pkg.ALL;
+
+----------------------------------------------------------------------------------
+Entity led_top_tb is
+----------------------------------------------------------------------------------
+ end entity led_top_tb;
+
+
+----------------------------------------------------------------------------------
+Architecture RTL of led_top_tb is
+ ----------------------------------------------------------------------------------
+
+ CONSTANT HALF_PERIODE : time := 5 ns; -- Half clock period
+
+ signal imx_data : std_logic_vector(15 downto 0);
+ signal imx_data0_test : std_logic ;
+ signal imx_addr1_test : std_logic ;
+ signal imx_addr : std_logic_vector (12 downto 1);
+ signal imx_cs_n : std_logic ;
+ signal imx_eb3_n : std_logic ;
+ signal imx_oe_n : std_logic ;
+ signal clk : std_logic ;
+ signal LED : std_logic ;
+ -- signal Rst_n : std_logic ;
+
+ component bus_led_top
+ port (
+ imx_data : inout std_logic_vector(15 downto 0);
+ imx_data0_test : out std_logic ;
+ imx_addr1_test : out std_logic ;
+ imx_addr : in std_logic_vector(12 downto 1);
+ imx_cs_n : in std_logic ;
+ imx_eb3_n : in std_logic ;
+ imx_oe_n : in std_logic ;
+ clk : in std_logic ;
+ LED : out std_logic );
+ end component bus_led_top;
+
+begin
+ -- Test stimulus
+ stimulus : process
+ variable value : std_logic_vector (15 downto 0);
+ begin
+ imx_oe_n <= '1';
+ imx_eb3_n <= '1';
+ imx_cs_n <= '1';
+ imx_addr <= (others => 'Z');
+ imx_data <= (others => 'Z');
+
+ wait for HALF_PERIODE*20;
+
+ for i in 0 to 600 loop
+ imx_write(x"0000",conv_std_logic_vector(i,16),clk,imx_cs_n,imx_oe_n,imx_eb3_n,imx_addr(12 downto 1),imx_data);
+ imx_read(x"0000",value,clk,imx_cs_n,imx_oe_n,imx_eb3_n,imx_addr(12 downto 1),imx_data);
+ assert value = conv_std_logic_vector(i,16) report "error reading imx_data" severity error;
+ end loop;
+
+ assert false report "End of test" severity error;
+ end process stimulus;
+
+ -- 100MHz Clock
+ Clockp : process
+ begin
+ clk <= '1';
+ wait for HALF_PERIODE;
+ clk <= '0';
+ wait for HALF_PERIODE;
+ end process Clockp;
+
+ connect_bus_led : bus_led_top
+ port map(
+ imx_data => imx_data,
+ imx_data0_test => imx_data0_test,
+ imx_addr1_test => imx_addr1_test,
+ imx_addr => imx_addr,
+ imx_cs_n => imx_cs_n,
+ imx_eb3_n => imx_eb3_n,
+ imx_oe_n => imx_oe_n,
+ clk => clk,
+ LED => LED);
+
+-- Rst_n => Rst_n);
+
+end architecture RTL;
+
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <th...@us...> - 2008-02-14 14:35:07
|
Revision: 763
http://armadeus.svn.sourceforge.net/armadeus/?rev=763&view=rev
Author: thom25
Date: 2008-02-14 06:33:11 -0800 (Thu, 14 Feb 2008)
Log Message:
-----------
change crystal freq for color generation
Modified Paths:
--------------
trunk/target/packages/ch7024ctrl/ch424x283.conf
Modified: trunk/target/packages/ch7024ctrl/ch424x283.conf
===================================================================
--- trunk/target/packages/ch7024ctrl/ch424x283.conf 2008-02-11 17:04:07 UTC (rev 762)
+++ trunk/target/packages/ch7024ctrl/ch424x283.conf 2008-02-14 14:33:11 UTC (rev 763)
@@ -1,6 +1,6 @@
00:45 01:00 02:00 03:03
04:00 05:40 06:40 07:40
-08:80 09:05 0A:63 0B:80
+08:80 09:05 0A:63 0B:08
0C:00 0D:03 0E:00 0F:00
10:A1 11:09 12:40 13:8A
14:00 15:27 16:00 17:04
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <th...@us...> - 2008-02-11 17:04:12
|
Revision: 762
http://armadeus.svn.sourceforge.net/armadeus/?rev=762&view=rev
Author: thom25
Date: 2008-02-11 09:04:07 -0800 (Mon, 11 Feb 2008)
Log Message:
-----------
Change FTP server of buildroot and fakeroot packages
Modified Paths:
--------------
trunk/ChangeLog
trunk/Makefile
trunk/patches/038-buildroot-fakeroot.diff
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2008-02-10 14:50:48 UTC (rev 761)
+++ trunk/ChangeLog 2008-02-11 17:04:07 UTC (rev 762)
@@ -1,6 +1,9 @@
ChangeLog file for Armadeus Project
+Changes in release 2.3 (11 February 2008)
+- [BUILDROOT] Change FTP server for buildroot and fakeroot files
+
Changes in release 2.2 (16 December 2007)
- [UBOOT] U-Boot 1.1.6 patched 2.6
- [UBOOT] set pullup by default on inputs
Modified: trunk/Makefile
===================================================================
--- trunk/Makefile 2008-02-10 14:50:48 UTC (rev 761)
+++ trunk/Makefile 2008-02-11 17:04:07 UTC (rev 762)
@@ -26,7 +26,7 @@
BUILDROOT_NAME=buildroot
BUILDROOT_FILE_PATH:=downloads
-BUILDROOT_SITE:=ftp://ftp2.armadeus.com/armadeus/download
+BUILDROOT_SITE:=http://downloads.sourceforge.net/armadeus
BUILDROOT_VERSION:=20071027
BUILDROOT_SOURCE:=buildroot-$(BUILDROOT_VERSION).tar.bz2
Modified: trunk/patches/038-buildroot-fakeroot.diff
===================================================================
--- trunk/patches/038-buildroot-fakeroot.diff 2008-02-10 14:50:48 UTC (rev 761)
+++ trunk/patches/038-buildroot-fakeroot.diff 2008-02-11 17:04:07 UTC (rev 762)
@@ -6,7 +6,7 @@
FAKEROOT_VERSION:=1.8.2
FAKEROOT_SOURCE:=fakeroot_$(FAKEROOT_VERSION).tar.gz
-FAKEROOT_SITE:=http://ftp.debian.org/debian/pool/main/f/fakeroot
-+FAKEROOT_SITE:=ftp://ftp2.armadeus.com/armadeus/download
++FAKEROOT_SITE:=http://downloads.sourceforge.net/armadeus
FAKEROOT_CAT:=$(ZCAT)
FAKEROOT_SOURCE_DIR:=$(BUILD_DIR)/fakeroot-$(FAKEROOT_VERSION)
FAKEROOT_DIR1:=$(TOOL_BUILD_DIR)/fakeroot-$(FAKEROOT_VERSION)-host
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <th...@us...> - 2008-02-10 14:50:59
|
Revision: 761
http://armadeus.svn.sourceforge.net/armadeus/?rev=761&view=rev
Author: thom25
Date: 2008-02-10 06:50:48 -0800 (Sun, 10 Feb 2008)
Log Message:
-----------
fix compilation errors
Modified Paths:
--------------
trunk/firmware/BRAMTest/BRAMTest.vhdl
trunk/firmware/BRAMTest/BRAMTest_APF.ucf
trunk/firmware/BRAMTest/BRAMtest.ise
Modified: trunk/firmware/BRAMTest/BRAMTest.vhdl
===================================================================
--- trunk/firmware/BRAMTest/BRAMTest.vhdl 2008-02-10 14:33:27 UTC (rev 760)
+++ trunk/firmware/BRAMTest/BRAMTest.vhdl 2008-02-10 14:50:48 UTC (rev 761)
@@ -1,156 +1,156 @@
-----------------------------------------------------------------------------------
--- Company: Armadeus Project
--- Engineer: michael lerjen
---
--- Create Date: 22:04:02 04/12/2006
--- Design Name:
--- Module Name:
--- Project Name:
--- Target Devices:
--- Tool versions:
--- Description:
---
--- Dependencies:
---
--- Revision:
--- Revision 0.01 - File Created
--- Additional Comments:
---
-----------------------------------------------------------------------------------
-
-library IEEE;
-use IEEE.STD_LOGIC_1164.ALL;
-use IEEE.STD_LOGIC_ARITH.ALL;
-use IEEE.STD_LOGIC_UNSIGNED.ALL;
-library UNISIM;
-use UNISIM.VComponents.all;
-
-entity BRAMTest_Top is -- this is the top
- Port ( DataxD : inout std_logic_vector(15 downto 0);
- AddrxDI : in std_logic_vector(9 downto 0);
- CSxBI : in std_logic;
- WRxBI : in std_logic;
- RDxBI : in std_logic;
- ClkxCI : in std_logic
- --ResetxRB : in std_logic
- );
-end BRAMTest_Top;
-
-
-
-architecture hierarchical of BRAMTest_Top is
-signal DataOutRAMxD : std_logic_vector(15 downto 0);
-signal CSBRAM : std_logic := '0';
-signal WRBRAM : std_logic := '0';
-signal CLKBRAM : std_logic := '0';
-
-begin
-
-
- -- RAMB16_S18: Virtex-II/II-Pro, Spartan-3 1k x 16 + 2 Parity bits Single-Port RAM
- -- Xilinx HDL Language Template version 6.3.1i
-
- RAMB16_S18_inst : RAMB16_S18
- generic map (
- INIT => X"00000", -- Value of output RAM registers at startup
- SRVAL => X"00000", -- Ouput value upon SSR assertion
- WRITE_MODE => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
- INIT_00 => X"1100001100000000000000000000000000000000000000000000000010010110",
- INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_0C => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_0D => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_0E => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_0F => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_10 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_11 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_12 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_13 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000",
- INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000",
- INITP_00 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INITP_01 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INITP_02 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INITP_03 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INITP_04 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INITP_05 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INITP_06 => X"0000000000000000000000000000000000000000000000000000000000000000",
- INITP_07 => X"0000000000000000000000000000000000000000000000000000000000000000")
- port map (
- DO => DataOutRAMxD, -- 16-bit Data Output
- DOP => open, -- 2-bit parity Output
- ADDR => AddrxDI, -- 10-bit Address Input
- CLK => CLKBRAM, -- Clock
- DI => DataxD, -- 16-bit Data Input
- DIP => "00", -- 2-bit parity Input
- EN => CSBRAM , -- RAM Enable Input
- SSR => '0', -- Synchronous Set/Reset Input
- WE => WRBRAM -- Write Enable Input
- );
-
-
- OutputEnable: process (DataOutRAMxD, CSxBI, RDxBI)
- begin
- if (CSxBI = '0' and RDxBI = '0') then -- fix me
- DataxD <= DataOutRAMxD;
- else
- DataxD <= (others => 'Z'); --
- end if;
- end process OutputEnable;
-
- CSBRAM <= not CSxBI;
- WRBRAM <= not WRxBI;
- CLKBRAM <= ClkxCI;
- -- End of RAMB16_S18_inst instantiation
-end hierarchical;
+----------------------------------------------------------------------------------
+-- Company: Armadeus Project
+-- Engineer: michael lerjen
+--
+-- Create Date: 22:04:02 04/12/2006
+-- Design Name:
+-- Module Name:
+-- Project Name:
+-- Target Devices:
+-- Tool versions:
+-- Description:
+--
+-- Dependencies:
+--
+-- Revision:
+-- Revision 0.01 - File Created
+-- Additional Comments:
+--
+----------------------------------------------------------------------------------
+
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_ARITH.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+library UNISIM;
+use UNISIM.VComponents.all;
+
+entity BRAMTest_Top is -- this is the top
+ Port ( DataxD : inout std_logic_vector(15 downto 0);
+ AddrxDI : in std_logic_vector(12 downto 0);
+ CSxBI : in std_logic;
+ WRxBI : in std_logic;
+ RDxBI : in std_logic;
+ ClkxCI : in std_logic
+ --ResetxRB : in std_logic
+ );
+end BRAMTest_Top;
+
+
+
+architecture hierarchical of BRAMTest_Top is
+signal DataOutRAMxD : std_logic_vector(15 downto 0);
+signal CSBRAM : std_logic := '0';
+signal WRBRAM : std_logic := '0';
+signal CLKBRAM : std_logic := '0';
+
+begin
+
+
+ -- RAMB16_S18: Virtex-II/II-Pro, Spartan-3 1k x 16 + 2 Parity bits Single-Port RAM
+ -- Xilinx HDL Language Template version 6.3.1i
+
+ RAMB16_S18_inst : RAMB16_S18
+ generic map (
+ INIT => X"00000", -- Value of output RAM registers at startup
+ SRVAL => X"00000", -- Ouput value upon SSR assertion
+ WRITE_MODE => "WRITE_FIRST", -- WRITE_FIRST, READ_FIRST or NO_CHANGE
+ INIT_00 => X"1100001100000000000000000000000000000000000000000000000010010110",
+ INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_06 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_07 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_08 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_09 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_0A => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_0B => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_0C => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_0D => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_0E => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_0F => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_10 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_11 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_12 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_13 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INITP_00 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INITP_01 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INITP_02 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INITP_03 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INITP_04 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INITP_05 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INITP_06 => X"0000000000000000000000000000000000000000000000000000000000000000",
+ INITP_07 => X"0000000000000000000000000000000000000000000000000000000000000000")
+ port map (
+ DO => DataOutRAMxD, -- 16-bit Data Output
+ DOP => open, -- 2-bit parity Output
+ ADDR => AddrxDI(9 downto 0), -- 10-bit Address Input
+ CLK => CLKBRAM, -- Clock
+ DI => DataxD, -- 16-bit Data Input
+ DIP => "00", -- 2-bit parity Input
+ EN => CSBRAM , -- RAM Enable Input
+ SSR => '0', -- Synchronous Set/Reset Input
+ WE => WRBRAM -- Write Enable Input
+ );
+
+
+ OutputEnable: process (DataOutRAMxD, CSxBI, RDxBI)
+ begin
+ if (CSxBI = '0' and RDxBI = '0') then -- fix me
+ DataxD <= DataOutRAMxD;
+ else
+ DataxD <= (others => 'Z'); --
+ end if;
+ end process OutputEnable;
+
+ CSBRAM <= not CSxBI;
+ WRBRAM <= not WRxBI;
+ CLKBRAM <= ClkxCI;
+ -- End of RAMB16_S18_inst instantiation
+end hierarchical;
Modified: trunk/firmware/BRAMTest/BRAMTest_APF.ucf
===================================================================
--- trunk/firmware/BRAMTest/BRAMTest_APF.ucf 2008-02-10 14:33:27 UTC (rev 760)
+++ trunk/firmware/BRAMTest/BRAMTest_APF.ucf 2008-02-10 14:50:48 UTC (rev 761)
@@ -1,65 +1,42 @@
-NET "AddrxDI<10>" LOC = "P33" | IOSTANDARD = LVCMOS33 ;
-NET "AddrxDI<11>" LOC = "P35" | IOSTANDARD = LVCMOS33 ;
-NET "AddrxDI<12>" LOC = "P36" | IOSTANDARD = LVCMOS33 ;
-NET "User<0>" LOC = "P92" | IOSTANDARD = LVCMOS33 ;
-NET "User<1>" LOC = "P93" | IOSTANDARD = LVCMOS33 ;
-NET "User<2>" LOC = "P95" | IOSTANDARD = LVCMOS33 ;
-NET "User<3>" LOC = "P96" | IOSTANDARD = LVCMOS33 ;
-NET "User<4>" LOC = "P97" | IOSTANDARD = LVCMOS33 ;
-NET "User<5>" LOC = "P98" | IOSTANDARD = LVCMOS33 ;
-NET "User<6>" LOC = "P99" | IOSTANDARD = LVCMOS33 ;
-NET "User<7>" LOC = "P100" | IOSTANDARD = LVCMOS33 ;
-NET "User<8>" LOC = "P102" | IOSTANDARD = LVCMOS33 ;
-NET "User<9>" LOC = "P103" | IOSTANDARD = LVCMOS33 ;
-NET "User<10>" LOC = "P104" | IOSTANDARD = LVCMOS33 ;
-NET "User<11>" LOC = "P105" | IOSTANDARD = LVCMOS33 ;
-NET "User<12>" LOC = "P107" | IOSTANDARD = LVCMOS33 ;
-NET "User<13>" LOC = "P108" | IOSTANDARD = LVCMOS33 ;
-NET "User<14>" LOC = "P112" | IOSTANDARD = LVCMOS33 ;
-NET "User<15>" LOC = "P113" | IOSTANDARD = LVCMOS33 ;
-NET "User<16>" LOC = "P116" | IOSTANDARD = LVCMOS33 ;
-NET "User<17>" LOC = "P118" | IOSTANDARD = LVCMOS33 ;
-NET "User<18>" LOC = "P119" | IOSTANDARD = LVCMOS33 ;
-NET "User<19>" LOC = "P122" | IOSTANDARD = LVCMOS33 ;
-NET "ClkxCI" TNM_NET = "ClkxCI";
-TIMESPEC "TS_ClkxCI" = PERIOD "ClkxCI" 10 ns HIGH 50 %;
-
-#PACE: Start of Constraints generated by PACE
-
-#PACE: Start of PACE I/O Pin Assignments
-NET "AddrxDI<0>" LOC = "P21" | IOSTANDARD = LVCMOS33 ;
-NET "AddrxDI<1>" LOC = "P23" | IOSTANDARD = LVCMOS33 ;
-NET "AddrxDI<2>" LOC = "P24" | IOSTANDARD = LVCMOS33 ;
-NET "AddrxDI<3>" LOC = "P25" | IOSTANDARD = LVCMOS33 ;
-NET "AddrxDI<4>" LOC = "P26" | IOSTANDARD = LVCMOS33 ;
-NET "AddrxDI<5>" LOC = "P27" | IOSTANDARD = LVCMOS33 ;
-NET "AddrxDI<6>" LOC = "P28" | IOSTANDARD = LVCMOS33 ;
-NET "AddrxDI<7>" LOC = "P30" | IOSTANDARD = LVCMOS33 ;
-NET "AddrxDI<8>" LOC = "P31" | IOSTANDARD = LVCMOS33 ;
-NET "AddrxDI<9>" LOC = "P32" | IOSTANDARD = LVCMOS33 ;
-NET "ClkxCI" LOC = "P55" | IOSTANDARD = LVCMOS33 ;
-NET "CSxBI" LOC = "P59" | IOSTANDARD = LVCMOS33 ;
-NET "DataxD<0>" LOC = "P1" | IOSTANDARD = LVCMOS33 ;
-NET "DataxD<10>" LOC = "P13" | IOSTANDARD = LVCMOS33 ;
-NET "DataxD<11>" LOC = "P14" | IOSTANDARD = LVCMOS33 ;
-NET "DataxD<12>" LOC = "P15" | IOSTANDARD = LVCMOS33 ;
-NET "DataxD<13>" LOC = "P17" | IOSTANDARD = LVCMOS33 ;
-NET "DataxD<14>" LOC = "P18" | IOSTANDARD = LVCMOS33 ;
-NET "DataxD<15>" LOC = "P20" | IOSTANDARD = LVCMOS33 ;
-NET "DataxD<1>" LOC = "P2" | IOSTANDARD = LVCMOS33 ;
-NET "DataxD<2>" LOC = "P4" | IOSTANDARD = LVCMOS33 ;
-NET "DataxD<3>" LOC = "P5" | IOSTANDARD = LVCMOS33 ;
-NET "DataxD<4>" LOC = "P6" | IOSTANDARD = LVCMOS33 ;
-NET "DataxD<5>" LOC = "P7" | IOSTANDARD = LVCMOS33 ;
-NET "DataxD<6>" LOC = "P8" | IOSTANDARD = LVCMOS33 ;
-NET "DataxD<7>" LOC = "P10" | IOSTANDARD = LVCMOS33 ;
-NET "DataxD<8>" LOC = "P11" | IOSTANDARD = LVCMOS33 ;
-NET "DataxD<9>" LOC = "P12" | IOSTANDARD = LVCMOS33 ;
-NET "WRxBI" LOC = "P60" | IOSTANDARD = LVCMOS33 ;
-NET "RDxBI" LOC = "P63" | IOSTANDARD = LVCMOS33 ;
-
-#PACE: Start of PACE Area Constraints
-
-#PACE: Start of PACE Prohibit Constraints
-
-#PACE: End of Constraints generated by PACE
+NET "ClkxCI" TNM_NET = "ClkxCI";
+TIMESPEC "TS_ClkxCI" = PERIOD "ClkxCI" 10 ns HIGH 50 %;
+
+#PACE: Start of Constraints generated by PACE
+
+#PACE: Start of PACE I/O Pin Assignments
+NET "AddrxDI<0>" LOC = "P21" | IOSTANDARD = LVCMOS33 ;
+NET "AddrxDI<1>" LOC = "P23" | IOSTANDARD = LVCMOS33 ;
+NET "AddrxDI<2>" LOC = "P24" | IOSTANDARD = LVCMOS33 ;
+NET "AddrxDI<3>" LOC = "P25" | IOSTANDARD = LVCMOS33 ;
+NET "AddrxDI<4>" LOC = "P26" | IOSTANDARD = LVCMOS33 ;
+NET "AddrxDI<5>" LOC = "P27" | IOSTANDARD = LVCMOS33 ;
+NET "AddrxDI<6>" LOC = "P28" | IOSTANDARD = LVCMOS33 ;
+NET "AddrxDI<7>" LOC = "P30" | IOSTANDARD = LVCMOS33 ;
+NET "AddrxDI<8>" LOC = "P31" | IOSTANDARD = LVCMOS33 ;
+NET "AddrxDI<9>" LOC = "P32" | IOSTANDARD = LVCMOS33 ;
+NET "ClkxCI" LOC = "P55" | IOSTANDARD = LVCMOS33 ;
+NET "CSxBI" LOC = "P59" | IOSTANDARD = LVCMOS33 ;
+NET "DataxD<0>" LOC = "P1" | IOSTANDARD = LVCMOS33 ;
+NET "DataxD<10>" LOC = "P13" | IOSTANDARD = LVCMOS33 ;
+NET "DataxD<11>" LOC = "P14" | IOSTANDARD = LVCMOS33 ;
+NET "DataxD<12>" LOC = "P15" | IOSTANDARD = LVCMOS33 ;
+NET "DataxD<13>" LOC = "P17" | IOSTANDARD = LVCMOS33 ;
+NET "DataxD<14>" LOC = "P18" | IOSTANDARD = LVCMOS33 ;
+NET "DataxD<15>" LOC = "P20" | IOSTANDARD = LVCMOS33 ;
+NET "DataxD<1>" LOC = "P2" | IOSTANDARD = LVCMOS33 ;
+NET "DataxD<2>" LOC = "P4" | IOSTANDARD = LVCMOS33 ;
+NET "DataxD<3>" LOC = "P5" | IOSTANDARD = LVCMOS33 ;
+NET "DataxD<4>" LOC = "P6" | IOSTANDARD = LVCMOS33 ;
+NET "DataxD<5>" LOC = "P7" | IOSTANDARD = LVCMOS33 ;
+NET "DataxD<6>" LOC = "P8" | IOSTANDARD = LVCMOS33 ;
+NET "DataxD<7>" LOC = "P10" | IOSTANDARD = LVCMOS33 ;
+NET "DataxD<8>" LOC = "P11" | IOSTANDARD = LVCMOS33 ;
+NET "DataxD<9>" LOC = "P12" | IOSTANDARD = LVCMOS33 ;
+NET "WRxBI" LOC = "P60" | IOSTANDARD = LVCMOS33 ;
+NET "RDxBI" LOC = "P63" | IOSTANDARD = LVCMOS33 ;
+
+#PACE: Start of PACE Area Constraints
+
+#PACE: Start of PACE Prohibit Constraints
+
+#PACE: End of Constraints generated by PACE
Modified: trunk/firmware/BRAMTest/BRAMtest.ise
===================================================================
(Binary files differ)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <th...@us...> - 2008-02-10 14:33:25
|
Revision: 760
http://armadeus.svn.sourceforge.net/armadeus/?rev=760&view=rev
Author: thom25
Date: 2008-02-10 06:33:27 -0800 (Sun, 10 Feb 2008)
Log Message:
-----------
add servo controler from Yvan Roch
Added Paths:
-----------
trunk/firmware/servo/
trunk/firmware/servo/CLK_GENERATOR.vhd
trunk/firmware/servo/README.txt
trunk/firmware/servo/SERVO_top.vhd
trunk/firmware/servo/pwm_module.vhd
trunk/firmware/servo/servo.ucf
Added: trunk/firmware/servo/CLK_GENERATOR.vhd
===================================================================
--- trunk/firmware/servo/CLK_GENERATOR.vhd (rev 0)
+++ trunk/firmware/servo/CLK_GENERATOR.vhd 2008-02-10 14:33:27 UTC (rev 760)
@@ -0,0 +1,84 @@
+----------------------------------------------------------------------------------
+-- Company: Armadeus Project
+-- Engineer: Yvan Roch
+--
+-- Create Date: 2007-12-03
+-- Design Name:
+-- Module Name: CLK_GENERATOR - behavioral
+-- Project Name:
+-- Target Devices: Spartan3 Armadeus
+-- Tool versions: ISE 9.2.02i
+-- Description: Servo Contoller
+--
+-- Dependencies:
+--
+-- Revision:
+-- Revision 0.01 - File Created
+-- Additional Comments:
+-- Ce module est un diviseur d'horloge, il fourni un signal d'horloge a 4MHz
+-- et maintient le compteur 16 bits utilise par tous les modules PWM
+----------------------------------------------------------------------------------
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_ARITH.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+entity CLK_GENERATOR is
+ port (clkIn : in STD_LOGIC; -- Entree de l'horloge a 96 MHz provenant du MC9328MXL
+ counterOut16Bits : out std_logic_vector(15 downto 0); -- Compteur 16 bits utilise par tous les modules PWM
+ writeValue : out STD_LOGIC); -- Validation de la mise a jour des registres internes des modules PWM
+end entity CLK_GENERATOR;
+
+architecture behavioral of CLK_GENERATOR is
+ signal clkInternalOut : STD_LOGIC := '0'; -- Registre interne du generateur 4MHz
+ signal counter : std_logic_vector(15 downto 0) := X"0000"; -- Registre interne du compteur
+
+begin
+ -- generation du signal 4MHz
+ process (clkIn)
+ variable countMax : integer; -- Valeur numerique du countMax
+ variable count : integer;
+
+ begin
+ -- Sur front montant de clkIn
+ if (clkIn'event) and (clkIn = '1') then
+ -- Compte le nombre de cycle d'horloge
+ count := count + 1;
+ -- Pour une frequence de sortie de 4MHz
+ countMax := 24;
+ -- Si countMax/2 est atteint
+ -- La frequence de sortie vaut: 1/((1/96000000)*countMax)
+ if (count = countMax/2) then
+ clkInternalOut <= not clkInternalOut;
+ count := 0;
+ end if;
+ end if;
+ end process;
+
+ -- gestion du compteur 16 bits
+ process (clkInternalOut)
+
+ begin
+ -- Sur front montant de clkInternalOut
+ if (clkInternalOut'event and clkInternalOut = '1') then
+ counter <= counter + 1;
+ -- Sortie de la valeur du compteur
+ counterOut16Bits <= counter;
+ -- Generation du signal writeValue
+ if (counter > "1111100000110000") then
+ -- Debut de la generation de l'impulsion PWM (partie constante de 0.5ms)
+ -- a la valeur 63536 du counter
+ -- => Mise a jour des registres interdite
+ writeValue <= '0';
+ elsif (counter < "0001111111111110") then
+ -- Generation impulsions PWM en cours
+ -- valeur maximale du compteur 12 bits
+ -- => Mise a jour des registres interdite
+ writeValue <= '0';
+ else
+ -- Dans les autre cas, les sorties PWM sont a 0 => Mise jour des registres possible
+ writeValue <= '1';
+ end if;
+ end if;
+ end process;
+end architecture behavioral;
Added: trunk/firmware/servo/README.txt
===================================================================
--- trunk/firmware/servo/README.txt (rev 0)
+++ trunk/firmware/servo/README.txt 2008-02-10 14:33:27 UTC (rev 760)
@@ -0,0 +1,166 @@
+Ce projet est un firmware FPGA de contolleur de servo de telecommande.
+Une description de ce genre de servos peut \xEAtre trouve a:
+http://fribotte.free.fr/bdtech/pic/pic_et_servo.html
+Il est inspire du projet "Atmel AVR 2004 Design Contest Entry Project Number A3722"
+de Circuit Cellar par Eric Gagnon :
+http://www.circuitcellar.com/avr2004/HA3722.html
+Ce controleur de servo permet de controler jusqu'a 24 servos.
+Il est facilement extensible a plus.
+
+L'utilisation d'un FPGA est justifie car avec les sorties classiques d'un microcontroleur,
+meme avec l'utilisation d'un timer hardware et d'une programmation en assembleur,
+le repect precis des largeurs des impulsions PWM est quasi impossible surtout avec
+un nombre eleve de servos a commander.
+Un FPGA permet de realiser une concurence vraie dans la generation des signaux.
+D'ailleurs avec ce controleur, il n'y a pas de fretillement des servos quelque
+soient leur position les uns par rapport aux autres, ce qui n'est pas le cas
+dans une solution classique a microcontoleur.
+
+1 - CREATION D'UN NOUVEAU PROJET DANS XILINX ISE
+Version Xilinx ISE 9.2.04i
+Creer le nouveau projet:
+File->New Project
+Selectionner Top Level Source: HDL (Harware Description Language)
+Pour le FPGA de la carte Armadeus choisir:
+Family: Spartan3
+Device: XC3S200
+Package: TQ144
+Speed: -4
+Top Level Source: HDL
+Synthesis Tool: XST
+Simulator: ISE Simulator (VHDL/Verilog)
+Preferred Language: VHDL
+
+Importer les fichiers sources dans le projet ISE:
+Projet->Add Source
+Selectionner les fichiers:
+SERVO_top.vhd
+CLK_GENERATOR.vhd
+pwm_module.vhd
+servo.ucf
+
+2 - SYNTHESE - CREATION DU FICHIER FIRMWARE SERVO_top.bit
+Generate Programming File->clic droit->Run
+
+3 - CHARGEMENT DU FIRMWARE SERVO_top.bit DANS L'APF9328
+Se placer dans le repertoire qui contient le fichier SERVO_top.bit
+
+Etablir une connexion RS232 avec l'APF9328 comme le decrit:
+http://www.armadeus.com/wiki/index.php?title=Connection_with_U-Boot_on_Linux
+
+Mettre sous tension l'APF9328
+Au message Hit any key to stop autoboot:
+Appuyer sur une touche pour obtenir le prompt:
+BIOS>
+
+Choisir l'emplacement memoire de l'upload:
+loadb 08000000
+
+Le message:
+## Ready for binary (kermit) download to 0x08000000 at 115200 bps...
+apparait.
+
+Passer en mode commande Kermit:
+Ctrl+Altgr+\+c
+
+Upload du fichier:
+send SERVO_top.bit
+
+Kermit upload le fichier.
+Taper c pour reconnecter le terminal.
+
+Flasher le firmware:
+run flash_firmware
+
+Charger le firmware dans le FPGA:
+fpga load 0 ${firmware_addr} ${firmware_len}
+
+Pour un chargement automatique au boot:
+setenv firmware_autoload 1
+saveenv
+
+Le firmware est maintenant charge et utilisable.
+
+4 - UTILISATION DU FIRMWARE
+Actuellement seul le firmware est ecrit.
+Les servos sont a brancher sur les ports de la DevLight suivants via un buffer
+74HCT244:
+L24N_3/P87 -> servo 00
+L24P_3/P86 -> servo 01
+L23N_3/P85 -> servo 02
+L40P_2/P92 -> servo 03
+L40N_3/P90 -> servo 04
+L40P_3/P89 -> servo 05
+L24N_2/P96 -> servo 06
+L24P_2/P95 -> servo 07
+L40N_2/P93 -> servo 08
+L22P_2/P99 -> servo 09
+L23N_2/P98 -> servo 10
+L23P_2/P97 -> servo 11
+L21N_2/P103 -> servo 12
+L21P_2/P102 -> servo 13
+L22N_2/P100 -> servo 14
+L01P_2/P107 -> servo 15
+L20N_2/P105 -> servo 16
+L20P_2/P104 -> servo 17
+L32N_0/P128 -> servo 18
+L32P_0/P127 -> servo 19
+L01N_2/P108 -> servo 20
+L31P_0/P129 -> servo 21
+L31N_0/P130 -> servo 22
+L32N_1/P125 -> servo 23
+
+Commande BIOS pour le controle des servos:
+Au chargement du firmware, tous les servos sont desactives.
+
+Activation des servos 0-15:
+mw.w 12000040 FFFF
+
+Activation des servos 16-23:
+mw.w 12000042 00FF
+
+Desactivation des servos 0-15:
+mw.w 12000040 0000
+
+Desactivation des servos 16-23:
+mw.w 12000042 0000
+
+Au chargement du firmware, tous les servos sont en position mediane.
+Positionnement du servo 0 a la position maximale anti-horaire:
+mw.w 12000000 0000
+Positionnement du servo 0 a la position maximale horaire:
+mw.w 12000000 0FFF
+Positionnement du servo 0 a la position mediane:
+mw.w 12000000 0800
+
+Voici les adresses a utiliser pour les autres servos:
+0x12000000 -> servo 0
+0x12000002 -> servo 1
+0x12000004 -> servo 2
+0x12000006 -> servo 3
+0x12000008 -> servo 4
+0x1200000A -> servo 5
+0x1200000C -> servo 6
+0x1200000E -> servo 7
+0x12000010 -> servo 8
+0x12000012 -> servo 9
+0x12000014 -> servo 10
+0x12000016 -> servo 11
+0x12000018 -> servo 12
+0x1200001A -> servo 13
+0x1200001C -> servo 14
+0x1200001E -> servo 15
+0x12000020 -> servo 16
+0x12000022 -> servo 17
+0x12000024 -> servo 18
+0x12000026 -> servo 19
+0x12000028 -> servo 20
+0x1200002A -> servo 21
+0x1200002C -> servo 22
+0x1200002E -> servo 23
+
+5 - ROAD MAP
+De futurs developpements sont en cours:
+ - Driver Linux pour le firmware FPGA,
+ - Daemon de commande des servos via le driver Linux,
+ - Client reseau pour daemon de commande...
Added: trunk/firmware/servo/SERVO_top.vhd
===================================================================
--- trunk/firmware/servo/SERVO_top.vhd (rev 0)
+++ trunk/firmware/servo/SERVO_top.vhd 2008-02-10 14:33:27 UTC (rev 760)
@@ -0,0 +1,608 @@
+----------------------------------------------------------------------------------
+-- Company: Armadeus Project
+-- Engineer: Yvan ROCH
+--
+-- Create Date: 2007-12-03
+-- Design Name:
+-- Module Name: SERVO_top - structural
+-- Project Name: SERVO
+-- Target Devices: Spartan3 Armadeus
+-- Tool versions: ISE 9.2.02i
+-- Description: Servo Contoller
+--
+-- Dependencies:
+--
+-- Revision:
+-- Revision 0.01 - File Created
+-- Additional Comments:
+-- Ce projet est un firmware FPGA de contolleur de servo de telecommande
+-- Il est inspirer du projet "Atmel AVR 2004 Design Contest Entry Project Number A3722"
+-- de Circuit Cellar par Eric Gagnon :
+-- http://www.circuitcellar.com/avr2004/HA3722.html
+--
+-- Ce controleur de servo permet de controle jusqu'a 24 servos.
+-- Il est facilement extensible a plus.
+--
+-- Chaque registre de servo (0x12000000 - 0x1200002E) est un registre 16 bits
+-- avec 12 bits significatifs contenant la position du servo concerne.
+-- 0000 ecrit a l'adresse 0x12000000 positionnera le servo 0 a la position maximale anti-horaire
+-- 0800 ecrit a l'adresse 0x12000000 positionnera le servo 0 a la position mediane
+-- 0FFF ecrit a l'adresse 0x12000000 positionnera le servo 0 a la position maximale horaire
+-- Les registres 0x12000030 et 0x12000032 sont les registres de validation des servos
+-- 0001 ecrit a l'adresse 0x12000030 activera le servo 0
+-- 0001 ecrit a l'adresse 0x12000032 activera le servo 16
+--
+-- Decodage d'adresse:
+-- 0x12000000 servo 0
+-- 0x12000002 servo 1
+-- 0x12000004 servo 2
+-- 0x12000006 servo 3
+-- 0x12000008 servo 4
+-- 0x1200000A servo 5
+-- 0x1200000C servo 6
+-- 0x1200000E servo 7
+-- 0x12000010 servo 8
+-- 0x12000012 servo 9
+-- 0x12000014 servo 10
+-- 0x12000016 servo 11
+-- 0x12000018 servo 12
+-- 0x1200001A servo 13
+-- 0x1200001C servo 14
+-- 0x1200001E servo 15
+-- 0x12000020 servo 16
+-- 0x12000022 servo 17
+-- 0x12000024 servo 18
+-- 0x12000026 servo 19
+-- 0x12000028 servo 20
+-- 0x1200002A servo 21
+-- 0x1200002C servo 22
+-- 0x1200002E servo 23
+-- 0x12000030 Registre de validation LSB
+-- 0x12000032 Registre de validation MSB
+
+--
+----------------------------------------------------------------------------------
+
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_ARITH.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+entity SERVO_top is
+ port ( -- MC9328MXL pins
+ -- Bus de donnees 16 bits
+ DataxD : inout std_logic_vector(15 downto 0);
+
+ -- Bus d'adresses A0-A12
+ -- L'adresse de base du Spartan3 est 0x12000000
+ AddrxDI : in std_logic_vector(12 downto 0);
+
+ -- Acces en ecriture (APF9328: CTRL9, Spartan3 pin 60, MC9328MXL: EB3n pin M5) Actif Bas
+ -- Ce signal du MC9328MXL est actif au niveau bas en ecriture ET en lecture
+ -- Selon le Data Sheet du MC9328MXL P4:
+ -- LSB Byte Strobe?Active low external enable byte signal that controls D [7:0].
+ -- Voir timing Write P28
+ WRxBI : in std_logic;
+
+ -- Acces en lecture (APF9328: CTRL10, Spartan3 pin 63, MC9328MXL: OEn pin R5) Actif Bas
+ -- Ce signal du MC9328MXL est actif au niveau bas en lecture UNIQUEMENT
+ -- Selon le Data Sheet du MC9328MXL P4:
+ -- Memory Output Enable?Active low output enables external data bus.
+ -- Voir timing Read P26
+ RDxBI : in std_logic;
+
+ -- Remarque sur WRxBI et RDxBI:
+ -- RDxBI est en fait OEn, actif lors de la lecture UNIQUEMENT sur le bus externe du MC9328MXL
+ -- WRxBI est en fait EB3n, actif lors de l'acc\xE8s a l'octet de poids faible du bus de donn\xE9es en lecture ET en ecriture
+ -- Ce n'est pas tr\xE8s clair car ces deux signaux ne sont pas mutuellement exclusifs!!!
+ -- En resum\xE9:
+ -- Lors d'une lecture: RDxBI=0 et WRxBI=0 (les 2 actifs a 0)
+ -- Lors d'une ecriture: RDxBI=1 et WRxBI=0 (les 2 actifs a 0)
+
+ -- Chip select (APF9328: CTRL1, Spartan3 pin 59, MC9328MXL: CS1n M8) Actif Bas
+ CSxBI : in std_logic;
+
+ -- Entree de l'horloge a 96 MHz provenant du MC9328MXL sur la broche P55 du Spartan3
+ clkInImx96MHz : in STD_LOGIC;
+
+ -- Declaration des 24 registres de 1 bit contenant la sortie PWM
+ pwmOut : out std_logic_vector(23 downto 0));
+
+end entity SERVO_top;
+
+architecture structural of SERVO_top is
+ -- Declaration du type reg12Array24 qui contient 24 signaux de 12 bits
+ -- Ce type est utilise pour les 24 registres de position des servos
+ type reg12Array24 is array(0 to 23) of std_logic_vector(11 downto 0);
+
+ -- Declaration des 24 registres de 16 bits contenant la position des servos
+ -- Initialisation en position mediane des servos
+ -- Position Min: 0
+ -- Position Max: FFF
+ signal servosReg : reg12Array24 := (X"800",X"800",X"800",X"800",X"800",X"800",
+ X"800",X"800",X"800",X"800",X"800",X"800",X"800",X"800",X"800",X"800",X"800",
+ X"800",X"800",X"800",X"800",X"800",X"800",X"800");
+ -- Declaration des 24 registres de 1 bit contenant la validation des servos
+ -- Initailisation: tous les servo sont desactives
+ signal enableReg : std_logic_vector(31 downto 0) := X"00000000";
+
+ -- Declaration du diviseur d'horloge
+ component CLK_GENERATOR
+ -- Declaration des ports utilises
+ port (clkIn : in STD_LOGIC;
+ counterOut16Bits : out std_logic_vector(15 downto 0);
+ writeValue : out STD_LOGIC);
+ end component CLK_GENERATOR;
+
+ -- Declaration du generateur PWM
+ component PWM_MODULE
+ -- Declaration des ports utilises
+ Port (count : in std_logic_vector(15 downto 0);
+ servosReg : in std_logic_vector( 11 downto 0);
+ enableReg: in std_logic;
+ pwmOut : out std_logic;
+ writeValue : in std_logic);
+ end component PWM_MODULE;
+
+ -- Declaration des signaux
+ -- Reset asynchrone actif bas
+ signal resetn : std_logic;
+ -- Signal de synchro de lecture
+ signal readAccessPulse : std_logic;
+ -- Signal buffer pour compteur principal
+ signal count : std_logic_vector(15 downto 0);
+ -- Signal en provenance de compteur principal signifiant que les valeurs
+ -- servosReg(X) et enableReg(X) peuvent mis a jour sans perturber la generation
+ -- de la partie utile de l'impulsion
+ signal writeValue : std_logic;
+
+ -- Definition de l'architecture
+ begin
+ -- Instantiation du generateur d'horloge
+ clockGen : CLK_GENERATOR
+ -- Mapping des ports du generateur d'horloge
+ port map (clkIn => clkInImx96MHz,
+ counterOut16Bits => count,
+ writeValue => writeValue);
+-- testOut => testOut);
+ -- Instantiation des 24 modules PWM
+ PWM0 : PWM_MODULE
+ -- Mapping des ports du module PWM
+ port map (count => count,
+ servosReg => servosReg(0),
+ enableReg => enableReg(0),
+ pwmOut => pwmOut(0),
+ writeValue => writeValue);
+ PWM1 : PWM_MODULE
+ -- Mapping des ports du module PWM
+ port map (count => count,
+ servosReg => servosReg(1),
+ enableReg => enableReg(1),
+ pwmOut => pwmOut(1),
+ writeValue => writeValue);
+ PWM2 : PWM_MODULE
+ -- Mapping des ports du module PWM
+ port map (count => count,
+ servosReg => servosReg(2),
+ enableReg => enableReg(2),
+ pwmOut => pwmOut(2),
+ writeValue => writeValue);
+ PWM3 : PWM_MODULE
+ -- Mapping des ports du module PWM
+ port map (count => count,
+ servosReg => servosReg(3),
+ enableReg => enableReg(3),
+ pwmOut => pwmOut(3),
+ writeValue => writeValue);
+ PWM4 : PWM_MODULE
+ -- Mapping des ports du module PWM
+ port map (count => count,
+ servosReg => servosReg(4),
+ enableReg => enableReg(4),
+ pwmOut => pwmOut(4),
+ writeValue => writeValue);
+ PWM5 : PWM_MODULE
+ -- Mapping des ports du module PWM
+ port map (count => count,
+ servosReg => servosReg(5),
+ enableReg => enableReg(5),
+ pwmOut => pwmOut(5),
+ writeValue => writeValue);
+ PWM6 : PWM_MODULE
+ -- Mapping des ports du module PWM
+ port map (count => count,
+ servosReg => servosReg(6),
+ enableReg => enableReg(6),
+ pwmOut => pwmOut(6),
+ writeValue => writeValue);
+ PWM7 : PWM_MODULE
+ -- Mapping des ports du module PWM
+ port map (count => count,
+ servosReg => servosReg(7),
+ enableReg => enableReg(7),
+ pwmOut => pwmOut(7),
+ writeValue => writeValue);
+ PWM8 : PWM_MODULE
+ -- Mapping des ports du module PWM
+ port map (count => count,
+ servosReg => servosReg(8),
+ enableReg => enableReg(8),
+ pwmOut => pwmOut(8),
+ writeValue => writeValue);
+ PWM9 : PWM_MODULE
+ -- Mapping des ports du module PWM
+ port map (count => count,
+ servosReg => servosReg(9),
+ enableReg => enableReg(9),
+ pwmOut => pwmOut(9),
+ writeValue => writeValue);
+ PWM10 : PWM_MODULE
+ -- Mapping des ports du module PWM
+ port map (count => count,
+ servosReg => servosReg(10),
+ enableReg => enableReg(10),
+ pwmOut => pwmOut(10),
+ writeValue => writeValue);
+ PWM11 : PWM_MODULE
+ -- Mapping des ports du module PWM
+ port map (count => count,
+ servosReg => servosReg(11),
+ enableReg => enableReg(11),
+ pwmOut => pwmOut(11),
+ writeValue => writeValue);
+ PWM12 : PWM_MODULE
+ -- Mapping des ports du module PWM
+ port map (count => count,
+ servosReg => servosReg(12),
+ enableReg => enableReg(12),
+ pwmOut => pwmOut(12),
+ writeValue => writeValue);
+ PWM13 : PWM_MODULE
+ -- Mapping des ports du module PWM
+ port map (count => count,
+ servosReg => servosReg(13),
+ enableReg => enableReg(13),
+ pwmOut => pwmOut(13),
+ writeValue => writeValue);
+ PWM14 : PWM_MODULE
+ -- Mapping des ports du module PWM
+ port map (count => count,
+ servosReg => servosReg(14),
+ enableReg => enableReg(14),
+ pwmOut => pwmOut(14),
+ writeValue => writeValue);
+ PWM15 : PWM_MODULE
+ -- Mapping des ports du module PWM
+ port map (count => count,
+ servosReg => servosReg(15),
+ enableReg => enableReg(15),
+ pwmOut => pwmOut(15),
+ writeValue => writeValue);
+ PWM16 : PWM_MODULE
+ -- Mapping des ports du module PWM
+ port map (count => count,
+ servosReg => servosReg(16),
+ enableReg => enableReg(16),
+ pwmOut => pwmOut(16),
+ writeValue => writeValue);
+ PWM17 : PWM_MODULE
+ -- Mapping des ports du module PWM
+ port map (count => count,
+ servosReg => servosReg(17),
+ enableReg => enableReg(17),
+ pwmOut => pwmOut(17),
+ writeValue => writeValue);
+ PWM18 : PWM_MODULE
+ -- Mapping des ports du module PWM
+ port map (count => count,
+ servosReg => servosReg(18),
+ enableReg => enableReg(18),
+ pwmOut => pwmOut(18),
+ writeValue => writeValue);
+ PWM19 : PWM_MODULE
+ -- Mapping des ports du module PWM
+ port map (count => count,
+ servosReg => servosReg(19),
+ enableReg => enableReg(19),
+ pwmOut => pwmOut(19),
+ writeValue => writeValue);
+ PWM20 : PWM_MODULE
+ -- Mapping des ports du module PWM
+ port map (count => count,
+ servosReg => servosReg(20),
+ enableReg => enableReg(20),
+ pwmOut => pwmOut(20),
+ writeValue => writeValue);
+ PWM21 : PWM_MODULE
+ -- Mapping des ports du module PWM
+ port map (count => count,
+ servosReg => servosReg(21),
+ enableReg => enableReg(21),
+ pwmOut => pwmOut(21),
+ writeValue => writeValue);
+ PWM22 : PWM_MODULE
+ -- Mapping des ports du module PWM
+ port map (count => count,
+ servosReg => servosReg(22),
+ enableReg => enableReg(22),
+ pwmOut => pwmOut(22),
+ writeValue => writeValue);
+ PWM23 : PWM_MODULE
+ -- Mapping des ports du module PWM
+ port map (count => count,
+ servosReg => servosReg(23),
+ enableReg => enableReg(23),
+ pwmOut => pwmOut(23),
+ writeValue => writeValue);
+
+ -- Initialisation
+ resetn <= '1';
+
+ -- Processus d'ecriture dans le registre depuis le bus \xB5P
+ registerWrite: process (clkInImx96MHz, resetn)
+ begin -- process registerWrite
+ -- Reset asynchrone actif au niveau bas
+ if resetn = '0' then
+ -- Action eventuelle du Reset
+ -- Sur le front montant de clk_in_Imx_96MHz
+ elsif clkInImx96MHz'event and clkInImx96MHz = '1' then
+ if CSxBI = '0' and WRxBI = '0' then
+ -- Decodage d'adresse, adresse de base: 0x12000000
+ case AddrxDI is
+ -- 0x12000000 servo 0
+ when "0000000000000" =>
+ -- Sauvegarde dans le registre du servo 0
+ servosReg(0) <= DataxD(11 downto 0);
+ -- 0x12000002 servo 1
+ when "0000000000010" =>
+ -- Sauvegarde dans le registre du servo 1
+ servosReg(1) <= DataxD(11 downto 0);
+ -- 0x12000004 servo 2
+ when "0000000000100" =>
+ -- Sauvegarde dans le registre du servo 2
+ servosReg(2) <= DataxD(11 downto 0);
+ -- 0x12000006 servo 3
+ when "0000000000110" =>
+ -- Sauvegarde dans le registre du servo 3
+ servosReg(3) <= DataxD(11 downto 0);
+ -- 0x12000008 servo 4
+ when "0000000001000" =>
+ -- Sauvegarde dans le registre du servo 4
+ servosReg(4) <= DataxD(11 downto 0);
+ -- 0x1200000A servo 5
+ when "0000000001010" =>
+ -- Sauvegarde dans le registre du servo 5
+ servosReg(5) <= DataxD(11 downto 0);
+ -- 0x1200000C servo 6
+ when "0000000001100" =>
+ -- Sauvegarde dans le registre du servo 6
+ servosReg(6) <= DataxD(11 downto 0);
+ -- 0x1200000E servo 7
+ when "0000000001110" =>
+ -- Sauvegarde dans le registre du servo 7
+ servosReg(7) <= DataxD(11 downto 0);
+ -- 0x12000010 servo 8
+ when "0000000010000" =>
+ -- Sauvegarde dans le registre du servo 8
+ servosReg(8) <= DataxD(11 downto 0);
+ -- 0x12000012 servo 9
+ when "0000000010010" =>
+ -- Sauvegarde dans le registre du servo 9
+ servosReg(9) <= DataxD(11 downto 0);
+ -- 0x12000014 servo 10
+ when "0000000010100" =>
+ -- Sauvegarde dans le registre du servo 10
+ servosReg(10) <= DataxD(11 downto 0);
+ -- 0x12000016 servo 11
+ when "0000000010110" =>
+ -- Sauvegarde dans le registre du servo 11
+ servosReg(11) <= DataxD(11 downto 0);
+ -- 0x12000018 servo 12
+ when "0000000011000" =>
+ -- Sauvegarde dans le registre du servo 12
+ servosReg(12) <= DataxD(11 downto 0);
+ -- 0x1200001A servo 13
+ when "0000000011010" =>
+ -- Sauvegarde dans le registre du servo 13
+ servosReg(13) <= DataxD(11 downto 0);
+ -- 0x1200001C servo 14
+ when "0000000011100" =>
+ -- Sauvegarde dans le registre du servo 14
+ servosReg(14) <= DataxD(11 downto 0);
+ -- 0x1200001E servo 15
+ when "0000000011110" =>
+ -- Sauvegarde dans le registre du servo 15
+ servosReg(15) <= DataxD(11 downto 0);
+ -- 0x12000020 servo 16
+ when "0000000100000" =>
+ -- Sauvegarde dans le registre du servo 16
+ servosReg(16) <= DataxD(11 downto 0);
+ -- 0x12000022 servo 17
+ when "0000000100010" =>
+ -- Sauvegarde dans le registre du servo 17
+ servosReg(17) <= DataxD(11 downto 0);
+ -- 0x12000024 servo 18
+ when "0000000100100" =>
+ -- Sauvegarde dans le registre du servo 18
+ servosReg(18) <= DataxD(11 downto 0);
+ -- 0x12000026 servo 19
+ when "0000000100110" =>
+ -- Sauvegarde dans le registre du servo 19
+ servosReg(19) <= DataxD(11 downto 0);
+ -- 0x12000028 servo 20
+ when "0000000101000" =>
+ -- Sauvegarde dans le registre du servo 20
+ servosReg(20) <= DataxD(11 downto 0);
+ -- 0x1200002A servo 21
+ when "0000000101010" =>
+ -- Sauvegarde dans le registre du servo 21
+ servosReg(21) <= DataxD(11 downto 0);
+ -- 0x1200002C servo 22
+ when "0000000101100" =>
+ -- Sauvegarde dans le registre du servo 22
+ servosReg(22) <= DataxD(11 downto 0);
+ -- 0x1200002E servo 23
+ when "0000000101110" =>
+ -- Sauvegarde dans le registre du servo 23
+ servosReg(23) <= DataxD(11 downto 0);
+ -- 0x12000030 Registre de validation LSB
+ when "0000000110000" =>
+ -- Sauvegarde dans le registre de validation LSB
+ enableReg(15 downto 0) <= DataxD(15 downto 0);
+ -- 0x12000032 Registre de validation MSB
+ when "0000000110010" =>
+ -- Sauvegarde dans le registre de validation LSB
+ enableReg(31 downto 16) <= DataxD(15 downto 0);
+ when others => null;
+ end case;
+ end if;
+ end if;
+ end process registerWrite;
+
+ -- Processus d'acces generique en lecture depuis le bus \xB5P
+ registerReadSyn: process (clkInImx96MHz, resetn)
+ variable ReadAccessEdgeDetect : std_logic := '0';
+ begin -- process registerReadSyn
+ -- Reset asynchrone actif au niveau bas
+ if resetn = '0' then
+ ReadAccessPulse <= '1';
+ ReadAccessEdgeDetect := '0';
+ -- Sur le front montant de clk_in_Imx_96MHz
+ elsif clkInImx96MHz'event and clkInImx96MHz = '1' then
+ -- Si initialement ReadAccessEdgeDetect=0 et acces en lecture (RDxBI=0 et CSxBI=0)
+ -- Alors ReadAccessPulse=0
+ -- Au cycle d'horloge suivant si tourjours acces en lecture (RDxBI=0 et CSxBI=0)
+ -- Alors ReadAccessPulse=1
+ -- Et vice versa
+ -- On obtient donc une transition 0->1 ou 1->0 sur ReadAccessPulse
+ -- Au maximum en 2 cycle de clk_in_Imx_96MHz
+ -- Lorsque l'acces en lecture est fini ReadAccessEdgeDetect revient a 0
+ if (ReadAccessEdgeDetect = '0' and ((not CSxBI) and (not RDxBI)) = '1') then
+ ReadAccessPulse <= '0';
+ else
+ ReadAccessPulse <= '1';
+ end if;
+ -- ReadAccessEdgeDetect = 1 si lecture (RDxBI=0 et CSxBI=0)
+ ReadAccessEdgeDetect := (not CSxBI) and (not RDxBI);
+ end if;
+ end process registerReadSyn;
+
+ -- Processus de lecture du registre depuis le bus \xB5P
+ registerRead : process (CSxBI, RDxBI, AddrxDI, ReadAccessPulse)
+ begin -- process registerRead
+ -- acces en lecture (RDxBI=0 et CSxBI=0)
+ if CSxBI = '0' and RDxBI = '0' then
+ case AddrxDI is
+ -- 0x12000000 servo 0
+ when "0000000000000" =>
+ -- Envoi sur le bus de donnees \xB5P du registre du servo 0
+ DataxD <= "0000" & servosReg(0)(11 downto 0);
+ -- 0x12000002 servo 1
+ when "0000000000010" =>
+ -- Envoi sur le bus de donnees \xB5P du registre du servo 1
+ DataxD <= "0000" & servosReg(1)(11 downto 0);
+ -- 0x12000004 servo 2
+ when "0000000000100" =>
+ -- Envoi sur le bus de donnees \xB5P du registre du servo 2
+ DataxD <= "0000" & servosReg(2)(11 downto 0);
+ -- 0x12000006 servo 3
+ when "0000000000110" =>
+ -- Envoi sur le bus de donnees \xB5P du registre du servo 3
+ DataxD <= "0000" & servosReg(3)(11 downto 0);
+ -- 0x12000008 servo 4
+ when "0000000001000" =>
+ -- Envoi sur le bus de donnees \xB5P du registre du servo 4
+ DataxD <= "0000" & servosReg(4)(11 downto 0);
+ -- 0x1200000A servo 5
+ when "0000000001010" =>
+ -- Envoi sur le bus de donnees \xB5P du registre du servo 5
+ DataxD <= "0000" & servosReg(5)(11 downto 0);
+ -- 0x1200000C servo 6
+ when "0000000001100" =>
+ -- Envoi sur le bus de donnees \xB5P du registre du servo 6
+ DataxD <= "0000" & servosReg(6)(11 downto 0);
+ -- 0x1200000E servo 7
+ when "0000000001110" =>
+ -- Envoi sur le bus de donnees \xB5P du registre du servo 7
+ DataxD <= "0000" & servosReg(7)(11 downto 0);
+ -- 0x12000010 servo 8
+ when "0000000010000" =>
+ -- Envoi sur le bus de donnees \xB5P du registre du servo 8
+ DataxD <= "0000" & servosReg(8)(11 downto 0);
+ -- 0x12000012 servo 9
+ when "0000000010010" =>
+ -- Envoi sur le bus de donnees \xB5P du registre du servo 9
+ DataxD <= "0000" & servosReg(9)(11 downto 0);
+ -- 0x12000014 servo 10
+ when "0000000010100" =>
+ -- Envoi sur le bus de donnees \xB5P du registre du servo 10
+ DataxD <= "0000" & servosReg(10)(11 downto 0);
+ -- 0x12000016 servo 11
+ when "0000000010110" =>
+ -- Envoi sur le bus de donnees \xB5P du registre du servo 11
+ DataxD <= "0000" & servosReg(11)(11 downto 0);
+ -- 0x12000018 servo 12
+ when "0000000011000" =>
+ -- Envoi sur le bus de donnees \xB5P du registre du servo 12
+ DataxD <= "0000" & servosReg(12)(11 downto 0);
+ -- 0x1200001A servo 13
+ when "0000000011010" =>
+ -- Envoi sur le bus de donnees \xB5P du registre du servo 13
+ DataxD <= "0000" & servosReg(13)(11 downto 0);
+ -- 0x1200001C servo 14
+ when "0000000011100" =>
+ -- Envoi sur le bus de donnees \xB5P du registre du servo 14
+ DataxD <= "0000" & servosReg(14)(11 downto 0);
+ -- 0x1200001E servo 15
+ when "0000000011110" =>
+ -- Envoi sur le bus de donnees \xB5P du registre du servo 15
+ DataxD <= "0000" & servosReg(15)(11 downto 0);
+ -- 0x12000020 servo 16
+ when "0000000100000" =>
+ -- Envoi sur le bus de donnees \xB5P du registre du servo 16
+ DataxD <= "0000" & servosReg(16)(11 downto 0);
+ -- 0x12000022 servo 17
+ when "0000000100010" =>
+ -- Envoi sur le bus de donnees \xB5P du registre du servo 17
+ DataxD <= "0000" & servosReg(17)(11 downto 0);
+ -- 0x12000024 servo 18
+ when "0000000100100" =>
+ -- Envoi sur le bus de donnees \xB5P du registre du servo 18
+ DataxD <= "0000" & servosReg(18)(11 downto 0);
+ -- 0x12000026 servo 19
+ when "0000000100110" =>
+ -- Envoi sur le bus de donnees \xB5P du registre du servo 19
+ DataxD <= "0000" & servosReg(19)(11 downto 0);
+ -- 0x12000028 servo 20
+ when "0000000101000" =>
+ -- Envoi sur le bus de donnees \xB5P du registre du servo 20
+ DataxD <= "0000" & servosReg(20)(11 downto 0);
+ -- 0x1200002A servo 21
+ when "0000000101010" =>
+ -- Envoi sur le bus de donnees \xB5P du registre du servo 21
+ DataxD <= "0000" & servosReg(21)(11 downto 0);
+ -- 0x1200002C servo 22
+ when "0000000101100" =>
+ -- Envoi sur le bus de donnees \xB5P du registre du servo 22
+ DataxD <= "0000" & servosReg(22)(11 downto 0);
+ -- 0x1200002E servo 23
+ when "0000000101110" =>
+ -- Envoi sur le bus de donnees \xB5P du registre du servo 23
+ DataxD <= "0000" & servosReg(23)(11 downto 0);
+ -- 0x12000030 Registre de validation LSB
+ when "0000000110000" =>
+ -- Envoi sur le bus de donnees \xB5P du registre de validation LSB
+ DataxD <= enableReg(15 downto 0);
+ -- 0x12000032 Registre de validation MSB
+ when "0000000110010" =>
+ -- Envoi sur le bus de donnees \xB5P du registre de validation LSB
+ DataxD <= enableReg(31 downto 16);
+ when others =>
+ DataxD <= (others => '0');
+ end case;
+ else
+ -- Haute impedance si acces autre qu'en lecture
+ DataxD <= (others => 'Z');
+ end if;
+ end process registerRead;
+end architecture structural;
Added: trunk/firmware/servo/pwm_module.vhd
===================================================================
--- trunk/firmware/servo/pwm_module.vhd (rev 0)
+++ trunk/firmware/servo/pwm_module.vhd 2008-02-10 14:33:27 UTC (rev 760)
@@ -0,0 +1,77 @@
+----------------------------------------------------------------------------------
+-- Company: Armadeus Project
+-- Engineer: Yvan ROCH
+--
+-- Create Date: 2007-12-05
+-- Design Name:
+-- Module Name: PWM_MODULE - Behavioral
+-- Project Name: SERVO
+-- Target Devices: Spartan3 Armadeus
+-- Tool versions: ISE 9.2.02i
+-- Description: PWM signal generator
+--
+-- Dependencies:
+--
+-- Revision:
+-- Revision 0.01 - File Created
+-- Additional Comments:
+--
+------------------------------------------------------------------------------------
+
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_ARITH.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+entity PWM_MODULE is
+ Port (
+ -- Compteur externe de 16 bits cadencer a 4MHz: un cycle complet du compteur
+ -- dure 16.384 ms, c'est la dur\xE9e entre 2 implusions
+ count : in std_logic_vector(15 downto 0);
+ -- signal servosReg(X) copie dans pwmValue
+ servosReg : in std_logic_vector( 11 downto 0);
+ -- signal enableReg(X) copie dans enable
+ enableReg: in std_logic;
+ -- sortie pwm
+ pwmOut : out std_logic;
+ -- le signal writeValue valide l'ecriture de servosReg dans pwmValue et enableReg dans
+ -- enable a un instant ou la sortie PWM est a zero.
+ -- Ainsi la generation de l'impulsion n'est pas perturbee par le changement
+ -- de valeur de servosReg et enableReg
+ writeValue : in std_logic);
+end PWM_MODULE;
+
+architecture Behavioral of PWM_MODULE is
+ -- Valeur interne pwmValue : registre de 12 bits.
+ signal pwmValue : std_logic_vector(11 downto 0) := "000000000000";
+ -- Validation de la sortie PWM
+ signal enable: std_logic := '0';
+begin
+
+ -- Ecriture dans les registres du module
+ process(writeValue)
+ begin
+ if (writeValue'event and writeValue='1') then
+ -- Sur le front montant de writeValue memorisation
+ -- de servosReg dans pwmValue et enableReg dans enable
+ pwmValue <= servosReg;
+ enable <= enableReg;
+ end if;
+ end process;
+
+ -- Generation du signal PWM
+ pwmOut <= '0' when (enable = '0') else -- sortie a 0 si servo devalide
+ -- Generation de l'impulsion de 0.5 ms commune a toute les valeurs
+ -- 1111100000110000b=63536
+ -- 65536-63536=2000 2000 cycle a 4MHz=0.5ms
+ -- Cela corresponde au debut de generation de l'impulsion
+ '1' when (count > "1111100000110000") else -- Count of 63536
+ -- Multiplication de pwmValue par 2 (decalage a gauche de 1)
+ -- pour pwmValue=0 position extreme avec une impulsion de 0+0.5=0.5ms
+ -- pour pwmValue=4000 position extreme avec une impulsion de 2+0.5=2.5ms
+ -- pwmValue= temps_impulsion(ms).2.10^6
+ -- Quand le compteur est depasse: fin de l'implusion
+ '0' when (count > ("000" & pwmValue(11 downto 0) & "0")) else
+ -- le compteur vaut entre 0 et pwmValue: generation de l'impulsion
+ '1';
+end Behavioral;
Added: trunk/firmware/servo/servo.ucf
===================================================================
--- trunk/firmware/servo/servo.ucf (rev 0)
+++ trunk/firmware/servo/servo.ucf 2008-02-10 14:33:27 UTC (rev 760)
@@ -0,0 +1,65 @@
+#PACE: Start of Constraints generated by PACE
+
+#PACE: Start of PACE I/O Pin Assignments
+NET "AddrxDI<0>" LOC = "P21" | IOSTANDARD = LVCMOS33 ;
+NET "AddrxDI<10>" LOC = "P33" | IOSTANDARD = LVCMOS33 ;
+NET "AddrxDI<11>" LOC = "P35" | IOSTANDARD = LVCMOS33 ;
+NET "AddrxDI<12>" LOC = "P36" | IOSTANDARD = LVCMOS33 ;
+NET "AddrxDI<1>" LOC = "P23" | IOSTANDARD = LVCMOS33 ;
+NET "AddrxDI<2>" LOC = "P24" | IOSTANDARD = LVCMOS33 ;
+NET "AddrxDI<3>" LOC = "P25" | IOSTANDARD = LVCMOS33 ;
+NET "AddrxDI<4>" LOC = "P26" | IOSTANDARD = LVCMOS33 ;
+NET "AddrxDI<5>" LOC = "P27" | IOSTANDARD = LVCMOS33 ;
+NET "AddrxDI<6>" LOC = "P28" | IOSTANDARD = LVCMOS33 ;
+NET "AddrxDI<7>" LOC = "P30" | IOSTANDARD = LVCMOS33 ;
+NET "AddrxDI<8>" LOC = "P31" | IOSTANDARD = LVCMOS33 ;
+NET "AddrxDI<9>" LOC = "P32" | IOSTANDARD = LVCMOS33 ;
+NET "clkInImx96MHz" LOC = "P55" | IOSTANDARD = LVCMOS33 ;
+NET "CSxBI" LOC = "P59" | IOSTANDARD = LVCMOS33 ;
+NET "DataxD<0>" LOC = "P1" | IOSTANDARD = LVCMOS33 ;
+NET "DataxD<10>" LOC = "P13" | IOSTANDARD = LVCMOS33 ;
+NET "DataxD<11>" LOC = "P14" | IOSTANDARD = LVCMOS33 ;
+NET "DataxD<12>" LOC = "P15" | IOSTANDARD = LVCMOS33 ;
+NET "DataxD<13>" LOC = "P17" | IOSTANDARD = LVCMOS33 ;
+NET "DataxD<14>" LOC = "P18" | IOSTANDARD = LVCMOS33 ;
+NET "DataxD<15>" LOC = "P20" | IOSTANDARD = LVCMOS33 ;
+NET "DataxD<1>" LOC = "P2" | IOSTANDARD = LVCMOS33 ;
+NET "DataxD<2>" LOC = "P4" | IOSTANDARD = LVCMOS33 ;
+NET "DataxD<3>" LOC = "P5" | IOSTANDARD = LVCMOS33 ;
+NET "DataxD<4>" LOC = "P6" | IOSTANDARD = LVCMOS33 ;
+NET "DataxD<5>" LOC = "P7" | IOSTANDARD = LVCMOS33 ;
+NET "DataxD<6>" LOC = "P8" | IOSTANDARD = LVCMOS33 ;
+NET "DataxD<7>" LOC = "P10" | IOSTANDARD = LVCMOS33 ;
+NET "DataxD<8>" LOC = "P11" | IOSTANDARD = LVCMOS33 ;
+NET "DataxD<9>" LOC = "P12" | IOSTANDARD = LVCMOS33 ;
+NET "pwmOut<0>" LOC = "P87" | IOSTANDARD = LVCMOS33 ;
+NET "pwmOut<10>" LOC = "P98" | IOSTANDARD = LVCMOS33 ;
+NET "pwmOut<11>" LOC = "P97" | IOSTANDARD = LVCMOS33 ;
+NET "pwmOut<12>" LOC = "P103" | IOSTANDARD = LVCMOS33 ;
+NET "pwmOut<13>" LOC = "P102" | IOSTANDARD = LVCMOS33 ;
+NET "pwmOut<14>" LOC = "P100" | IOSTANDARD = LVCMOS33 ;
+NET "pwmOut<15>" LOC = "P107" | IOSTANDARD = LVCMOS33 ;
+NET "pwmOut<16>" LOC = "P105" | IOSTANDARD = LVCMOS33 ;
+NET "pwmOut<17>" LOC = "P104" | IOSTANDARD = LVCMOS33 ;
+NET "pwmOut<18>" LOC = "P128" | IOSTANDARD = LVCMOS33 ;
+NET "pwmOut<19>" LOC = "P127" | IOSTANDARD = LVCMOS33 ;
+NET "pwmOut<1>" LOC = "P86" | IOSTANDARD = LVCMOS33 ;
+NET "pwmOut<20>" LOC = "P108" | IOSTANDARD = LVCMOS33 ;
+NET "pwmOut<21>" LOC = "P129" | IOSTANDARD = LVCMOS33 ;
+NET "pwmOut<22>" LOC = "P130" | IOSTANDARD = LVCMOS33 ;
+NET "pwmOut<23>" LOC = "P125" | IOSTANDARD = LVCMOS33 ;
+NET "pwmOut<2>" LOC = "P85" | IOSTANDARD = LVCMOS33 ;
+NET "pwmOut<3>" LOC = "P92" | IOSTANDARD = LVCMOS33 ;
+NET "pwmOut<4>" LOC = "P90" | IOSTANDARD = LVCMOS33 ;
+NET "pwmOut<5>" LOC = "P89" | IOSTANDARD = LVCMOS33 ;
+NET "pwmOut<6>" LOC = "P96" | IOSTANDARD = LVCMOS33 ;
+NET "pwmOut<7>" LOC = "P95" | IOSTANDARD = LVCMOS33 ;
+NET "pwmOut<8>" LOC = "P93" | IOSTANDARD = LVCMOS33 ;
+NET "pwmOut<9>" LOC = "P99" | IOSTANDARD = LVCMOS33 ;
+NET "RDxBI" LOC = "P63" | IOSTANDARD = LVCMOS33 ;
+NET "WRxBI" LOC = "P60" | IOSTANDARD = LVCMOS33 ;
+#PACE: Start of PACE Area Constraints
+
+#PACE: Start of PACE Prohibit Constraints
+
+#PACE: End of Constraints generated by PACE
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <th...@us...> - 2008-02-05 14:21:57
|
Revision: 759
http://armadeus.svn.sourceforge.net/armadeus/?rev=759&view=rev
Author: thom25
Date: 2008-02-05 06:21:49 -0800 (Tue, 05 Feb 2008)
Log Message:
-----------
[LINUX] change quartz value from 13MHz to 16MHz (standard)
Modified Paths:
--------------
trunk/target/packages/ch7024ctrl/ch424x283.conf
Modified: trunk/target/packages/ch7024ctrl/ch424x283.conf
===================================================================
--- trunk/target/packages/ch7024ctrl/ch424x283.conf 2008-02-05 13:46:50 UTC (rev 758)
+++ trunk/target/packages/ch7024ctrl/ch424x283.conf 2008-02-05 14:21:49 UTC (rev 759)
@@ -1,6 +1,6 @@
00:45 01:00 02:00 03:03
04:00 05:40 06:40 07:40
-08:80 09:05 0A:63 0B:04
+08:80 09:05 0A:63 0B:80
0C:00 0D:03 0E:00 0F:00
10:A1 11:09 12:40 13:8A
14:00 15:27 16:00 17:04
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <th...@us...> - 2008-02-05 13:47:23
|
Revision: 758
http://armadeus.svn.sourceforge.net/armadeus/?rev=758&view=rev
Author: thom25
Date: 2008-02-05 05:46:50 -0800 (Tue, 05 Feb 2008)
Log Message:
-----------
[LINUX] [UBOOT] adjust CH7024 parameters to new clock source
Modified Paths:
--------------
trunk/target/packages/ch7024ctrl/ch424x283.conf
trunk/target/packages/ch7024ctrl/ch424x283_readme.txt
Modified: trunk/target/packages/ch7024ctrl/ch424x283.conf
===================================================================
--- trunk/target/packages/ch7024ctrl/ch424x283.conf 2008-01-28 17:21:35 UTC (rev 757)
+++ trunk/target/packages/ch7024ctrl/ch424x283.conf 2008-02-05 13:46:50 UTC (rev 758)
@@ -1,15 +1,15 @@
00:45 01:00 02:00 03:03
-04:00 05:20 06:20 07:49
-08:80 09:05 0A:63 0B:08
+04:00 05:40 06:40 07:40
+08:80 09:05 0A:63 0B:04
0C:00 0D:03 0E:00 0F:00
-10:01 11:09 12:40 13:A8
+10:A1 11:09 12:40 13:8A
14:00 15:27 16:00 17:04
-18:F0 19:1B 1A:00 1B:00
-1C:90 1D:9E 1E:05 1F:A0
-20:00 21:30 22:00 23:80
+18:F0 19:1B 1A:30 1B:50
+1C:90 1D:9E 1E:05 1F:44
+20:00 21:30 22:00 23:7D
24:00 25:00 26:00 27:00
28:0E 29:96 2A:00 2B:10
2C:7A 2D:C0 2E:38 2F:00
-30:09 31:14 32:00 33:00
+30:09 31:14 32:5C 33:00
34:01 35:1C 36:64 37:40
-62:32 63:C2 7E:00
\ No newline at end of file
+62:32 63:C2 7E:00
Modified: trunk/target/packages/ch7024ctrl/ch424x283_readme.txt
===================================================================
--- trunk/target/packages/ch7024ctrl/ch424x283_readme.txt 2008-01-28 17:21:35 UTC (rev 757)
+++ trunk/target/packages/ch7024ctrl/ch424x283_readme.txt 2008-02-05 13:46:50 UTC (rev 758)
@@ -1,7 +1,12 @@
iMXL LCD controller parameters:
LPCR: 0XF8C80087
-HCR: 0X78000144
+HCR: 0X78004401
VCR: 0X0C001414
LCD freq: 6000000.54063
+SysClk has to be changed from internal to external:
+CSCR = 0x03010003
+SPCTL0 = 0x04011402
+SPCTL1 = 0x00000040
+
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <th...@us...> - 2008-01-28 17:21:32
|
Revision: 757
http://armadeus.svn.sourceforge.net/armadeus/?rev=757&view=rev
Author: thom25
Date: 2008-01-28 09:21:35 -0800 (Mon, 28 Jan 2008)
Log Message:
-----------
[LINUX] Remove SD (4bits) unwanted message causing spurious DMA deadlock when inserting SD
cards.
Modified Paths:
--------------
trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.23.1/040-linux-2.6.23.1-imx_mmc.diff
Modified: trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.23.1/040-linux-2.6.23.1-imx_mmc.diff
===================================================================
--- trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.23.1/040-linux-2.6.23.1-imx_mmc.diff 2008-01-23 14:25:36 UTC (rev 756)
+++ trunk/buildroot/target/device/armadeus/linux/kernel-patches/2.6.23.1/040-linux-2.6.23.1-imx_mmc.diff 2008-01-28 17:21:35 UTC (rev 757)
@@ -72,4 +72,14 @@
#define PB11_AF_MS_SDIO ( GPIO_PORTB | GPIO_AF | 11 )
#define PB12_PF_SD_CLK ( GPIO_PORTB | GPIO_PF | 12 )
#define PB12_AF_MS_SCLK0 ( GPIO_PORTB | GPIO_AF | 12 )
-
+--- linux-org/drivers/mmc/host/imxmmc.c 2008-01-28 17:36:24.000000000 +0100
++++ linux-imx/drivers/mmc/host/imxmmc.c 2008-01-28 17:36:47.000000000 +0100
+@@ -220,7 +220,7 @@ static int imxmci_busy_wait_for_status(s
+
+ /* The busy-wait is expected there for clock <8MHz due to SDHC hardware flaws */
+ if(!(stat_mask & STATUS_END_CMD_RESP) || (host->mmc->ios.clock>=8000000))
+- dev_info(mmc_dev(host->mmc), "busy wait for %d usec in %s, STATUS = 0x%x (0x%x)\n",
++ dev_dbg(mmc_dev(host->mmc), "busy wait for %d usec in %s, STATUS = 0x%x (0x%x)\n",
+ loops, where, *pstat, stat_mask);
+ return loops;
+ }
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|