summaryrefslogtreecommitdiffstats
path: root/target
diff options
context:
space:
mode:
Diffstat (limited to 'target')
-rw-r--r--target/device/Config.in1
-rw-r--r--target/device/jp/Config.in18
-rw-r--r--target/device/jp/Makefile.in7
-rw-r--r--target/device/jp/q5/Makefile.in10
-rw-r--r--target/device/jp/q5/busybox.config483
-rwxr-xr-xtarget/device/jp/q5/depmod.pl237
-rw-r--r--target/device/jp/q5/device_table.txt162
-rw-r--r--target/device/jp/q5/kernel-patches-2.4.26/001-q5730
-rw-r--r--target/device/jp/q5/kernel-patches-2.4.26/002-build_fixes81
-rw-r--r--target/device/jp/q5/kernel-patches-2.4.26/004-correct_toolchain24
-rw-r--r--target/device/jp/q5/kernel-patches-2.4.26/100-version11
-rw-r--r--target/device/jp/q5/kernel-patches-2.4.29/001-q5420
-rw-r--r--target/device/jp/q5/kernel-patches-2.4.29/004-correct_toolchain24
-rw-r--r--target/device/jp/q5/kernel-patches-2.4.29/100-version11
-rw-r--r--target/device/jp/q5/linux.config858
-rw-r--r--target/device/jp/q5/linux.mk132
-rw-r--r--target/device/jp/q5/skel.tar.gzbin0 -> 4846 bytes
-rw-r--r--target/device/jp/q5/target_skeleton/etc/TZ1
-rw-r--r--target/device/jp/q5/target_skeleton/etc/fstab8
-rw-r--r--target/device/jp/q5/target_skeleton/etc/group10
-rw-r--r--target/device/jp/q5/target_skeleton/etc/hostname1
-rw-r--r--target/device/jp/q5/target_skeleton/etc/hosts1
-rwxr-xr-xtarget/device/jp/q5/target_skeleton/etc/init.d/S20urandom44
-rwxr-xr-xtarget/device/jp/q5/target_skeleton/etc/init.d/S40network35
-rwxr-xr-xtarget/device/jp/q5/target_skeleton/etc/init.d/rcS27
-rw-r--r--target/device/jp/q5/target_skeleton/etc/inittab47
-rw-r--r--target/device/jp/q5/target_skeleton/etc/inputrc44
-rw-r--r--target/device/jp/q5/target_skeleton/etc/issue4
-rw-r--r--target/device/jp/q5/target_skeleton/etc/network/interfaces4
-rw-r--r--target/device/jp/q5/target_skeleton/etc/passwd13
-rw-r--r--target/device/jp/q5/target_skeleton/etc/profile48
-rw-r--r--target/device/jp/q5/target_skeleton/etc/protocols31
-rw-r--r--target/device/jp/q5/target_skeleton/etc/resolv.conf2
-rw-r--r--target/device/jp/q5/target_skeleton/etc/securetty12
-rw-r--r--target/device/jp/q5/target_skeleton/etc/services302
-rw-r--r--target/device/jp/q5/target_skeleton/etc/shadow12
-rw-r--r--target/device/jp/q5/target_skeleton/root/.bash_history0
-rw-r--r--target/device/jp/q5/target_skeleton/root/.bash_logout7
-rw-r--r--target/device/jp/q5/target_skeleton/root/.bash_profile15
-rw-r--r--target/device/jp/q5/target_skeleton/root/.bashrc48
-rwxr-xr-xtarget/device/jp/q5/target_skeleton/usr/share/udhcpc/default.script39
-rw-r--r--target/device/jp/q5/uClibc.config.mipsel160
42 files changed, 4124 insertions, 0 deletions
diff --git a/target/device/Config.in b/target/device/Config.in
index 8378bff13..a3b6179ab 100644
--- a/target/device/Config.in
+++ b/target/device/Config.in
@@ -5,6 +5,7 @@ source "target/device/Hitachi/Config.in"
source "target/device/AMD/Config.in"
source "target/device/Via/Config.in"
source "target/device/Sharp/Config.in"
+source "target/device/jp/Config.in"
# This must be last
source "target/generic/Config.in"
diff --git a/target/device/jp/Config.in b/target/device/jp/Config.in
new file mode 100644
index 000000000..6a8f9936b
--- /dev/null
+++ b/target/device/jp/Config.in
@@ -0,0 +1,18 @@
+config BR2_TARGET_Q5
+ bool "jp-embedded Q5 board support"
+ default n
+ depends BR2_mipsel
+ select BR2_PACKAGE_LINUX
+ help
+ jp-embedded Q5 series MIPS based boards, see http://www.jp-embedded.com for further information.
+
+comment "Package support"
+ depends BR2_TARGET_Q5
+
+config BR2_PACKAGE_LINUX
+ bool "linux"
+ default n
+ depends BR2_TARGET_Q5
+ help
+ The Linux kernel.
+ http://www.kernel.org/
diff --git a/target/device/jp/Makefile.in b/target/device/jp/Makefile.in
new file mode 100644
index 000000000..acb173d1a
--- /dev/null
+++ b/target/device/jp/Makefile.in
@@ -0,0 +1,7 @@
+# Override the default uClibc configuration
+ifeq ($(strip $(BR2_TARGET_Q5)),y)
+
+include target/device/jp/q5/Makefile.in
+include target/device/jp/q5/linux.mk
+
+endif
diff --git a/target/device/jp/q5/Makefile.in b/target/device/jp/q5/Makefile.in
new file mode 100644
index 000000000..9c980801f
--- /dev/null
+++ b/target/device/jp/q5/Makefile.in
@@ -0,0 +1,10 @@
+JP_Q5_PATH=target/device/jp/q5
+
+BR2_PACKAGE_BUSYBOX_CONFIG=$(JP_Q5_PATH)/busybox.config
+UCLIBC_CONFIG_FILE=$(JP_Q5_PATH)/uClibc.config.$(ARCH)
+
+TARGET_SKELETON=$(JP_Q5_PATH)/skel.tar.gz
+TARGET_SKEL_DIR=$(JP_Q5_PATH)/target_skeleton
+TARGET_DEVICE_TABLE=$(JP_Q5_PATH)/device_table.txt
+
+TARGETS+=linux
diff --git a/target/device/jp/q5/busybox.config b/target/device/jp/q5/busybox.config
new file mode 100644
index 000000000..061e5f445
--- /dev/null
+++ b/target/device/jp/q5/busybox.config
@@ -0,0 +1,483 @@
+#
+# Automatically generated make config: don't edit
+#
+HAVE_DOT_CONFIG=y
+
+#
+# General Configuration
+#
+# CONFIG_FEATURE_BUFFERS_USE_MALLOC is not set
+CONFIG_FEATURE_BUFFERS_GO_ON_STACK=y
+# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
+CONFIG_FEATURE_VERBOSE_USAGE=y
+# CONFIG_FEATURE_INSTALLER is not set
+# CONFIG_LOCALE_SUPPORT is not set
+# CONFIG_FEATURE_DEVFS is not set
+CONFIG_FEATURE_DEVPTS=y
+# CONFIG_FEATURE_CLEAN_UP is not set
+CONFIG_FEATURE_SUID=y
+# CONFIG_FEATURE_SUID_CONFIG is not set
+# CONFIG_SELINUX is not set
+
+#
+# Build Options
+#
+# CONFIG_STATIC is not set
+CONFIG_LFS=y
+# USING_CROSS_COMPILER is not set
+EXTRA_CFLAGS_OPTIONS=""
+
+#
+# Installation Options
+#
+# CONFIG_INSTALL_NO_USR is not set
+PREFIX="./_install"
+
+#
+# Archival Utilities
+#
+# CONFIG_AR is not set
+CONFIG_BUNZIP2=y
+# CONFIG_CPIO is not set
+# CONFIG_DPKG is not set
+# CONFIG_DPKG_DEB is not set
+CONFIG_GUNZIP=y
+# CONFIG_FEATURE_GUNZIP_UNCOMPRESS is not set
+CONFIG_GZIP=y
+# CONFIG_RPM2CPIO is not set
+# CONFIG_RPM is not set
+CONFIG_TAR=y
+CONFIG_FEATURE_TAR_CREATE=y
+CONFIG_FEATURE_TAR_BZIP2=y
+# CONFIG_FEATURE_TAR_FROM is not set
+CONFIG_FEATURE_TAR_GZIP=y
+# CONFIG_FEATURE_TAR_COMPRESS is not set
+# CONFIG_FEATURE_TAR_OLDGNU_COMPATABILITY is not set
+CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
+# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set
+# CONFIG_UNCOMPRESS is not set
+CONFIG_UNZIP=y
+
+#
+# Common options for cpio and tar
+#
+# CONFIG_FEATURE_UNARCHIVE_TAPE is not set
+
+#
+# Coreutils
+#
+CONFIG_BASENAME=y
+# CONFIG_CAL is not set
+CONFIG_CAT=y
+CONFIG_CHGRP=y
+CONFIG_CHMOD=y
+CONFIG_CHOWN=y
+CONFIG_CHROOT=y
+CONFIG_CMP=y
+# CONFIG_COMM is not set
+CONFIG_CP=y
+CONFIG_CUT=y
+CONFIG_DATE=y
+CONFIG_FEATURE_DATE_ISOFMT=y
+CONFIG_DD=y
+CONFIG_DF=y
+CONFIG_DIRNAME=y
+CONFIG_DOS2UNIX=y
+CONFIG_UNIX2DOS=y
+CONFIG_DU=y
+CONFIG_FEATURE_DU_DEFALT_BLOCKSIZE_1K=y
+CONFIG_ECHO=y
+CONFIG_FEATURE_FANCY_ECHO=y
+CONFIG_ENV=y
+# CONFIG_PRINTENV is not set
+CONFIG_EXPR=y
+CONFIG_FALSE=y
+# CONFIG_FOLD is not set
+CONFIG_HEAD=y
+# CONFIG_FEATURE_FANCY_HEAD is not set
+CONFIG_HOSTID=y
+CONFIG_ID=y
+CONFIG_INSTALL=y
+# CONFIG_LENGTH is not set
+CONFIG_LN=y
+CONFIG_LOGNAME=y
+CONFIG_LS=y
+CONFIG_FEATURE_LS_FILETYPES=y
+CONFIG_FEATURE_LS_FOLLOWLINKS=y
+CONFIG_FEATURE_LS_RECURSIVE=y
+CONFIG_FEATURE_LS_SORTFILES=y
+CONFIG_FEATURE_LS_TIMESTAMPS=y
+CONFIG_FEATURE_LS_USERNAME=y
+CONFIG_FEATURE_LS_COLOR=y
+CONFIG_MD5SUM=y
+CONFIG_MKDIR=y
+# CONFIG_MKFIFO is not set
+CONFIG_MKNOD=y
+CONFIG_MV=y
+# CONFIG_NICE is not set
+# CONFIG_OD is not set
+# CONFIG_PRINTF is not set
+CONFIG_PWD=y
+# CONFIG_REALPATH is not set
+CONFIG_RM=y
+CONFIG_RMDIR=y
+# CONFIG_SEQ is not set
+CONFIG_SHA1SUM=y
+CONFIG_SLEEP=y
+# CONFIG_FEATURE_FANCY_SLEEP is not set
+CONFIG_SORT=y
+CONFIG_SORT_BIG=y
+# CONFIG_STAT is not set
+CONFIG_STTY=y
+# CONFIG_SUM is not set
+CONFIG_SYNC=y
+CONFIG_TAIL=y
+CONFIG_FEATURE_FANCY_TAIL=y
+CONFIG_TEE=y
+CONFIG_FEATURE_TEE_USE_BLOCK_IO=y
+CONFIG_TEST=y
+
+#
+# test (forced enabled for use with shell)
+#
+CONFIG_FEATURE_TEST_64=y
+CONFIG_TOUCH=y
+# CONFIG_TR is not set
+CONFIG_TRUE=y
+CONFIG_TTY=y
+CONFIG_UNAME=y
+CONFIG_UNIQ=y
+CONFIG_USLEEP=y
+CONFIG_UUDECODE=y
+CONFIG_UUENCODE=y
+# CONFIG_WATCH is not set
+CONFIG_WC=y
+# CONFIG_WHO is not set
+CONFIG_WHOAMI=y
+CONFIG_YES=y
+
+#
+# Common options for cp and mv
+#
+CONFIG_FEATURE_PRESERVE_HARDLINKS=y
+
+#
+# Common options for ls and more
+#
+CONFIG_FEATURE_AUTOWIDTH=y
+
+#
+# Common options for df, du, ls
+#
+CONFIG_FEATURE_HUMAN_READABLE=y
+
+#
+# Common options for md5sum, sha1sum
+#
+CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
+
+#
+# Console Utilities
+#
+CONFIG_CHVT=y
+CONFIG_CLEAR=y
+CONFIG_DEALLOCVT=y
+# CONFIG_DUMPKMAP is not set
+# CONFIG_LOADFONT is not set
+# CONFIG_LOADKMAP is not set
+CONFIG_OPENVT=y
+CONFIG_RESET=y
+# CONFIG_SETKEYCODES is not set
+
+#
+# Debian Utilities
+#
+CONFIG_MKTEMP=y
+# CONFIG_PIPE_PROGRESS is not set
+CONFIG_READLINK=y
+CONFIG_FEATURE_READLINK_FOLLOW=y
+CONFIG_RUN_PARTS=y
+CONFIG_START_STOP_DAEMON=y
+CONFIG_WHICH=y
+
+#
+# Linux Ext2 FS Progs
+#
+# CONFIG_CHATTR is not set
+# CONFIG_LSATTR is not set
+
+#
+# Editors
+#
+# CONFIG_AWK is not set
+# CONFIG_PATCH is not set
+CONFIG_SED=y
+CONFIG_VI=y
+CONFIG_FEATURE_VI_COLON=y
+CONFIG_FEATURE_VI_YANKMARK=y
+CONFIG_FEATURE_VI_SEARCH=y
+CONFIG_FEATURE_VI_USE_SIGNALS=y
+CONFIG_FEATURE_VI_DOT_CMD=y
+CONFIG_FEATURE_VI_READONLY=y
+CONFIG_FEATURE_VI_SETOPTS=y
+CONFIG_FEATURE_VI_SET=y
+CONFIG_FEATURE_VI_WIN_RESIZE=y
+CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
+
+#
+# Finding Utilities
+#
+CONFIG_FIND=y
+CONFIG_FEATURE_FIND_MTIME=y
+CONFIG_FEATURE_FIND_PERM=y
+CONFIG_FEATURE_FIND_TYPE=y
+CONFIG_FEATURE_FIND_XDEV=y
+# CONFIG_FEATURE_FIND_NEWER is not set
+# CONFIG_FEATURE_FIND_INUM is not set
+CONFIG_GREP=y
+CONFIG_FEATURE_GREP_EGREP_ALIAS=y
+CONFIG_FEATURE_GREP_FGREP_ALIAS=y
+CONFIG_FEATURE_GREP_CONTEXT=y
+CONFIG_XARGS=y
+# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set
+CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y
+CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y
+CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y
+
+#
+# Init Utilities
+#
+CONFIG_INIT=y
+CONFIG_FEATURE_USE_INITTAB=y
+CONFIG_FEATURE_INITRD=y
+# CONFIG_FEATURE_INIT_COREDUMPS is not set
+CONFIG_FEATURE_EXTRA_QUIET=y
+CONFIG_HALT=y
+CONFIG_POWEROFF=y
+CONFIG_REBOOT=y
+# CONFIG_MESG is not set
+
+#
+# Login/Password Management Utilities
+#
+# CONFIG_USE_BB_PWD_GRP is not set
+CONFIG_ADDGROUP=y
+CONFIG_DELGROUP=y
+CONFIG_ADDUSER=y
+CONFIG_DELUSER=y
+CONFIG_GETTY=y
+# CONFIG_FEATURE_U_W_TMP is not set
+CONFIG_LOGIN=y
+CONFIG_FEATURE_SECURETTY=y
+CONFIG_PASSWD=y
+CONFIG_SU=y
+CONFIG_SULOGIN=y
+CONFIG_VLOCK=y
+
+#
+# Common options for adduser, deluser, login, su
+#
+CONFIG_FEATURE_SHADOWPASSWDS=y
+
+#
+# Miscellaneous Utilities
+#
+# CONFIG_ADJTIMEX is not set
+# CONFIG_CROND is not set
+# CONFIG_CRONTAB is not set
+CONFIG_DC=y
+# CONFIG_DEVFSD is not set
+# CONFIG_EJECT is not set
+# CONFIG_LAST is not set
+# CONFIG_HDPARM is not set
+# CONFIG_MAKEDEVS is not set
+CONFIG_MT=y
+# CONFIG_RX is not set
+CONFIG_STRINGS=y
+CONFIG_TIME=y
+# CONFIG_WATCHDOG is not set
+
+#
+# Linux Module Utilities
+#
+CONFIG_INSMOD=y
+CONFIG_FEATURE_2_4_MODULES=y
+# CONFIG_FEATURE_2_6_MODULES is not set
+# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
+# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set
+# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
+# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
+CONFIG_LSMOD=y
+CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT=y
+CONFIG_FEATURE_QUERY_MODULE_INTERFACE=y
+CONFIG_MODPROBE=y
+CONFIG_RMMOD=y
+CONFIG_FEATURE_CHECK_TAINTED_MODULE=y
+
+#
+# Networking Utilities
+#
+# CONFIG_FEATURE_IPV6 is not set
+# CONFIG_ARPING is not set
+# CONFIG_ETHER_WAKE is not set
+# CONFIG_FAKEIDENTD is not set
+# CONFIG_FTPGET is not set
+# CONFIG_FTPPUT is not set
+CONFIG_HOSTNAME=y
+# CONFIG_HTTPD is not set
+CONFIG_IFCONFIG=y
+CONFIG_FEATURE_IFCONFIG_STATUS=y
+# CONFIG_FEATURE_IFCONFIG_SLIP is not set
+# CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set
+# CONFIG_FEATURE_IFCONFIG_HW is not set
+# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set
+CONFIG_IFUPDOWN=y
+# CONFIG_FEATURE_IFUPDOWN_IP is not set
+CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN=y
+CONFIG_FEATURE_IFUPDOWN_IPV4=y
+# CONFIG_FEATURE_IFUPDOWN_IPV6 is not set
+# CONFIG_FEATURE_IFUPDOWN_IPX is not set
+# CONFIG_FEATURE_IFUPDOWN_MAPPING is not set
+# CONFIG_INETD is not set
+# CONFIG_IP is not set
+# CONFIG_IPCALC is not set
+# CONFIG_IPADDR is not set
+# CONFIG_IPLINK is not set
+# CONFIG_IPROUTE is not set
+# CONFIG_IPTUNNEL is not set
+# CONFIG_NAMEIF is not set
+# CONFIG_NC is not set
+CONFIG_NETSTAT=y
+CONFIG_NSLOOKUP=y
+CONFIG_PING=y
+CONFIG_FEATURE_FANCY_PING=y
+CONFIG_ROUTE=y
+CONFIG_TELNET=y
+CONFIG_FEATURE_TELNET_TTYPE=y
+# CONFIG_FEATURE_TELNET_AUTOLOGIN is not set
+# CONFIG_TELNETD is not set
+# CONFIG_TFTP is not set
+# CONFIG_TRACEROUTE is not set
+# CONFIG_VCONFIG is not set
+CONFIG_WGET=y
+CONFIG_FEATURE_WGET_STATUSBAR=y
+CONFIG_FEATURE_WGET_AUTHENTICATION=y
+# CONFIG_FEATURE_WGET_IP6_LITERAL is not set
+
+#
+# udhcp Server/Client
+#
+CONFIG_UDHCPD=y
+CONFIG_UDHCPC=y
+CONFIG_DUMPLEASES=y
+CONFIG_FEATURE_UDHCP_SYSLOG=y
+# CONFIG_FEATURE_UDHCP_DEBUG is not set
+# CONFIG_ZCIP is not set
+
+#
+# Process Utilities
+#
+CONFIG_FREE=y
+CONFIG_KILL=y
+CONFIG_KILLALL=y
+CONFIG_PIDOF=y
+CONFIG_PS=y
+# CONFIG_RENICE is not set
+# CONFIG_TOP is not set
+CONFIG_UPTIME=y
+# CONFIG_SYSCTL is not set
+
+#
+# Another Bourne-like Shell
+#
+CONFIG_FEATURE_SH_IS_ASH=y
+# CONFIG_FEATURE_SH_IS_HUSH is not set
+# CONFIG_FEATURE_SH_IS_LASH is not set
+# CONFIG_FEATURE_SH_IS_MSH is not set
+# CONFIG_FEATURE_SH_IS_NONE is not set
+CONFIG_ASH=y
+
+#
+# Ash Shell Options
+#
+CONFIG_ASH_JOB_CONTROL=y
+# CONFIG_ASH_TIMEOUT is not set
+CONFIG_ASH_ALIAS=y
+CONFIG_ASH_MATH_SUPPORT=y
+CONFIG_ASH_MATH_SUPPORT_64=y
+# CONFIG_ASH_GETOPTS is not set
+# CONFIG_ASH_CMDCMD is not set
+# CONFIG_ASH_MAIL is not set
+CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
+# CONFIG_ASH_RANDOM_SUPPORT is not set
+# CONFIG_HUSH is not set
+# CONFIG_LASH is not set
+# CONFIG_MSH is not set
+
+#
+# Bourne Shell Options
+#
+# CONFIG_FEATURE_SH_EXTRA_QUIET is not set
+# CONFIG_FEATURE_SH_STANDALONE_SHELL is not set
+CONFIG_FEATURE_COMMAND_EDITING=y
+CONFIG_FEATURE_COMMAND_HISTORY=15
+CONFIG_FEATURE_COMMAND_SAVEHISTORY=y
+CONFIG_FEATURE_COMMAND_TAB_COMPLETION=y
+# CONFIG_FEATURE_COMMAND_USERNAME_COMPLETION is not set
+CONFIG_FEATURE_SH_FANCY_PROMPT=y
+
+#
+# System Logging Utilities
+#
+CONFIG_SYSLOGD=y
+CONFIG_FEATURE_ROTATE_LOGFILE=y
+# CONFIG_FEATURE_REMOTE_LOG is not set
+# CONFIG_FEATURE_IPC_SYSLOG is not set
+CONFIG_KLOGD=y
+CONFIG_LOGGER=y
+
+#
+# Linux System Utilities
+#
+CONFIG_DMESG=y
+# CONFIG_FBSET is not set
+# CONFIG_FDFLUSH is not set
+CONFIG_FDFORMAT=y
+CONFIG_FDISK=y
+FDISK_SUPPORT_LARGE_DISKS=y
+CONFIG_FEATURE_FDISK_WRITABLE=y
+# CONFIG_FEATURE_AIX_LABEL is not set
+# CONFIG_FEATURE_SGI_LABEL is not set
+# CONFIG_FEATURE_SUN_LABEL is not set
+# CONFIG_FEATURE_OSF_LABEL is not set
+# CONFIG_FEATURE_FDISK_ADVANCED is not set
+# CONFIG_FREERAMDISK is not set
+# CONFIG_FSCK_MINIX is not set
+# CONFIG_MKFS_MINIX is not set
+CONFIG_GETOPT=y
+CONFIG_HEXDUMP=y
+CONFIG_HWCLOCK=y
+CONFIG_FEATURE_HWCLOCK_LONGOPTIONS=y
+# CONFIG_LOSETUP is not set
+# CONFIG_MKSWAP is not set
+CONFIG_MORE=y
+CONFIG_FEATURE_USE_TERMIOS=y
+CONFIG_PIVOT_ROOT=y
+CONFIG_RDATE=y
+CONFIG_SWAPONOFF=y
+CONFIG_MOUNT=y
+# CONFIG_NFSMOUNT is not set
+CONFIG_UMOUNT=y
+# CONFIG_FEATURE_MOUNT_FORCE is not set
+
+#
+# Common options for mount/umount
+#
+CONFIG_FEATURE_MOUNT_LOOP=y
+# CONFIG_FEATURE_MTAB_SUPPORT is not set
+# CONFIG_READPROFILE is not set
+
+#
+# Debugging Options
+#
+# CONFIG_DEBUG is not set
diff --git a/target/device/jp/q5/depmod.pl b/target/device/jp/q5/depmod.pl
new file mode 100755
index 000000000..5e8d5f38e
--- /dev/null
+++ b/target/device/jp/q5/depmod.pl
@@ -0,0 +1,237 @@
+#!/usr/bin/perl -w
+# vi: set ts=4:
+# Copyright (c) 2001 David Schleef <ds@schleef.org>
+# Copyright (c) 2001 Erik Andersen <andersen@codepoet.org>
+# Copyright (c) 2001 Stuart Hughes <stuarth@lineo.com>
+# Copyright (c) 2002 Steven J. Hill <shill@broadcom.com>
+# This program is free software; you can redistribute it and/or modify it
+# under the same terms as Perl itself.
+
+# TODO -- use strict mode...
+#use strict;
+
+use Getopt::Long;
+use File::Find;
+
+
+# Set up some default values
+
+my $basedir="";
+my $kernel;
+my $kernelsyms;
+my $stdout=0;
+my $verbose=0;
+
+
+# get command-line options
+
+my %opt;
+
+GetOptions(
+ \%opt,
+ "help|h",
+ "basedir|b=s" => \$basedir,
+ "kernel|k=s" => \$kernel,
+ "kernelsyms|F=s" => \$kernelsyms,
+ "stdout|n" => \$stdout,
+ "verbose|v" => \$verbose,
+);
+
+if (defined $opt{help}) {
+ print
+ " $0 [OPTION]... [basedir]\n",
+ " -h --help\t\tShow this help screen\n",
+ " -b --basedir\tModules base directory (defaults to /lib/modules)\n",
+ " -k --kernel\tKernel binary for the target\n",
+ " -F --kernelsyms\tKernel symbol file\n",
+ " -n --stdout\tWrite to stdout instead of <basedir>/modules.dep\n",
+ " -v --verbose\tPrint out lots of debugging stuff\n",
+ ;
+ exit 1;
+}
+
+if($basedir !~ m-/lib/modules-) {
+ warn "WARNING: base directory does not match ..../lib/modules\n";
+}
+
+# Find the list of .o files living under $basedir
+#if ($verbose) { printf "Locating all modules\n"; }
+my($ofile) = "";
+my($file) = "";
+my(@liblist) = ();
+find sub {
+ if ( -f $_ && ! -d $_ ) {
+ $file = $File::Find::name;
+ if ( $file =~ /.o$/ ) {
+ push(@liblist, $file);
+ if ($verbose) { printf "$file\n"; }
+ }
+ }
+}, $basedir;
+if ($verbose) { printf "Finished locating modules\n"; }
+
+foreach $obj ( @liblist, $kernel ){
+ # turn the input file name into a target tag name
+ # vmlinux is a special that is only used to resolve symbols
+ if($obj =~ /vmlinux/) {
+ $tgtname = "vmlinux";
+ } else {
+ ($tgtname) = $obj =~ m-(/lib/modules/.*)$-;
+ }
+
+ warn "MODULE = $tgtname\n" if $verbose;
+
+ # get a list of symbols
+ @output=`nm $obj`;
+ $ksymtab=grep m/ __ksymtab/, @output;
+
+ # gather the exported symbols
+ if($ksymtab){
+ # explicitly exported
+ foreach ( @output ) {
+ / __ksymtab_(.*)$/ and do {
+ warn "sym = $1\n" if $verbose;
+ $exp->{$1} = $tgtname;
+ };
+ }
+ } else {
+ # exporting all symbols
+ foreach ( @output) {
+ / [ABCDGRST] (.*)$/ and do {
+ warn "syma = $1\n" if $verbose;
+ $exp->{$1} = $tgtname;
+ };
+ }
+ }
+ # gather the unresolved symbols
+ foreach ( @output ) {
+ !/ __this_module/ && / U (.*)$/ and do {
+ warn "und = $1\n" if $verbose;
+ push @{$dep->{$tgtname}}, $1;
+ };
+ }
+}
+
+
+# reduce dependancies: remove unresolvable and resolved from vmlinux
+# remove duplicates
+foreach $module (keys %$dep) {
+ $mod->{$module} = {};
+ foreach (@{$dep->{$module}}) {
+ if( $exp->{$_} ) {
+ warn "resolved symbol $_ in file $exp->{$_}\n" if $verbose;
+ next if $exp->{$_} =~ /vmlinux/;
+ $mod->{$module}{$exp->{$_}} = 1;
+ } else {
+ warn "unresolved symbol $_ in file $module\n";
+ }
+ }
+}
+
+# resolve the dependancies for each module
+if ($stdout == 1) {
+ foreach $module ( keys %$mod ) {
+ print "$module:\t";
+ @sorted = sort bydep keys %{$mod->{$module}};
+ print join(" \\\n\t",@sorted);
+ print "\n\n";
+ }
+} else {
+ open(OFILE, ">$basedir/modules.dep");
+ foreach $module ( keys %$mod ) {
+ print OFILE "$module:\t";
+ @sorted = sort bydep keys %{$mod->{$module}};
+ print OFILE join(" \\\n\t",@sorted);
+ print OFILE "\n\n";
+ }
+}
+
+
+sub bydep
+{
+ foreach my $f ( keys %{$mod->{$b}} ) {
+ if($f eq $a) {
+ return 1;
+ }
+ }
+ return -1;
+}
+
+
+
+__END__
+
+=head1 NAME
+
+depmod.pl - a cross platform script to generate kernel module dependency
+ lists which can then be used by modprobe.
+
+=head1 SYNOPSIS
+
+depmod.pl [OPTION]... [basedir]...
+
+Example:
+
+ depmod.pl -F linux/System.map target/lib/modules
+
+=head1 DESCRIPTION
+
+The purpose of this script is to automagically generate a list of of kernel
+module dependancies. This script produces dependancy lists that should be
+identical to the depmod program from the modutils package. Unlike the depmod
+binary, however, depmod.pl is designed to be run on your host system, not
+on your target system.
+
+This script was written by David Schleef <ds@schleef.org> to be used in
+conjunction with the BusyBox modprobe applet.
+
+=head1 OPTIONS
+
+=over 4
+
+=item B<-h --help>
+
+This displays the help message.
+
+=item B<-b --basedir>
+
+The base directory uner which the target's modules will be found. This
+defaults to the /lib/modules directory.
+
+=item B<-k --kernel>
+
+Kernel binary for the target. You must either supply a kernel binary
+or a kernel symbol file (using the -F option).
+
+=item B<-F --kernelsyms>
+
+Kernel symbol file for the target. You must supply either a kernel symbol file
+kernel binary for the target (using the -k option).
+
+=item B<-n --stdout>
+
+Write to stdout instead of modules.dep. This is currently hard coded...
+kernel binary for the target (using the -k option).
+
+=item B<--verbose>
+
+Be verbose (not implemented)
+
+=back
+
+=head1 COPYRIGHT
+
+Copyright (c) 2001 David Schleef <ds@schleef.org>
+Copyright (c) 2001 Erik Andersen <andersen@codepoet.org>
+Copyright (c) 2001 Stuart Hughes <stuarth@lineo.com>
+This program is free software; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+
+=head1 AUTHOR
+
+David Schleef <ds@schleef.org>
+
+=cut
+
+# $Id: depmod.pl,v 1.1 2004/12/08 01:34:41 andersen Exp $
+
diff --git a/target/device/jp/q5/device_table.txt b/target/device/jp/q5/device_table.txt
new file mode 100644
index 000000000..8b46ca032
--- /dev/null
+++ b/target/device/jp/q5/device_table.txt
@@ -0,0 +1,162 @@
+# When building a target filesystem, it is desirable to not have to
+# become root and then run 'mknod' a thousand times. Using a device
+# table you can create device nodes and directories "on the fly".
+#
+# This is a sample device table file for use with genext2fs. You can
+# do all sorts of interesting things with a device table file. For
+# example, if you want to adjust the permissions on a particular file
+# you can just add an entry like:
+# /sbin/foobar f 2755 0 0 - - - - -
+# and (assuming the file /sbin/foobar exists) it will be made setuid
+# root (regardless of what its permissions are on the host filesystem.
+# Furthermore, you can use a single table entry to create a many device
+# minors. For example, if I wanted to create /dev/hda and /dev/hda[0-15]
+# I could just use the following two table entries:
+# /dev/hda b 640 0 0 3 0 0 0 -
+# /dev/hda b 640 0 0 3 1 1 1 15
+#
+# Device table entries take the form of:
+# <name> <type> <mode> <uid> <gid> <major> <minor> <start> <inc> <count>
+# where name is the file name, type can be one of:
+# f A regular file
+# d Directory
+# c Character special device file
+# b Block special device file
+# p Fifo (named pipe)
+# uid is the user id for the target file, gid is the group id for the
+# target file. The rest of the entries (major, minor, etc) apply only
+# to device special files.
+
+# Have fun
+# -Erik Andersen <andersen@codepoet.org>
+#
+
+#<name> <type> <mode> <uid> <gid> <major> <minor> <start> <inc> <count>
+/dev d 755 0 0 - - - - -
+/dev/pts d 755 0 0 - - - - -
+/tmp d 1777 0 0 - - - - -
+/etc d 755 0 0 - - - - -
+/home/default d 2755 1000 1000 - - - - -
+#<name> <type> <mode> <uid> <gid> <major> <minor> <start> <inc> <count>
+/bin/busybox f 4755 0 0 - - - - -
+/etc/shadow f 600 0 0 - - - - -
+/etc/passwd f 644 0 0 - - - - -
+/etc/network/if-up.d d 755 0 0 - - - - -
+/etc/network/if-pre-up.d d 755 0 0 - - - - -
+/etc/network/if-down.d d 755 0 0 - - - - -
+/etc/network/if-post-down.d d 755 0 0 - - - - -
+/usr/share/udhcpc/default.script f 755 0 0 - - - - -
+# uncomment this to allow starting x as non-root
+#/usr/X11R6/bin/Xfbdev f 4755 0 0 - - - - -
+# Normal system devices
+/dev/mem c 640 0 0 1 1 0 0 -
+/dev/kmem c 640 0 0 1 2 0 0 -
+/dev/null c 666 0 0 1 3 0 0 -
+/dev/zero c 666 0 0 1 5 0 0 -
+/dev/random c 666 0 0 1 8 0 0 -
+/dev/urandom c 666 0 0 1 9 0 0 -
+/dev/ram b 640 0 0 1 1 0 0 -
+/dev/ram b 640 0 0 1 0 0 1 4
+/dev/loop b 640 0 0 7 0 0 1 2
+/dev/rtc c 640 0 0 10 135 - - -
+/dev/console c 666 0 0 5 1 - - -
+/dev/tty c 666 0 0 5 0 - - -
+/dev/tty c 666 0 0 4 0 0 1 8
+/dev/ttyp c 666 0 0 3 0 0 1 10
+/dev/ptyp c 666 0 0 2 0 0 1 10
+/dev/ptmx c 666 0 0 5 2 - - -
+/dev/ttyP c 666 0 0 57 0 0 1 4
+/dev/ttyS c 666 0 0 4 64 0 1 4
+/dev/fb c 640 0 5 29 0 0 32 4
+#/dev/ttySA c 666 0 0 204 5 0 1 3
+/dev/psaux c 666 0 0 10 1 0 0 -
+#/dev/ppp c 666 0 0 108 0 - - -
+
+# MTD stuff
+/dev/mtd c 640 0 0 90 0 0 2 4
+/dev/mtdblock b 640 0 0 31 0 0 1 4
+
+#Tun/tap driver
+/dev/net d 755 0 0 - - - - -
+/dev/net/tun c 660 0 0 10 200 - - -
+
+# Audio stuff
+#/dev/audio c 666 0 29 14 4 - - -
+#/dev/audio1 c 666 0 29 14 20 - - -
+#/dev/dsp c 666 0 29 14 3 - - -
+#/dev/dsp1 c 666 0 29 14 19 - - -
+#/dev/sndstat c 666 0 29 14 6 - - -
+
+# User-mode Linux stuff
+/dev/ubda b 640 0 0 98 0 0 0 -
+/dev/ubda b 640 0 0 98 1 1 1 15
+
+# IDE Devices
+/dev/hda b 640 0 0 3 0 0 0 -
+/dev/hda b 640 0 0 3 1 1 1 15
+/dev/hdb b 640 0 0 3 64 0 0 -
+/dev/hdb b 640 0 0 3 65 1 1 15
+#/dev/hdc b 640 0 0 22 0 0 0 -
+#/dev/hdc b 640 0 0 22 1 1 1 15
+#/dev/hdd b 640 0 0 22 64 0 0 -
+#/dev/hdd b 640 0 0 22 65 1 1 15
+#/dev/hde b 640 0 0 33 0 0 0 -
+#/dev/hde b 640 0 0 33 1 1 1 15
+#/dev/hdf b 640 0 0 33 64 0 0 -
+#/dev/hdf b 640 0 0 33 65 1 1 15
+#/dev/hdg b 640 0 0 34 0 0 0 -
+#/dev/hdg b 640 0 0 34 1 1 1 15
+#/dev/hdh b 640 0 0 34 64 0 0 -
+#/dev/hdh b 640 0 0 34 65 1 1 15
+
+# SCSI Devices
+#/dev/sda b 640 0 0 8 0 0 0 -
+#/dev/sda b 640 0 0 8 1 1 1 15
+#/dev/sdb b 640 0 0 8 16 0 0 -
+#/dev/sdb b 640 0 0 8 17 1 1 15
+#/dev/sdc b 640 0 0 8 32 0 0 -
+#/dev/sdc b 640 0 0 8 33 1 1 15
+#/dev/sdd b 640 0 0 8 48 0 0 -
+#/dev/sdd b 640 0 0 8 49 1 1 15
+#/dev/sde b 640 0 0 8 64 0 0 -
+#/dev/sde b 640 0 0 8 65 1 1 15
+#/dev/sdf b 640 0 0 8 80 0 0 -
+#/dev/sdf b 640 0 0 8 81 1 1 15
+#/dev/sdg b 640 0 0 8 96 0 0 -
+#/dev/sdg b 640 0 0 8 97 1 1 15
+#/dev/sdh b 640 0 0 8 112 0 0 -
+#/dev/sdh b 640 0 0 8 113 1 1 15
+#/dev/sg c 640 0 0 21 0 0 1 15
+#/dev/scd b 640 0 0 11 0 0 1 15
+#/dev/st c 640 0 0 9 0 0 1 8
+#/dev/nst c 640 0 0 9 128 0 1 8
+#/dev/st c 640 0 0 9 32 1 1 4
+#/dev/st c 640 0 0 9 64 1 1 4
+#/dev/st c 640 0 0 9 96 1 1 4
+
+# Floppy disk devices
+#/dev/fd b 640 0 0 2 0 0 1 2
+#/dev/fd0d360 b 640 0 0 2 4 0 0 -
+#/dev/fd1d360 b 640 0 0 2 5 0 0 -
+#/dev/fd0h1200 b 640 0 0 2 8 0 0 -
+#/dev/fd1h1200 b 640 0 0 2 9 0 0 -
+#/dev/fd0u1440 b 640 0 0 2 28 0 0 -
+#/dev/fd1u1440 b 640 0 0 2 29 0 0 -
+#/dev/fd0u2880 b 640 0 0 2 32 0 0 -
+#/dev/fd1u2880 b 640 0 0 2 33 0 0 -
+
+# All the proprietary cdrom devices in the world
+#/dev/aztcd b 640 0 0 29 0 0 0 -
+#/dev/bpcd b 640 0 0 41 0 0 0 -
+#/dev/capi20 c 640 0 0 68 0 0 1 2
+#/dev/cdu31a b 640 0 0 15 0 0 0 -
+#/dev/cdu535 b 640 0 0 24 0 0 0 -
+#/dev/cm206cd b 640 0 0 32 0 0 0 -
+#/dev/sjcd b 640 0 0 18 0 0 0 -
+#/dev/sonycd b 640 0 0 15 0 0 0 -
+#/dev/gscd b 640 0 0 16 0 0 0 -
+#/dev/sbpcd b 640 0 0 25 0 0 0 -
+#/dev/sbpcd b 640 0 0 25 0 0 1 4
+#/dev/mcd b 640 0 0 23 0 0 0 -
+#/dev/optcd b 640 0 0 17 0 0 0 -
+
diff --git a/target/device/jp/q5/kernel-patches-2.4.26/001-q5 b/target/device/jp/q5/kernel-patches-2.4.26/001-q5
new file mode 100644
index 000000000..70ca0c555
--- /dev/null
+++ b/target/device/jp/q5/kernel-patches-2.4.26/001-q5
@@ -0,0 +1,730 @@
+diff -Naur -p -X do_not_diff -I '\$Id' -I '@(#)' linux-2.4.25-rc2_org/arch/mips/au1000/common/Makefile linux-2.4.25-rc2_q/arch/mips/au1000/common/Makefile
+--- linux-2.4.25-rc2_org/arch/mips/au1000/common/Makefile 2004-02-13 01:03:35.000000000 +0100
++++ linux-2.4.25-rc2_q/arch/mips/au1000/common/Makefile 2004-02-13 10:04:07.000000000 +0100
+@@ -16,7 +16,7 @@ all: au1000.o
+
+ O_TARGET := au1000.o
+
+-export-objs = prom.o clocks.o power.o usbdev.o
++export-objs = prom.o clocks.o power.o usbdev.o setup.o
+
+ obj-y := prom.o int-handler.o dma.o irq.o puts.o time.o reset.o \
+ clocks.o power.o setup.o sleeper.o
+diff -Naur -p -X do_not_diff -I '\$Id' -I '@(#)' linux-2.4.25-rc2_org/arch/mips/au1000/common/pci_fixup.c linux-2.4.25-rc2_q/arch/mips/au1000/common/pci_fixup.c
+--- linux-2.4.25-rc2_org/arch/mips/au1000/common/pci_fixup.c 2004-02-13 01:03:35.000000000 +0100
++++ linux-2.4.25-rc2_q/arch/mips/au1000/common/pci_fixup.c 2004-02-13 10:09:43.000000000 +0100
+@@ -105,42 +105,8 @@ void __init pcibios_fixup(void)
+
+ void __init pcibios_fixup_irqs(void)
+ {
+-#if defined( CONFIG_SOC_AU1500 ) || defined( CONFIG_SOC_AU1550 )
+- unsigned int slot, func;
+- unsigned char pin;
+- struct pci_dev *dev;
+-
+- pci_for_each_dev(dev) {
+- if (dev->bus->number != 0)
+- return;
+-
+- dev->irq = 0xff;
+- slot = PCI_SLOT(dev->devfn);
+-#if defined( CONFIG_SOC_AU1500 )
+- switch (slot) {
+- case 12:
+- case 13:
+- default:
+- dev->irq = AU1000_PCI_INTA;
+- break;
+- }
+-#elif defined( CONFIG_SOC_AU1550 )
+- switch (slot) {
+- default:
+- case 12:
+- dev->irq = AU1000_PCI_INTA;
+- break;
+- case 13:
+- dev->irq = AU1000_PCI_INTB;
+- break;
+- }
+-#endif
+-
+- pci_write_config_byte(dev, PCI_INTERRUPT_LINE, dev->irq);
+- DBG("slot %d irq %d\n", slot, dev->irq);
+- }
+-#endif
+ }
++
+ unsigned int pcibios_assign_all_busses(void)
+ {
+ return 0;
+diff -Naur -p -X do_not_diff -I '\$Id' -I '@(#)' linux-2.4.25-rc2_org/arch/mips/au1000/common/prom.c linux-2.4.25-rc2_q/arch/mips/au1000/common/prom.c
+--- linux-2.4.25-rc2_org/arch/mips/au1000/common/prom.c 2004-02-13 01:03:32.000000000 +0100
++++ linux-2.4.25-rc2_q/arch/mips/au1000/common/prom.c 2004-02-13 10:07:12.000000000 +0100
+@@ -81,7 +81,7 @@ void prom_init_cmdline(void)
+ }
+
+
+-char *prom_getenv(char *envname)
++char *prom_getenv_n(char *envname, int n)
+ {
+ /*
+ * Return a pointer to the given environment variable.
+@@ -89,19 +89,24 @@ char *prom_getenv(char *envname)
+ */
+
+ t_env_var *env = (t_env_var *)prom_envp;
+- int i;
++ int i, j=0;
+
+ i = strlen(envname);
+
+ while(env->name) {
+ if(strncmp(envname, env->name, i) == 0) {
+- return(env->name + strlen(envname) + 1);
++ if(j++ == n) return(env->name + strlen(envname) + 1);
+ }
+ env++;
+ }
+ return(NULL);
+ }
+
++char *prom_getenv(char *envname)
++{
++ return prom_getenv_n(envname, 0);
++}
++
+ inline unsigned char str2hexnum(unsigned char c)
+ {
+ if(c >= '0' && c <= '9')
+@@ -128,18 +133,18 @@ inline void str2eaddr(unsigned char *ea,
+ }
+ }
+
+-int get_ethernet_addr(char *ethernet_addr)
++int get_ethernet_addr_n(char *ethernet_addr, int n)
+ {
+ char *ethaddr_str;
+
+- ethaddr_str = prom_getenv("ethaddr");
++ ethaddr_str = prom_getenv_n("ethaddr", n);
+ if (!ethaddr_str) {
+ printk("ethaddr not set in boot prom\n");
+ return -1;
+ }
+ str2eaddr(ethernet_addr, ethaddr_str);
+
+-#if 0
++#if 1
+ {
+ int i;
+
+@@ -153,7 +158,13 @@ int get_ethernet_addr(char *ethernet_add
+ return 0;
+ }
+
++int get_ethernet_addr(char *ethernet_addr)
++{
++ return get_ethernet_addr_n(ethernet_addr, 0);
++}
++
+ void prom_free_prom_memory (void) {}
++EXPORT_SYMBOL(get_ethernet_addr_n);
+ EXPORT_SYMBOL(prom_getcmdline);
+ EXPORT_SYMBOL(get_ethernet_addr);
+ EXPORT_SYMBOL(str2eaddr);
+diff -Naur -p -X do_not_diff -I '\$Id' -I '@(#)' linux-2.4.25-rc2_org/arch/mips/au1000/common/setup.c linux-2.4.25-rc2_q/arch/mips/au1000/common/setup.c
+--- linux-2.4.25-rc2_org/arch/mips/au1000/common/setup.c 2004-02-13 01:03:31.000000000 +0100
++++ linux-2.4.25-rc2_q/arch/mips/au1000/common/setup.c 2004-02-13 10:04:07.000000000 +0100
+@@ -57,6 +57,7 @@ extern struct ide_ops *ide_ops;
+ #endif
+
+ extern struct rtc_ops no_rtc_ops;
++void (*__wbflush) (void);
+ extern char * __init prom_getcmdline(void);
+ extern void __init board_setup(void);
+ extern void au1000_restart(char *);
+@@ -71,6 +72,11 @@ static phys_t au1500_fixup_bigphys_addr(
+ extern void au1xxx_time_init(void);
+ extern void au1xxx_timer_setup(void);
+
++void au1500_wbflush(void)
++{
++ __asm__ volatile ("sync");
++}
++
+ void __init au1x00_setup(void)
+ {
+ char *argptr;
+@@ -89,6 +95,8 @@ void __init au1x00_setup(void)
+ }
+ #endif
+
++ __wbflush = au1500_wbflush;
++
+ #ifdef CONFIG_FB_AU1100
+ if ((argptr = strstr(argptr, "video=")) == NULL) {
+ argptr = prom_getcmdline();
+@@ -215,3 +223,6 @@ static phys_t au1500_fixup_bigphys_addr(
+ return phys_addr;
+ }
+ #endif
++
++EXPORT_SYMBOL(__wbflush);
++
+diff -Naur -p -X do_not_diff -I '\$Id' -I '@(#)' linux-2.4.25-rc2_org/arch/mips/au1000/pb1500/irqmap.c linux-2.4.25-rc2_q/arch/mips/au1000/pb1500/irqmap.c
+--- linux-2.4.25-rc2_org/arch/mips/au1000/pb1500/irqmap.c 2004-02-13 01:03:28.000000000 +0100
++++ linux-2.4.25-rc2_q/arch/mips/au1000/pb1500/irqmap.c 2004-02-13 10:10:21.000000000 +0100
+@@ -76,6 +76,7 @@ au1xxx_irq_map_t au1xxx_irq_map[] = {
+ { AU1500_GPIO_202, INTC_INT_LOW_LEVEL, 0 },
+ { AU1500_GPIO_203, INTC_INT_LOW_LEVEL, 0 },
+ { AU1500_GPIO_205, INTC_INT_LOW_LEVEL, 0 },
++ { AU1500_GPIO_206, INTC_INT_FALL_EDGE, 0 },
+ { AU1500_GPIO_207, INTC_INT_LOW_LEVEL, 0 },
+
+ { AU1000_ACSYNC_INT, INTC_INT_RISE_EDGE, 0 },
+diff -Naur -p -X do_not_diff -I '\$Id' -I '@(#)' linux-2.4.25-rc2_org/arch/mips/kernel/head.S linux-2.4.25-rc2_q/arch/mips/kernel/head.S
+--- linux-2.4.25-rc2_org/arch/mips/kernel/head.S 2004-02-13 01:02:42.000000000 +0100
++++ linux-2.4.25-rc2_q/arch/mips/kernel/head.S 2004-02-13 10:07:43.000000000 +0100
+@@ -33,7 +33,9 @@
+ * Reserved space for exception handlers.
+ * Necessary for machines which link their kernels at KSEG0.
+ */
+- .fill 0x400
++ j kernel_entry
++ nop
++ .org 0x400
+
+ /* The following two symbols are used for kernel profiling. */
+ EXPORT(stext)
+diff -Naur -p -X do_not_diff -I '\$Id' -I '@(#)' linux-2.4.25-rc2_org/arch/mips/Makefile linux-2.4.25-rc2_q/arch/mips/Makefile
+--- linux-2.4.25-rc2_org/arch/mips/Makefile 2004-02-13 01:01:00.000000000 +0100
++++ linux-2.4.25-rc2_q/arch/mips/Makefile 2004-04-09 10:40:09.000000000 +0200
+@@ -69,13 +69,13 @@ endif
+ set_gccflags = $(shell \
+ while :; do \
+ cpu=$(1); isa=-$(2); \
+- for gcc_opt in -march= -mcpu=; do \
++ for gcc_opt in -march=; do \
+ $(CC) $$gcc_opt$$cpu $$isa -S -o /dev/null \
+ -xc /dev/null > /dev/null 2>&1 && \
+ break 2; \
+ done; \
+ cpu=$(3); isa=-$(4); \
+- for gcc_opt in -march= -mcpu=; do \
++ for gcc_opt in -march=; do \
+ $(CC) $$gcc_opt$$cpu $$isa -S -o /dev/null \
+ -xc /dev/null > /dev/null 2>&1 && \
+ break 2; \
+@@ -90,7 +90,7 @@ else \
+ fi; \
+ gas_abi=-Wa,-32; gas_cpu=$$cpu; gas_isa=-Wa,$$isa; \
+ while :; do \
+- for gas_opt in -Wa,-march= -Wa,-mcpu=; do \
++ for gas_opt in -Wa,-march=; do \
+ $(CC) $$gas_abi $$gas_opt$$cpu $$gas_isa -Wa,-Z -c \
+ -o /dev/null -xassembler /dev/null > /dev/null 2>&1 && \
+ break 2; \
+diff -Naur -p -X do_not_diff -I '\$Id' -I '@(#)' linux-2.4.25-rc2_org/drivers/char/dummy_keyb.c linux-2.4.25-rc2_q/drivers/char/dummy_keyb.c
+--- linux-2.4.25-rc2_org/drivers/char/dummy_keyb.c 2004-02-12 23:51:10.000000000 +0100
++++ linux-2.4.25-rc2_q/drivers/char/dummy_keyb.c 2004-02-13 10:11:06.000000000 +0100
+@@ -29,6 +29,7 @@
+ #include <linux/errno.h>
+ #include <linux/init.h>
+ #include <linux/input.h>
++#include <linux/pm.h>
+
+ void kbd_leds(unsigned char leds)
+ {
+@@ -140,3 +141,46 @@ void __init kbd_init_hw(void)
+ {
+ printk("Dummy keyboard driver installed.\n");
+ }
++
++
++void panic_blink(void)
++ {
++ }
++
++
++ int pckbd_translate(unsigned char scancode, unsigned char *keycode,
++ char raw_mode)
++ {
++ return 0;
++ }
++
++ char pckbd_unexpected_up(unsigned char keycode)
++ {
++ return 0;
++ }
++
++
++ void pckbd_leds(unsigned char leds)
++ {
++ }
++
++
++ int pckbd_setkeycode(unsigned int scancode, unsigned int keycode)
++ {
++ return 0;
++ }
++
++ int pckbd_getkeycode(unsigned int scancode)
++ {
++ return 0;
++ }
++
++ void __init pckbd_init_hw(void)
++ {
++ }
++
++ int pckbd_pm_resume(struct pm_dev *dev, pm_request_t rqst, void *data)
++ {
++ return 0;
++ }
++
+diff -Naur -p -X do_not_diff -I '\$Id' -I '@(#)' linux-2.4.25-rc2_org/drivers/char/Makefile linux-2.4.25-rc2_q/drivers/char/Makefile
+--- linux-2.4.25-rc2_org/drivers/char/Makefile 2004-02-12 23:50:40.000000000 +0100
++++ linux-2.4.25-rc2_q/drivers/char/Makefile 2004-02-13 10:11:06.000000000 +0100
+@@ -32,7 +32,7 @@ mod-subdirs := joystick ftape drm drm-4.
+ list-multi :=
+
+ KEYMAP =defkeymap.o
+-KEYBD =pc_keyb.o
++KEYBD =dummy_keyb.o
+ CONSOLE =console.o
+ SERIAL =serial.o
+
+diff -Naur -p -X do_not_diff -I '\$Id' -I '@(#)' linux-2.4.25-rc2_org/drivers/mtd/chips/cfi_cmdset_0002.c linux-2.4.25-rc2_q/drivers/mtd/chips/cfi_cmdset_0002.c
+--- linux-2.4.25-rc2_org/drivers/mtd/chips/cfi_cmdset_0002.c 2004-02-13 00:49:45.000000000 +0100
++++ linux-2.4.25-rc2_q/drivers/mtd/chips/cfi_cmdset_0002.c 2004-03-16 10:04:18.000000000 +0100
+@@ -511,7 +511,7 @@ static int do_write_oneword(struct map_i
+ or tells us why it failed. */
+ dq6 = CMD(1<<6);
+ dq5 = CMD(1<<5);
+- timeo = jiffies + (HZ/1000); /* setting timeout to 1ms for now */
++ timeo = jiffies + HZ; /* setting timeout to 1ms for now */
+
+ oldstatus = cfi_read(map, adr);
+ status = cfi_read(map, adr);
+@@ -540,9 +540,7 @@ static int do_write_oneword(struct map_i
+ oldstatus = cfi_read(map, adr);
+ status = cfi_read(map, adr);
+
+- if ( (oldstatus & 0x00FF) == (status & 0x00FF) ) {
+- printk(KERN_WARNING "Warning: DQ5 raised while program operation was in progress, however operation completed OK\n" );
+- } else {
++ if ( (oldstatus & 0x00FF) != (status & 0x00FF) ) {
+ /* DQ5 is active so we can do a reset and stop the erase */
+ cfi_write(map, CMD(0xF0), chip->start);
+ printk(KERN_WARNING "Internal flash device timeout occurred or write operation was performed while flash was programming.\n" );
+diff -Naur -p -X do_not_diff -I '\$Id' -I '@(#)' linux-2.4.25-rc2_org/drivers/mtd/maps/physmap.c linux-2.4.25-rc2_q/drivers/mtd/maps/physmap.c
+--- linux-2.4.25-rc2_org/drivers/mtd/maps/physmap.c 2004-02-13 00:50:09.000000000 +0100
++++ linux-2.4.25-rc2_q/drivers/mtd/maps/physmap.c 2004-02-13 10:11:40.000000000 +0100
+@@ -86,28 +86,24 @@ static int mtd_parts_n
+ #else
+ static struct mtd_partition physmap_partitions[] = {
+ /* Put your own partition definitions here */
+-#if 0
+ {
+- name: "bootROM",
+- size: 0x80000,
++ name: "fs1",
++ size: 28*1024*1024,
+ offset: 0,
+- mask_flags: MTD_WRITEABLE, /* force read-only */
+ }, {
+- name: "zImage",
+- size: 0x100000,
++ name: "bootldr",
++ size: 128*1024,
+ offset: MTDPART_OFS_APPEND,
+ mask_flags: MTD_WRITEABLE, /* force read-only */
+ }, {
+- name: "ramdisk.gz",
+- size: 0x300000,
++ name: "kernel",
++ size: 1*1024*1024,
+ offset: MTDPART_OFS_APPEND,
+- mask_flags: MTD_WRITEABLE, /* force read-only */
+ }, {
+- name: "User FS",
++ name: "fs2",
+ size: MTDPART_SIZ_FULL,
+ offset: MTDPART_OFS_APPEND,
+ }
+-#endif
+ };
+
+ #define NUM_PARTITIONS (sizeof(physmap_partitions)/sizeof(struct mtd_partition))
+diff -Naur -p -X do_not_diff -I '\$Id' -I '@(#)' linux-2.4.25-rc2_org/drivers/net/au1000_eth.c linux-2.4.25-rc2_q/drivers/net/au1000_eth.c
+--- linux-2.4.25-rc2_org/drivers/net/au1000_eth.c 2004-02-12 23:33:59.000000000 +0100
++++ linux-2.4.25-rc2_q/drivers/net/au1000_eth.c 2004-02-13 10:06:01.000000000 +0100
+@@ -97,6 +97,7 @@ extern int get_ethernet_addr(char *ether
+ extern inline void str2eaddr(unsigned char *ea, unsigned char *str);
+ extern inline unsigned char str2hexnum(unsigned char c);
+ extern char * __init prom_getcmdline(void);
++extern int get_ethernet_addr_n(char *ethernet_addr, int n);
+
+ /*
+ * Theory of operation
+@@ -591,6 +592,99 @@ int ks8995m_status(struct net_device *de
+ return 0;
+ }
+
++int ns_83847_reset(struct net_device *dev, int phy_addr)
++ {
++ s16 mii_control, timeout;
++
++ // printk("ns_reset\n");
++ mii_control = mdio_read(dev, phy_addr, MII_CONTROL);
++ mdio_write(dev, phy_addr, MII_CONTROL, mii_control | MII_CNTL_RESET);
++ mdelay(1);
++ for (timeout = 100; timeout > 0; --timeout) {
++ mii_control = mdio_read(dev, phy_addr, MII_CONTROL);
++ if ((mii_control & MII_CNTL_RESET) == 0)
++ break;
++ mdelay(1);
++ }
++ if (mii_control & MII_CNTL_RESET) {
++ printk(KERN_ERR "%s PHY reset timeout !\n", dev->name);
++ return -1;
++ }
++ return 0;
++ }
++
++int ns_83847_init(struct net_device *dev, int phy_addr)
++ {
++ s16 data;
++ // printk("ns_init\n");
++
++ /* Stop auto-negotiation */
++ // data = mdio_read(dev, phy_addr, MII_CONTROL);
++ // mdio_write(dev, phy_addr, MII_CONTROL, data & ~MII_CNTL_AUTO);
++ // mdio_write(dev, phy_addr, 0, 0x0000);
++ mdio_write(dev, phy_addr, MII_CONTROL, MII_CNTL_F100 /* | MII_CNTL_FDX */);
++
++ /* Set advertisement to 10/100 and Half/Full duplex (full capabilities) */
++ data = mdio_read(dev, phy_addr, MII_ANADV);
++ /* obs PAUSE bit */
++ data |= MII_NWAY_TX | MII_NWAY_TX_FDX | MII_NWAY_T_FDX | MII_NWAY_T; /* MII_NWAY_T4 not sopported */ ;
++ mdio_write(dev, phy_addr, MII_ANADV, data);
++
++ /* Bypass led stretching? */
++ data = mdio_read(dev, phy_addr, MII_NS_PHYCTRL);
++ data |= MII_NS_PHYCTRL_BP_STRETCH;
++ mdio_write(dev, phy_addr, MII_NS_PHYCTRL, data);
++
++ /* Restart auto-negotiation */
++ data = mdio_read(dev, phy_addr, MII_CONTROL);
++ data |= MII_CNTL_RST_AUTO | MII_CNTL_AUTO;
++ mdio_write(dev, phy_addr, MII_CONTROL, data);
++
++ return 0;
++ }
++
++int ns_83847_status(struct net_device *dev, int phy_addr, u16 *link, u16 *speed)
++ {
++ u16 mii_data;
++ struct au1000_private *aup;
++
++ if (!dev) {
++ printk(KERN_ERR "ns_83847_status error: NULL dev\n");
++ return -1;
++ }
++ aup = (struct au1000_private *) dev->priv;
++
++ mii_data = mdio_read(dev, aup->phy_addr, MII_STATUS);
++ // printk("ns_status: %04x\n", mii_data);
++ if (mii_data & MII_STAT_LINK) {
++ *link = 1;
++ mii_data = mdio_read(dev, aup->phy_addr, MII_NS_PHYSTS);
++ if (mii_data & MII_NS_PHYSTS_SPEED_10) {
++ *speed = IF_PORT_10BASET;
++ dev->if_port = IF_PORT_10BASET;
++ }
++ else {
++ if (mii_data & MII_NS_PHYSTS_DUPLEX_FULL) {
++ *speed = IF_PORT_100BASEFX;
++ dev->if_port = IF_PORT_100BASEFX;
++ }
++ else {
++ *speed = IF_PORT_100BASETX;
++ dev->if_port = IF_PORT_100BASETX;
++ }
++ }
++
++ }
++ else {
++ *link = 0;
++ *speed = 0;
++ dev->if_port = IF_PORT_UNKNOWN;
++ }
++ return 0;
++ }
++
++
++
+ #ifdef CONFIG_MIPS_BOSPORUS
+ int stub_init(struct net_device *dev, int phy_addr)
+ {
+@@ -616,6 +710,12 @@ stub_status(struct net_device *dev, int
+ }
+ #endif
+
++struct phy_ops ns_83847_ops = {
++ ns_83847_init,
++ ns_83847_reset,
++ ns_83847_status,
++};
++
+ struct phy_ops bcm_5201_ops = {
+ bcm_5201_init,
+ bcm_5201_reset,
+@@ -667,6 +767,7 @@ static struct mii_chip_info {
+ struct phy_ops *phy_ops;
+ int dual_phy;
+ } mii_chip_table[] = {
++ {"Natsemi DP83847 PHY", 0x2000, 0x5c30, &ns_83847_ops },
+ {"Broadcom BCM5201 10/100 BaseT PHY",0x0040,0x6212, &bcm_5201_ops,0},
+ {"Broadcom BCM5221 10/100 BaseT PHY",0x0040,0x61e4, &bcm_5201_ops,0},
+ {"Broadcom BCM5222 10/100 BaseT PHY",0x0040,0x6322, &bcm_5201_ops,1},
+@@ -868,6 +969,8 @@ static int mii_probe (struct net_device
+ }
+ }
+ }
++ printk(KERN_ERR "%s: Au1x No MII transceivers found!\n", dev->name);
++ return -1;
+ found:
+
+ #ifdef CONFIG_MIPS_BOSPORUS
+@@ -1176,21 +1279,10 @@ au1000_probe(u32 ioaddr, int irq, int po
+ switch (ioaddr) {
+ case AU1000_ETH0_BASE:
+ case AU1500_ETH0_BASE:
+- /* check env variables first */
+ if (!get_ethernet_addr(ethaddr)) {
+ memcpy(au1000_mac_addr, ethaddr, sizeof(dev->dev_addr));
+ } else {
+- /* Check command line */
+- argptr = prom_getcmdline();
+- if ((pmac = strstr(argptr, "ethaddr=")) == NULL) {
+- printk(KERN_INFO "%s: No mac address found\n",
+- dev->name);
+- /* use the hard coded mac addresses */
+- } else {
+- str2eaddr(ethaddr, pmac + strlen("ethaddr="));
+- memcpy(au1000_mac_addr, ethaddr,
+- sizeof(dev->dev_addr));
+- }
++ printk(KERN_INFO "%s: No mac address found\n", dev->name);
+ }
+ if (ioaddr == AU1000_ETH0_BASE)
+ aup->enable = (volatile u32 *)
+@@ -1206,6 +1298,11 @@ au1000_probe(u32 ioaddr, int irq, int po
+
+ case AU1000_ETH1_BASE:
+ case AU1500_ETH1_BASE:
++ if (!get_ethernet_addr_n(ethaddr, 1)) {
++ memcpy(au1000_mac_addr, ethaddr, sizeof(dev->dev_addr));
++ } else {
++ printk(KERN_INFO "%s: No mac address found\n", dev->name);
++ }
+ if (ioaddr == AU1000_ETH1_BASE)
+ aup->enable = (volatile u32 *)
+ ((unsigned long)AU1000_MAC1_ENABLE);
+@@ -1213,7 +1310,6 @@ au1000_probe(u32 ioaddr, int irq, int po
+ aup->enable = (volatile u32 *)
+ ((unsigned long)AU1500_MAC1_ENABLE);
+ memcpy(dev->dev_addr, au1000_mac_addr, sizeof(dev->dev_addr));
+- dev->dev_addr[4] += 0x10;
+ setup_hw_rings(aup, MAC1_RX_DMA_ADDR, MAC1_TX_DMA_ADDR);
+ aup->mac_id = 1;
+ au_macs[1] = aup;
+diff -Naur -p -X do_not_diff -I '\$Id' -I '@(#)' linux-2.4.25-rc2_org/drivers/net/au1000_eth.h linux-2.4.25-rc2_q/drivers/net/au1000_eth.h
+--- linux-2.4.25-rc2_org/drivers/net/au1000_eth.h 2004-02-12 23:33:54.000000000 +0100
++++ linux-2.4.25-rc2_q/drivers/net/au1000_eth.h 2004-02-13 10:06:01.000000000 +0100
+@@ -86,6 +86,28 @@
+ #define MII_STAT_CAN_TX_FDX 0x4000
+ #define MII_STAT_CAN_T4 0x8000
+
++/* mii registers for NS 83847 */
++#define MII_NS_PHYSTS 0x10
++#define MII_NS_FCSCR 0x14
++#define MII_NS_RECR 0x15
++#define MII_NS_PCSR 0x16
++#define MII_NS_PHYCTRL 0x19
++#define MII_NS_10BTSCR 0x1a
++#define MII_NS_CDCTRL 0x1b
++
++/* MII_NS_PHYSTS bits */
++#define MII_NS_PHYSTS_LINK (1)
++#define MII_NS_PHYSTS_SPEED_10 (1<<1)
++#define MII_NS_PHYSTS_DUPLEX_FULL (1<<2)
++
++/* MII_NS_PHYCTRL bits */
++#define MII_NS_PHYCTRL_BP_STRETCH (1<<8)
++
++/* MII_NS_CDCTRL bits */
++#define MII_NS_CDCTRL_CD_ENABLE (1<<15)
++#define MII_NS_CDCTRL_RISETIME (1<<11)
++#define MII_NS_CDCTRL_FALLTIME (1<<9)
++
+
+ #define MII_ID1_OUI_LO 0xFC00 /* low bits of OUI mask */
+ #define MII_ID1_MODEL 0x03F0 /* model number */
+diff -Naur -p -X do_not_diff -I '\$Id' -I '@(#)' linux-2.4.25-rc2_org/drivers/net/natsemi.c linux-2.4.25-rc2_q/drivers/net/natsemi.c
+--- linux-2.4.25-rc2_org/drivers/net/natsemi.c 2004-02-12 23:29:19.000000000 +0100
++++ linux-2.4.25-rc2_q/drivers/net/natsemi.c 2004-04-22 09:28:51.000000000 +0200
+@@ -773,7 +773,11 @@ static int __devinit natsemi_probe1 (str
+ goto err_ioremap;
+ }
+
+- /* Work around the dropped serial bit. */
++#ifdef __mips__
++ if (get_ethernet_addr_n(dev->dev_addr, 2)) {
++ printk(KERN_INFO "%s: No mac address found\n", dev->name);
++ }
++#else
+ prev_eedata = eeprom_read(ioaddr, 6);
+ for (i = 0; i < 3; i++) {
+ int eedata = eeprom_read(ioaddr, i + 7);
+@@ -781,6 +785,7 @@ static int __devinit natsemi_probe1 (str
+ dev->dev_addr[i*2+1] = eedata >> 7;
+ prev_eedata = eedata;
+ }
++#endif
+
+ dev->base_addr = ioaddr;
+ dev->irq = irq;
+diff -Naur -p -X do_not_diff -I '\$Id' -I '@(#)' linux-2.4.25-rc2_org/drivers/net/wireless/hermes.h linux-2.4.25-rc2_q/drivers/net/wireless/hermes.h
+--- linux-2.4.25-rc2_org/drivers/net/wireless/hermes.h 2004-02-12 23:47:43.000000000 +0100
++++ linux-2.4.25-rc2_q/drivers/net/wireless/hermes.h 2004-02-13 10:13:40.000000000 +0100
+@@ -302,9 +302,9 @@ typedef struct hermes_response {
+ #define hermes_read_reg(hw, off) ((hw)->io_space ? \
+ inw((hw)->iobase + ( (off) << (hw)->reg_spacing )) : \
+ readw((hw)->iobase + ( (off) << (hw)->reg_spacing )))
+-#define hermes_write_reg(hw, off, val) ((hw)->io_space ? \
+- outw_p((val), (hw)->iobase + ( (off) << (hw)->reg_spacing )) : \
+- writew((val), (hw)->iobase + ( (off) << (hw)->reg_spacing )))
++#define hermes_write_reg(hw, off, val) { if((hw)->io_space) \
++ outw_p((val), (hw)->iobase + ( (off) << (hw)->reg_spacing )); else \
++ writew((val), (hw)->iobase + ( (off) << (hw)->reg_spacing ));}
+
+ #define hermes_read_regn(hw, name) (hermes_read_reg((hw), HERMES_##name))
+ #define hermes_write_regn(hw, name, val) (hermes_write_reg((hw), HERMES_##name, (val)))
+diff -Naur -p -X do_not_diff -I '\$Id' -I '@(#)' linux-2.4.25-rc2_org/include/asm-mips/au1000.h linux-2.4.25-rc2_q/include/asm-mips/au1000.h
+--- linux-2.4.25-rc2_org/include/asm-mips/au1000.h 2004-02-12 23:06:31.000000000 +0100
++++ linux-2.4.25-rc2_q/include/asm-mips/au1000.h 2004-02-13 10:41:49.000000000 +0100
+@@ -283,14 +283,14 @@ extern au1xxx_irq_map_t au1xxx_irq_map[]
+ #define INTC_INT_HIGH_AND_LOW_LEVEL 0x7
+
+ /* Interrupt Numbers */
+-#define AU1000_UART0_INT 0
++#define AU1000_UART0_INT 3
+ #define AU1000_UART1_INT 1 /* au1000 */
+ #define AU1000_UART2_INT 2 /* au1000 */
+
+ #define AU1000_PCI_INTA 1 /* au1500 */
+ #define AU1000_PCI_INTB 2 /* au1500 */
+
+-#define AU1000_UART3_INT 3
++#define AU1000_UART3_INT 0
+
+ #define AU1000_SSI0_INT 4 /* au1000 */
+ #define AU1000_SSI1_INT 5 /* au1000 */
+@@ -693,12 +693,12 @@ extern au1xxx_irq_map_t au1xxx_irq_map[]
+
+
+ /* UARTS 0-3 */
+-#define UART0_ADDR 0xB1100000
++#define UART0_ADDR 0xB1400000
+ #define UART1_ADDR 0xB1200000
+ #define UART2_ADDR 0xB1300000
+-#define UART3_ADDR 0xB1400000
++#define UART3_ADDR 0xB1100000
+ #define UART_BASE UART0_ADDR
+-#define UART_DEBUG_BASE UART3_ADDR
++#define UART_DEBUG_BASE UART0_ADDR
+
+ #define UART_RX 0 /* Receive buffer */
+ #define UART_TX 4 /* Transmit buffer */
+diff -Naur -p -X do_not_diff -I '\$Id' -I '@(#)' linux-2.4.25-rc2_org/include/asm-mips/page.h linux-2.4.25-rc2_q/include/asm-mips/page.h
+--- linux-2.4.25-rc2_org/include/asm-mips/page.h 2004-02-12 23:06:14.000000000 +0100
++++ linux-2.4.25-rc2_q/include/asm-mips/page.h 2004-03-23 14:18:38.000000000 +0100
+@@ -13,7 +13,6 @@
+ #include <linux/config.h>
+ #include <asm/break.h>
+
+-#ifdef __KERNEL__
+
+ /*
+ * PAGE_SHIFT determines the page size
+@@ -30,6 +29,7 @@
+ #define PAGE_SIZE (1L << PAGE_SHIFT)
+ #define PAGE_MASK (~(PAGE_SIZE-1))
+
++#ifdef __KERNEL__
+ #ifndef __ASSEMBLY__
+
+ #include <asm/cacheflush.h>
+diff -Naur -p -X do_not_diff -I '\$Id' -I '@(#)' linux-2.4.25-rc2_org/include/asm-mips/wbflush.h linux-2.4.25-rc2_q/include/asm-mips/wbflush.h
+--- linux-2.4.25-rc2_org/include/asm-mips/wbflush.h 2004-02-12 23:06:33.000000000 +0100
++++ linux-2.4.25-rc2_q/include/asm-mips/wbflush.h 2004-02-13 20:42:57.000000000 +0100
+@@ -15,8 +15,11 @@
+
+ #ifdef CONFIG_CPU_HAS_WB
+
+-extern void (*__wbflush)(void);
+-extern void wbflush_setup(void);
++//extern void (*__wbflush)(void);
++//extern void wbflush_setup(void);
++
++
++#define __wbflush() { __asm__ volatile ("sync"); }
+
+ #define wbflush() \
+ do { \
+diff -Naur -p -X do_not_diff -I '\$Id' -I '@(#)' linux-2.4.25-rc2_org/include/pcmcia/cs_types.h linux-2.4.25-rc2_q/include/pcmcia/cs_types.h
+--- linux-2.4.25-rc2_org/include/pcmcia/cs_types.h 2004-02-12 23:13:05.000000000 +0100
++++ linux-2.4.25-rc2_q/include/pcmcia/cs_types.h 2004-02-13 10:15:10.000000000 +0100
+@@ -37,6 +37,7 @@
+ #endif
+
+ #if defined(__arm__) || defined(__mips__)
++//obs jp: on mips, "typedef unsigned long long ioaddr_t;" may be needed to support cardbus
+ typedef u_int ioaddr_t;
+ #else
+ typedef u_short ioaddr_t;
+diff -Naur -p -X do_not_diff -I '\$Id' -I '@(#)' linux-2.4.25-rc2_org/include/pcmcia/ss.h linux-2.4.25-rc2_q/include/pcmcia/ss.h
+--- linux-2.4.25-rc2_org/include/pcmcia/ss.h 2004-02-12 23:13:02.000000000 +0100
++++ linux-2.4.25-rc2_q/include/pcmcia/ss.h 2004-02-13 10:15:32.000000000 +0100
+@@ -112,7 +112,7 @@ typedef struct pccard_mem_map {
+ u_char map;
+ u_char flags;
+ u_short speed;
+- u_long sys_start, sys_stop;
++ ioaddr_t sys_start, sys_stop;
+ u_int card_start;
+ } pccard_mem_map;
+
+diff -Naur -p -X do_not_diff -I '\$Id' -I '@(#)' linux-2.4.25-rc2_org/init/do_mounts.c linux-2.4.25-rc2_q/init/do_mounts.c
+--- linux-2.4.25-rc2_org/init/do_mounts.c 2004-02-12 22:59:08.000000000 +0100
++++ linux-2.4.25-rc2_q/init/do_mounts.c 2004-02-13 10:16:02.000000000 +0100
+@@ -760,8 +760,6 @@ static void __init devfs_make_root(char
+ static void __init mount_root(void)
+ {
+ #ifdef CONFIG_ROOT_NFS
+- if (MAJOR(ROOT_DEV) == NFS_MAJOR
+- && MINOR(ROOT_DEV) == NFS_MINOR) {
+ if (mount_nfs_root()) {
+ sys_chdir("/root");
+ ROOT_DEV = current->fs->pwdmnt->mnt_sb->s_dev;
+@@ -770,7 +768,6 @@ static void __init mount_root(void)
+ }
+ printk(KERN_ERR "VFS: Unable to mount root fs via NFS, trying floppy.\n");
+ ROOT_DEV = MKDEV(FLOPPY_MAJOR, 0);
+- }
+ #endif
+ devfs_make_root(root_device_name);
+ create_dev("/dev/root", ROOT_DEV, root_device_name);
+
diff --git a/target/device/jp/q5/kernel-patches-2.4.26/002-build_fixes b/target/device/jp/q5/kernel-patches-2.4.26/002-build_fixes
new file mode 100644
index 000000000..a5928504e
--- /dev/null
+++ b/target/device/jp/q5/kernel-patches-2.4.26/002-build_fixes
@@ -0,0 +1,81 @@
+diff -Naur linux-2.4.26-q5.org/arch/mips/au1000/common/clocks.c linux-2.4.26-q5/arch/mips/au1000/common/clocks.c
+--- linux-2.4.26-q5.org/arch/mips/au1000/common/clocks.c 2003-08-25 07:44:39.000000000 -0400
++++ linux-2.4.26-q5/arch/mips/au1000/common/clocks.c 2005-06-23 02:52:03.390000000 -0400
+@@ -85,9 +85,8 @@
+ lcd_clock = sys_busclk / 4;
+
+ if (lcd_clock > 50000) /* Epson MAX */
+- printk(__FUNCTION__
+- ": warning: LCD clock too high (%d KHz)\n",
+- lcd_clock);
++ printk("%s: warning: LCD clock too high (%d KHz)\n",
++ __FUNCTION__, lcd_clock);
+ }
+
+ unsigned int get_au1x00_lcd_clock(void)
+--- linux-2.4.26-q5.org/arch/mips/kernel/time.c 2004-02-18 08:36:30.000000000 -0500
++++ linux-2.4.26-q5/arch/mips/kernel/time.c 2005-06-23 03:13:07.720000000 -0400
+@@ -25,6 +25,7 @@
+ #include <linux/interrupt.h>
+ #include <linux/module.h>
+
++#include <asm/compiler.h>
+ #include <asm/bootinfo.h>
+ #include <asm/cpu.h>
+ #include <asm/time.h>
+@@ -242,7 +243,7 @@
+ __asm__("multu %1,%2"
+ : "=h" (res)
+ : "r" (count), "r" (sll32_usecs_per_cycle)
+- : "lo", "accum");
++ : "lo", GCC_REG_ACCUM);
+
+ /*
+ * Due to possible jiffies inconsistencies, we need to check
+@@ -297,7 +298,7 @@
+ __asm__("multu %1,%2"
+ : "=h" (res)
+ : "r" (count), "r" (quotient)
+- : "lo", "accum");
++ : "lo", GCC_REG_ACCUM);
+
+ /*
+ * Due to possible jiffies inconsistencies, we need to check
+@@ -339,7 +340,7 @@
+ : "r" (timerhi), "m" (timerlo),
+ "r" (tmp), "r" (USECS_PER_JIFFY),
+ "r" (USECS_PER_JIFFY_FRAC)
+- : "hi", "lo", "accum");
++ : "hi", "lo", GCC_REG_ACCUM);
+ cached_quotient = quotient;
+ }
+ }
+@@ -353,7 +354,7 @@
+ __asm__("multu %1,%2"
+ : "=h" (res)
+ : "r" (count), "r" (quotient)
+- : "lo", "accum");
++ : "lo", GCC_REG_ACCUM);
+
+ /*
+ * Due to possible jiffies inconsistencies, we need to checkdiff -Naur linux-2.4.26-q5.org/include/asm-mips/compiler.h linux-2.4.26-q5/include/asm-mips/compiler.h
+--- linux-2.4.26-q5.org/include/asm-mips/compiler.h 1969-12-31 19:00:00.000000000 -0500
++++ linux-2.4.26-q5/include/asm-mips/compiler.h 2005-06-23 02:52:25.000000000 -0400
+@@ -0,0 +1,17 @@
++/*
++ * Copyright (C) 2004 Maciej W. Rozycki
++ *
++ * This file is subject to the terms and conditions of the GNU General Public
++ * License. See the file "COPYING" in the main directory of this archive
++ * for more details.
++ */
++#ifndef _ASM_COMPILER_H
++#define _ASM_COMPILER_H
++
++#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
++#define GCC_REG_ACCUM "$0"
++#else
++#define GCC_REG_ACCUM "accum"
++#endif
++
++#endif /* _ASM_COMPILER_H */
diff --git a/target/device/jp/q5/kernel-patches-2.4.26/004-correct_toolchain b/target/device/jp/q5/kernel-patches-2.4.26/004-correct_toolchain
new file mode 100644
index 000000000..53e509d3a
--- /dev/null
+++ b/target/device/jp/q5/kernel-patches-2.4.26/004-correct_toolchain
@@ -0,0 +1,24 @@
+--- linux-2.4.29/arch/mips/Makefile.orig 2005-03-08 23:24:05.000000000 -0700
++++ linux-2.4.29/arch/mips/Makefile 2005-03-08 23:27:37.000000000 -0700
+@@ -17,16 +17,16 @@
+ # Select the object file format to substitute into the linker script.
+ #
+ ifdef CONFIG_CPU_LITTLE_ENDIAN
+-tool-prefix = mipsel-linux-
++#tool-prefix = mipsel-linux-
+ ld-emul = elf32ltsmip
+ else
+-tool-prefix = mips-linux-
++#tool-prefix = mips-linux-
+ ld-emul = elf32btsmip
+ endif
+
+-ifdef CONFIG_CROSSCOMPILE
+-CROSS_COMPILE = $(tool-prefix)
+-endif
++#ifdef CONFIG_CROSSCOMPILE
++#CROSS_COMPILE = $(tool-prefix)
++#endif
+
+ MAKEBOOT = $(MAKE) -C arch/$(ARCH)/boot
+
diff --git a/target/device/jp/q5/kernel-patches-2.4.26/100-version b/target/device/jp/q5/kernel-patches-2.4.26/100-version
new file mode 100644
index 000000000..813d45f15
--- /dev/null
+++ b/target/device/jp/q5/kernel-patches-2.4.26/100-version
@@ -0,0 +1,11 @@
+--- linux/Makefile.orig 2004-08-18 14:17:14.000000000 -0600
++++ linux/Makefile 2004-08-18 14:17:54.000000000 -0600
+@@ -1,7 +1,7 @@
+ VERSION = 2
+ PATCHLEVEL = 4
+ SUBLEVEL = 26
+-EXTRAVERSION =
++EXTRAVERSION =-q5
+
+ KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
+
diff --git a/target/device/jp/q5/kernel-patches-2.4.29/001-q5 b/target/device/jp/q5/kernel-patches-2.4.29/001-q5
new file mode 100644
index 000000000..5f1af425a
--- /dev/null
+++ b/target/device/jp/q5/kernel-patches-2.4.29/001-q5
@@ -0,0 +1,420 @@
+diff -Naur -p -X do_not_diff -I '\$Id' -I '@(#)' linux-2.4.25-rc2_org/arch/mips/au1000/common/Makefile linux-2.4.25-rc2_q/arch/mips/au1000/common/Makefile
+--- linux-2.4.25-rc2_org/arch/mips/au1000/common/Makefile 2004-02-13 01:03:35.000000000 +0100
++++ linux-2.4.25-rc2_q/arch/mips/au1000/common/Makefile 2004-02-13 10:04:07.000000000 +0100
+@@ -16,7 +16,7 @@ all: au1000.o
+
+ O_TARGET := au1000.o
+
+-export-objs = prom.o clocks.o power.o usbdev.o
++export-objs = prom.o clocks.o power.o usbdev.o setup.o
+
+ obj-y := prom.o int-handler.o dma.o irq.o puts.o time.o reset.o \
+ clocks.o power.o setup.o sleeper.o
+diff -Naur -p -X do_not_diff -I '\$Id' -I '@(#)' linux-2.4.25-rc2_org/arch/mips/au1000/common/prom.c linux-2.4.25-rc2_q/arch/mips/au1000/common/prom.c
+--- linux-2.4.25-rc2_org/arch/mips/au1000/common/prom.c 2004-02-13 01:03:32.000000000 +0100
++++ linux-2.4.25-rc2_q/arch/mips/au1000/common/prom.c 2004-02-13 10:07:12.000000000 +0100
+@@ -81,7 +81,7 @@ void prom_init_cmdline(void)
+ }
+
+
+-char *prom_getenv(char *envname)
++char *prom_getenv_n(char *envname, int n)
+ {
+ /*
+ * Return a pointer to the given environment variable.
+@@ -89,19 +89,24 @@ char *prom_getenv(char *envname)
+ */
+
+ t_env_var *env = (t_env_var *)prom_envp;
+- int i;
++ int i, j=0;
+
+ i = strlen(envname);
+
+ while(env->name) {
+ if(strncmp(envname, env->name, i) == 0) {
+- return(env->name + strlen(envname) + 1);
++ if(j++ == n) return(env->name + strlen(envname) + 1);
+ }
+ env++;
+ }
+ return(NULL);
+ }
+
++char *prom_getenv(char *envname)
++{
++ return prom_getenv_n(envname, 0);
++}
++
+ inline unsigned char str2hexnum(unsigned char c)
+ {
+ if(c >= '0' && c <= '9')
+@@ -128,18 +133,18 @@ inline void str2eaddr(unsigned char *ea,
+ }
+ }
+
+-int get_ethernet_addr(char *ethernet_addr)
++int get_ethernet_addr_n(char *ethernet_addr, int n)
+ {
+ char *ethaddr_str;
+
+- ethaddr_str = prom_getenv("ethaddr");
++ ethaddr_str = prom_getenv_n("ethaddr", n);
+ if (!ethaddr_str) {
+ printk("ethaddr not set in boot prom\n");
+ return -1;
+ }
+ str2eaddr(ethernet_addr, ethaddr_str);
+
+-#if 0
++#if 1
+ {
+ int i;
+
+@@ -153,7 +158,13 @@ int get_ethernet_addr(char *ethernet_add
+ return 0;
+ }
+
++int get_ethernet_addr(char *ethernet_addr)
++{
++ return get_ethernet_addr_n(ethernet_addr, 0);
++}
++
+ void prom_free_prom_memory (void) {}
++EXPORT_SYMBOL(get_ethernet_addr_n);
+ EXPORT_SYMBOL(prom_getcmdline);
+ EXPORT_SYMBOL(get_ethernet_addr);
+ EXPORT_SYMBOL(str2eaddr);
+diff -Naur -p -X do_not_diff -I '\$Id' -I '@(#)' linux-2.4.25-rc2_org/arch/mips/au1000/common/setup.c linux-2.4.25-rc2_q/arch/mips/au1000/common/setup.c
+--- linux-2.4.25-rc2_org/arch/mips/au1000/common/setup.c 2004-02-13 01:03:31.000000000 +0100
++++ linux-2.4.25-rc2_q/arch/mips/au1000/common/setup.c 2004-02-13 10:04:07.000000000 +0100
+@@ -57,6 +57,7 @@ extern struct ide_ops *ide_ops;
+ #endif
+
+ extern struct rtc_ops no_rtc_ops;
++void (*__wbflush) (void);
+ extern char * __init prom_getcmdline(void);
+ extern void __init board_setup(void);
+ extern void au1000_restart(char *);
+@@ -71,6 +72,11 @@ static phys_t au1500_fixup_bigphys_addr(
+ extern void au1xxx_time_init(void);
+ extern void au1xxx_timer_setup(void);
+
++void au1500_wbflush(void)
++{
++ __asm__ volatile ("sync");
++}
++
+ void __init au1x00_setup(void)
+ {
+ char *argptr;
+@@ -89,6 +95,8 @@ void __init au1x00_setup(void)
+ }
+ #endif
+
++ __wbflush = au1500_wbflush;
++
+ #ifdef CONFIG_FB_AU1100
+ if ((argptr = strstr(argptr, "video=")) == NULL) {
+ argptr = prom_getcmdline();
+@@ -215,3 +223,6 @@ static phys_t au1500_fixup_bigphys_addr(
+ return phys_addr;
+ }
+ #endif
++
++EXPORT_SYMBOL(__wbflush);
++
+diff -Naur -p -X do_not_diff -I '\$Id' -I '@(#)' linux-2.4.25-rc2_org/arch/mips/kernel/head.S linux-2.4.25-rc2_q/arch/mips/kernel/head.S
+--- linux-2.4.25-rc2_org/arch/mips/kernel/head.S 2004-02-13 01:02:42.000000000 +0100
++++ linux-2.4.25-rc2_q/arch/mips/kernel/head.S 2004-02-13 10:07:43.000000000 +0100
+@@ -33,7 +33,9 @@
+ * Reserved space for exception handlers.
+ * Necessary for machines which link their kernels at KSEG0.
+ */
+- .fill 0x400
++ j kernel_entry
++ nop
++ .org 0x400
+
+ /* The following two symbols are used for kernel profiling. */
+ EXPORT(stext)
+diff -Naur -p -X do_not_diff -I '\$Id' -I '@(#)' linux-2.4.25-rc2_org/arch/mips/Makefile linux-2.4.25-rc2_q/arch/mips/Makefile
+--- linux-2.4.25-rc2_org/arch/mips/Makefile 2004-02-13 01:01:00.000000000 +0100
++++ linux-2.4.25-rc2_q/arch/mips/Makefile 2004-04-09 10:40:09.000000000 +0200
+@@ -69,13 +69,13 @@ endif
+ set_gccflags = $(shell \
+ while :; do \
+ cpu=$(1); isa=-$(2); \
+- for gcc_opt in -march= -mcpu=; do \
++ for gcc_opt in -march=; do \
+ $(CC) $$gcc_opt$$cpu $$isa -S -o /dev/null \
+ -xc /dev/null > /dev/null 2>&1 && \
+ break 2; \
+ done; \
+ cpu=$(3); isa=-$(4); \
+- for gcc_opt in -march= -mcpu=; do \
++ for gcc_opt in -march=; do \
+ $(CC) $$gcc_opt$$cpu $$isa -S -o /dev/null \
+ -xc /dev/null > /dev/null 2>&1 && \
+ break 2; \
+@@ -90,7 +90,7 @@ else \
+ fi; \
+ gas_abi=-Wa,-32; gas_cpu=$$cpu; gas_isa=-Wa,$$isa; \
+ while :; do \
+- for gas_opt in -Wa,-march= -Wa,-mcpu=; do \
++ for gas_opt in -Wa,-march=; do \
+ $(CC) $$gas_abi $$gas_opt$$cpu $$gas_isa -Wa,-Z -c \
+ -o /dev/null -xassembler /dev/null > /dev/null 2>&1 && \
+ break 2; \
+diff -Naur -p -X do_not_diff -I '\$Id' -I '@(#)' linux-2.4.25-rc2_org/drivers/char/dummy_keyb.c linux-2.4.25-rc2_q/drivers/char/dummy_keyb.c
+--- linux-2.4.25-rc2_org/drivers/char/dummy_keyb.c 2004-02-12 23:51:10.000000000 +0100
++++ linux-2.4.25-rc2_q/drivers/char/dummy_keyb.c 2004-02-13 10:11:06.000000000 +0100
+@@ -29,6 +29,7 @@
+ #include <linux/errno.h>
+ #include <linux/init.h>
+ #include <linux/input.h>
++#include <linux/pm.h>
+
+ void kbd_leds(unsigned char leds)
+ {
+@@ -140,3 +141,46 @@ void __init kbd_init_hw(void)
+ {
+ printk("Dummy keyboard driver installed.\n");
+ }
++
++
++void panic_blink(void)
++ {
++ }
++
++
++ int pckbd_translate(unsigned char scancode, unsigned char *keycode,
++ char raw_mode)
++ {
++ return 0;
++ }
++
++ char pckbd_unexpected_up(unsigned char keycode)
++ {
++ return 0;
++ }
++
++
++ void pckbd_leds(unsigned char leds)
++ {
++ }
++
++
++ int pckbd_setkeycode(unsigned int scancode, unsigned int keycode)
++ {
++ return 0;
++ }
++
++ int pckbd_getkeycode(unsigned int scancode)
++ {
++ return 0;
++ }
++
++ void __init pckbd_init_hw(void)
++ {
++ }
++
++ int pckbd_pm_resume(struct pm_dev *dev, pm_request_t rqst, void *data)
++ {
++ return 0;
++ }
++
+diff -Naur -p -X do_not_diff -I '\$Id' -I '@(#)' linux-2.4.25-rc2_org/drivers/char/Makefile linux-2.4.25-rc2_q/drivers/char/Makefile
+--- linux-2.4.25-rc2_org/drivers/char/Makefile 2004-02-12 23:50:40.000000000 +0100
++++ linux-2.4.25-rc2_q/drivers/char/Makefile 2004-02-13 10:11:06.000000000 +0100
+@@ -32,7 +32,7 @@ mod-subdirs := joystick ftape drm drm-4.
+ list-multi :=
+
+ KEYMAP =defkeymap.o
+-KEYBD =pc_keyb.o
++KEYBD =dummy_keyb.o
+ CONSOLE =console.o
+ SERIAL =serial.o
+
+diff -Naur -p -X do_not_diff -I '\$Id' -I '@(#)' linux-2.4.25-rc2_org/drivers/mtd/chips/cfi_cmdset_0002.c linux-2.4.25-rc2_q/drivers/mtd/chips/cfi_cmdset_0002.c
+--- linux-2.4.25-rc2_org/drivers/mtd/chips/cfi_cmdset_0002.c 2004-02-13 00:49:45.000000000 +0100
++++ linux-2.4.25-rc2_q/drivers/mtd/chips/cfi_cmdset_0002.c 2004-03-16 10:04:18.000000000 +0100
+@@ -511,7 +511,7 @@ static int do_write_oneword(struct map_i
+ or tells us why it failed. */
+ dq6 = CMD(1<<6);
+ dq5 = CMD(1<<5);
+- timeo = jiffies + (HZ/1000); /* setting timeout to 1ms for now */
++ timeo = jiffies + HZ; /* setting timeout to 1ms for now */
+
+ oldstatus = cfi_read(map, adr);
+ status = cfi_read(map, adr);
+@@ -540,9 +540,7 @@ static int do_write_oneword(struct map_i
+ oldstatus = cfi_read(map, adr);
+ status = cfi_read(map, adr);
+
+- if ( (oldstatus & 0x00FF) == (status & 0x00FF) ) {
+- printk(KERN_WARNING "Warning: DQ5 raised while program operation was in progress, however operation completed OK\n" );
+- } else {
++ if ( (oldstatus & 0x00FF) != (status & 0x00FF) ) {
+ /* DQ5 is active so we can do a reset and stop the erase */
+ cfi_write(map, CMD(0xF0), chip->start);
+ printk(KERN_WARNING "Internal flash device timeout occurred or write operation was performed while flash was programming.\n" );
+diff -Naur -p -X do_not_diff -I '\$Id' -I '@(#)' linux-2.4.25-rc2_org/drivers/mtd/maps/physmap.c linux-2.4.25-rc2_q/drivers/mtd/maps/physmap.c
+--- linux-2.4.25-rc2_org/drivers/mtd/maps/physmap.c 2004-02-13 00:50:09.000000000 +0100
++++ linux-2.4.25-rc2_q/drivers/mtd/maps/physmap.c 2004-02-13 10:11:40.000000000 +0100
+@@ -86,28 +86,24 @@ static int mtd_parts_n
+ #else
+ static struct mtd_partition physmap_partitions[] = {
+ /* Put your own partition definitions here */
+-#if 0
+ {
+- name: "bootROM",
+- size: 0x80000,
++ name: "fs1",
++ size: 28*1024*1024,
+ offset: 0,
+- mask_flags: MTD_WRITEABLE, /* force read-only */
+ }, {
+- name: "zImage",
+- size: 0x100000,
++ name: "bootldr",
++ size: 128*1024,
+ offset: MTDPART_OFS_APPEND,
+ mask_flags: MTD_WRITEABLE, /* force read-only */
+ }, {
+- name: "ramdisk.gz",
+- size: 0x300000,
++ name: "kernel",
++ size: 1*1024*1024,
+ offset: MTDPART_OFS_APPEND,
+- mask_flags: MTD_WRITEABLE, /* force read-only */
+ }, {
+- name: "User FS",
++ name: "fs2",
+ size: MTDPART_SIZ_FULL,
+ offset: MTDPART_OFS_APPEND,
+ }
+-#endif
+ };
+
+ #define NUM_PARTITIONS (sizeof(physmap_partitions)/sizeof(struct mtd_partition))
+diff -Naur -p -X do_not_diff -I '\$Id' -I '@(#)' linux-2.4.25-rc2_org/drivers/net/natsemi.c linux-2.4.25-rc2_q/drivers/net/natsemi.c
+--- linux-2.4.25-rc2_org/drivers/net/natsemi.c 2004-02-12 23:29:19.000000000 +0100
++++ linux-2.4.25-rc2_q/drivers/net/natsemi.c 2004-04-22 09:28:51.000000000 +0200
+@@ -773,7 +773,11 @@ static int __devinit natsemi_probe1 (str
+ goto err_ioremap;
+ }
+
+- /* Work around the dropped serial bit. */
++#ifdef __mips__
++ if (get_ethernet_addr_n(dev->dev_addr, 2)) {
++ printk(KERN_INFO "%s: No mac address found\n", dev->name);
++ }
++#else
+ prev_eedata = eeprom_read(ioaddr, 6);
+ for (i = 0; i < 3; i++) {
+ int eedata = eeprom_read(ioaddr, i + 7);
+@@ -781,6 +785,7 @@ static int __devinit natsemi_probe1 (str
+ dev->dev_addr[i*2+1] = eedata >> 7;
+ prev_eedata = eedata;
+ }
++#endif
+
+ dev->base_addr = ioaddr;
+ dev->irq = irq;
+diff -Naur -p -X do_not_diff -I '\$Id' -I '@(#)' linux-2.4.25-rc2_org/drivers/net/wireless/hermes.h linux-2.4.25-rc2_q/drivers/net/wireless/hermes.h
+--- linux-2.4.25-rc2_org/drivers/net/wireless/hermes.h 2004-02-12 23:47:43.000000000 +0100
++++ linux-2.4.25-rc2_q/drivers/net/wireless/hermes.h 2004-02-13 10:13:40.000000000 +0100
+@@ -302,9 +302,9 @@ typedef struct hermes_response {
+ #define hermes_read_reg(hw, off) ((hw)->io_space ? \
+ inw((hw)->iobase + ( (off) << (hw)->reg_spacing )) : \
+ readw((hw)->iobase + ( (off) << (hw)->reg_spacing )))
+-#define hermes_write_reg(hw, off, val) ((hw)->io_space ? \
+- outw_p((val), (hw)->iobase + ( (off) << (hw)->reg_spacing )) : \
+- writew((val), (hw)->iobase + ( (off) << (hw)->reg_spacing )))
++#define hermes_write_reg(hw, off, val) { if((hw)->io_space) \
++ outw_p((val), (hw)->iobase + ( (off) << (hw)->reg_spacing )); else \
++ writew((val), (hw)->iobase + ( (off) << (hw)->reg_spacing ));}
+
+ #define hermes_read_regn(hw, name) (hermes_read_reg((hw), HERMES_##name))
+ #define hermes_write_regn(hw, name, val) (hermes_write_reg((hw), HERMES_##name, (val)))
+diff -Naur -p -X do_not_diff -I '\$Id' -I '@(#)' linux-2.4.25-rc2_org/include/asm-mips/page.h linux-2.4.25-rc2_q/include/asm-mips/page.h
+--- linux-2.4.25-rc2_org/include/asm-mips/page.h 2004-02-12 23:06:14.000000000 +0100
++++ linux-2.4.25-rc2_q/include/asm-mips/page.h 2004-03-23 14:18:38.000000000 +0100
+@@ -13,7 +13,6 @@
+ #include <linux/config.h>
+ #include <asm/break.h>
+
+-#ifdef __KERNEL__
+
+ /*
+ * PAGE_SHIFT determines the page size
+@@ -30,6 +29,7 @@
+ #define PAGE_SIZE (1L << PAGE_SHIFT)
+ #define PAGE_MASK (~(PAGE_SIZE-1))
+
++#ifdef __KERNEL__
+ #ifndef __ASSEMBLY__
+
+ #include <asm/cacheflush.h>
+diff -Naur -p -X do_not_diff -I '\$Id' -I '@(#)' linux-2.4.25-rc2_org/include/asm-mips/wbflush.h linux-2.4.25-rc2_q/include/asm-mips/wbflush.h
+--- linux-2.4.25-rc2_org/include/asm-mips/wbflush.h 2004-02-12 23:06:33.000000000 +0100
++++ linux-2.4.25-rc2_q/include/asm-mips/wbflush.h 2004-02-13 20:42:57.000000000 +0100
+@@ -15,8 +15,11 @@
+
+ #ifdef CONFIG_CPU_HAS_WB
+
+-extern void (*__wbflush)(void);
+-extern void wbflush_setup(void);
++//extern void (*__wbflush)(void);
++//extern void wbflush_setup(void);
++
++
++#define __wbflush() { __asm__ volatile ("sync"); }
+
+ #define wbflush() \
+ do { \
+diff -Naur -p -X do_not_diff -I '\$Id' -I '@(#)' linux-2.4.25-rc2_org/include/pcmcia/cs_types.h linux-2.4.25-rc2_q/include/pcmcia/cs_types.h
+--- linux-2.4.25-rc2_org/include/pcmcia/cs_types.h 2004-02-12 23:13:05.000000000 +0100
++++ linux-2.4.25-rc2_q/include/pcmcia/cs_types.h 2004-02-13 10:15:10.000000000 +0100
+@@ -37,6 +37,7 @@
+ #endif
+
+ #if defined(__arm__) || defined(__mips__)
++//obs jp: on mips, "typedef unsigned long long ioaddr_t;" may be needed to support cardbus
+ typedef u_int ioaddr_t;
+ #else
+ typedef u_short ioaddr_t;
+diff -Naur -p -X do_not_diff -I '\$Id' -I '@(#)' linux-2.4.25-rc2_org/include/pcmcia/ss.h linux-2.4.25-rc2_q/include/pcmcia/ss.h
+--- linux-2.4.25-rc2_org/include/pcmcia/ss.h 2004-02-12 23:13:02.000000000 +0100
++++ linux-2.4.25-rc2_q/include/pcmcia/ss.h 2004-02-13 10:15:32.000000000 +0100
+@@ -112,7 +112,7 @@ typedef struct pccard_mem_map {
+ u_char map;
+ u_char flags;
+ u_short speed;
+- u_long sys_start, sys_stop;
++ ioaddr_t sys_start, sys_stop;
+ u_int card_start;
+ } pccard_mem_map;
+
+diff -Naur -p -X do_not_diff -I '\$Id' -I '@(#)' linux-2.4.25-rc2_org/init/do_mounts.c linux-2.4.25-rc2_q/init/do_mounts.c
+--- linux-2.4.25-rc2_org/init/do_mounts.c 2004-02-12 22:59:08.000000000 +0100
++++ linux-2.4.25-rc2_q/init/do_mounts.c 2004-02-13 10:16:02.000000000 +0100
+@@ -760,8 +760,6 @@ static void __init devfs_make_root(char
+ static void __init mount_root(void)
+ {
+ #ifdef CONFIG_ROOT_NFS
+- if (MAJOR(ROOT_DEV) == NFS_MAJOR
+- && MINOR(ROOT_DEV) == NFS_MINOR) {
+ if (mount_nfs_root()) {
+ sys_chdir("/root");
+ ROOT_DEV = current->fs->pwdmnt->mnt_sb->s_dev;
+@@ -770,7 +768,6 @@ static void __init mount_root(void)
+ }
+ printk(KERN_ERR "VFS: Unable to mount root fs via NFS, trying floppy.\n");
+ ROOT_DEV = MKDEV(FLOPPY_MAJOR, 0);
+- }
+ #endif
+ devfs_make_root(root_device_name);
+ create_dev("/dev/root", ROOT_DEV, root_device_name);
+
diff --git a/target/device/jp/q5/kernel-patches-2.4.29/004-correct_toolchain b/target/device/jp/q5/kernel-patches-2.4.29/004-correct_toolchain
new file mode 100644
index 000000000..53e509d3a
--- /dev/null
+++ b/target/device/jp/q5/kernel-patches-2.4.29/004-correct_toolchain
@@ -0,0 +1,24 @@
+--- linux-2.4.29/arch/mips/Makefile.orig 2005-03-08 23:24:05.000000000 -0700
++++ linux-2.4.29/arch/mips/Makefile 2005-03-08 23:27:37.000000000 -0700
+@@ -17,16 +17,16 @@
+ # Select the object file format to substitute into the linker script.
+ #
+ ifdef CONFIG_CPU_LITTLE_ENDIAN
+-tool-prefix = mipsel-linux-
++#tool-prefix = mipsel-linux-
+ ld-emul = elf32ltsmip
+ else
+-tool-prefix = mips-linux-
++#tool-prefix = mips-linux-
+ ld-emul = elf32btsmip
+ endif
+
+-ifdef CONFIG_CROSSCOMPILE
+-CROSS_COMPILE = $(tool-prefix)
+-endif
++#ifdef CONFIG_CROSSCOMPILE
++#CROSS_COMPILE = $(tool-prefix)
++#endif
+
+ MAKEBOOT = $(MAKE) -C arch/$(ARCH)/boot
+
diff --git a/target/device/jp/q5/kernel-patches-2.4.29/100-version b/target/device/jp/q5/kernel-patches-2.4.29/100-version
new file mode 100644
index 000000000..7e420d1ff
--- /dev/null
+++ b/target/device/jp/q5/kernel-patches-2.4.29/100-version
@@ -0,0 +1,11 @@
+--- linux/Makefile.orig 2004-08-18 14:17:14.000000000 -0600
++++ linux/Makefile 2004-08-18 14:17:54.000000000 -0600
+@@ -1,7 +1,7 @@
+ VERSION = 2
+ PATCHLEVEL = 4
+ SUBLEVEL = 29
+-EXTRAVERSION =
++EXTRAVERSION =-q5
+
+ KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
+
diff --git a/target/device/jp/q5/linux.config b/target/device/jp/q5/linux.config
new file mode 100644
index 000000000..f299cb556
--- /dev/null
+++ b/target/device/jp/q5/linux.config
@@ -0,0 +1,858 @@
+#
+# Automatically generated by make menuconfig: don't edit
+#
+CONFIG_MIPS=y
+CONFIG_MIPS32=y
+# CONFIG_MIPS64 is not set
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_KMOD is not set
+
+#
+# Machine selection
+#
+# CONFIG_ACER_PICA_61 is not set
+# CONFIG_MIPS_BOSPORUS is not set
+# CONFIG_MIPS_MIRAGE is not set
+# CONFIG_MIPS_DB1000 is not set
+# CONFIG_MIPS_DB1100 is not set
+# CONFIG_MIPS_DB1500 is not set
+# CONFIG_MIPS_PB1000 is not set
+# CONFIG_MIPS_PB1100 is not set
+CONFIG_MIPS_PB1500=y
+# CONFIG_MIPS_HYDROGEN3 is not set
+# CONFIG_MIPS_PB1550 is not set
+# CONFIG_MIPS_XXS1500 is not set
+# CONFIG_MIPS_MTX1 is not set
+# CONFIG_COGENT_CSB250 is not set
+# CONFIG_BAGET_MIPS is not set
+# CONFIG_CASIO_E55 is not set
+# CONFIG_MIPS_COBALT is not set
+# CONFIG_DECSTATION is not set
+# CONFIG_MIPS_EV64120 is not set
+# CONFIG_MIPS_EV96100 is not set
+# CONFIG_MIPS_IVR is not set
+# CONFIG_HP_LASERJET is not set
+# CONFIG_IBM_WORKPAD is not set
+# CONFIG_LASAT is not set
+# CONFIG_MIPS_ITE8172 is not set
+# CONFIG_MIPS_ATLAS is not set
+# CONFIG_MIPS_MAGNUM_4000 is not set
+# CONFIG_MIPS_MALTA is not set
+# CONFIG_MIPS_SEAD is not set
+# CONFIG_MOMENCO_OCELOT is not set
+# CONFIG_MOMENCO_OCELOT_G is not set
+# CONFIG_MOMENCO_OCELOT_C is not set
+# CONFIG_MOMENCO_JAGUAR_ATX is not set
+# CONFIG_PMC_YOSEMITE is not set
+# CONFIG_DDB5074 is not set
+# CONFIG_DDB5476 is not set
+# CONFIG_DDB5477 is not set
+# CONFIG_NEC_OSPREY is not set
+# CONFIG_NEC_EAGLE is not set
+# CONFIG_OLIVETTI_M700 is not set
+# CONFIG_NINO is not set
+# CONFIG_SGI_IP22 is not set
+# CONFIG_SGI_IP27 is not set
+# CONFIG_SIBYTE_SB1xxx_SOC is not set
+# CONFIG_SNI_RM200_PCI is not set
+# CONFIG_TANBAC_TB0226 is not set
+# CONFIG_TANBAC_TB0229 is not set
+# CONFIG_TOSHIBA_JMR3927 is not set
+# CONFIG_TOSHIBA_RBTX4927 is not set
+# CONFIG_VICTOR_MPC30X is not set
+# CONFIG_ZAO_CAPCELLA is not set
+# CONFIG_HIGHMEM is not set
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
+CONFIG_SOC_AU1X00=y
+CONFIG_SOC_AU1500=y
+CONFIG_NEW_TIME_C=y
+CONFIG_PCI=y
+CONFIG_NEW_PCI=y
+CONFIG_PCI_AUTO=y
+CONFIG_NONCOHERENT_IO=y
+CONFIG_PC_KEYB=y
+# CONFIG_MIPS_AU1000 is not set
+
+#
+# CPU selection
+#
+CONFIG_CPU_MIPS32=y
+# CONFIG_CPU_MIPS64 is not set
+# CONFIG_CPU_R3000 is not set
+# CONFIG_CPU_TX39XX is not set
+# CONFIG_CPU_VR41XX is not set
+# CONFIG_CPU_R4300 is not set
+# CONFIG_CPU_R4X00 is not set
+# CONFIG_CPU_TX49XX is not set
+# CONFIG_CPU_R5000 is not set
+# CONFIG_CPU_R5432 is not set
+# CONFIG_CPU_R6000 is not set
+# CONFIG_CPU_NEVADA is not set
+# CONFIG_CPU_R8000 is not set
+# CONFIG_CPU_R10000 is not set
+# CONFIG_CPU_RM7000 is not set
+# CONFIG_CPU_RM9000 is not set
+# CONFIG_CPU_SB1 is not set
+CONFIG_PAGE_SIZE_4KB=y
+# CONFIG_PAGE_SIZE_16KB is not set
+# CONFIG_PAGE_SIZE_64KB is not set
+CONFIG_CPU_HAS_PREFETCH=y
+# CONFIG_VTAG_ICACHE is not set
+CONFIG_64BIT_PHYS_ADDR=y
+CONFIG_CPU_ADVANCED=y
+CONFIG_CPU_HAS_LLSC=y
+# CONFIG_CPU_HAS_LLDSCD is not set
+CONFIG_CPU_HAS_WB=y
+CONFIG_CPU_HAS_SYNC=y
+
+#
+# General setup
+#
+CONFIG_CPU_LITTLE_ENDIAN=y
+CONFIG_NET=y
+CONFIG_PCI_NAMES=y
+# CONFIG_ISA is not set
+# CONFIG_TC is not set
+# CONFIG_MCA is not set
+# CONFIG_SBUS is not set
+CONFIG_HOTPLUG=y
+
+#
+# PCMCIA/CardBus support
+#
+# CONFIG_PCMCIA is not set
+
+#
+# PCI Hotplug Support
+#
+# CONFIG_HOTPLUG_PCI is not set
+# CONFIG_HOTPLUG_PCI_COMPAQ is not set
+# CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM is not set
+CONFIG_SYSVIPC=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_SYSCTL=y
+CONFIG_KCORE_ELF=y
+# CONFIG_KCORE_AOUT is not set
+# CONFIG_BINFMT_AOUT is not set
+CONFIG_BINFMT_ELF=y
+# CONFIG_MIPS32_COMPAT is not set
+# CONFIG_MIPS32_O32 is not set
+# CONFIG_MIPS32_N32 is not set
+# CONFIG_BINFMT_ELF32 is not set
+# CONFIG_BINFMT_MISC is not set
+# CONFIG_OOM_KILLER is not set
+# CONFIG_PM is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+CONFIG_MTD_PARTITIONS=y
+CONFIG_MTD_CONCAT=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL 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_CFI_B1 is not set
+CONFIG_MTD_CFI_B2=y
+CONFIG_MTD_CFI_B4=y
+# CONFIG_MTD_CFI_B8 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_CFI_INTELEXT is not set
+CONFIG_MTD_CFI_AMDSTD=y
+# CONFIG_MTD_CFI_STAA is not set
+# CONFIG_MTD_RAM is not set
+CONFIG_MTD_ROM=y
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+# CONFIG_MTD_AMDSTD is not set
+# CONFIG_MTD_SHARP is not set
+# CONFIG_MTD_JEDEC is not set
+
+#
+# Mapping drivers for chip access
+#
+CONFIG_MTD_PHYSMAP=y
+CONFIG_MTD_PHYSMAP_START=18000000
+CONFIG_MTD_PHYSMAP_LEN=2000000
+CONFIG_MTD_PHYSMAP_BUSWIDTH=4
+# CONFIG_MTD_PB1000 is not set
+# CONFIG_MTD_PB1500 is not set
+# CONFIG_MTD_PB1100 is not set
+# CONFIG_MTD_CSTM_MIPS_IXX is not set
+# CONFIG_MTD_OCELOT is not set
+# CONFIG_MTD_LASAT is not set
+# CONFIG_MTD_PCI is not set
+# CONFIG_MTD_PCMCIA is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_PMC551 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLKMTD is not set
+# CONFIG_MTD_DOC1000 is not set
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOCPROBE is not set
+
+#
+# NAND Flash Device Drivers
+#
+# CONFIG_MTD_NAND is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play configuration
+#
+# CONFIG_PNP is not set
+# CONFIG_ISAPNP is not set
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_FD is not set
+# CONFIG_BLK_DEV_XD is not set
+# CONFIG_PARIDE is not set
+# CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_CPQ_CISS_DA is not set
+# CONFIG_CISS_SCSI_TAPE is not set
+# CONFIG_CISS_MONITOR_THREAD is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+# CONFIG_BLK_DEV_UMEM is not set
+CONFIG_BLK_DEV_LOOP=y
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_RAM is not set
+# CONFIG_BLK_DEV_INITRD is not set
+# CONFIG_BLK_STATS is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+# CONFIG_BLK_DEV_MD is not set
+# CONFIG_MD_LINEAR is not set
+# CONFIG_MD_RAID0 is not set
+# CONFIG_MD_RAID1 is not set
+# CONFIG_MD_RAID5 is not set
+# CONFIG_MD_MULTIPATH is not set
+# CONFIG_BLK_DEV_LVM is not set
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+# CONFIG_NETLINK_DEV is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+CONFIG_FILTER=y
+CONFIG_UNIX=y
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+CONFIG_IP_ADVANCED_ROUTER=y
+CONFIG_IP_MULTIPLE_TABLES=y
+# CONFIG_IP_ROUTE_FWMARK is not set
+# CONFIG_IP_ROUTE_NAT is not set
+# CONFIG_IP_ROUTE_MULTIPATH is not set
+# CONFIG_IP_ROUTE_TOS is not set
+# CONFIG_IP_ROUTE_VERBOSE is not set
+CONFIG_IP_PNP=y
+# CONFIG_IP_PNP_DHCP is not set
+CONFIG_IP_PNP_BOOTP=y
+# CONFIG_IP_PNP_RARP is not set
+CONFIG_NET_IPIP=y
+CONFIG_NET_IPGRE=y
+# CONFIG_NET_IPGRE_BROADCAST is not set
+# CONFIG_IP_MROUTE is not set
+# CONFIG_ARPD is not set
+# CONFIG_INET_ECN is not set
+# CONFIG_SYN_COOKIES is not set
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_IP_NF_CONNTRACK=m
+CONFIG_IP_NF_FTP=m
+# CONFIG_IP_NF_AMANDA is not set
+# CONFIG_IP_NF_TFTP is not set
+# CONFIG_IP_NF_IRC is not set
+CONFIG_IP_NF_QUEUE=m
+CONFIG_IP_NF_IPTABLES=y
+CONFIG_IP_NF_MATCH_LIMIT=m
+CONFIG_IP_NF_MATCH_MAC=m
+# CONFIG_IP_NF_MATCH_PKTTYPE is not set
+CONFIG_IP_NF_MATCH_MARK=m
+CONFIG_IP_NF_MATCH_MULTIPORT=m
+CONFIG_IP_NF_MATCH_TOS=m
+# CONFIG_IP_NF_MATCH_RECENT is not set
+# CONFIG_IP_NF_MATCH_ECN is not set
+# CONFIG_IP_NF_MATCH_DSCP is not set
+# CONFIG_IP_NF_MATCH_AH_ESP is not set
+# CONFIG_IP_NF_MATCH_LENGTH is not set
+# CONFIG_IP_NF_MATCH_TTL is not set
+CONFIG_IP_NF_MATCH_TCPMSS=m
+# CONFIG_IP_NF_MATCH_HELPER is not set
+CONFIG_IP_NF_MATCH_STATE=m
+# CONFIG_IP_NF_MATCH_CONNTRACK is not set
+CONFIG_IP_NF_MATCH_UNCLEAN=m
+# CONFIG_IP_NF_MATCH_OWNER is not set
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+# CONFIG_IP_NF_TARGET_MIRROR is not set
+CONFIG_IP_NF_NAT=m
+CONFIG_IP_NF_NAT_NEEDED=y
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+# CONFIG_IP_NF_NAT_LOCAL is not set
+# CONFIG_IP_NF_NAT_SNMP_BASIC is not set
+CONFIG_IP_NF_NAT_FTP=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+# CONFIG_IP_NF_TARGET_ECN is not set
+# CONFIG_IP_NF_TARGET_DSCP is not set
+CONFIG_IP_NF_TARGET_MARK=m
+CONFIG_IP_NF_TARGET_LOG=m
+# CONFIG_IP_NF_TARGET_ULOG is not set
+# CONFIG_IP_NF_TARGET_TCPMSS is not set
+# CONFIG_IP_NF_ARPTABLES is not set
+
+#
+# IP: Virtual Server Configuration
+#
+# CONFIG_IP_VS is not set
+# CONFIG_IPV6 is not set
+# CONFIG_KHTTPD is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_SCTP is not set
+# CONFIG_ATM is not set
+CONFIG_VLAN_8021Q=y
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+
+#
+# Appletalk devices
+#
+# CONFIG_DEV_APPLETALK is not set
+# CONFIG_DECNET is not set
+CONFIG_BRIDGE=m
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_LLC is not set
+# CONFIG_NET_DIVERT is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+# CONFIG_NET_FASTROUTE is not set
+# CONFIG_NET_HW_FLOWCONTROL is not set
+
+#
+# QoS and/or fair queueing
+#
+CONFIG_NET_SCHED=y
+CONFIG_NET_SCH_CBQ=m
+CONFIG_NET_SCH_HTB=m
+# CONFIG_NET_SCH_CSZ is not set
+# CONFIG_NET_SCH_HFSC is not set
+CONFIG_NET_SCH_PRIO=m
+CONFIG_NET_SCH_RED=m
+# CONFIG_NET_SCH_SFQ is not set
+# CONFIG_NET_SCH_TEQL is not set
+CONFIG_NET_SCH_TBF=m
+CONFIG_NET_SCH_GRED=m
+# CONFIG_NET_SCH_DELAY is not set
+CONFIG_NET_SCH_DSMARK=m
+CONFIG_NET_SCH_INGRESS=m
+CONFIG_NET_QOS=y
+CONFIG_NET_ESTIMATOR=y
+CONFIG_NET_CLS=y
+CONFIG_NET_CLS_TCINDEX=m
+CONFIG_NET_CLS_ROUTE4=m
+CONFIG_NET_CLS_ROUTE=y
+CONFIG_NET_CLS_FW=m
+CONFIG_NET_CLS_U32=m
+# CONFIG_NET_CLS_RSVP is not set
+# CONFIG_NET_CLS_RSVP6 is not set
+CONFIG_NET_CLS_POLICE=y
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+
+#
+# Telephony Support
+#
+# CONFIG_PHONE is not set
+# CONFIG_PHONE_IXJ is not set
+# CONFIG_PHONE_IXJ_PCMCIA is not set
+
+#
+# ATA/IDE/MFM/RLL support
+#
+# CONFIG_IDE is not set
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# SCSI support
+#
+# CONFIG_SCSI is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+# CONFIG_FUSION_BOOT is not set
+# CONFIG_FUSION_ISENSE is not set
+# CONFIG_FUSION_CTL is not set
+# CONFIG_FUSION_LAN is not set
+
+#
+# IEEE 1394 (FireWire) support (EXPERIMENTAL)
+#
+# CONFIG_IEEE1394 is not set
+
+#
+# I2O device support
+#
+# CONFIG_I2O is not set
+# CONFIG_I2O_PCI is not set
+# CONFIG_I2O_BLOCK is not set
+# CONFIG_I2O_LAN is not set
+# CONFIG_I2O_SCSI is not set
+# CONFIG_I2O_PROC is not set
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+
+#
+# ARCnet devices
+#
+# CONFIG_ARCNET is not set
+# CONFIG_DUMMY is not set
+CONFIG_BONDING=m
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+# CONFIG_ETHERTAP is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MIPS_AU1X00_ENET=y
+# CONFIG_BCM5222_DUAL_PHY is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNBMAC is not set
+# CONFIG_SUNQE is not set
+# CONFIG_SUNGEM is not set
+# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_LANCE is not set
+# CONFIG_NET_VENDOR_SMC is not set
+# CONFIG_NET_VENDOR_RACAL is not set
+# CONFIG_HP100 is not set
+# CONFIG_NET_ISA is not set
+CONFIG_NET_PCI=y
+# CONFIG_PCNET32 is not set
+# CONFIG_AMD8111_ETH is not set
+# CONFIG_ADAPTEC_STARFIRE is not set
+# CONFIG_APRICOT is not set
+# CONFIG_B44 is not set
+# CONFIG_CS89x0 is not set
+# CONFIG_TULIP is not set
+# CONFIG_DE4X5 is not set
+# CONFIG_DGRS is not set
+# CONFIG_DM9102 is not set
+# CONFIG_EEPRO100 is not set
+# CONFIG_EEPRO100_PIO is not set
+# CONFIG_E100 is not set
+# CONFIG_LNE390 is not set
+# CONFIG_FEALNX is not set
+# CONFIG_NATSEMI is not set
+# CONFIG_NE2K_PCI is not set
+# CONFIG_FORCEDETH is not set
+# CONFIG_NE3210 is not set
+# CONFIG_ES3210 is not set
+# CONFIG_8139CP is not set
+CONFIG_8139TOO=y
+CONFIG_8139TOO_PIO=y
+# CONFIG_8139TOO_TUNE_TWISTER is not set
+# CONFIG_8139TOO_8129 is not set
+# CONFIG_8139_OLD_RX_RESET is not set
+# CONFIG_SIS900 is not set
+# CONFIG_EPIC100 is not set
+# CONFIG_SUNDANCE is not set
+# CONFIG_SUNDANCE_MMIO is not set
+# CONFIG_TLAN is not set
+# CONFIG_VIA_RHINE is not set
+# CONFIG_VIA_RHINE_MMIO is not set
+# CONFIG_WINBOND_840 is not set
+# CONFIG_LAN_SAA9730 is not set
+# CONFIG_NET_POCKET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+# CONFIG_ACENIC is not set
+# CONFIG_DL2K is not set
+# CONFIG_E1000 is not set
+# CONFIG_MYRI_SBUS is not set
+# CONFIG_NS83820 is not set
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
+# CONFIG_R8169 is not set
+# CONFIG_SK98LIN is not set
+# CONFIG_TIGON3 is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+# CONFIG_PLIP is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+# CONFIG_PPP_FILTER is not set
+CONFIG_PPP_ASYNC=m
+# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPPOE=m
+# CONFIG_SLIP is not set
+
+#
+# Wireless LAN (non-hamradio)
+#
+CONFIG_NET_RADIO=y
+CONFIG_STRIP=m
+CONFIG_WAVELAN=m
+CONFIG_ARLAN=m
+CONFIG_AIRONET4500=m
+CONFIG_AIRONET4500_NONCS=m
+CONFIG_AIRONET4500_PNP=y
+CONFIG_AIRONET4500_PCI=y
+# CONFIG_AIRONET4500_ISA is not set
+# CONFIG_AIRONET4500_I365 is not set
+CONFIG_AIRONET4500_PROC=m
+CONFIG_AIRO=m
+# CONFIG_HERMES is not set
+# CONFIG_PLX_HERMES is not set
+# CONFIG_TMD_HERMES is not set
+# CONFIG_PCI_HERMES is not set
+CONFIG_NET_WIRELESS=y
+
+#
+# Token Ring devices
+#
+# CONFIG_TR is not set
+# CONFIG_NET_FC is not set
+# CONFIG_RCPCI is not set
+# CONFIG_SHAPER is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+
+#
+# Amateur Radio support
+#
+# CONFIG_HAMRADIO is not set
+
+#
+# IrDA (infrared) support
+#
+# CONFIG_IRDA is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Input core support
+#
+# CONFIG_INPUT is not set
+# CONFIG_INPUT_KEYBDEV is not set
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
+# CONFIG_INPUT_UINPUT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+# CONFIG_SERIAL is not set
+# CONFIG_SERIAL_EXTENDED is not set
+CONFIG_SERIAL_NONSTANDARD=y
+# CONFIG_COMPUTONE is not set
+# CONFIG_ROCKETPORT is not set
+# CONFIG_CYCLADES is not set
+# CONFIG_DIGIEPCA is not set
+# CONFIG_DIGI is not set
+# CONFIG_ESPSERIAL is not set
+# CONFIG_MOXA_INTELLIO is not set
+# CONFIG_MOXA_SMARTIO is not set
+# CONFIG_ISI is not set
+# CONFIG_SYNCLINK is not set
+# CONFIG_SYNCLINKMP is not set
+# CONFIG_N_HDLC is not set
+# CONFIG_RISCOM8 is not set
+# CONFIG_SPECIALIX is not set
+# CONFIG_SX is not set
+# CONFIG_RIO is not set
+# CONFIG_STALDRV is not set
+# CONFIG_SERIAL_TX3912 is not set
+# CONFIG_SERIAL_TX3912_CONSOLE is not set
+# CONFIG_SERIAL_TXX9 is not set
+# CONFIG_SERIAL_TXX9_CONSOLE is not set
+CONFIG_AU1X00_UART=y
+CONFIG_AU1X00_SERIAL_CONSOLE=y
+# CONFIG_AU1X00_USB_TTY is not set
+# CONFIG_AU1X00_USB_RAW is not set
+# CONFIG_TXX927_SERIAL is not set
+CONFIG_UNIX98_PTYS=y
+CONFIG_UNIX98_PTY_COUNT=256
+
+#
+# I2C support
+#
+# CONFIG_I2C is not set
+
+#
+# Mice
+#
+# CONFIG_BUSMOUSE is not set
+# CONFIG_MOUSE is not set
+
+#
+# Joysticks
+#
+# CONFIG_INPUT_GAMEPORT is not set
+# CONFIG_QIC02_TAPE is not set
+# CONFIG_IPMI_HANDLER is not set
+# CONFIG_IPMI_PANIC_EVENT is not set
+# CONFIG_IPMI_DEVICE_INTERFACE is not set
+# CONFIG_IPMI_KCS is not set
+# CONFIG_IPMI_WATCHDOG is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_SCx200 is not set
+# CONFIG_SCx200_GPIO is not set
+# CONFIG_AMD_PM768 is not set
+# CONFIG_NVRAM is not set
+# CONFIG_RTC is not set
+# CONFIG_MIPS_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_FTAPE is not set
+# CONFIG_AGP is not set
+
+#
+# Direct Rendering Manager (XFree86 DRI support)
+#
+# CONFIG_DRM is not set
+# CONFIG_AU1X00_GPIO is not set
+# CONFIG_TS_AU1X00_ADS7846 is not set
+
+#
+# File systems
+#
+# CONFIG_QUOTA is not set
+# CONFIG_QFMT_V2 is not set
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+# CONFIG_ADFS_FS is not set
+# CONFIG_ADFS_FS_RW 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_BEFS_DEBUG is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EXT3_FS is not set
+# CONFIG_JBD is not set
+# CONFIG_JBD_DEBUG is not set
+# CONFIG_FAT_FS is not set
+# CONFIG_MSDOS_FS is not set
+# CONFIG_UMSDOS_FS is not set
+# CONFIG_VFAT_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_JFFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+# CONFIG_CRAMFS is not set
+CONFIG_TMPFS=y
+CONFIG_RAMFS=y
+# CONFIG_ISO9660_FS is not set
+# CONFIG_JOLIET is not set
+# CONFIG_ZISOFS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_JFS_DEBUG is not set
+# CONFIG_JFS_STATISTICS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_NTFS_FS is not set
+# CONFIG_NTFS_RW is not set
+# CONFIG_HPFS_FS is not set
+CONFIG_PROC_FS=y
+# CONFIG_DEVFS_FS is not set
+# CONFIG_DEVFS_MOUNT is not set
+# CONFIG_DEVFS_DEBUG is not set
+CONFIG_DEVPTS_FS=y
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_QNX4FS_RW is not set
+# CONFIG_ROMFS_FS is not set
+# CONFIG_EXT2_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UDF_FS is not set
+# CONFIG_UDF_RW is not set
+# CONFIG_UFS_FS is not set
+# CONFIG_UFS_FS_WRITE is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_XFS_QUOTA is not set
+# CONFIG_XFS_RT is not set
+# CONFIG_XFS_TRACE is not set
+# CONFIG_XFS_DEBUG is not set
+
+#
+# Network File Systems
+#
+# CONFIG_CODA_FS is not set
+# CONFIG_INTERMEZZO_FS is not set
+# CONFIG_NFS_FS is not set
+# CONFIG_NFS_V3 is not set
+# CONFIG_NFS_DIRECTIO is not set
+# CONFIG_ROOT_NFS is not set
+# CONFIG_NFSD is not set
+# CONFIG_NFSD_V3 is not set
+# CONFIG_NFSD_TCP is not set
+# CONFIG_SUNRPC is not set
+# CONFIG_LOCKD is not set
+# CONFIG_SMB_FS is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_NCPFS_PACKET_SIGNING is not set
+# CONFIG_NCPFS_IOCTL_LOCKING is not set
+# CONFIG_NCPFS_STRONG is not set
+# CONFIG_NCPFS_NFS_NS is not set
+# CONFIG_NCPFS_OS2_NS is not set
+# CONFIG_NCPFS_SMALLDOS is not set
+# CONFIG_NCPFS_NLS is not set
+# CONFIG_NCPFS_EXTRAS is not set
+# CONFIG_ZISOFS_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_SMB_NLS is not set
+# CONFIG_NLS is not set
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Console drivers
+#
+# CONFIG_VGA_CONSOLE is not set
+# CONFIG_MDA_CONSOLE is not set
+
+#
+# Frame-buffer support
+#
+# CONFIG_FB is not set
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+
+#
+# USB support
+#
+# CONFIG_USB is not set
+
+#
+# Support for USB gadgets
+#
+# CONFIG_USB_GADGET is not set
+
+#
+# Bluetooth support
+#
+# CONFIG_BLUEZ is not set
+
+#
+# Kernel hacking
+#
+CONFIG_CROSSCOMPILE=y
+# CONFIG_RUNTIME_DEBUG is not set
+# CONFIG_KGDB is not set
+# CONFIG_GDB_CONSOLE is not set
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_MIPS_UNCACHED is not set
+CONFIG_LOG_BUF_SHIFT=0
+
+#
+# Cryptographic options
+#
+# CONFIG_CRYPTO is not set
+
+#
+# Library routines
+#
+# CONFIG_CRC32 is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_FW_LOADER=y
diff --git a/target/device/jp/q5/linux.mk b/target/device/jp/q5/linux.mk
new file mode 100644
index 000000000..32b8c3d07
--- /dev/null
+++ b/target/device/jp/q5/linux.mk
@@ -0,0 +1,132 @@
+#############################################################
+#
+# Linux kernel targets
+#
+# Note: If you have any patches to apply, create the directory
+# sources/kernel-patches and put your patches in there and number
+# them in the order you wish to apply them... i.e.
+#
+# sources/kernel-patches/001-my-special-stuff.bz2
+# sources/kernel-patches/003-gcc-Os.bz2
+# sources/kernel-patches/004_no-warnings.bz2
+# sources/kernel-patches/030-lowlatency-mini.bz2
+# sources/kernel-patches/031-lowlatency-fixes-5.bz2
+# sources/kernel-patches/099-shutup.bz2
+# etc...
+#
+# these patches will all be applied by the patch-kernel.sh
+# script (which will also abort the build if it finds rejects)
+# -Erik
+#
+#############################################################
+ifneq ($(filter $(TARGETS),linux),)
+
+# Base version of Linux kernel that we need to download
+DOWNLOAD_LINUX_VERSION=2.4.26
+# Version of Linux kernel AFTER applying all patches
+LINUX_VERSION=$(DOWNLOAD_LINUX_VERSION)-q5
+
+
+# File name for the Linux kernel binary
+LINUX_KERNEL=linux-kernel-$(LINUX_VERSION)-$(ARCH).srec
+
+
+# Linux kernel configuration file
+LINUX_KCONFIG=$(JP_Q5_PATH)/linux.config
+
+# kernel patches
+LINUX_PATCH_DIR=target/device/jp/q5/kernel-patches-$(DOWNLOAD_LINUX_VERSION)/
+
+
+
+
+LINUX_FORMAT=vmlinux
+LINUX_KARCH:=$(shell echo $(ARCH) | sed -e 's/i[3-9]86/i386/' \
+ -e 's/mipsel/mips/' \
+ -e 's/powerpc/ppc/' \
+ -e 's/sh[234]/sh/' \
+ )
+LINUX_BINLOC=$(LINUX_FORMAT)
+LINUX_DIR=$(BUILD_DIR)/linux-$(LINUX_VERSION)
+LINUX_SOURCE=linux-$(DOWNLOAD_LINUX_VERSION).tar.bz2
+LINUX_SITE=http://www.kernel.org/pub/linux/kernel/v2.4
+# Used by pcmcia-cs and others
+LINUX_SOURCE_DIR=$(LINUX_DIR)
+
+
+$(DL_DIR)/$(LINUX_SOURCE):
+ -mkdir -p $(DL_DIR)
+ $(WGET) -P $(DL_DIR) $(LINUX_SITE)/$(LINUX_SOURCE)
+
+$(LINUX_DIR)/.unpacked: $(DL_DIR)/$(LINUX_SOURCE)
+ -mkdir -p $(TOOL_BUILD_DIR)
+ -(cd $(TOOL_BUILD_DIR); ln -snf $(LINUX_DIR) linux)
+ bzcat $(DL_DIR)/$(LINUX_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
+ifneq ($(DOWNLOAD_LINUX_VERSION),$(LINUX_VERSION))
+ # Rename the dir from the downloaded version to the AFTER patch version
+ mv -f $(BUILD_DIR)/linux-$(DOWNLOAD_LINUX_VERSION) $(BUILD_DIR)/linux-$(LINUX_VERSION)
+endif
+ toolchain/patch-kernel.sh $(LINUX_DIR) $(LINUX_PATCH_DIR)
+ touch $(LINUX_DIR)/.unpacked
+
+$(LINUX_KCONFIG):
+ @if [ ! -f "$(LINUX_KCONFIG)" ] ; then \
+ echo ""; \
+ echo "You should create a .config for your kernel"; \
+ echo "and install it as $(LINUX_KCONFIG)"; \
+ echo ""; \
+ sleep 5; \
+ fi;
+
+$(LINUX_DIR)/.configured $(BUILD_DIR)/linux/.configured: $(LINUX_DIR)/.unpacked $(LINUX_KCONFIG)
+ $(SED) "s,^ARCH.*,ARCH=$(LINUX_KARCH),g;" $(LINUX_DIR)/Makefile
+ $(SED) "s,^CROSS_COMPILE.*,CROSS_COMPILE=$(KERNEL_CROSS),g;" $(LINUX_DIR)/Makefile
+ -cp $(LINUX_KCONFIG) $(LINUX_DIR)/.config
+ifeq ($(strip $(BR2_mips)),y)
+ $(SED) "s,CONFIG_CPU_LITTLE_ENDIAN=y,# CONFIG_CPU_LITTLE_ENDIAN is not set\n# CONFIG_BINFMT_IRIX is not set," $(LINUX_DIR)/.config
+endif
+ $(MAKE) PATH=$(TARGET_PATH) -C $(LINUX_DIR) oldconfig include/linux/version.h
+ touch $(LINUX_DIR)/.configured
+
+$(LINUX_DIR)/.depend_done: $(LINUX_DIR)/.configured
+ $(MAKE) PATH=$(TARGET_PATH) -C $(LINUX_DIR) dep
+ touch $(LINUX_DIR)/.depend_done
+
+$(LINUX_DIR)/$(LINUX_BINLOC): $(LINUX_DIR)/.depend_done
+ $(MAKE) PATH=$(TARGET_PATH) -C $(LINUX_DIR) $(LINUX_FORMAT)
+ $(MAKE) PATH=$(TARGET_PATH) -C $(LINUX_DIR) modules
+
+$(LINUX_KERNEL): $(LINUX_DIR)/$(LINUX_BINLOC)
+ $(KERNEL_CROSS)objcopy -O srec $(LINUX_DIR)/$(LINUX_BINLOC) $(LINUX_KERNEL)
+ touch -c $(LINUX_KERNEL)
+
+$(TARGET_DIR)/lib/modules/$(LINUX_VERSION)/modules.dep: $(LINUX_KERNEL)
+ rm -rf $(TARGET_DIR)/lib/modules
+ rm -f $(TARGET_DIR)/sbin/cardmgr
+ $(MAKE) PATH=$(TARGET_PATH) -C $(LINUX_DIR) DEPMOD=`which true` \
+ INSTALL_MOD_PATH=$(TARGET_DIR) modules_install
+ (cd $(TARGET_DIR)/lib/modules; ln -s $(LINUX_VERSION)/kernel/drivers .)
+ $(JP_Q5_PATH)/depmod.pl \
+ -b $(TARGET_DIR)/lib/modules/$(LINUX_VERSION)/ \
+ -k $(LINUX_DIR)/vmlinux \
+ -F $(LINUX_DIR)/System.map \
+ > $(TARGET_DIR)/lib/modules/$(LINUX_VERSION)/modules.dep
+
+$(STAGING_DIR)/include/linux/version.h: $(LINUX_DIR)/.configured
+ mkdir -p $(STAGING_DIR)/include
+ tar -ch -C $(LINUX_DIR)/include -f - linux | tar -xf - -C $(STAGING_DIR)/include/
+ tar -ch -C $(LINUX_DIR)/include -f - asm | tar -xf - -C $(STAGING_DIR)/include/
+
+linux: $(STAGING_DIR)/include/linux/version.h $(TARGET_DIR)/lib/modules/$(LINUX_VERSION)/modules.dep
+
+linux-source: $(DL_DIR)/$(LINUX_SOURCE)
+
+# This has been renamed so we do _NOT_ by default run this on 'make clean'
+linuxclean: clean
+ rm -f $(LINUX_KERNEL)
+ -$(MAKE) PATH=$(TARGET_PATH) -C $(LINUX_DIR) clean
+
+linux-dirclean:
+ rm -rf $(LINUX_DIR)
+
+endif
diff --git a/target/device/jp/q5/skel.tar.gz b/target/device/jp/q5/skel.tar.gz
new file mode 100644
index 000000000..301c5cfa2
--- /dev/null
+++ b/target/device/jp/q5/skel.tar.gz
Binary files differ
diff --git a/target/device/jp/q5/target_skeleton/etc/TZ b/target/device/jp/q5/target_skeleton/etc/TZ
new file mode 100644
index 000000000..9fcb2a3c5
--- /dev/null
+++ b/target/device/jp/q5/target_skeleton/etc/TZ
@@ -0,0 +1 @@
+MST7MDT
diff --git a/target/device/jp/q5/target_skeleton/etc/fstab b/target/device/jp/q5/target_skeleton/etc/fstab
new file mode 100644
index 000000000..6d33629a7
--- /dev/null
+++ b/target/device/jp/q5/target_skeleton/etc/fstab
@@ -0,0 +1,8 @@
+# /etc/fstab: static file system information.
+#
+# <file system> <mount pt> <type> <options> <dump> <pass>
+/dev/root / ext2 rw,noauto 0 1
+proc /proc proc defaults 0 0
+devpts /dev/pts devpts defaults,gid=5,mode=620 0 0
+tmpfs /tmp tmpfs defaults 0 0
+
diff --git a/target/device/jp/q5/target_skeleton/etc/group b/target/device/jp/q5/target_skeleton/etc/group
new file mode 100644
index 000000000..a21ef0f76
--- /dev/null
+++ b/target/device/jp/q5/target_skeleton/etc/group
@@ -0,0 +1,10 @@
+root:x:0:
+daemon:x:1:
+bin:x:2:
+sys:x:3:
+adm:x:4:
+tty:x:5:
+disk:x:6:
+utmp:x:43:
+staff:x:50:
+default:x:1000:
diff --git a/target/device/jp/q5/target_skeleton/etc/hostname b/target/device/jp/q5/target_skeleton/etc/hostname
new file mode 100644
index 000000000..52e67d68a
--- /dev/null
+++ b/target/device/jp/q5/target_skeleton/etc/hostname
@@ -0,0 +1 @@
+uclibc
diff --git a/target/device/jp/q5/target_skeleton/etc/hosts b/target/device/jp/q5/target_skeleton/etc/hosts
new file mode 100644
index 000000000..ba712fe03
--- /dev/null
+++ b/target/device/jp/q5/target_skeleton/etc/hosts
@@ -0,0 +1 @@
+127.0.0.1 localhost
diff --git a/target/device/jp/q5/target_skeleton/etc/init.d/S20urandom b/target/device/jp/q5/target_skeleton/etc/init.d/S20urandom
new file mode 100755
index 000000000..433fafee4
--- /dev/null
+++ b/target/device/jp/q5/target_skeleton/etc/init.d/S20urandom
@@ -0,0 +1,44 @@
+#! /bin/sh
+#
+# urandom This script saves the random seed between reboots.
+# It is called from the boot, halt and reboot scripts.
+#
+# Version: @(#)urandom 1.33 22-Jun-1998 miquels@cistron.nl
+#
+
+[ -c /dev/urandom ] || exit 0
+#. /etc/default/rcS
+
+case "$1" in
+ start|"")
+ if [ "$VERBOSE" != no ]
+ then
+ echo -n "Initializing random number generator... "
+ fi
+ # Load and then save 512 bytes,
+ # which is the size of the entropy pool
+ if [ -f /etc/random-seed ]
+ then
+ cat /etc/random-seed >/dev/urandom
+ fi
+ rm -f /etc/random-seed
+ umask 077
+ dd if=/dev/urandom of=/etc/random-seed count=1 \
+ >/dev/null 2>&1 || echo "urandom start: failed."
+ umask 022
+ [ "$VERBOSE" != no ] && echo "done."
+ ;;
+ stop)
+ # Carry a random seed from shut-down to start-up;
+ # see documentation in linux/drivers/char/random.c
+ [ "$VERBOSE" != no ] && echo -n "Saving random seed... "
+ umask 077
+ dd if=/dev/urandom of=/etc/random-seed count=1 \
+ >/dev/null 2>&1 || echo "urandom stop: failed."
+ [ "$VERBOSE" != no ] && echo "done."
+ ;;
+ *)
+ echo "Usage: urandom {start|stop}" >&2
+ exit 1
+ ;;
+esac
diff --git a/target/device/jp/q5/target_skeleton/etc/init.d/S40network b/target/device/jp/q5/target_skeleton/etc/init.d/S40network
new file mode 100755
index 000000000..d835d9c72
--- /dev/null
+++ b/target/device/jp/q5/target_skeleton/etc/init.d/S40network
@@ -0,0 +1,35 @@
+#!/bin/sh
+#
+# Start the network....
+#
+
+start() {
+ echo "Starting network..."
+ /sbin/ifup -a
+}
+stop() {
+ echo -n "Stopping network..."
+ /sbin/ifdown -a
+}
+restart() {
+ stop
+ start
+}
+
+case "$1" in
+ start)
+ start
+ ;;
+ stop)
+ stop
+ ;;
+ restart|reload)
+ restart
+ ;;
+ *)
+ echo $"Usage: $0 {start|stop|restart}"
+ exit 1
+esac
+
+exit $?
+
diff --git a/target/device/jp/q5/target_skeleton/etc/init.d/rcS b/target/device/jp/q5/target_skeleton/etc/init.d/rcS
new file mode 100755
index 000000000..de411534d
--- /dev/null
+++ b/target/device/jp/q5/target_skeleton/etc/init.d/rcS
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+
+# Start all init scripts in /etc/init.d
+# executing them in numerical order.
+#
+for i in /etc/init.d/S??* ;do
+
+ # Ignore dangling symlinks (if any).
+ [ ! -f "$i" ] && continue
+
+ case "$i" in
+ *.sh)
+ # Source shell script for speed.
+ (
+ trap - INT QUIT TSTP
+ set start
+ . $i
+ )
+ ;;
+ *)
+ # No sh extension, so fork subprocess.
+ $i start
+ ;;
+ esac
+done
+
diff --git a/target/device/jp/q5/target_skeleton/etc/inittab b/target/device/jp/q5/target_skeleton/etc/inittab
new file mode 100644
index 000000000..8c809af68
--- /dev/null
+++ b/target/device/jp/q5/target_skeleton/etc/inittab
@@ -0,0 +1,47 @@
+# /etc/inittab
+#
+# Copyright (C) 2001 Erik Andersen <andersen@codepoet.org>
+#
+# Note: BusyBox init doesn't support runlevels. The runlevels field is
+# completely ignored by BusyBox init. If you want runlevels, use
+# sysvinit.
+#
+# Format for each entry: <id>:<runlevels>:<action>:<process>
+#
+# id == tty to run on, or empty for /dev/console
+# runlevels == ignored
+# action == one of sysinit, respawn, askfirst, wait, and once
+# process == program to run
+
+# Startup the system
+null::sysinit:/bin/mount -o remount,rw /
+null::sysinit:/bin/mount -t proc proc /proc
+null::sysinit:/bin/mount -a
+null::sysinit:/bin/hostname -F /etc/hostname
+null::sysinit:/sbin/ifconfig lo 127.0.0.1 up
+null::sysinit:/sbin/route add -net 127.0.0.0 netmask 255.0.0.0 lo
+# now run any rc scripts
+::sysinit:/etc/init.d/rcS
+
+# Set up a couple of getty's
+#tty1::respawn:/sbin/getty 38400 tty1
+#tty2::respawn:/sbin/getty 38400 tty2
+
+# Put a getty on the serial port
+ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100
+
+# Logging junk
+null::sysinit:/bin/touch /var/log/messages
+null::respawn:/sbin/syslogd -n -m 0
+null::respawn:/sbin/klogd -n
+#tty3::respawn:/usr/bin/tail -f /var/log/messages
+
+# Stuff to do for the 3-finger salute
+::ctrlaltdel:/sbin/reboot
+
+# Stuff to do before rebooting
+null::shutdown:/usr/bin/killall klogd
+null::shutdown:/usr/bin/killall syslogd
+null::shutdown:/bin/umount -a -r
+null::shutdown:/sbin/swapoff -a
+
diff --git a/target/device/jp/q5/target_skeleton/etc/inputrc b/target/device/jp/q5/target_skeleton/etc/inputrc
new file mode 100644
index 000000000..2f1cb601a
--- /dev/null
+++ b/target/device/jp/q5/target_skeleton/etc/inputrc
@@ -0,0 +1,44 @@
+# /etc/inputrc - global inputrc for libreadline
+# See readline(3readline) and `info readline' for more information.
+
+# Be 8 bit clean.
+set input-meta on
+set output-meta on
+set bell-style visible
+
+# To allow the use of 8bit-characters like the german umlauts, comment out
+# the line below. However this makes the meta key not work as a meta key,
+# which is annoying to those which don't need to type in 8-bit characters.
+
+# set convert-meta off
+
+"\e0d": backward-word
+"\e0c": forward-word
+"\e[h": beginning-of-line
+"\e[f": end-of-line
+"\e[1~": beginning-of-line
+"\e[4~": end-of-line
+#"\e[5~": beginning-of-history
+#"\e[6~": end-of-history
+"\e[3~": delete-char
+"\e[2~": quoted-insert
+
+# Common standard keypad and cursor
+# (codes courtsey Werner Fink, <werner@suse.de>)
+#"\e[1~": history-search-backward
+"\e[2~": yank
+"\e[3~": delete-char
+#"\e[4~": set-mark
+"\e[5~": history-search-backward
+"\e[6~": history-search-forward
+# Normal keypad and cursor of xterm
+"\e[F": end-of-line
+"\e[H": beginning-of-line
+# Application keypad and cursor of xterm
+"\eOA": previous-history
+"\eOC": forward-char
+"\eOB": next-history
+"\eOD": backward-char
+"\eOF": end-of-line
+"\eOH": beginning-of-line
+
diff --git a/target/device/jp/q5/target_skeleton/etc/issue b/target/device/jp/q5/target_skeleton/etc/issue
new file mode 100644
index 000000000..f24b862c9
--- /dev/null
+++ b/target/device/jp/q5/target_skeleton/etc/issue
@@ -0,0 +1,4 @@
+
+
+Welcome to the Erik's uClibc development environment.
+
diff --git a/target/device/jp/q5/target_skeleton/etc/network/interfaces b/target/device/jp/q5/target_skeleton/etc/network/interfaces
new file mode 100644
index 000000000..218b82cde
--- /dev/null
+++ b/target/device/jp/q5/target_skeleton/etc/network/interfaces
@@ -0,0 +1,4 @@
+# Configure Loopback
+auto lo
+iface lo inet loopback
+
diff --git a/target/device/jp/q5/target_skeleton/etc/passwd b/target/device/jp/q5/target_skeleton/etc/passwd
new file mode 100644
index 000000000..e0f473fc7
--- /dev/null
+++ b/target/device/jp/q5/target_skeleton/etc/passwd
@@ -0,0 +1,13 @@
+root:x:0:0:root:/root:/bin/sh
+daemon:x:1:1:daemon:/usr/sbin:/bin/sh
+bin:x:2:2:bin:/bin:/bin/sh
+sys:x:3:3:sys:/dev:/bin/sh
+sync:x:4:100:sync:/bin:/bin/sync
+mail:x:8:8:mail:/var/spool/mail:/bin/sh
+proxy:x:13:13:proxy:/bin:/bin/sh
+www-data:x:33:33:www-data:/var/www:/bin/sh
+backup:x:34:34:backup:/var/backups:/bin/sh
+operator:x:37:37:Operator:/var:/bin/sh
+sshd:x:103:99:Operator:/var:/bin/sh
+nobody:x:99:99:nobody:/home:/bin/sh
+default:x:1000:1000:Default non-root user:/home/default:/bin/sh
diff --git a/target/device/jp/q5/target_skeleton/etc/profile b/target/device/jp/q5/target_skeleton/etc/profile
new file mode 100644
index 000000000..6aa4259fd
--- /dev/null
+++ b/target/device/jp/q5/target_skeleton/etc/profile
@@ -0,0 +1,48 @@
+# ~/.bashrc: executed by bash(1) for non-login interactive shells.
+
+export PATH=\
+/bin:\
+/sbin:\
+/usr/bin:\
+/usr/sbin:\
+/usr/bin/X11:\
+/usr/local/bin
+
+# If running interactively, then:
+if [ "$PS1" ]; then
+
+ if [ "$BASH" ]; then
+ export PS1="[\u@\h \W]\\$ "
+ alias ll='/bin/ls -laFh'
+ alias ls='/bin/ls -F'
+ export LS_COLORS='no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.jpg=01;35:*.jpeg=01;35:*.png=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.mpg=01;35:*.mpeg=01;35:*.avi=01;35:*.fli=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:';
+ else
+ if [ "`id -u`" -eq 0 ]; then
+ export PS1='# '
+ else
+ export PS1='$ '
+ fi
+ fi
+
+ export USER=`id -un`
+ export LOGNAME=$USER
+ export HOSTNAME=`/bin/hostname`
+ export HISTSIZE=1000
+ export HISTFILESIZE=1000
+ export PAGER='/bin/more '
+ export EDITOR='/bin/vi'
+ export INPUTRC=/etc/inputrc
+ export DMALLOC_OPTIONS=debug=0x34f47d83,inter=100,log=logfile
+
+ ### Some aliases
+ alias ps2='ps facux '
+ alias ps1='ps faxo "%U %t %p %a" '
+ alias af='ps af'
+ alias cls='clear'
+ alias df='df -h'
+ alias indent='indent -bad -bap -bbo -nbc -br -brs -c33 -cd33 -ncdb -ce -ci4 -cli0 -cp33 -cs -d0 -di1 -nfc1 -nfca -hnl -i4 -ip0 -l75 -lp -npcs -npsl -nsc -nsob -nss -ts4 '
+ #alias bc='bc -l'
+ alias minicom='minicom -c on'
+ alias calc='calc -Cd '
+ alias bc='calc -Cd '
+fi;
diff --git a/target/device/jp/q5/target_skeleton/etc/protocols b/target/device/jp/q5/target_skeleton/etc/protocols
new file mode 100644
index 000000000..1ac8a4096
--- /dev/null
+++ b/target/device/jp/q5/target_skeleton/etc/protocols
@@ -0,0 +1,31 @@
+# /etc/protocols:
+# $Id: protocols,v 1.1 2004/10/09 02:49:18 andersen Exp $
+#
+# Internet (IP) protocols
+#
+# from: @(#)protocols 5.1 (Berkeley) 4/17/89
+#
+# Updated for NetBSD based on RFC 1340, Assigned Numbers (July 1992).
+
+ip 0 IP # internet protocol, pseudo protocol number
+icmp 1 ICMP # internet control message protocol
+igmp 2 IGMP # Internet Group Management
+ggp 3 GGP # gateway-gateway protocol
+ipencap 4 IP-ENCAP # IP encapsulated in IP (officially ``IP'')
+st 5 ST # ST datagram mode
+tcp 6 TCP # transmission control protocol
+egp 8 EGP # exterior gateway protocol
+pup 12 PUP # PARC universal packet protocol
+udp 17 UDP # user datagram protocol
+hmp 20 HMP # host monitoring protocol
+xns-idp 22 XNS-IDP # Xerox NS IDP
+rdp 27 RDP # "reliable datagram" protocol
+iso-tp4 29 ISO-TP4 # ISO Transport Protocol class 4
+xtp 36 XTP # Xpress Tranfer Protocol
+ddp 37 DDP # Datagram Delivery Protocol
+idpr-cmtp 39 IDPR-CMTP # IDPR Control Message Transport
+rspf 73 RSPF #Radio Shortest Path First.
+vmtp 81 VMTP # Versatile Message Transport
+ospf 89 OSPFIGP # Open Shortest Path First IGP
+ipip 94 IPIP # Yet Another IP encapsulation
+encap 98 ENCAP # Yet Another IP encapsulation
diff --git a/target/device/jp/q5/target_skeleton/etc/resolv.conf b/target/device/jp/q5/target_skeleton/etc/resolv.conf
new file mode 100644
index 000000000..71a86dd76
--- /dev/null
+++ b/target/device/jp/q5/target_skeleton/etc/resolv.conf
@@ -0,0 +1,2 @@
+domain dev.null
+nameserver 127.0.0.1
diff --git a/target/device/jp/q5/target_skeleton/etc/securetty b/target/device/jp/q5/target_skeleton/etc/securetty
new file mode 100644
index 000000000..81616f38e
--- /dev/null
+++ b/target/device/jp/q5/target_skeleton/etc/securetty
@@ -0,0 +1,12 @@
+tty1
+tty2
+tty3
+tty4
+tty5
+tty6
+tty7
+tty8
+ttyS0
+ttyS1
+ttyS2
+ttyS3
diff --git a/target/device/jp/q5/target_skeleton/etc/services b/target/device/jp/q5/target_skeleton/etc/services
new file mode 100644
index 000000000..b287b63ea
--- /dev/null
+++ b/target/device/jp/q5/target_skeleton/etc/services
@@ -0,0 +1,302 @@
+# /etc/services:
+# $Id: services,v 1.1 2004/10/09 02:49:18 andersen Exp $
+#
+# Network services, Internet style
+#
+# Note that it is presently the policy of IANA to assign a single well-known
+# port number for both TCP and UDP; hence, most entries here have two entries
+# even if the protocol doesn't support UDP operations.
+# Updated from RFC 1700, ``Assigned Numbers'' (October 1994). Not all ports
+# are included, only the more common ones.
+
+tcpmux 1/tcp # TCP port service multiplexer
+echo 7/tcp
+echo 7/udp
+discard 9/tcp sink null
+discard 9/udp sink null
+systat 11/tcp users
+daytime 13/tcp
+daytime 13/udp
+netstat 15/tcp
+qotd 17/tcp quote
+msp 18/tcp # message send protocol
+msp 18/udp # message send protocol
+chargen 19/tcp ttytst source
+chargen 19/udp ttytst source
+ftp-data 20/tcp
+ftp 21/tcp
+fsp 21/udp fspd
+ssh 22/tcp # SSH Remote Login Protocol
+ssh 22/udp # SSH Remote Login Protocol
+telnet 23/tcp
+# 24 - private
+smtp 25/tcp mail
+# 26 - unassigned
+time 37/tcp timserver
+time 37/udp timserver
+rlp 39/udp resource # resource location
+nameserver 42/tcp name # IEN 116
+whois 43/tcp nicname
+re-mail-ck 50/tcp # Remote Mail Checking Protocol
+re-mail-ck 50/udp # Remote Mail Checking Protocol
+domain 53/tcp nameserver # name-domain server
+domain 53/udp nameserver
+mtp 57/tcp # deprecated
+bootps 67/tcp # BOOTP server
+bootps 67/udp
+bootpc 68/tcp # BOOTP client
+bootpc 68/udp
+tftp 69/udp
+gopher 70/tcp # Internet Gopher
+gopher 70/udp
+rje 77/tcp netrjs
+finger 79/tcp
+www 80/tcp http # WorldWideWeb HTTP
+www 80/udp # HyperText Transfer Protocol
+link 87/tcp ttylink
+kerberos 88/tcp kerberos5 krb5 # Kerberos v5
+kerberos 88/udp kerberos5 krb5 # Kerberos v5
+supdup 95/tcp
+# 100 - reserved
+hostnames 101/tcp hostname # usually from sri-nic
+iso-tsap 102/tcp tsap # part of ISODE.
+csnet-ns 105/tcp cso-ns # also used by CSO name server
+csnet-ns 105/udp cso-ns
+# unfortunately the poppassd (Eudora) uses a port which has already
+# been assigned to a different service. We list the poppassd as an
+# alias here. This should work for programs asking for this service.
+# (due to a bug in inetd the 3com-tsmux line is disabled)
+#3com-tsmux 106/tcp poppassd
+#3com-tsmux 106/udp poppassd
+rtelnet 107/tcp # Remote Telnet
+rtelnet 107/udp
+pop-2 109/tcp postoffice # POP version 2
+pop-2 109/udp
+pop-3 110/tcp # POP version 3
+pop-3 110/udp
+sunrpc 111/tcp portmapper # RPC 4.0 portmapper TCP
+sunrpc 111/udp portmapper # RPC 4.0 portmapper UDP
+auth 113/tcp authentication tap ident
+sftp 115/tcp
+uucp-path 117/tcp
+nntp 119/tcp readnews untp # USENET News Transfer Protocol
+ntp 123/tcp
+ntp 123/udp # Network Time Protocol
+netbios-ns 137/tcp # NETBIOS Name Service
+netbios-ns 137/udp
+netbios-dgm 138/tcp # NETBIOS Datagram Service
+netbios-dgm 138/udp
+netbios-ssn 139/tcp # NETBIOS session service
+netbios-ssn 139/udp
+imap2 143/tcp # Interim Mail Access Proto v2
+imap2 143/udp
+snmp 161/udp # Simple Net Mgmt Proto
+snmp-trap 162/udp snmptrap # Traps for SNMP
+cmip-man 163/tcp # ISO mgmt over IP (CMOT)
+cmip-man 163/udp
+cmip-agent 164/tcp
+cmip-agent 164/udp
+xdmcp 177/tcp # X Display Mgr. Control Proto
+xdmcp 177/udp
+nextstep 178/tcp NeXTStep NextStep # NeXTStep window
+nextstep 178/udp NeXTStep NextStep # server
+bgp 179/tcp # Border Gateway Proto.
+bgp 179/udp
+prospero 191/tcp # Cliff Neuman's Prospero
+prospero 191/udp
+irc 194/tcp # Internet Relay Chat
+irc 194/udp
+smux 199/tcp # SNMP Unix Multiplexer
+smux 199/udp
+at-rtmp 201/tcp # AppleTalk routing
+at-rtmp 201/udp
+at-nbp 202/tcp # AppleTalk name binding
+at-nbp 202/udp
+at-echo 204/tcp # AppleTalk echo
+at-echo 204/udp
+at-zis 206/tcp # AppleTalk zone information
+at-zis 206/udp
+qmtp 209/tcp # The Quick Mail Transfer Protocol
+qmtp 209/udp # The Quick Mail Transfer Protocol
+z3950 210/tcp wais # NISO Z39.50 database
+z3950 210/udp wais
+ipx 213/tcp # IPX
+ipx 213/udp
+imap3 220/tcp # Interactive Mail Access
+imap3 220/udp # Protocol v3
+ulistserv 372/tcp # UNIX Listserv
+ulistserv 372/udp
+https 443/tcp # MCom
+https 443/udp # MCom
+snpp 444/tcp # Simple Network Paging Protocol
+snpp 444/udp # Simple Network Paging Protocol
+saft 487/tcp # Simple Asynchronous File Transfer
+saft 487/udp # Simple Asynchronous File Transfer
+npmp-local 610/tcp dqs313_qmaster # npmp-local / DQS
+npmp-local 610/udp dqs313_qmaster # npmp-local / DQS
+npmp-gui 611/tcp dqs313_execd # npmp-gui / DQS
+npmp-gui 611/udp dqs313_execd # npmp-gui / DQS
+hmmp-ind 612/tcp dqs313_intercell# HMMP Indication / DQS
+hmmp-ind 612/udp dqs313_intercell# HMMP Indication / DQS
+#
+# UNIX specific services
+#
+exec 512/tcp
+biff 512/udp comsat
+login 513/tcp
+who 513/udp whod
+shell 514/tcp cmd # no passwords used
+syslog 514/udp
+printer 515/tcp spooler # line printer spooler
+talk 517/udp
+ntalk 518/udp
+route 520/udp router routed # RIP
+timed 525/udp timeserver
+tempo 526/tcp newdate
+courier 530/tcp rpc
+conference 531/tcp chat
+netnews 532/tcp readnews
+netwall 533/udp # -for emergency broadcasts
+uucp 540/tcp uucpd # uucp daemon
+afpovertcp 548/tcp # AFP over TCP
+afpovertcp 548/udp # AFP over TCP
+remotefs 556/tcp rfs_server rfs # Brunhoff remote filesystem
+klogin 543/tcp # Kerberized `rlogin' (v5)
+kshell 544/tcp krcmd # Kerberized `rsh' (v5)
+kerberos-adm 749/tcp # Kerberos `kadmin' (v5)
+#
+webster 765/tcp # Network dictionary
+webster 765/udp
+#
+# From ``Assigned Numbers'':
+#
+#> The Registered Ports are not controlled by the IANA and on most systems
+#> can be used by ordinary user processes or programs executed by ordinary
+#> users.
+#
+#> Ports are used in the TCP [45,106] to name the ends of logical
+#> connections which carry long term conversations. For the purpose of
+#> providing services to unknown callers, a service contact port is
+#> defined. This list specifies the port used by the server process as its
+#> contact port. While the IANA can not control uses of these ports it
+#> does register or list uses of these ports as a convienence to the
+#> community.
+#
+nfsdstatus 1110/tcp
+nfsd-keepalive 1110/udp
+
+ingreslock 1524/tcp
+ingreslock 1524/udp
+prospero-np 1525/tcp # Prospero non-privileged
+prospero-np 1525/udp
+datametrics 1645/tcp old-radius # datametrics / old radius entry
+datametrics 1645/udp old-radius # datametrics / old radius entry
+sa-msg-port 1646/tcp old-radacct # sa-msg-port / old radacct entry
+sa-msg-port 1646/udp old-radacct # sa-msg-port / old radacct entry
+radius 1812/tcp # Radius
+radius 1812/udp # Radius
+radacct 1813/tcp # Radius Accounting
+radacct 1813/udp # Radius Accounting
+nfsd 2049/tcp nfs
+nfsd 2049/udp nfs
+cvspserver 2401/tcp # CVS client/server operations
+cvspserver 2401/udp # CVS client/server operations
+mysql 3306/tcp # MySQL
+mysql 3306/udp # MySQL
+rfe 5002/tcp # Radio Free Ethernet
+rfe 5002/udp # Actually uses UDP only
+cfengine 5308/tcp # CFengine
+cfengine 5308/udp # CFengine
+bbs 7000/tcp # BBS service
+#
+#
+# Kerberos (Project Athena/MIT) services
+# Note that these are for Kerberos v4, and are unofficial. Sites running
+# v4 should uncomment these and comment out the v5 entries above.
+#
+kerberos4 750/udp kerberos-iv kdc # Kerberos (server) udp
+kerberos4 750/tcp kerberos-iv kdc # Kerberos (server) tcp
+kerberos_master 751/udp # Kerberos authentication
+kerberos_master 751/tcp # Kerberos authentication
+passwd_server 752/udp # Kerberos passwd server
+krb_prop 754/tcp # Kerberos slave propagation
+krbupdate 760/tcp kreg # Kerberos registration
+kpasswd 761/tcp kpwd # Kerberos "passwd"
+kpop 1109/tcp # Pop with Kerberos
+knetd 2053/tcp # Kerberos de-multiplexor
+zephyr-srv 2102/udp # Zephyr server
+zephyr-clt 2103/udp # Zephyr serv-hm connection
+zephyr-hm 2104/udp # Zephyr hostmanager
+eklogin 2105/tcp # Kerberos encrypted rlogin
+#
+# Unofficial but necessary (for NetBSD) services
+#
+supfilesrv 871/tcp # SUP server
+supfiledbg 1127/tcp # SUP debugging
+#
+# Datagram Delivery Protocol services
+#
+rtmp 1/ddp # Routing Table Maintenance Protocol
+nbp 2/ddp # Name Binding Protocol
+echo 4/ddp # AppleTalk Echo Protocol
+zip 6/ddp # Zone Information Protocol
+#
+# Services added for the Debian GNU/Linux distribution
+poppassd 106/tcp # Eudora
+poppassd 106/udp # Eudora
+mailq 174/tcp # Mailer transport queue for Zmailer
+mailq 174/tcp # Mailer transport queue for Zmailer
+omirr 808/tcp omirrd # online mirror
+omirr 808/udp omirrd # online mirror
+rmtcfg 1236/tcp # Gracilis Packeten remote config server
+xtel 1313/tcp # french minitel
+coda_opcons 1355/udp # Coda opcons (Coda fs)
+coda_venus 1363/udp # Coda venus (Coda fs)
+coda_auth 1357/udp # Coda auth (Coda fs)
+coda_udpsrv 1359/udp # Coda udpsrv (Coda fs)
+coda_filesrv 1361/udp # Coda filesrv (Coda fs)
+codacon 1423/tcp venus.cmu # Coda Console (Coda fs)
+coda_aux1 1431/tcp # coda auxiliary service (Coda fs)
+coda_aux1 1431/udp # coda auxiliary service (Coda fs)
+coda_aux2 1433/tcp # coda auxiliary service (Coda fs)
+coda_aux2 1433/udp # coda auxiliary service (Coda fs)
+coda_aux3 1435/tcp # coda auxiliary service (Coda fs)
+coda_aux3 1435/udp # coda auxiliary service (Coda fs)
+cfinger 2003/tcp # GNU Finger
+afbackup 2988/tcp # Afbackup system
+afbackup 2988/udp # Afbackup system
+icp 3130/tcp # Internet Cache Protocol (Squid)
+icp 3130/udp # Internet Cache Protocol (Squid)
+postgres 5432/tcp # POSTGRES
+postgres 5432/udp # POSTGRES
+fax 4557/tcp # FAX transmission service (old)
+hylafax 4559/tcp # HylaFAX client-server protocol (new)
+noclog 5354/tcp # noclogd with TCP (nocol)
+noclog 5354/udp # noclogd with UDP (nocol)
+hostmon 5355/tcp # hostmon uses TCP (nocol)
+hostmon 5355/udp # hostmon uses TCP (nocol)
+ircd 6667/tcp # Internet Relay Chat
+ircd 6667/udp # Internet Relay Chat
+webcache 8080/tcp # WWW caching service
+webcache 8080/udp # WWW caching service
+tproxy 8081/tcp # Transparent Proxy
+tproxy 8081/udp # Transparent Proxy
+mandelspawn 9359/udp mandelbrot # network mandelbrot
+amanda 10080/udp # amanda backup services
+amandaidx 10082/tcp # amanda backup services
+amidxtape 10083/tcp # amanda backup services
+isdnlog 20011/tcp # isdn logging system
+isdnlog 20011/udp # isdn logging system
+vboxd 20012/tcp # voice box system
+vboxd 20012/udp # voice box system
+binkp 24554/tcp # Binkley
+binkp 24554/udp # Binkley
+asp 27374/tcp # Address Search Protocol
+asp 27374/udp # Address Search Protocol
+tfido 60177/tcp # Ifmail
+tfido 60177/udp # Ifmail
+fido 60179/tcp # Ifmail
+fido 60179/udp # Ifmail
+
+# Local services
+
diff --git a/target/device/jp/q5/target_skeleton/etc/shadow b/target/device/jp/q5/target_skeleton/etc/shadow
new file mode 100644
index 000000000..4941a1ac5
--- /dev/null
+++ b/target/device/jp/q5/target_skeleton/etc/shadow
@@ -0,0 +1,12 @@
+root::10933:0:99999:7:::
+bin:*:10933:0:99999:7:::
+daemon:*:10933:0:99999:7:::
+adm:*:10933:0:99999:7:::
+lp:*:10933:0:99999:7:::
+sync:*:10933:0:99999:7:::
+shutdown:*:10933:0:99999:7:::
+halt:*:10933:0:99999:7:::
+uucp:*:10933:0:99999:7:::
+operator:*:10933:0:99999:7:::
+nobody:*:10933:0:99999:7:::
+default::10933:0:99999:7:::
diff --git a/target/device/jp/q5/target_skeleton/root/.bash_history b/target/device/jp/q5/target_skeleton/root/.bash_history
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/target/device/jp/q5/target_skeleton/root/.bash_history
diff --git a/target/device/jp/q5/target_skeleton/root/.bash_logout b/target/device/jp/q5/target_skeleton/root/.bash_logout
new file mode 100644
index 000000000..77ef1f950
--- /dev/null
+++ b/target/device/jp/q5/target_skeleton/root/.bash_logout
@@ -0,0 +1,7 @@
+# ~/.bash_logout: executed by bash(1) when login shell exits.
+
+# when leaving the console clear the screen to increase privacy
+
+case "`tty`" in
+ /dev/tty[0-9]*) clear
+esac
diff --git a/target/device/jp/q5/target_skeleton/root/.bash_profile b/target/device/jp/q5/target_skeleton/root/.bash_profile
new file mode 100644
index 000000000..27bf14953
--- /dev/null
+++ b/target/device/jp/q5/target_skeleton/root/.bash_profile
@@ -0,0 +1,15 @@
+# .bash_profile
+
+export PATH=\
+/bin:\
+/sbin:\
+/usr/bin:\
+/usr/sbin:\
+/usr/bin/X11:\
+/usr/local/bin
+
+umask 022
+
+if [ -f ~/.bashrc ]; then
+ source ~/.bashrc
+fi
diff --git a/target/device/jp/q5/target_skeleton/root/.bashrc b/target/device/jp/q5/target_skeleton/root/.bashrc
new file mode 100644
index 000000000..c97c9c4dc
--- /dev/null
+++ b/target/device/jp/q5/target_skeleton/root/.bashrc
@@ -0,0 +1,48 @@
+# ~/.bashrc: executed by bash(1) for non-login interactive shells.
+
+export PATH=\
+/bin:\
+/sbin:\
+/usr/bin:\
+/usr/sbin:\
+/usr/bin/X11:\
+/usr/local/bin
+
+# If running interactively, then:
+if [ "$PS1" ]; then
+
+ if [ "$BASH" ]; then
+ export PS1="[\u@\h \W]\\$ "
+ else
+ if [ "`id -u`" -eq 0 ]; then
+ export PS1='# '
+ else
+ export PS1='$ '
+ fi
+ fi
+
+ export USER=`id -un`
+ export LOGNAME=$USER
+ export HOSTNAME=`/bin/hostname`
+ export HISTSIZE=1000
+ export HISTFILESIZE=1000
+ export PAGER='/bin/more '
+ export EDITOR='/bin/vi'
+ export INPUTRC=/etc/inputrc
+ export DMALLOC_OPTIONS=debug=0x34f47d83,inter=100,log=logfile
+ export LS_COLORS='no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.jpg=01;35:*.jpeg=01;35:*.png=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.mpg=01;35:*.mpeg=01;35:*.avi=01;35:*.fli=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:';
+
+ ### Some aliases
+ alias ps2='ps facux '
+ alias ps1='ps faxo "%U %t %p %a" '
+ alias af='ps af'
+ alias cls='clear'
+ alias ll='/bin/ls -laFh'
+ alias ls='/bin/ls -F'
+ alias df='df -h'
+ alias indent='indent -bad -bap -bbo -nbc -br -brs -c33 -cd33 -ncdb -ce -ci4 -cli0 -cp33 -cs -d0 -di1 -nfc1 -nfca -hnl -i4 -ip0 -l75 -lp -npcs -npsl -nsc -nsob -nss -ts4 '
+ #alias bc='bc -l'
+ alias minicom='minicom -c on'
+ alias calc='calc -Cd '
+ alias bc='calc -Cd '
+fi;
diff --git a/target/device/jp/q5/target_skeleton/usr/share/udhcpc/default.script b/target/device/jp/q5/target_skeleton/usr/share/udhcpc/default.script
new file mode 100755
index 000000000..a52a7f812
--- /dev/null
+++ b/target/device/jp/q5/target_skeleton/usr/share/udhcpc/default.script
@@ -0,0 +1,39 @@
+#!/bin/sh
+
+# udhcpc script edited by Tim Riker <Tim@Rikers.org>
+
+[ -z "$1" ] && echo "Error: should be called from udhcpc" && exit 1
+
+RESOLV_CONF="/etc/resolv.conf"
+[ -n "$broadcast" ] && BROADCAST="broadcast $broadcast"
+[ -n "$subnet" ] && NETMASK="netmask $subnet"
+
+case "$1" in
+ deconfig)
+ /sbin/ifconfig $interface 0.0.0.0
+ ;;
+
+ renew|bound)
+ /sbin/ifconfig $interface $ip $BROADCAST $NETMASK
+
+ if [ -n "$router" ] ; then
+ echo "deleting routers"
+ while route del default gw 0.0.0.0 dev $interface ; do
+ :
+ done
+
+ for i in $router ; do
+ route add default gw $i dev $interface
+ done
+ fi
+
+ echo -n > $RESOLV_CONF
+ [ -n "$domain" ] && echo search $domain >> $RESOLV_CONF
+ for i in $dns ; do
+ echo adding dns $i
+ echo nameserver $i >> $RESOLV_CONF
+ done
+ ;;
+esac
+
+exit 0
diff --git a/target/device/jp/q5/uClibc.config.mipsel b/target/device/jp/q5/uClibc.config.mipsel
new file mode 100644
index 000000000..fe1c4ac68
--- /dev/null
+++ b/target/device/jp/q5/uClibc.config.mipsel
@@ -0,0 +1,160 @@
+#
+# Automatically generated make config: don't edit
+#
+# TARGET_alpha is not set
+# TARGET_arm is not set
+# TARGET_bfin is not set
+# TARGET_cris is not set
+# TARGET_e1 is not set
+# TARGET_frv is not set
+# TARGET_h8300 is not set
+# TARGET_i386 is not set
+# TARGET_i960 is not set
+# TARGET_m68k is not set
+# TARGET_microblaze is not set
+TARGET_mips=y
+# TARGET_nios is not set
+# TARGET_nios2 is not set
+# TARGET_powerpc is not set
+# TARGET_sh is not set
+# TARGET_sh64 is not set
+# TARGET_sparc is not set
+# TARGET_v850 is not set
+# TARGET_x86_64 is not set
+
+#
+# Target Architecture Features and Options
+#
+HAVE_ELF=y
+ARCH_SUPPORTS_LITTLE_ENDIAN=y
+TARGET_ARCH="mips"
+ARCH_CFLAGS="-mno-split-addresses"
+ARCH_SUPPORTS_BIG_ENDIAN=y
+# CONFIG_MIPS_ISA_1 is not set
+# CONFIG_MIPS_ISA_2 is not set
+# CONFIG_MIPS_ISA_3 is not set
+# CONFIG_MIPS_ISA_4 is not set
+CONFIG_MIPS_ISA_MIPS32=y
+# CONFIG_MIPS_ISA_MIPS64 is not set
+ARCH_LITTLE_ENDIAN=y
+# ARCH_BIG_ENDIAN is not set
+# ARCH_HAS_NO_MMU is not set
+ARCH_HAS_MMU=y
+UCLIBC_HAS_FLOATS=y
+HAS_FPU=y
+DO_C99_MATH=y
+KERNEL_SOURCE="/home/jp/buildroot_jp/build_test/toolchain_build_mipsel/linux"
+C_SYMBOL_PREFIX=""
+HAVE_DOT_CONFIG=y
+
+#
+# General Library Settings
+#
+# HAVE_NO_PIC is not set
+DOPIC=y
+# HAVE_NO_SHARED is not set
+HAVE_SHARED=y
+# ARCH_HAS_NO_LDSO is not set
+BUILD_UCLIBC_LDSO=y
+# FORCE_SHAREABLE_TEXT_SEGMENTS is not set
+LDSO_LDD_SUPPORT=y
+LDSO_CACHE_SUPPORT=y
+# LDSO_PRELOAD_FILE_SUPPORT is not set
+LDSO_BASE_FILENAME="ld.so"
+# DL_FINI_CRT_COMPAT is not set
+UCLIBC_CTOR_DTOR=y
+# HAS_NO_THREADS is not set
+UCLIBC_HAS_THREADS=y
+PTHREADS_DEBUG_SUPPORT=y
+UCLIBC_HAS_LFS=y
+# UCLIBC_STATIC_LDCONFIG is not set
+# MALLOC is not set
+# MALLOC_SIMPLE is not set
+MALLOC_STANDARD=y
+MALLOC_GLIBC_COMPAT=y
+UCLIBC_DYNAMIC_ATEXIT=y
+HAS_SHADOW=y
+# UNIX98PTY_ONLY is not set
+ASSUME_DEVPTS=y
+UCLIBC_HAS_TM_EXTENSIONS=y
+UCLIBC_HAS_TZ_CACHING=y
+UCLIBC_HAS_TZ_FILE=y
+UCLIBC_HAS_TZ_FILE_READ_MANY=y
+UCLIBC_TZ_FILE_PATH="/etc/TZ"
+
+#
+# Networking Support
+#
+UCLIBC_HAS_IPV6=y
+UCLIBC_HAS_RPC=y
+UCLIBC_HAS_FULL_RPC=y
+
+#
+# String and Stdio Support
+#
+UCLIBC_HAS_STRING_GENERIC_OPT=y
+UCLIBC_HAS_STRING_ARCH_OPT=y
+UCLIBC_HAS_CTYPE_TABLES=y
+UCLIBC_HAS_CTYPE_SIGNED=y
+# UCLIBC_HAS_CTYPE_UNSAFE is not set
+UCLIBC_HAS_CTYPE_CHECKED=y
+# UCLIBC_HAS_CTYPE_ENFORCED is not set
+UCLIBC_HAS_WCHAR=y
+# UCLIBC_HAS_LOCALE is not set
+UCLIBC_HAS_HEXADECIMAL_FLOATS=y
+UCLIBC_HAS_GLIBC_CUSTOM_PRINTF=y
+UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS=9
+UCLIBC_HAS_SCANF_GLIBC_A_FLAG=y
+# UCLIBC_HAS_STDIO_BUFSIZ_NONE is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_256 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_512 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_1024 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_2048 is not set
+UCLIBC_HAS_STDIO_BUFSIZ_4096=y
+# UCLIBC_HAS_STDIO_BUFSIZ_8192 is not set
+UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE=y
+# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4 is not set
+# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8 is not set
+UCLIBC_HAS_STDIO_GETC_MACRO=y
+UCLIBC_HAS_STDIO_PUTC_MACRO=y
+UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION=y
+# UCLIBC_HAS_FOPEN_LARGEFILE_MODE is not set
+UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE=y
+UCLIBC_HAS_GLIBC_CUSTOM_STREAMS=y
+UCLIBC_HAS_PRINTF_M_SPEC=y
+UCLIBC_HAS_ERRNO_MESSAGES=y
+# UCLIBC_HAS_SYS_ERRLIST is not set
+UCLIBC_HAS_SIGNUM_MESSAGES=y
+# UCLIBC_HAS_SYS_SIGLIST is not set
+UCLIBC_HAS_GNU_GETOPT=y
+
+#
+# Big and Tall
+#
+UCLIBC_HAS_REGEX=y
+# UCLIBC_HAS_WORDEXP is not set
+UCLIBC_HAS_FTW=y
+UCLIBC_HAS_GLOB=y
+
+#
+# Library Installation Options
+#
+SHARED_LIB_LOADER_PREFIX="/lib"
+RUNTIME_PREFIX="/"
+DEVEL_PREFIX="/usr/"
+
+#
+# uClibc security related options
+#
+# UCLIBC_SECURITY is not set
+
+#
+# uClibc development/debugging options
+#
+CROSS_COMPILER_PREFIX=""
+# DODEBUG is not set
+# DOASSERTS is not set
+# SUPPORT_LD_DEBUG is not set
+# SUPPORT_LD_DEBUG_EARLY is not set
+WARNINGS="-Wall"
+# UCLIBC_MJN3_ONLY is not set