From bc924b61431ffa6c76db5fefa7a5a09951fe6ccb Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Wed, 28 Apr 2010 20:30:39 +0200 Subject: fix some pkg dependencies --- mk/build.mk | 1 + package/MesaLib/Makefile | 7 ++++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/mk/build.mk b/mk/build.mk index cc6c447ff..9bbe15510 100644 --- a/mk/build.mk +++ b/mk/build.mk @@ -16,6 +16,7 @@ DEFCONFIG= ADK_DEVELSYSTEM=n \ ADK_MAKE_PARALLEL=n \ ADK_FORCE_PARALLEL=n \ ADK_PACKAGE_GRUB=n \ + ADK_PACKAGE_XORG_SERVER_WITH_DRI=n \ ADK_PACKAGE_AUFS2_UTIL=n \ ADK_PACKAGE_BASE_FILES=y \ ADK_PACKAGE_GCC=n \ diff --git a/package/MesaLib/Makefile b/package/MesaLib/Makefile index 41506092d..26201ba0d 100644 --- a/package/MesaLib/Makefile +++ b/package/MesaLib/Makefile @@ -9,9 +9,10 @@ PKG_RELEASE:= 1 PKG_MD5SUM:= 62e8e47cbd63741b4bbe634dcdc8a56a PKG_DESCR:= MESA library PKG_SECTION:= libs -PKG_DEPENDS:= libxdamage libxfixes -PKG_BUILDDEP+= libXdamage libXfixes libXxf86vm -PKG_URL:= add project url +PKG_DEPENDS:= libxdamage libxfixes libdrm +PKG_BUILDDEP+= libXdamage libXfixes libXxf86vm libdrm +PKG_BUILDDEP+= dri2proto glproto +PKG_URL:= http://www.mesa3d.org/ PKG_SITES:= ftp://ftp.freedesktop.org/pub/mesa/7.8.1/ WRKDIST= ${WRKDIR}/Mesa-${PKG_VERSION} -- cgit v1.2.3 From c7918465e6c9834556eb9238271951f2184e058a Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Sat, 1 May 2010 11:42:21 +0200 Subject: fix firefox build for eglibc/glibc builds --- package/firefox/Makefile | 2 +- package/firefox/patches/patch-gfx_qcms_iccread_c | 18 ++++++++++++++++++ package/firefox/patches/patch-gfx_qcms_qcmstypes_h | 5 +++-- 3 files changed, 22 insertions(+), 3 deletions(-) create mode 100644 package/firefox/patches/patch-gfx_qcms_iccread_c diff --git a/package/firefox/Makefile b/package/firefox/Makefile index 8c6db24be..b8d667241 100644 --- a/package/firefox/Makefile +++ b/package/firefox/Makefile @@ -19,7 +19,7 @@ PKG_SITES:= http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.6.3/ DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.source.tar.bz2 WRKDIST= ${WRKDIR}/mozilla-1.9.2 -PKG_TARGET_DEPENDS:= alix1c x86_qemu x86_64_qemu shuttle +PKG_TARGET_DEPENDS:= alix1c x86_qemu x86_64_qemu shuttle ibmx40 include $(TOPDIR)/mk/package.mk diff --git a/package/firefox/patches/patch-gfx_qcms_iccread_c b/package/firefox/patches/patch-gfx_qcms_iccread_c new file mode 100644 index 000000000..ea9ab6234 --- /dev/null +++ b/package/firefox/patches/patch-gfx_qcms_iccread_c @@ -0,0 +1,18 @@ +--- mozilla-1.9.2.orig/gfx/qcms/iccread.c 2010-04-02 18:02:27.000000000 +0200 ++++ mozilla-1.9.2/gfx/qcms/iccread.c 2010-04-30 14:00:52.430967966 +0200 +@@ -23,6 +23,7 @@ + #include + #include + #include ++#include + #include "qcmsint.h" + + //XXX: use a better typename +@@ -771,7 +772,6 @@ void qcms_profile_release(qcms_profile * + qcms_profile_fini(profile); + } + +-#include + qcms_profile* qcms_profile_from_file(FILE *file) + { + uint32_t length, remaining_length; diff --git a/package/firefox/patches/patch-gfx_qcms_qcmstypes_h b/package/firefox/patches/patch-gfx_qcms_qcmstypes_h index 436b1a452..80f68661a 100644 --- a/package/firefox/patches/patch-gfx_qcms_qcmstypes_h +++ b/package/firefox/patches/patch-gfx_qcms_qcmstypes_h @@ -1,6 +1,6 @@ --- mozilla-1.9.2.orig/gfx/qcms/qcmstypes.h 2010-04-02 18:02:27.000000000 +0200 -+++ mozilla-1.9.2/gfx/qcms/qcmstypes.h 2010-04-11 14:57:54.000000000 +0200 -@@ -11,22 +11,11 @@ ++++ mozilla-1.9.2/gfx/qcms/qcmstypes.h 2010-04-30 17:58:33.490975825 +0200 +@@ -11,22 +11,12 @@ /* int_types.h gets included somehow, so avoid redefining the types differently */ #include #else @@ -13,6 +13,7 @@ -typedef PRInt64 int64_t; -typedef PRUint64 uint64_t; - ++#include #ifdef __OS2__ /* OS/2's stdlib typdefs uintptr_t. So we'll just include that so we don't collide */ #include -- cgit v1.2.3 From d6bcad0afc7bccdc355d4aeab35ffd35c704fc69 Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Sat, 1 May 2010 11:42:44 +0200 Subject: mesa is ibmx40 only right now --- package/MesaLib/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/MesaLib/Makefile b/package/MesaLib/Makefile index 26201ba0d..9d673613f 100644 --- a/package/MesaLib/Makefile +++ b/package/MesaLib/Makefile @@ -17,7 +17,7 @@ PKG_SITES:= ftp://ftp.freedesktop.org/pub/mesa/7.8.1/ WRKDIST= ${WRKDIR}/Mesa-${PKG_VERSION} -PKG_TARGET_DEPENDS:= x86 x86_64 +PKG_TARGET_DEPENDS:= ibmx40 include $(TOPDIR)/mk/package.mk -- cgit v1.2.3 From eb6db01362bbbb6664697635fc7057d712e966da Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Sat, 1 May 2010 11:43:07 +0200 Subject: update to latest upstream version --- package/openvpn/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package/openvpn/Makefile b/package/openvpn/Makefile index e8af513fe..330b25124 100644 --- a/package/openvpn/Makefile +++ b/package/openvpn/Makefile @@ -4,9 +4,9 @@ include $(TOPDIR)/rules.mk PKG_NAME:= openvpn -PKG_VERSION:= 2.1.0 +PKG_VERSION:= 2.1.1 PKG_RELEASE:= 1 -PKG_MD5SUM:= 452a83326ae198cf961e9ae02539c8fb +PKG_MD5SUM:= b273ed2b5ec8616fb9834cde8634bce7 PKG_DESCR:= Open Source VPN solution using SSL PKG_SECTION:= net PKG_DEPENDS:= kmod-tun -- cgit v1.2.3 From 5ebef62334e54209fe6852d4fd2dca4b0ece6d5a Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Sat, 1 May 2010 11:44:00 +0200 Subject: do not select fuse on a bool symbol --- package/davfs2/Config.in.kernel | 4 ---- package/davfs2/Makefile | 4 ++-- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/package/davfs2/Config.in.kernel b/package/davfs2/Config.in.kernel index 3ef8e77d7..70e3c3ea4 100644 --- a/package/davfs2/Config.in.kernel +++ b/package/davfs2/Config.in.kernel @@ -4,13 +4,9 @@ depends on ADK_PACKAGE_DAVFS2 config ADK_PACKAGE_DAVFS2_FUSE bool "use the FUSE filesystem interface" - select ADK_PACKAGE_FUSE_UTILS config ADK_PACKAGE_DAVFS2_CODA bool "use the CODA filesystem interface" - select ADK_KPACKAGE_KMOD_CODA_FS config ADK_PACKAGE_DAVFS2_BOTH bool "use both filesystem interfaces" - select ADK_PACKAGE_FUSE_UTILS - select ADK_KPACKAGE_KMOD_CODA_FS endchoice diff --git a/package/davfs2/Makefile b/package/davfs2/Makefile index b3e63f2c9..b6c026739 100644 --- a/package/davfs2/Makefile +++ b/package/davfs2/Makefile @@ -16,8 +16,6 @@ endif PKG_URL:= http://savannah.nongnu.org/projects/davfs2 PKG_SITES= ${MASTER_SITE_SOURCEFORGE:=dav/} -include ${TOPDIR}/mk/package.mk - ifeq (${ADK_PACKAGE_DAVFS2_FUSE},y) PKG_DEPENDS:= fuse-utils kmod-fuse-fs libiconv neon else ifeq (${ADK_PACKAGE_DAVFS2_CODA},y) @@ -26,6 +24,8 @@ else PKG_DEPENDS:= kmod-coda-fs fuse-utils kmod-fuse-fs libiconv neon endif +include ${TOPDIR}/mk/package.mk + $(eval $(call PKG_template,DAVFS2,${PKG_NAME},${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION})) CONFIGURE_ARGS+= --with-neon -- cgit v1.2.3 From 4ef1a744af6d9fe1ab993c19a9e58cd83c37c2f1 Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Wed, 12 May 2010 18:04:12 +0200 Subject: fix make bulkallmod for some packages and target combinations --- mk/build.mk | 3 ++- package/gdb/Makefile | 2 ++ package/gdbserver/Makefile | 2 ++ package/nspr/Makefile | 7 ++++++- .../patch-mozilla_nsprpub_config_Makefile_in | 4 ++-- .../nspr/patches/patch-mozilla_nsprpub_configure | 21 +++++++++++++++++++++ package/nss/Makefile | 6 +++--- target/Config.in | 3 +++ target/foxg20/uclibc.config | 20 +++++--------------- target/linux/config/Config.in.misc | 1 + target/linux/config/Config.in.multimedia | 10 +++++++++- target/linux/config/Config.in.usb | 6 +++--- target/linux/patches/2.6.33.1/cris-sound.patch | 12 ++++++++++++ target/linux/patches/2.6.33.2/cris-sound.patch | 12 ++++++++++++ target/linux/patches/2.6.33/cris-sound.patch | 12 ++++++++++++ 15 files changed, 95 insertions(+), 26 deletions(-) create mode 100644 package/nspr/patches/patch-mozilla_nsprpub_configure create mode 100644 target/linux/patches/2.6.33.1/cris-sound.patch create mode 100644 target/linux/patches/2.6.33.2/cris-sound.patch create mode 100644 target/linux/patches/2.6.33/cris-sound.patch diff --git a/mk/build.mk b/mk/build.mk index 9bbe15510..f6f764c87 100644 --- a/mk/build.mk +++ b/mk/build.mk @@ -13,7 +13,8 @@ CONFIG = config DEFCONFIG= ADK_DEVELSYSTEM=n \ ADK_DEBUG=n \ ADK_STATIC=n \ - ADK_MAKE_PARALLEL=n \ + ADK_MAKE_PARALLEL=y \ + ADK_MAKE_JOBS=4 \ ADK_FORCE_PARALLEL=n \ ADK_PACKAGE_GRUB=n \ ADK_PACKAGE_XORG_SERVER_WITH_DRI=n \ diff --git a/package/gdb/Makefile b/package/gdb/Makefile index e01721222..d98546426 100644 --- a/package/gdb/Makefile +++ b/package/gdb/Makefile @@ -10,6 +10,8 @@ PKG_DEPENDS:= libthread-db libncurses libiconv PKG_BUILDDEP+= ncurses readline libiconv PKG_TARGET_DEPENDS:= !foxboard !ag241 +PKG_NOPARALLEL:= 1 + include ${TOPDIR}/mk/package.mk $(eval $(call PKG_template,GDB,gdb,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION})) diff --git a/package/gdbserver/Makefile b/package/gdbserver/Makefile index cfbed5260..32ce9fd59 100644 --- a/package/gdbserver/Makefile +++ b/package/gdbserver/Makefile @@ -8,6 +8,8 @@ PKG_DESCR:= GNU debugger (small server) PKG_SECTION:= comp PKG_DEPENDS:= libthread-db +PKG_TARGET_DEPENDS:= !foxboard + include ${TOPDIR}/mk/package.mk WRKSRC= ${WRKDIST}/gdb/gdbserver diff --git a/package/nspr/Makefile b/package/nspr/Makefile index 9072977a1..9383c8c5f 100644 --- a/package/nspr/Makefile +++ b/package/nspr/Makefile @@ -20,7 +20,12 @@ include $(TOPDIR)/mk/package.mk $(eval $(call PKG_template,NSPR,${PKG_NAME},$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION})) -CONFIGURE_ENV+= OS_TARGET="Linux" HOST_CC="${HOSTCC}" HOST_CFLAGS="${HOSTCFLAGS}" +CONFIGURE_ENV+= OS_TARGET="Linux" HOST_CC="${HOSTCC}" HOST_CFLAGS="${HOSTCFLAGS}" \ + cross_compiling=yes + +ifeq (${ADK_LINUX_64},y) +CONFIGURE_ARGS+= --enable-64bit +endif post-install: $(INSTALL_DIR) $(IDIR_NSPR)/usr/lib diff --git a/package/nspr/patches/patch-mozilla_nsprpub_config_Makefile_in b/package/nspr/patches/patch-mozilla_nsprpub_config_Makefile_in index 40d15376f..f667eeb61 100644 --- a/package/nspr/patches/patch-mozilla_nsprpub_config_Makefile_in +++ b/package/nspr/patches/patch-mozilla_nsprpub_config_Makefile_in @@ -1,11 +1,11 @@ --- nspr-4.8.2.orig/mozilla/nsprpub/config/Makefile.in 2009-03-03 23:04:23.000000000 +0100 -+++ nspr-4.8.2/mozilla/nsprpub/config/Makefile.in 2010-02-06 02:01:27.321836181 +0100 ++++ nspr-4.8.2/mozilla/nsprpub/config/Makefile.in 2010-05-02 12:25:27.673464050 +0200 @@ -145,7 +145,7 @@ endif $(OBJDIR)/%$(PROG_SUFFIX): $(OBJDIR)/%.$(OBJ_SUFFIX) @$(MAKE_OBJDIR) - $(CC) $(XCFLAGS) $< $(LDFLAGS) $(XLDOPTS) $(OUTOPTION)$@ -+ $(CC_FOR_BUILD) $(XCFLAGS) $< $(LDFLAGS) $(XLDOPTS) $(OUTOPTION)$@ ++ $(CC_FOR_BUILD) $(HOSTCFLAGS) $< $(HOSTLDFLAGS) $(XLDOPTS) $(OUTOPTION)$@ install:: nspr.m4 $(NSINSTALL) -D $(DESTDIR)$(datadir)/aclocal diff --git a/package/nspr/patches/patch-mozilla_nsprpub_configure b/package/nspr/patches/patch-mozilla_nsprpub_configure new file mode 100644 index 000000000..3d048970b --- /dev/null +++ b/package/nspr/patches/patch-mozilla_nsprpub_configure @@ -0,0 +1,21 @@ +--- nspr-4.8.2.orig/mozilla/nsprpub/configure 2009-10-04 02:57:00.000000000 +0200 ++++ nspr-4.8.2/mozilla/nsprpub/configure 2010-05-02 12:55:21.842224375 +0200 +@@ -1129,8 +1129,8 @@ EOF + fi + + if test -z "$SKIP_COMPILER_CHECKS"; then +-if test "$target" != "$host"; then +- echo "cross compiling from $host to $target" ++if test "$target" != "$build"; then ++ echo "cross compiling from $build to $target" + cross_compiling=yes + + _SAVE_CC="$CC" +@@ -2593,6 +2593,7 @@ case "$build:$target" in + ;; + esac + ++cross_compiling=yes + if test "$cross_compiling" = "yes"; then + CROSS_COMPILE=1 + else diff --git a/package/nss/Makefile b/package/nss/Makefile index 28e4da1f8..7acbacbe4 100644 --- a/package/nss/Makefile +++ b/package/nss/Makefile @@ -26,7 +26,7 @@ CONFIG_STYLE:= manual ifeq ($(ADK_LINUX_64),y) TCFLAGS+= -DUSE_64 -MAKE_FLAGS+= USE_64=1 +XAKE_FLAGS+= USE_64=1 endif MAKE_FLAGS+= NATIVE_CC="${HOSTCC}" NATIVE_FLAGS="${HOSTCFLAGS}" @@ -34,10 +34,10 @@ TCPPFLAGS+= -I${STAGING_DIR}/usr/include/nspr TCFLAGS+= -I${STAGING_DIR}/usr/include/nspr TLDFLAGS:= '' -MAKE_FLAGS+= SOURCE_MD_DIR=${WRKDIST}/dist DIST=${WRKDIST}/dist \ +XAKE_FLAGS+= SOURCE_MD_DIR=${WRKDIST}/dist DIST=${WRKDIST}/dist \ ARCHFLAG="${TCFLAGS} ${TCPPFLAGS} -ldl" ALL_TARGET:= build_coreconf all -XAKE_FLAGS+= OS_TEST=${ARCH} NSS_DISABLE_DBM=1 OS_TARGET=Linux OS_RELEASE=2.6 +XAKE_FLAGS+= OS_TEST=${CPU_ARCH} NSS_DISABLE_DBM=1 OS_TARGET=Linux OS_RELEASE=2.6 post-install: $(INSTALL_DIR) $(IDIR_NSS)/usr/lib diff --git a/target/Config.in b/target/Config.in index 488c8230d..06638ad4d 100644 --- a/target/Config.in +++ b/target/Config.in @@ -238,6 +238,7 @@ config ADK_LINUX_ARM_FOXG20 select ADK_EABI select ADK_KERNEL_NLS select ADK_KERNEL_EXT2_FS + select ADK_KERNEL_USB select ADK_KPACKAGE_KMOD_VFAT_FS select ADK_PACKAGE_KMOD_USB_CONTROLLER select ADK_KERNEL_NETDEVICES @@ -254,6 +255,7 @@ config ADK_LINUX_CRIS_FOXBOARD bool "Foxboard (ETRAX LX100)" select ADK_foxboard select ADK_PACKAGE_KMOD_USB_CONTROLLER + select ADK_KERNEL_USB select ADK_KERNEL_NLS select ADK_TARGET_WITH_USB help @@ -589,6 +591,7 @@ config ADK_LINUX_X86_QEMU config ADK_LINUX_X86_64_QEMU bool "x86_64" select ADK_x86_64_qemu + select ADK_LINUX_64 select ADK_KERNEL_NETDEV_1000 select ADK_KPACKAGE_KMOD_E1000 select ADK_KERNEL_INPUT_KEYBOARD diff --git a/target/foxg20/uclibc.config b/target/foxg20/uclibc.config index 69ecdf827..ed774f20f 100644 --- a/target/foxg20/uclibc.config +++ b/target/foxg20/uclibc.config @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit -# Version: 0.9.31 -# Sun Apr 4 10:16:38 2010 +# Version: 0.9.30.3 +# Sat May 1 19:16:40 2010 # # TARGET_alpha is not set TARGET_arm=y @@ -69,7 +69,6 @@ UCLIBC_HAS_FLOATS=y # UCLIBC_HAS_FPU is not set UCLIBC_HAS_SOFT_FLOAT=y DO_C99_MATH=y -# DO_XSI_MATH is not set UCLIBC_HAS_FENV=y KERNEL_HEADERS="" HAVE_DOT_CONFIG=y @@ -89,14 +88,12 @@ LDSO_CACHE_SUPPORT=y LDSO_BASE_FILENAME="ld.so" # UCLIBC_STATIC_LDCONFIG is not set # LDSO_RUNPATH is not set -LDSO_SEARCH_INTERP_PATH=y UCLIBC_CTOR_DTOR=y # LDSO_GNU_HASH_SUPPORT is not set # HAS_NO_THREADS is not set -LINUXTHREADS_OLD=y -# LINUXTHREADS_NEW is not set UCLIBC_HAS_THREADS=y PTHREADS_DEBUG_SUPPORT=y +LINUXTHREADS_OLD=y UCLIBC_HAS_SYSLOG=y UCLIBC_HAS_LFS=y # MALLOC is not set @@ -107,7 +104,6 @@ UCLIBC_DYNAMIC_ATEXIT=y COMPAT_ATEXIT=y # UCLIBC_SUSV3_LEGACY is not set # UCLIBC_SUSV3_LEGACY_MACROS is not set -# UCLIBC_SUSV4_LEGACY is not set # UCLIBC_HAS_STUBS is not set UCLIBC_HAS_SHADOW=y UCLIBC_HAS_PROGRAM_INVOCATION_NAME=y @@ -116,7 +112,6 @@ UCLIBC_HAS_PTY=y ASSUME_DEVPTS=y UNIX98PTY_ONLY=y # UCLIBC_HAS_GETPT is not set -# UCLIBC_HAS_LIBUTIL is not set UCLIBC_HAS_TM_EXTENSIONS=y UCLIBC_HAS_TZ_CACHING=y UCLIBC_HAS_TZ_FILE=y @@ -158,10 +153,6 @@ UCLIBC_HAS_REENTRANT_RPC=y UCLIBC_USE_NETLINK=y UCLIBC_SUPPORT_AI_ADDRCONFIG=y UCLIBC_HAS_BSD_RES_CLOSE=y -UCLIBC_HAS_COMPAT_RES_STATE=y -# UCLIBC_HAS_EXTRA_COMPAT_RES_STATE is not set -# UCLIBC_HAS_LIBRESOLV_STUB is not set -# UCLIBC_HAS_LIBNSL_STUB is not set # # String and Stdio Support @@ -212,17 +203,16 @@ UCLIBC_HAS_REGEX_OLD=y UCLIBC_HAS_FNMATCH=y UCLIBC_HAS_FNMATCH_OLD=y UCLIBC_HAS_WORDEXP=y -# UCLIBC_HAS_NFTW is not set +UCLIBC_HAS_FTW=y UCLIBC_HAS_GLOB=y UCLIBC_HAS_GNU_GLOB=y # # Library Installation Options # +SHARED_LIB_LOADER_PREFIX="$(RUNTIME_PREFIX)lib" RUNTIME_PREFIX="/" DEVEL_PREFIX="/usr/" -MULTILIB_DIR="lib" -HARDWIRED_ABSPATH=y # # Security options diff --git a/target/linux/config/Config.in.misc b/target/linux/config/Config.in.misc index 4e2406e85..eb2737eed 100644 --- a/target/linux/config/Config.in.misc +++ b/target/linux/config/Config.in.misc @@ -79,6 +79,7 @@ config ADK_KPACKAGE_KMOD_EEPROM_93CX6 prompt "kmod-eeprom-93cx6................. 93cx6 eeprom support" tristate depends on ADK_KPACKAGE_KMOD_MAC80211 + depends on !ADK_LINUX_CRIS_FOXBOARD default n help diff --git a/target/linux/config/Config.in.multimedia b/target/linux/config/Config.in.multimedia index f224dc31b..ef10e4832 100644 --- a/target/linux/config/Config.in.multimedia +++ b/target/linux/config/Config.in.multimedia @@ -1,5 +1,9 @@ menu "Multimedia devices support" -depends on ADK_TARGET_WITH_PCI || ADK_TARGET_WITH_USB && !ADK_LINUX_CRIS_FOXBOARD +depends on ADK_TARGET_WITH_PCI || ADK_TARGET_WITH_USB + +config ADK_KERNEL_SND_AC97_CODEC + boolean + default n config ADK_KERNEL_SND_TIMER boolean @@ -56,6 +60,8 @@ config ADK_KPACKAGE_KMOD_SND_OSSEMUL config ADK_KPACKAGE_KMOD_SND_AC97_CODEC prompt "kmod-sound-alsa-ac97-codec..... ALSA AC97 codec" depends on ADK_KPACKAGE_KMOD_SND + depends on !(ADK_LINUX_CRIS_FOXBOARD || ADK_LINUX_ARM_FOXG20 ) + select ADK_KERNEL_SND_AC97_CODEC tristate default n help @@ -64,6 +70,7 @@ config ADK_KPACKAGE_KMOD_SND_AC97_CODEC config ADK_KPACKAGE_KMOD_SND_VIA82XX prompt "kmod-sound-alsa-via82xx........ ALSA VIA82XX driver" depends on ADK_KPACKAGE_KMOD_SND + depends on !(ADK_LINUX_CRIS_FOXBOARD || ADK_LINUX_ARM_FOXG20 ) select ADK_KPACKAGE_KMOD_SND_AC97_CODEC tristate default n @@ -73,6 +80,7 @@ config ADK_KPACKAGE_KMOD_SND_VIA82XX config ADK_KPACKAGE_KMOD_SND_ENS1370 prompt "kmod-sound-alsa-ens1370........ ALSA Ensoniq 1370 driver" depends on ADK_KPACKAGE_KMOD_SND + depends on !(ADK_LINUX_CRIS_FOXBOARD || ADK_LINUX_ARM_FOXG20 ) tristate default n help diff --git a/target/linux/config/Config.in.usb b/target/linux/config/Config.in.usb index 62bafd99b..b3c48c9ea 100644 --- a/target/linux/config/Config.in.usb +++ b/target/linux/config/Config.in.usb @@ -101,7 +101,7 @@ config ADK_KPACKAGE_KMOD_USB_ISP116X_HCD prompt "kmod-usb-isp116x................ ISP116X HCD support" tristate default n - depends on !ADK_LINUX_CRIS_FOXBOARD + depends on !(ADK_LINUX_CRIS_FOXBOARD || ADK_LINUX_ARM_FOXG20) depends on ADK_KPACKAGE_KMOD_USB select ADK_PACKAGE_KMOD_USB_CONTROLLER help @@ -114,7 +114,7 @@ config ADK_KPACKAGE_KMOD_USB_SL811_HCD prompt "kmod-usb-sl811.................. SL811HS HCD support" tristate default n - depends on !ADK_LINUX_CRIS_FOXBOARD + depends on !(ADK_LINUX_CRIS_FOXBOARD || ADK_LINUX_ARM_FOXG20) depends on ADK_KPACKAGE_KMOD_USB select ADK_PACKAGE_KMOD_USB_CONTROLLER help @@ -154,7 +154,7 @@ config ADK_KPACKAGE_KMOD_USB_EHCI_HCD config ADK_PACKAGE_KMOD_USB_CONTROLLER tristate - depends on ADK_KPACKAGE_KMOD_USB_UHCI_HCD || ADK_KPACKAGE_KMOD_USB_OHCI_HCD || ADK_KPACKAGE_KMOD_EHCI_HCD || ADK_LINUX_CRIS_FOXBOARD + depends on ADK_KPACKAGE_KMOD_USB_UHCI_HCD || ADK_KPACKAGE_KMOD_USB_OHCI_HCD || ADK_KPACKAGE_KMOD_EHCI_HCD || ADK_LINUX_CRIS_FOXBOARD || ADK_LINUX_ARM_FOXG20 default n config ADK_KPACKAGE_KMOD_USB_ACM diff --git a/target/linux/patches/2.6.33.1/cris-sound.patch b/target/linux/patches/2.6.33.1/cris-sound.patch new file mode 100644 index 000000000..259b3ee60 --- /dev/null +++ b/target/linux/patches/2.6.33.1/cris-sound.patch @@ -0,0 +1,12 @@ +diff -Nur linux-2.6.33.orig/arch/cris/Kconfig linux-2.6.33/arch/cris/Kconfig +--- linux-2.6.33.orig/arch/cris/Kconfig 2010-02-24 19:52:17.000000000 +0100 ++++ linux-2.6.33/arch/cris/Kconfig 2010-04-28 21:41:58.831386913 +0200 +@@ -677,6 +688,8 @@ + + source "fs/Kconfig" + ++source "sound/Kconfig" ++ + source "drivers/usb/Kconfig" + + source "drivers/uwb/Kconfig" diff --git a/target/linux/patches/2.6.33.2/cris-sound.patch b/target/linux/patches/2.6.33.2/cris-sound.patch new file mode 100644 index 000000000..259b3ee60 --- /dev/null +++ b/target/linux/patches/2.6.33.2/cris-sound.patch @@ -0,0 +1,12 @@ +diff -Nur linux-2.6.33.orig/arch/cris/Kconfig linux-2.6.33/arch/cris/Kconfig +--- linux-2.6.33.orig/arch/cris/Kconfig 2010-02-24 19:52:17.000000000 +0100 ++++ linux-2.6.33/arch/cris/Kconfig 2010-04-28 21:41:58.831386913 +0200 +@@ -677,6 +688,8 @@ + + source "fs/Kconfig" + ++source "sound/Kconfig" ++ + source "drivers/usb/Kconfig" + + source "drivers/uwb/Kconfig" diff --git a/target/linux/patches/2.6.33/cris-sound.patch b/target/linux/patches/2.6.33/cris-sound.patch new file mode 100644 index 000000000..259b3ee60 --- /dev/null +++ b/target/linux/patches/2.6.33/cris-sound.patch @@ -0,0 +1,12 @@ +diff -Nur linux-2.6.33.orig/arch/cris/Kconfig linux-2.6.33/arch/cris/Kconfig +--- linux-2.6.33.orig/arch/cris/Kconfig 2010-02-24 19:52:17.000000000 +0100 ++++ linux-2.6.33/arch/cris/Kconfig 2010-04-28 21:41:58.831386913 +0200 +@@ -677,6 +688,8 @@ + + source "fs/Kconfig" + ++source "sound/Kconfig" ++ + source "drivers/usb/Kconfig" + + source "drivers/uwb/Kconfig" -- cgit v1.2.3 From 5f5e6da9afeb1684fe484ead00894866ebfbde7b Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Mon, 17 May 2010 16:53:05 +0200 Subject: enable cardbus for this target --- target/Config.in | 1 + 1 file changed, 1 insertion(+) diff --git a/target/Config.in b/target/Config.in index 488c8230d..7b4f125bb 100644 --- a/target/Config.in +++ b/target/Config.in @@ -362,6 +362,7 @@ config ADK_LINUX_X86_IBMX40 select ADK_TARGET_WITH_VGA select ADK_TARGET_WITH_PCI select ADK_TARGET_WITH_INPUT + select ADK_TARGET_WITH_CARDBUS select ADK_KERNEL_INPUT_KEYBOARD select ADK_KERNEL_SCSI select ADK_KERNEL_NETDEVICES -- cgit v1.2.3 From 896b6bb853f900eaebd56447df16958bf15916db Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Thu, 20 May 2010 18:55:17 +0200 Subject: activate and refresh support for rb411/rb433 after n0-1 helped to find a way to fix my broken rb433 by using the primary bootloader via shortening a jumper I got the motivation to get this target working again. Summarize both targets to newly created rb4xx target. --- TODO | 7 +- mk/rootfs.mk | 7 +- package/adkinstall/Makefile | 8 +- package/base-files/src/sbin/adkupdate | 4 + package/cfgfs/Makefile | 2 +- package/nand/Makefile | 2 +- target/Config.in | 51 +- target/bulk.lst | 13 +- target/linux/patches/2.6.33.3/swconfig.patch | 1075 -- target/rb4xx/Makefile | 33 + target/rb4xx/kernel.config | 1142 ++ target/rb4xx/patches/ar71xx.patch | 18749 +++++++++++++++++++++++++ target/rb4xx/target.mk | 7 + target/target.lst | 5 +- 14 files changed, 19980 insertions(+), 1125 deletions(-) delete mode 100644 target/linux/patches/2.6.33.3/swconfig.patch create mode 100644 target/rb4xx/Makefile create mode 100644 target/rb4xx/kernel.config create mode 100644 target/rb4xx/patches/ar71xx.patch create mode 100644 target/rb4xx/target.mk diff --git a/TODO b/TODO index 64a9ceca8..450f147df 100644 --- a/TODO +++ b/TODO @@ -1,9 +1,4 @@ -- php update -- openssh update +- add support for brcm 2.6 - macos x build -- test on OpenSuSE -- test on Fedora Core - help text for config/ needs adoption - fix watchdog for alix1c (mfgpt timers problem) -- implement rpm package backend -- implement dpkg package backend diff --git a/mk/rootfs.mk b/mk/rootfs.mk index b91a58629..2e3bd52b0 100644 --- a/mk/rootfs.mk +++ b/mk/rootfs.mk @@ -10,6 +10,11 @@ endef ifeq ($(ADK_LINUX_MIPS_RB532),y) ROOTFS:= root=/dev/sda2 +MTDDEV:= root=/dev/mtdblock1 +endif + +ifeq ($(ADK_LINUX_MIPS_RB433),y) +MTDDEV:= root=/dev/mtdblock2 endif ifeq ($(ADK_LINUX_ARM_FOXBOARD),y) @@ -22,7 +27,7 @@ $(eval $(call rootfs_template,archive,ARCHIVE)) $(eval $(call rootfs_template,initramfs,INITRAMFS)) $(eval $(call rootfs_template,initramfs-piggyback,INITRAMFS_PIGGYBACK)) $(eval $(call rootfs_template,squashfs,SQUASHFS)) -$(eval $(call rootfs_template,yaffs,YAFFS,root=/dev/mtdblock1 panic=3)) +$(eval $(call rootfs_template,yaffs,YAFFS,$(MTDDEV) panic=3)) $(eval $(call rootfs_template,nfsroot,NFSROOT,root=/dev/nfs ip=dhcp init=/init)) $(eval $(call rootfs_template,encrypted,ENCRYPTED)) diff --git a/package/adkinstall/Makefile b/package/adkinstall/Makefile index 5a1823cc3..944c073fb 100644 --- a/package/adkinstall/Makefile +++ b/package/adkinstall/Makefile @@ -10,7 +10,7 @@ PKG_DESCR:= installer for cf, mmc, sd or mtd devices PKG_SECTION:= base PKG_DEPENDS:= parted sfdisk e2fsprogs -PKG_TARGET_DEPENDS:= alix wrap rb532 foxg20 +PKG_TARGET_DEPENDS:= alix wrap rb532 foxg20 rb411 rb433 WRKDIST= ${WRKDIR}/${PKG_NAME}-${PKG_VERSION} NO_DISTFILES:= 1 @@ -34,6 +34,12 @@ ifeq ($(ADK_LINUX_MIPS_RB532),y) else ifeq ($(ADK_LINUX_ARM_FOXBOARD),y) ${INSTALL_BIN} ./src/adkinstall.foxg20 \ $(IDIR_ADKINSTALL)/sbin/adkinstall +else ifeq ($(ADK_LINUX_MIPS_RB433),y) + ${INSTALL_BIN} ./src/adkinstall.rb4xx \ + $(IDIR_ADKINSTALL)/sbin/adkinstall +else ifeq ($(ADK_LINUX_MIPS_RB411),y) + ${INSTALL_BIN} ./src/adkinstall.rb4xx \ + $(IDIR_ADKINSTALL)/sbin/adkinstall else ${INSTALL_BIN} ./src/adkinstall $(IDIR_ADKINSTALL)/sbin endif diff --git a/package/base-files/src/sbin/adkupdate b/package/base-files/src/sbin/adkupdate index 1af188b41..dd8d3ecec 100755 --- a/package/base-files/src/sbin/adkupdate +++ b/package/base-files/src/sbin/adkupdate @@ -34,6 +34,8 @@ prepare() { mount -o remount,rw / if [ "$system" == "RB532" ];then mount -t yaffs2 /dev/mtdblock0 /boot + elif [ "$system" == "AR7130" ];then + mount -t yaffs2 /dev/mtdblock1 /boot elif [ "$system" == "FOXG20" ];then mount -t vfat /dev/mmcblk0p1 /boot fi @@ -89,6 +91,8 @@ if [ -x /sbin/cfgfs ];then fi if [ "$system" == "RB532" ];then umount -f /boot +elif [ "$system" == "AR7130" ];then + umount -f /boot elif [ "$system" == "FOXG20" ];then umount -f /boot fi diff --git a/package/cfgfs/Makefile b/package/cfgfs/Makefile index 1b9897807..4eb72170e 100644 --- a/package/cfgfs/Makefile +++ b/package/cfgfs/Makefile @@ -9,7 +9,7 @@ PKG_RELEASE:= 2 PKG_DESCR:= compressed config filesystem PKG_SECTION:= base -PKG_TARGET_DEPENDS:= alix wrap foxboard ag241 rb532 foxg20 +PKG_TARGET_DEPENDS:= alix wrap foxboard ag241 rb532 foxg20 rb411 rb433 WRKDIST= ${WRKDIR}/${PKG_NAME}-${PKG_VERSION} NO_DISTFILES:= 1 diff --git a/package/nand/Makefile b/package/nand/Makefile index f904bc910..dc6292c01 100644 --- a/package/nand/Makefile +++ b/package/nand/Makefile @@ -9,7 +9,7 @@ PKG_RELEASE:= 3 PKG_DESCR:= NAND utility PKG_SECTION:= base -PKG_TARGET_DEPENDS:= rb532 +PKG_TARGET_DEPENDS:= rb532 rb411 rb433 NO_DISTFILES:= 1 diff --git a/target/Config.in b/target/Config.in index 488c8230d..db3e47f51 100644 --- a/target/Config.in +++ b/target/Config.in @@ -116,10 +116,7 @@ config ADK_x86_64_qemu config ADK_rb532 tristate -config ADK_rb411 - tristate - -config ADK_rb433 +config ADK_rb4xx tristate config ADK_zaurus @@ -182,8 +179,7 @@ config ADK_TARGET default "foxg20" if ADK_foxg20 default "native" if ADK_NATIVE default "rb532" if ADK_rb532 - default "rb411" if ADK_rb411 - default "rb433" if ADK_rb433 + default "rb4xx" if ADK_rb4xx default "zaurus" if ADK_arm default "lemote" if ADK_lemote default "ibmx40" if ADK_ibmx40 @@ -696,35 +692,30 @@ prompt "Routerboard model" default ADK_LINUX_MIPS_RB532 depends on ADK_LINUX_MIKROTIK -config ADK_LINUX_MIPS_RB411 - bool "Mikrotik Routerboard 411" - select ADK_rb411 - select ADK_KERNEL_NETDEVICES - select ADK_KERNEL_NET_PCI - select ADK_KERNEL_NETDEV_1000 - select ADK_KERNEL_NET_ETHERNET - select ADK_TARGET_WITH_MINIPCI - depends on ADK_BROKEN - help - Support for Mikrotik RB411. - Status: development - -config ADK_LINUX_MIPS_RB433 - bool "Mikrotik Routerboard 433" - select ADK_rb433 +config ADK_LINUX_MIPS_RB4XX + bool "Mikrotik Routerboard 411/433" + select ADK_rb4xx + select ADK_KERNEL_MISC_FILESYSTEMS + select ADK_KERNEL_YAFFS_FS + select ADK_KERNEL_YAFFS_YAFFS2 + select ADK_KERNEL_YAFFS_AUTO_YAFFS2 select ADK_KERNEL_NETDEVICES select ADK_KERNEL_NET_PCI select ADK_KERNEL_NETDEV_1000 select ADK_KERNEL_NET_ETHERNET select ADK_TARGET_WITH_MINIPCI - depends on ADK_BROKEN + select ADK_TARGET_WITH_WATCHDOG help - Support for Mikrotik RB433. - Status: development + Support for Mikrotik RB411/RB433. + Status: stable config ADK_LINUX_MIPS_RB532 bool "Mikrotik Routerboard 532" select ADK_rb532 + select ADK_KERNEL_MISC_FILESYSTEMS + select ADK_KERNEL_YAFFS_FS + select ADK_KERNEL_YAFFS_YAFFS2 + select ADK_KERNEL_YAFFS_AUTO_YAFFS2 select ADK_KERNEL_NETDEVICES select ADK_KERNEL_NET_PCI select ADK_KERNEL_NET_ETHERNET @@ -782,8 +773,7 @@ config ADK_TARGET_LIB_EGLIBC ADK_LINUX_X86_ALIX2D || \ ADK_LINUX_X86_ALIX2D13 || \ ADK_LINUX_X86_WRAP || \ - ADK_LINUX_MIPS_RB411 || \ - ADK_LINUX_MIPS_RB433 || \ + ADK_LINUX_MIPS_RB4XX || \ ADK_LINUX_MIPS_RB532 || \ ADK_LINUX_X86_64_SHUTTLE || \ ADK_LINUX_MIPS64_LEMOTE || \ @@ -802,6 +792,7 @@ config ADK_TARGET_LIB_GLIBC ADK_LINUX_X86_ALIX2D13 || \ ADK_LINUX_X86_WRAP || \ ADK_LINUX_MIPS_RB532 || \ + ADK_LINUX_MIPS_RB4XX || \ ADK_LINUX_X86_64_SHUTTLE || \ ADK_LINUX_RESCUE || \ ADK_LINUX_MIPS64_LEMOTE || \ @@ -865,8 +856,7 @@ config ADK_TARGET_ROOTFS_YAFFS select ADK_KERNEL_YAFFS_YAFFS2 depends on \ ADK_LINUX_MIPS_RB532 || \ - ADK_LINUX_MIPS_RB433 || \ - ADK_LINUX_MIPS_RB411 + ADK_LINUX_MIPS_RB4XX help Root filesystem on NAND. @@ -880,8 +870,7 @@ config ADK_TARGET_ROOTFS_NFSROOT ADK_LINUX_X86_ALIX2D13 || \ ADK_LINUX_X86_WRAP || \ ADK_LINUX_MIPS_RB532 || \ - ADK_LINUX_MIPS_RB433 || \ - ADK_LINUX_MIPS_RB411 || \ + ADK_LINUX_MIPS_RB4XX || \ ADK_LINUX_MIPS_WAG54G || \ ADK_LINUX_MIPS_AG241 || \ ADK_LINUX_MIPS64_LEMOTE diff --git a/target/bulk.lst b/target/bulk.lst index 9771be429..ff3447866 100644 --- a/target/bulk.lst +++ b/target/bulk.lst @@ -1,18 +1,15 @@ ag241 uclibc nfsroot foxboard uclibc nfsroot foxg20 uclibc nfsroot +rb4xx uclibc nfsroot +rb4xx eglibc nfsroot +rb4xx glibc nfsroot rb532 uclibc nfsroot rb532 eglibc nfsroot rb532 glibc nfsroot alix1c uclibc nfsroot alix1c eglibc nfsroot alix1c glibc nfsroot -alix2d uclibc nfsroot -alix2d eglibc nfsroot -alix2d glibc nfsroot -alix2d13 uclibc nfsroot -alix2d13 eglibc nfsroot -alix2d13 glibc nfsroot wrap uclibc nfsroot wrap eglibc nfsroot wrap glibc nfsroot @@ -32,3 +29,7 @@ x86_64_qemu uclibc archive x86_64_qemu eglibc archive x86_64_qemu glibc archive lemote eglibc archive +lemote glibc archive +ibmx40 uclibc archive +ibmx40 eglibc archive +ibmx40 glibc archive diff --git a/target/linux/patches/2.6.33.3/swconfig.patch b/target/linux/patches/2.6.33.3/swconfig.patch deleted file mode 100644 index 3297bb116..000000000 --- a/target/linux/patches/2.6.33.3/swconfig.patch +++ /dev/null @@ -1,1075 +0,0 @@ -diff -Nur linux-2.6.30.orig/drivers/net/phy/Kconfig linux-2.6.30/drivers/net/phy/Kconfig ---- linux-2.6.30.orig/drivers/net/phy/Kconfig 2009-06-10 05:05:27.000000000 +0200 -+++ linux-2.6.30/drivers/net/phy/Kconfig 2009-06-11 09:22:50.000000000 +0200 -@@ -13,6 +13,12 @@ - - if PHYLIB - -+config SWCONFIG -+ tristate "Switch configuration API" -+ ---help--- -+ Switch configuration API using netlink. This allows -+ you to configure the VLAN features of certain switches. -+ - comment "MII PHY device drivers" - - config MARVELL_PHY -diff -Nur linux-2.6.30.orig/drivers/net/phy/Makefile linux-2.6.30/drivers/net/phy/Makefile ---- linux-2.6.30.orig/drivers/net/phy/Makefile 2009-06-10 05:05:27.000000000 +0200 -+++ linux-2.6.30/drivers/net/phy/Makefile 2009-06-11 09:22:50.000000000 +0200 -@@ -3,6 +3,7 @@ - libphy-objs := phy.o phy_device.o mdio_bus.o - - obj-$(CONFIG_PHYLIB) += libphy.o -+obj-$(CONFIG_SWCONFIG) += swconfig.o - obj-$(CONFIG_MARVELL_PHY) += marvell.o - obj-$(CONFIG_DAVICOM_PHY) += davicom.o - obj-$(CONFIG_CICADA_PHY) += cicada.o -diff -Nur linux-2.6.30.orig/drivers/net/phy/swconfig.c linux-2.6.30/drivers/net/phy/swconfig.c ---- linux-2.6.30.orig/drivers/net/phy/swconfig.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-2.6.30/drivers/net/phy/swconfig.c 2009-06-11 09:22:50.000000000 +0200 -@@ -0,0 +1,872 @@ -+/* -+ * swconfig.c: Switch configuration API -+ * -+ * Copyright (C) 2008 Felix Fietkau -+ * -+ * This program is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU General Public License -+ * as published by the Free Software Foundation; either version 2 -+ * of the License, or (at your option) any later version. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+//#define DEBUG 1 -+#ifdef DEBUG -+#define DPRINTF(format, ...) printk("%s: " format, __func__, ##__VA_ARGS__) -+#else -+#define DPRINTF(...) do {} while(0) -+#endif -+ -+MODULE_AUTHOR("Felix Fietkau "); -+MODULE_LICENSE("GPL"); -+ -+static int swdev_id = 0; -+static struct list_head swdevs; -+static spinlock_t swdevs_lock = SPIN_LOCK_UNLOCKED; -+struct swconfig_callback; -+ -+struct swconfig_callback -+{ -+ struct sk_buff *msg; -+ struct genlmsghdr *hdr; -+ struct genl_info *info; -+ int cmd; -+ -+ /* callback for filling in the message data */ -+ int (*fill)(struct swconfig_callback *cb, void *arg); -+ -+ /* callback for closing the message before sending it */ -+ int (*close)(struct swconfig_callback *cb, void *arg); -+ -+ struct nlattr *nest[4]; -+ int args[4]; -+}; -+ -+/* defaults */ -+ -+static int -+swconfig_get_vlan_ports(struct switch_dev *dev, struct switch_attr *attr, struct switch_val *val) -+{ -+ int ret; -+ if (val->port_vlan >= dev->vlans) -+ return -EINVAL; -+ -+ if (!dev->get_vlan_ports) -+ return -EOPNOTSUPP; -+ -+ ret = dev->get_vlan_ports(dev, val); -+ printk("SET PORTS %d\n", val->len); -+ return ret; -+} -+ -+static int -+swconfig_set_vlan_ports(struct switch_dev *dev, struct switch_attr *attr, struct switch_val *val) -+{ -+ int i; -+ -+ if (val->port_vlan >= dev->vlans) -+ return -EINVAL; -+ -+ /* validate ports */ -+ if (val->len > dev->ports) -+ return -EINVAL; -+ -+ for (i = 0; i < val->len; i++) { -+ if (val->value.ports[i].id >= dev->ports) -+ return -EINVAL; -+ } -+ -+ if (!dev->set_vlan_ports) -+ return -EOPNOTSUPP; -+ -+ printk("SET PORTS %d\n", val->len); -+ return dev->set_vlan_ports(dev, val); -+} -+ -+static int -+swconfig_apply_config(struct switch_dev *dev, struct switch_attr *attr, struct switch_val *val) -+{ -+ /* don't complain if not supported by the switch driver */ -+ if (!dev->apply_config) -+ return 0; -+ -+ return dev->apply_config(dev); -+} -+ -+ -+enum global_defaults { -+ GLOBAL_APPLY, -+}; -+ -+enum vlan_defaults { -+ VLAN_PORTS, -+}; -+ -+enum port_defaults { -+ PORT_LINK, -+}; -+ -+static struct switch_attr default_global[] = { -+ [GLOBAL_APPLY] = { -+ .type = SWITCH_TYPE_NOVAL, -+ .name = "apply", -+ .description = "Activate changes in the hardware", -+ .set = swconfig_apply_config, -+ } -+}; -+ -+static struct switch_attr default_port[] = { -+ [PORT_LINK] = { -+ .type = SWITCH_TYPE_INT, -+ .name = "link", -+ .description = "Current link speed", -+ } -+}; -+ -+static struct switch_attr default_vlan[] = { -+ [VLAN_PORTS] = { -+ .type = SWITCH_TYPE_PORTS, -+ .name = "ports", -+ .description = "VLAN port mapping", -+ .set = swconfig_set_vlan_ports, -+ .get = swconfig_get_vlan_ports, -+ }, -+}; -+ -+ -+static void swconfig_defaults_init(struct switch_dev *dev) -+{ -+ dev->def_global = 0; -+ dev->def_vlan = 0; -+ dev->def_port = 0; -+ -+ if (dev->get_vlan_ports || dev->set_vlan_ports) -+ set_bit(VLAN_PORTS, &dev->def_vlan); -+ -+ /* always present, can be no-op */ -+ set_bit(GLOBAL_APPLY, &dev->def_global); -+} -+ -+ -+static struct genl_family switch_fam = { -+ .id = GENL_ID_GENERATE, -+ .name = "switch", -+ .hdrsize = 0, -+ .version = 1, -+ .maxattr = SWITCH_ATTR_MAX, -+}; -+ -+static const struct nla_policy switch_policy[SWITCH_ATTR_MAX+1] = { -+ [SWITCH_ATTR_ID] = { .type = NLA_U32 }, -+ [SWITCH_ATTR_OP_ID] = { .type = NLA_U32 }, -+ [SWITCH_ATTR_OP_PORT] = { .type = NLA_U32 }, -+ [SWITCH_ATTR_OP_VLAN] = { .type = NLA_U32 }, -+ [SWITCH_ATTR_OP_VALUE_INT] = { .type = NLA_U32 }, -+ [SWITCH_ATTR_OP_VALUE_STR] = { .type = NLA_NUL_STRING }, -+ [SWITCH_ATTR_OP_VALUE_PORTS] = { .type = NLA_NESTED }, -+ [SWITCH_ATTR_TYPE] = { .type = NLA_U32 }, -+}; -+ -+static const struct nla_policy port_policy[SWITCH_PORT_ATTR_MAX+1] = { -+ [SWITCH_PORT_ID] = { .type = NLA_U32 }, -+ [SWITCH_PORT_FLAG_TAGGED] = { .type = NLA_FLAG }, -+}; -+ -+static inline void -+swconfig_lock(void) -+{ -+ spin_lock(&swdevs_lock); -+} -+ -+static inline void -+swconfig_unlock(void) -+{ -+ spin_unlock(&swdevs_lock); -+} -+ -+static struct switch_dev * -+swconfig_get_dev(struct genl_info *info) -+{ -+ struct switch_dev *dev = NULL; -+ struct switch_dev *p; -+ int id; -+ -+ if (!info->attrs[SWITCH_ATTR_ID]) -+ goto done; -+ -+ id = nla_get_u32(info->attrs[SWITCH_ATTR_ID]); -+ swconfig_lock(); -+ list_for_each_entry(p, &swdevs, dev_list) { -+ if (id != p->id) -+ continue; -+ -+ dev = p; -+ break; -+ } -+ if (dev) -+ spin_lock(&dev->lock); -+ else -+ DPRINTF("device %d not found\n", id); -+ swconfig_unlock(); -+done: -+ return dev; -+} -+ -+static inline void -+swconfig_put_dev(struct switch_dev *dev) -+{ -+ spin_unlock(&dev->lock); -+} -+ -+static int -+swconfig_dump_attr(struct swconfig_callback *cb, void *arg) -+{ -+ struct switch_attr *op = arg; -+ struct genl_info *info = cb->info; -+ struct sk_buff *msg = cb->msg; -+ int id = cb->args[0]; -+ void *hdr; -+ -+ hdr = genlmsg_put(msg, info->snd_pid, info->snd_seq, &switch_fam, -+ NLM_F_MULTI, SWITCH_CMD_NEW_ATTR); -+ if (IS_ERR(hdr)) -+ return -1; -+ -+ NLA_PUT_U32(msg, SWITCH_ATTR_OP_ID, id); -+ NLA_PUT_U32(msg, SWITCH_ATTR_OP_TYPE, op->type); -+ NLA_PUT_STRING(msg, SWITCH_ATTR_OP_NAME, op->name); -+ if (op->description) -+ NLA_PUT_STRING(msg, SWITCH_ATTR_OP_DESCRIPTION, -+ op->description); -+ -+ return genlmsg_end(msg, hdr); -+nla_put_failure: -+ genlmsg_cancel(msg, hdr); -+ return -EMSGSIZE; -+} -+ -+/* spread multipart messages across multiple message buffers */ -+static int -+swconfig_send_multipart(struct swconfig_callback *cb, void *arg) -+{ -+ struct genl_info *info = cb->info; -+ int restart = 0; -+ int err; -+ -+ do { -+ if (!cb->msg) { -+ cb->msg = nlmsg_new(NLMSG_GOODSIZE, GFP_KERNEL); -+ if (cb->msg == NULL) -+ goto error; -+ } -+ -+ if (!(cb->fill(cb, arg) < 0)) -+ break; -+ -+ /* fill failed, check if this was already the second attempt */ -+ if (restart) -+ goto error; -+ -+ /* try again in a new message, send the current one */ -+ restart = 1; -+ if (cb->close) { -+ if (cb->close(cb, arg) < 0) -+ goto error; -+ } -+ err = genlmsg_unicast(cb->msg, info->snd_pid); -+ cb->msg = NULL; -+ if (err < 0) -+ goto error; -+ -+ } while (restart); -+ -+ return 0; -+ -+error: -+ if (cb->msg) -+ nlmsg_free(cb->msg); -+ return -1; -+} -+ -+static int -+swconfig_list_attrs(struct sk_buff *skb, struct genl_info *info) -+{ -+ struct genlmsghdr *hdr = nlmsg_data(info->nlhdr); -+ const struct switch_attrlist *alist; -+ struct switch_dev *dev; -+ struct swconfig_callback cb; -+ int err = -EINVAL; -+ int i; -+ -+ /* defaults */ -+ struct switch_attr *def_list; -+ unsigned long *def_active; -+ int n_def; -+ -+ dev = swconfig_get_dev(info); -+ if (!dev) -+ return -EINVAL; -+ -+ switch(hdr->cmd) { -+ case SWITCH_CMD_LIST_GLOBAL: -+ alist = &dev->attr_global; -+ def_list = default_global; -+ def_active = &dev->def_global; -+ n_def = ARRAY_SIZE(default_global); -+ break; -+ case SWITCH_CMD_LIST_VLAN: -+ alist = &dev->attr_vlan; -+ def_list = default_vlan; -+ def_active = &dev->def_vlan; -+ n_def = ARRAY_SIZE(default_vlan); -+ break; -+ case SWITCH_CMD_LIST_PORT: -+ alist = &dev->attr_port; -+ def_list = default_port; -+ def_active = &dev->def_port; -+ n_def = ARRAY_SIZE(default_port); -+ break; -+ default: -+ WARN_ON(1); -+ goto out; -+ } -+ -+ memset(&cb, 0, sizeof(cb)); -+ cb.info = info; -+ cb.fill = swconfig_dump_attr; -+ for (i = 0; i < alist->n_attr; i++) { -+ if (alist->attr[i].disabled) -+ continue; -+ cb.args[0] = i; -+ err = swconfig_send_multipart(&cb, &alist->attr[i]); -+ if (err < 0) -+ goto error; -+ } -+ -+ /* defaults */ -+ for (i = 0; i < n_def; i++) { -+ if (!test_bit(i, def_active)) -+ continue; -+ cb.args[0] = SWITCH_ATTR_DEFAULTS_OFFSET + i; -+ err = swconfig_send_multipart(&cb, &def_list[i]); -+ if (err < 0) -+ goto error; -+ } -+ swconfig_put_dev(dev); -+ -+ if (!cb.msg) -+ return 0; -+ -+ return genlmsg_unicast(cb.msg, info->snd_pid); -+ -+error: -+ if (cb.msg) -+ nlmsg_free(cb.msg); -+out: -+ swconfig_put_dev(dev); -+ return err; -+} -+ -+static struct switch_attr * -+swconfig_lookup_attr(struct switch_dev *dev, struct genl_info *info, -+ struct switch_val *val) -+{ -+ struct genlmsghdr *hdr = nlmsg_data(info->nlhdr); -+ const struct switch_attrlist *alist; -+ struct switch_attr *attr = NULL; -+ int attr_id; -+ -+ /* defaults */ -+ struct switch_attr *def_list; -+ unsigned long *def_active; -+ int n_def; -+ -+ if (!info->attrs[SWITCH_ATTR_OP_ID]) -+ goto done; -+ -+ switch(hdr->cmd) { -+ case SWITCH_CMD_SET_GLOBAL: -+ case SWITCH_CMD_GET_GLOBAL: -+ alist = &dev->attr_global; -+ def_list = default_global; -+ def_active = &dev->def_global; -+ n_def = ARRAY_SIZE(default_global); -+ break; -+ case SWITCH_CMD_SET_VLAN: -+ case SWITCH_CMD_GET_VLAN: -+ alist = &dev->attr_vlan; -+ def_list = default_vlan; -+ def_active = &dev->def_vlan; -+ n_def = ARRAY_SIZE(default_vlan); -+ if (!info->attrs[SWITCH_ATTR_OP_VLAN]) -+ goto done; -+ val->port_vlan = nla_get_u32(info->attrs[SWITCH_ATTR_OP_VLAN]); -+ break; -+ case SWITCH_CMD_SET_PORT: -+ case SWITCH_CMD_GET_PORT: -+ alist = &dev->attr_port; -+ def_list = default_port; -+ def_active = &dev->def_port; -+ n_def = ARRAY_SIZE(default_port); -+ if (!info->attrs[SWITCH_ATTR_OP_PORT]) -+ goto done; -+ val->port_vlan = nla_get_u32(info->attrs[SWITCH_ATTR_OP_PORT]); -+ break; -+ default: -+ WARN_ON(1); -+ goto done; -+ } -+ -+ if (!alist) -+ goto done; -+ -+ attr_id = nla_get_u32(info->attrs[SWITCH_ATTR_OP_ID]); -+ if (attr_id >= SWITCH_ATTR_DEFAULTS_OFFSET) { -+ attr_id -= SWITCH_ATTR_DEFAULTS_OFFSET; -+ if (attr_id >= n_def) -+ goto done; -+ if (!test_bit(attr_id, def_active)) -+ goto done; -+ attr = &def_list[attr_id]; -+ } else { -+ if (attr_id >= alist->n_attr) -+ goto done; -+ attr = &alist->attr[attr_id]; -+ } -+ -+ if (attr->disabled) -+ attr = NULL; -+ -+done: -+ if (!attr) -+ DPRINTF("attribute lookup failed\n"); -+ val->attr = attr; -+ return attr; -+} -+ -+static int -+swconfig_parse_ports(struct sk_buff *msg, struct nlattr *head, -+ struct switch_val *val, int max) -+{ -+ struct nlattr *nla; -+ int rem; -+ -+ val->len = 0; -+ nla_for_each_nested(nla, head, rem) { -+ struct nlattr *tb[SWITCH_PORT_ATTR_MAX+1]; -+ struct switch_port *port = &val->value.ports[val->len]; -+ -+ if (val->len >= max) -+ return -EINVAL; -+ -+ if (nla_parse_nested(tb, SWITCH_PORT_ATTR_MAX, nla, -+ port_policy)) -+ return -EINVAL; -+ -+ if (!tb[SWITCH_PORT_ID]) -+ return -EINVAL; -+ -+ port->id = nla_get_u32(tb[SWITCH_PORT_ID]); -+ if (tb[SWITCH_PORT_FLAG_TAGGED]) -+ port->flags |= (1 << SWITCH_PORT_FLAG_TAGGED); -+ val->len++; -+ } -+ -+ return 0; -+} -+ -+static int -+swconfig_set_attr(struct sk_buff *skb, struct genl_info *info) -+{ -+ struct switch_attr *attr; -+ struct switch_dev *dev; -+ struct switch_val val; -+ int err = -EINVAL; -+ -+ dev = swconfig_get_dev(info); -+ if (!dev) -+ return -EINVAL; -+ -+ memset(&val, 0, sizeof(val)); -+ attr = swconfig_lookup_attr(dev, info, &val); -+ if (!attr || !attr->set) -+ goto error; -+ -+ val.attr = attr; -+ switch(attr->type) { -+ case SWITCH_TYPE_NOVAL: -+ break; -+ case SWITCH_TYPE_INT: -+ if (!info->attrs[SWITCH_ATTR_OP_VALUE_INT]) -+ goto error; -+ val.value.i = -+ nla_get_u32(info->attrs[SWITCH_ATTR_OP_VALUE_INT]); -+ break; -+ case SWITCH_TYPE_STRING: -+ if (!info->attrs[SWITCH_ATTR_OP_VALUE_STR]) -+ goto error; -+ val.value.s = -+ nla_data(info->attrs[SWITCH_ATTR_OP_VALUE_STR]); -+ break; -+ case SWITCH_TYPE_PORTS: -+ val.value.ports = dev->portbuf; -+ memset(dev->portbuf, 0, -+ sizeof(struct switch_port) * dev->ports); -+ -+ /* TODO: implement multipart? */ -+ if (info->attrs[SWITCH_ATTR_OP_VALUE_PORTS]) { -+ err = swconfig_parse_ports(skb, -+ info->attrs[SWITCH_ATTR_OP_VALUE_PORTS], &val, dev->ports); -+ if (err < 0) -+ goto error; -+ } else { -+ val.len = 0; -+ err = 0; -+ } -+ break; -+ default: -+ goto error; -+ } -+ -+ err = attr->set(dev, attr, &val); -+error: -+ swconfig_put_dev(dev); -+ return err; -+} -+ -+static int -+swconfig_close_portlist(struct swconfig_callback *cb, void *arg) -+{ -+ if (cb->nest[0]) -+ nla_nest_end(cb->msg, cb->nest[0]); -+ return 0; -+} -+ -+static int -+swconfig_send_port(struct swconfig_callback *cb, void *arg) -+{ -+ const struct switch_port *port = arg; -+ struct nlattr *p = NULL; -+ -+ if (!cb->nest[0]) { -+ cb->nest[0] = nla_nest_start(cb->msg, cb->cmd); -+ if (!cb->nest[0]) -+ return -1; -+ } -+ -+ p = nla_nest_start(cb->msg, SWITCH_ATTR_PORT); -+ if (!p) -+ goto error; -+ -+ NLA_PUT_U32(cb->msg, SWITCH_PORT_ID, port->id); -+ if (port->flags & (1 << SWITCH_PORT_FLAG_TAGGED)) -+ NLA_PUT_FLAG(cb->msg, SWITCH_PORT_FLAG_TAGGED); -+ -+ nla_nest_end(cb->msg, p); -+ return 0; -+ -+nla_put_failure: -+ nla_nest_cancel(cb->msg, p); -+error: -+ nla_nest_cancel(cb->msg, cb->nest[0]); -+ return -1; -+} -+ -+static int -+swconfig_send_ports(struct sk_buff **msg, struct genl_info *info, int attr, -+ const struct switch_val *val) -+{ -+ struct swconfig_callback cb; -+ int err = 0; -+ int i; -+ -+ if (!val->value.ports) -+ return -EINVAL; -+ -+ memset(&cb, 0, sizeof(cb)); -+ cb.cmd = attr; -+ cb.msg = *msg; -+ cb.info = info; -+ cb.fill = swconfig_send_port; -+ cb.close = swconfig_close_portlist; -+ -+ cb.nest[0] = nla_nest_start(cb.msg, cb.cmd); -+ for (i = 0; i < val->len; i++) { -+ err = swconfig_send_multipart(&cb, &val->value.ports[i]); -+ if (err) -+ goto done; -+ } -+ err = val->len; -+ swconfig_close_portlist(&cb, NULL); -+ *msg = cb.msg; -+ -+done: -+ return err; -+} -+ -+static int -+swconfig_get_attr(struct sk_buff *skb, struct genl_info *info) -+{ -+ struct genlmsghdr *hdr = nlmsg_data(info->nlhdr); -+ struct switch_attr *attr; -+ struct switch_dev *dev; -+ struct sk_buff *msg = NULL; -+ struct switch_val val; -+ int err = -EINVAL; -+ int cmd = hdr->cmd; -+ -+ dev = swconfig_get_dev(info); -+ if (!dev) -+ return -EINVAL; -+ -+ memset(&val, 0, sizeof(val)); -+ attr = swconfig_lookup_attr(dev, info, &val); -+ if (!attr || !attr->get) -+ goto error_dev; -+ -+ if (attr->type == SWITCH_TYPE_PORTS) { -+ val.value.ports = dev->portbuf; -+ memset(dev->portbuf, 0, -+ sizeof(struct switch_port) * dev->ports); -+ } -+ -+ err = attr->get(dev, attr, &val); -+ if (err) -+ goto error; -+ -+ msg = nlmsg_new(NLMSG_GOODSIZE, GFP_KERNEL); -+ if (!msg) -+ goto error; -+ -+ hdr = genlmsg_put(msg, info->snd_pid, info->snd_seq, &switch_fam, -+ 0, cmd); -+ if (IS_ERR(hdr)) -+ goto nla_put_failure; -+ -+ switch(attr->type) { -+ case SWITCH_TYPE_INT: -+ NLA_PUT_U32(msg, SWITCH_ATTR_OP_VALUE_INT, val.value.i); -+ break; -+ case SWITCH_TYPE_STRING: -+ NLA_PUT_STRING(msg, SWITCH_ATTR_OP_VALUE_STR, val.value.s); -+ break; -+ case SWITCH_TYPE_PORTS: -+ err = swconfig_send_ports(&msg, info, -+ SWITCH_ATTR_OP_VALUE_PORTS, &val); -+ if (err < 0) -+ goto nla_put_failure; -+ break; -+ default: -+ DPRINTF("invalid type in attribute\n"); -+ err = -EINVAL; -+ goto error; -+ } -+ err = genlmsg_end(msg, hdr); -+ if (err < 0) -+ goto nla_put_failure; -+ -+ swconfig_put_dev(dev); -+ return genlmsg_unicast(msg, info->snd_pid); -+ -+nla_put_failure: -+ if (msg) -+ nlmsg_free(msg); -+error_dev: -+ swconfig_put_dev(dev); -+error: -+ if (!err) -+ err = -ENOMEM; -+ return err; -+} -+ -+static int -+swconfig_send_switch(struct sk_buff *msg, u32 pid, u32 seq, int flags, -+ const struct switch_dev *dev) -+{ -+ void *hdr; -+ -+ hdr = genlmsg_put(msg, pid, seq, &switch_fam, flags, -+ SWITCH_CMD_NEW_ATTR); -+ if (IS_ERR(hdr)) -+ return -1; -+ -+ NLA_PUT_U32(msg, SWITCH_ATTR_ID, dev->id); -+ NLA_PUT_STRING(msg, SWITCH_ATTR_NAME, dev->name); -+ NLA_PUT_STRING(msg, SWITCH_ATTR_DEV_NAME, dev->devname); -+ NLA_PUT_U32(msg, SWITCH_ATTR_VLANS, dev->vlans); -+ NLA_PUT_U32(msg, SWITCH_ATTR_PORTS, dev->ports); -+ -+ return genlmsg_end(msg, hdr); -+nla_put_failure: -+ genlmsg_cancel(msg, hdr); -+ return -EMSGSIZE; -+} -+ -+static int swconfig_dump_switches(struct sk_buff *skb, -+ struct netlink_callback *cb) -+{ -+ struct switch_dev *dev; -+ int start = cb->args[0]; -+ int idx = 0; -+ -+ swconfig_lock(); -+ list_for_each_entry(dev, &swdevs, dev_list) { -+ if (++idx <= start) -+ continue; -+ if (swconfig_send_switch(skb, NETLINK_CB(cb->skb).pid, -+ cb->nlh->nlmsg_seq, NLM_F_MULTI, -+ dev) < 0) -+ break; -+ } -+ swconfig_unlock(); -+ cb->args[0] = idx; -+ -+ return skb->len; -+} -+ -+static int -+swconfig_done(struct netlink_callback *cb) -+{ -+ return 0; -+} -+ -+static struct genl_ops swconfig_ops[] = { -+ { -+ .cmd = SWITCH_CMD_LIST_GLOBAL, -+ .doit = swconfig_list_attrs, -+ .policy = switch_policy, -+ }, -+ { -+ .cmd = SWITCH_CMD_LIST_VLAN, -+ .doit = swconfig_list_attrs, -+ .policy = switch_policy, -+ }, -+ { -+ .cmd = SWITCH_CMD_LIST_PORT, -+ .doit = swconfig_list_attrs, -+ .policy = switch_policy, -+ }, -+ { -+ .cmd = SWITCH_CMD_GET_GLOBAL, -+ .doit = swconfig_get_attr, -+ .policy = switch_policy, -+ }, -+ { -+ .cmd = SWITCH_CMD_GET_VLAN, -+ .doit = swconfig_get_attr, -+ .policy = switch_policy, -+ }, -+ { -+ .cmd = SWITCH_CMD_GET_PORT, -+ .doit = swconfig_get_attr, -+ .policy = switch_policy, -+ }, -+ { -+ .cmd = SWITCH_CMD_SET_GLOBAL, -+ .doit = swconfig_set_attr, -+ .policy = switch_policy, -+ }, -+ { -+ .cmd = SWITCH_CMD_SET_VLAN, -+ .doit = swconfig_set_attr, -+ .policy = switch_policy, -+ }, -+ { -+ .cmd = SWITCH_CMD_SET_PORT, -+ .doit = swconfig_set_attr, -+ .policy = switch_policy, -+ }, -+ { -+ .cmd = SWITCH_CMD_GET_SWITCH, -+ .dumpit = swconfig_dump_switches, -+ .policy = switch_policy, -+ .done = swconfig_done, -+ } -+}; -+ -+int -+register_switch(struct switch_dev *dev, struct net_device *netdev) -+{ -+ INIT_LIST_HEAD(&dev->dev_list); -+ if (netdev) { -+ dev->netdev = netdev; -+ if (!dev->devname) -+ dev->devname = netdev->name; -+ } -+ BUG_ON(!dev->devname); -+ -+ if (dev->ports > 0) { -+ dev->portbuf = kzalloc(sizeof(struct switch_port) * dev->ports, -+ GFP_KERNEL); -+ if (!dev->portbuf) -+ return -ENOMEM; -+ } -+ dev->id = ++swdev_id; -+ swconfig_defaults_init(dev); -+ spin_lock_init(&dev->lock); -+ swconfig_lock(); -+ list_add(&dev->dev_list, &swdevs); -+ swconfig_unlock(); -+ -+ return 0; -+} -+EXPORT_SYMBOL_GPL(register_switch); -+ -+void -+unregister_switch(struct switch_dev *dev) -+{ -+ kfree(dev->portbuf); -+ spin_lock(&dev->lock); -+ swconfig_lock(); -+ list_del(&dev->dev_list); -+ swconfig_unlock(); -+} -+EXPORT_SYMBOL_GPL(unregister_switch); -+ -+ -+static int __init -+swconfig_init(void) -+{ -+ int i, err; -+ -+ INIT_LIST_HEAD(&swdevs); -+ err = genl_register_family(&switch_fam); -+ if (err) -+ return err; -+ -+ for (i = 0; i < ARRAY_SIZE(swconfig_ops); i++) { -+ err = genl_register_ops(&switch_fam, &swconfig_ops[i]); -+ if (err) -+ goto unregister; -+ } -+ -+ return 0; -+ -+unregister: -+ genl_unregister_family(&switch_fam); -+ return err; -+} -+ -+static void __exit -+swconfig_exit(void) -+{ -+ genl_unregister_family(&switch_fam); -+} -+ -+module_init(swconfig_init); -+module_exit(swconfig_exit); -+ -diff -Nur linux-2.6.30.orig/include/linux/switch.h linux-2.6.30/include/linux/switch.h ---- linux-2.6.30.orig/include/linux/switch.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-2.6.30/include/linux/switch.h 2009-06-11 09:22:50.000000000 +0200 -@@ -0,0 +1,168 @@ -+/* -+ * switch.h: Switch configuration API -+ * -+ * Copyright (C) 2008 Felix Fietkau -+ * -+ * This program is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU General Public License -+ * as published by the Free Software Foundation; either version 2 -+ * of the License, or (at your option) any later version. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ */ -+ -+#ifndef __LINUX_SWITCH_H -+#define __LINUX_SWITCH_H -+ -+#include -+#include -+#include -+#include -+#ifndef __KERNEL__ -+#include -+#include -+#include -+#else -+#include -+#endif -+ -+/* main attributes */ -+enum { -+ SWITCH_ATTR_UNSPEC, -+ /* global */ -+ SWITCH_ATTR_TYPE, -+ /* device */ -+ SWITCH_ATTR_ID, -+ SWITCH_ATTR_NAME, -+ SWITCH_ATTR_DEV_NAME, -+ SWITCH_ATTR_VLANS, -+ SWITCH_ATTR_PORTS, -+ /* attributes */ -+ SWITCH_ATTR_OP_ID, -+ SWITCH_ATTR_OP_TYPE, -+ SWITCH_ATTR_OP_NAME, -+ SWITCH_ATTR_OP_PORT, -+ SWITCH_ATTR_OP_VLAN, -+ SWITCH_ATTR_OP_VALUE_INT, -+ SWITCH_ATTR_OP_VALUE_STR, -+ SWITCH_ATTR_OP_VALUE_PORTS, -+ SWITCH_ATTR_OP_DESCRIPTION, -+ /* port lists */ -+ SWITCH_ATTR_PORT, -+ SWITCH_ATTR_MAX -+}; -+ -+/* commands */ -+enum { -+ SWITCH_CMD_UNSPEC, -+ SWITCH_CMD_GET_SWITCH, -+ SWITCH_CMD_NEW_ATTR, -+ SWITCH_CMD_LIST_GLOBAL, -+ SWITCH_CMD_GET_GLOBAL, -+ SWITCH_CMD_SET_GLOBAL, -+ SWITCH_CMD_LIST_PORT, -+ SWITCH_CMD_GET_PORT, -+ SWITCH_CMD_SET_PORT, -+ SWITCH_CMD_LIST_VLAN, -+ SWITCH_CMD_GET_VLAN, -+ SWITCH_CMD_SET_VLAN -+}; -+ -+/* data types */ -+enum switch_val_type { -+ SWITCH_TYPE_UNSPEC, -+ SWITCH_TYPE_INT, -+ SWITCH_TYPE_STRING, -+ SWITCH_TYPE_PORTS, -+ SWITCH_TYPE_NOVAL, -+}; -+ -+/* port nested attributes */ -+enum { -+ SWITCH_PORT_UNSPEC, -+ SWITCH_PORT_ID, -+ SWITCH_PORT_FLAG_TAGGED, -+ SWITCH_PORT_ATTR_MAX -+}; -+ -+#define SWITCH_ATTR_DEFAULTS_OFFSET 0x1000 -+ -+#ifdef __KERNEL__ -+ -+struct switch_dev; -+struct switch_op; -+struct switch_val; -+struct switch_attr; -+struct switch_attrlist; -+ -+int register_switch(struct switch_dev *dev, struct net_device *netdev); -+void unregister_switch(struct switch_dev *dev); -+ -+struct switch_attrlist { -+ /* filled in by the driver */ -+ int n_attr; -+ struct switch_attr *attr; -+}; -+ -+ -+struct switch_dev { -+ int id; -+ void *priv; -+ const char *name; -+ -+ /* NB: either devname or netdev must be set */ -+ const char *devname; -+ struct net_device *netdev; -+ -+ int ports; -+ int vlans; -+ int cpu_port; -+ struct switch_attrlist attr_global, attr_port, attr_vlan; -+ -+ spinlock_t lock; -+ struct switch_port *portbuf; -+ struct list_head dev_list; -+ unsigned long def_global, def_port, def_vlan; -+ -+ int (*get_vlan_ports)(struct switch_dev *dev, struct switch_val *val); -+ int (*set_vlan_ports)(struct switch_dev *dev, struct switch_val *val); -+ int (*apply_config)(struct switch_dev *dev); -+}; -+ -+struct switch_port { -+ u32 id; -+ u32 flags; -+}; -+ -+struct switch_val { -+ struct switch_attr *attr; -+ int port_vlan; -+ int len; -+ union { -+ const char *s; -+ u32 i; -+ struct switch_port *ports; -+ } value; -+}; -+ -+struct switch_attr { -+ int disabled; -+ int type; -+ const char *name; -+ const char *description; -+ -+ int (*set)(struct switch_dev *dev, struct switch_attr *attr, struct switch_val *val); -+ int (*get)(struct switch_dev *dev, struct switch_attr *attr, struct switch_val *val); -+ -+ /* for driver internal use */ -+ int id; -+ int ofs; -+ int max; -+}; -+ -+#endif -+ -+#endif diff --git a/target/rb4xx/Makefile b/target/rb4xx/Makefile new file mode 100644 index 000000000..bf4e31b99 --- /dev/null +++ b/target/rb4xx/Makefile @@ -0,0 +1,33 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include $(TOPDIR)/rules.mk +include $(TOPDIR)/mk/kernel.mk +include $(TOPDIR)/mk/modules.mk +include $(TOPDIR)/mk/kernel-build.mk +include $(TOPDIR)/mk/image.mk + +OSTRIP:=-R .reginfo -R .notes -R .note -R .comment -R .mdebug -R .note.gnu.build-id + +kernel-install: + $(TARGET_CROSS)objcopy $(OSTRIP) -S $(LINUX_DIR)/vmlinux \ + $(TARGET_DIR)/boot/kernel + @cp $(TARGET_DIR)/boot/kernel \ + $(BUILD_DIR)/${ADK_TARGET}-${FS}-kernel + +ifeq ($(FS),nfsroot) +imageinstall: $(BIN_DIR)/$(ROOTFSUSERTARBALL) + @cp $(BUILD_DIR)/${ADK_TARGET}-${FS}-kernel \ + $(BIN_DIR)/${ADK_TARGET}-${FS}-kernel + @echo 'The kernel file is: ${BIN_DIR}/${ADK_TARGET}-${FS}-kernel' + @echo 'The nfs root tarball is: ${BIN_DIR}/${ROOTFSUSERTARBALL}' + @echo 'Login as user root with password linux123 via ssh or console' +endif +ifeq ($(FS),yaffs) +imageinstall: $(BIN_DIR)/$(ROOTFSTARBALL) + @echo 'The root tarball is: ${BIN_DIR}/${ROOTFSTARBALL}' + @echo 'Format your NAND with Routerboot, boot via NFS and' + @echo 'then install kernel and filesystem:' + @echo 'adkinstall ${ROOTFSTARBALL}' + @echo 'Login as user root with password linux123 via ssh or console' +endif diff --git a/target/rb4xx/kernel.config b/target/rb4xx/kernel.config new file mode 100644 index 000000000..ac848b24c --- /dev/null +++ b/target/rb4xx/kernel.config @@ -0,0 +1,1142 @@ +# +# Automatically generated make config: don't edit +# Linux kernel version: 2.6.33.3 +# Thu May 20 13:15:45 2010 +# +CONFIG_MIPS=y + +# +# Machine selection +# +# CONFIG_MACH_ALCHEMY is not set +# CONFIG_AR7 is not set +CONFIG_ATHEROS_AR71XX=y +# CONFIG_BCM47XX is not set +# CONFIG_BCM63XX is not set +# CONFIG_MIPS_COBALT is not set +# CONFIG_MACH_DECSTATION is not set +# CONFIG_MACH_JAZZ is not set +# CONFIG_LASAT is not set +# CONFIG_MACH_LOONGSON is not set +# CONFIG_MIPS_MALTA is not set +# CONFIG_MIPS_SIM is not set +# CONFIG_NEC_MARKEINS is not set +# CONFIG_MACH_VR41XX is not set +# CONFIG_NXP_STB220 is not set +# CONFIG_NXP_STB225 is not set +# CONFIG_PNX8550_JBS is not set +# CONFIG_PNX8550_STB810 is not set +# CONFIG_PMC_MSP is not set +# CONFIG_PMC_YOSEMITE is not set +# CONFIG_POWERTV is not set +# CONFIG_SGI_IP22 is not set +# CONFIG_SGI_IP27 is not set +# CONFIG_SGI_IP28 is not set +# CONFIG_SGI_IP32 is not set +# CONFIG_SIBYTE_CRHINE is not set +# CONFIG_SIBYTE_CARMEL is not set +# CONFIG_SIBYTE_CRHONE is not set +# CONFIG_SIBYTE_RHONE is not set +# CONFIG_SIBYTE_SWARM is not set +# CONFIG_SIBYTE_LITTLESUR is not set +# CONFIG_SIBYTE_SENTOSA is not set +# CONFIG_SIBYTE_BIGSUR is not set +# CONFIG_SNI_RM is not set +# CONFIG_MACH_TX39XX is not set +# CONFIG_MACH_TX49XX is not set +# CONFIG_MIKROTIK_RB532 is not set +# CONFIG_WR_PPMC is not set +# CONFIG_CAVIUM_OCTEON_SIMULATOR is not set +# CONFIG_CAVIUM_OCTEON_REFERENCE_BOARD is not set +# CONFIG_ALCHEMY_GPIO_INDIRECT is not set + +# +# Atheros AR71xx machine selection +# +# CONFIG_AR71XX_MACH_AP81 is not set +# CONFIG_AR71XX_MACH_AP83 is not set +# CONFIG_AR71XX_MACH_DIR_600_A1 is not set +# CONFIG_AR71XX_MACH_DIR_615_C1 is not set +# CONFIG_AR71XX_MACH_DIR_825_B1 is not set +# CONFIG_AR71XX_MACH_PB42 is not set +# CONFIG_AR71XX_MACH_PB44 is not set +# CONFIG_AR71XX_MACH_PB92 is not set +# CONFIG_AR71XX_MACH_AW_NR580 is not set +# CONFIG_AR71XX_MACH_WZR_HP_G300NH is not set +# CONFIG_AR71XX_MACH_WP543 is not set +# CONFIG_AR71XX_MACH_WRT160NL is not set +# CONFIG_AR71XX_MACH_WRT400N is not set +CONFIG_AR71XX_MACH_RB4XX=y +# CONFIG_AR71XX_MACH_RB750 is not set +# CONFIG_AR71XX_MACH_WNDR3700 is not set +# CONFIG_AR71XX_MACH_WNR2000 is not set +# CONFIG_AR71XX_MACH_MZK_W04NU is not set +# CONFIG_AR71XX_MACH_MZK_W300NH is not set +# CONFIG_AR71XX_MACH_NBG460N is not set +# CONFIG_AR71XX_MACH_TL_WR741ND is not set +# CONFIG_AR71XX_MACH_TL_WR841N_V1 is not set +# CONFIG_AR71XX_MACH_TL_WR941ND is not set +# CONFIG_AR71XX_MACH_TL_WR1043ND is not set +# CONFIG_AR71XX_MACH_TEW_632BRP is not set +# CONFIG_AR71XX_MACH_UBNT is not set +# CONFIG_AR71XX_DEV_M25P80 is not set +# CONFIG_AR71XX_DEV_AP91_PCI is not set +# CONFIG_AR71XX_DEV_AP91_ETH is not set +# CONFIG_AR71XX_DEV_AP94_PCI is not set +# CONFIG_AR71XX_DEV_AR913X_WMAC is not set +# CONFIG_AR71XX_DEV_DSA is not set +CONFIG_AR71XX_DEV_GPIO_BUTTONS=y +CONFIG_AR71XX_DEV_LEDS_GPIO=y +# CONFIG_AR71XX_DEV_PB42_PCI is not set +# CONFIG_AR71XX_DEV_PB9X_PCI is not set +CONFIG_AR71XX_DEV_USB=y +# CONFIG_AR71XX_NVRAM is not set +CONFIG_LOONGSON_UART_BASE=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +# CONFIG_ARCH_HAS_ILOG2_U32 is not set +# CONFIG_ARCH_HAS_ILOG2_U64 is not set +CONFIG_ARCH_SUPPORTS_OPROFILE=y +CONFIG_GENERIC_FIND_NEXT_BIT=y +CONFIG_GENERIC_HWEIGHT=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_GENERIC_TIME=y +CONFIG_GENERIC_CMOS_UPDATE=y +CONFIG_SCHED_OMIT_FRAME_POINTER=y +CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y +CONFIG_CEVT_R4K_LIB=y +CONFIG_CEVT_R4K=y +CONFIG_CSRC_R4K_LIB=y +CONFIG_CSRC_R4K=y +CONFIG_DMA_NONCOHERENT=y +CONFIG_DMA_NEED_PCI_MAP_STATE=y +CONFIG_SYS_HAS_EARLY_PRINTK=y +CONFIG_MIPS_MACHINE=y +# CONFIG_NO_IOPORT is not set +CONFIG_GENERIC_GPIO=y +CONFIG_CPU_BIG_ENDIAN=y +# CONFIG_CPU_LITTLE_ENDIAN is not set +CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y +CONFIG_IRQ_CPU=y +CONFIG_MIPS_L1_CACHE_SHIFT=5 + +# +# CPU selection +# +# CONFIG_CPU_LOONGSON2E is not set +# CONFIG_CPU_LOONGSON2F is not set +CONFIG_CPU_MIPS32_R1=y +# CONFIG_CPU_MIPS32_R2 is not set +# CONFIG_CPU_MIPS64_R1 is not set +# CONFIG_CPU_MIPS64_R2 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_R5500 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_CPU_CAVIUM_OCTEON is not set +CONFIG_SYS_SUPPORTS_ZBOOT=y +CONFIG_SYS_HAS_CPU_MIPS32_R1=y +CONFIG_SYS_HAS_CPU_MIPS32_R2=y +CONFIG_CPU_MIPS32=y +CONFIG_CPU_MIPSR1=y +CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y +CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y +CONFIG_HARDWARE_WATCHPOINTS=y + +# +# Kernel type +# +CONFIG_32BIT=y +# CONFIG_64BIT is not set +CONFIG_PAGE_SIZE_4KB=y +# CONFIG_PAGE_SIZE_8KB is not set +# CONFIG_PAGE_SIZE_16KB is not set +# CONFIG_PAGE_SIZE_32KB is not set +# CONFIG_PAGE_SIZE_64KB is not set +CONFIG_CPU_HAS_PREFETCH=y +CONFIG_MIPS_MT_DISABLED=y +# CONFIG_MIPS_MT_SMP is not set +# CONFIG_MIPS_MT_SMTC is not set +CONFIG_CPU_HAS_SYNC=y +CONFIG_GENERIC_HARDIRQS=y +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_CPU_SUPPORTS_HIGHMEM=y +CONFIG_ARCH_FLATMEM_ENABLE=y +CONFIG_ARCH_POPULATES_NODE_MAP=y +CONFIG_SELECT_MEMORY_MODEL=y +CONFIG_FLATMEM_MANUAL=y +# CONFIG_DISCONTIGMEM_MANUAL is not set +# CONFIG_SPARSEMEM_MANUAL is not set +CONFIG_FLATMEM=y +CONFIG_FLAT_NODE_MEM_MAP=y +CONFIG_PAGEFLAGS_EXTENDED=y +CONFIG_SPLIT_PTLOCK_CPUS=4 +# CONFIG_PHYS_ADDR_T_64BIT is not set +CONFIG_ZONE_DMA_FLAG=0 +CONFIG_VIRT_TO_BUS=y +# CONFIG_KSM is not set +CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 +# CONFIG_NO_HZ is not set +# CONFIG_HIGH_RES_TIMERS is not set +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y +# CONFIG_HZ_48 is not set +CONFIG_HZ_100=y +# CONFIG_HZ_128 is not set +# CONFIG_HZ_250 is not set +# CONFIG_HZ_256 is not set +# CONFIG_HZ_1000 is not set +# CONFIG_HZ_1024 is not set +CONFIG_SYS_SUPPORTS_ARBIT_HZ=y +CONFIG_HZ=100 +CONFIG_PREEMPT_NONE=y +# CONFIG_PREEMPT_VOLUNTARY is not set +# CONFIG_PREEMPT is not set +# CONFIG_KEXEC is not set +# CONFIG_SECCOMP is not set +C