summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--classes/concatenated-image.bbclass38
-rw-r--r--conf/distro/openprotium.conf100
-rw-r--r--conf/machine/storcenter.conf26
-rw-r--r--files/device_table-minimal-add-md.txt32
-rw-r--r--packages/base-files/base-files/openprotium/.mtn2git_empty0
-rw-r--r--packages/base-files/base-files/openprotium/fstab11
-rw-r--r--packages/gcc/gcc-4.2.2/fortran-libs-rpath-to-staging-hack.patch48
-rw-r--r--packages/gcc/gcc-cross_4.2.2.bb1
-rw-r--r--packages/images/openprotium-image.bb134
-rwxr-xr-xpackages/initscripts/initscripts-1.0/openprotium/checkroot.sh2
-rw-r--r--packages/initscripts/initscripts-1.0/openprotium/mountall.sh27
-rwxr-xr-xpackages/initscripts/initscripts-1.0/openprotium/umountfs27
-rw-r--r--packages/initscripts/initscripts-1.0/openprotium/umountinitrd.sh11
-rw-r--r--packages/initscripts/initscripts-openprotium_1.0.bb16
-rw-r--r--packages/linux/linux-storcenter/defconfig-2.6.15.71176
-rw-r--r--packages/linux/linux-storcenter/kernel.patch-2.6.15.71181
-rw-r--r--packages/linux/linux-storcenter_2.6.15.7.bb36
-rw-r--r--packages/meta/openprotium-packages.bb20
-rw-r--r--packages/openprotium-init/files/boot/disk3
-rw-r--r--packages/openprotium-init/files/functions8
-rw-r--r--packages/openprotium-init/files/initscripts/zleds29
-rw-r--r--packages/openprotium-init/openprotium-init_0.10.bb5
-rw-r--r--packages/sccd/files/scc.h2
-rw-r--r--packages/sccd/sccd_1.0.bb6
-rw-r--r--packages/tasks/task-openprotium.bb52
25 files changed, 2785 insertions, 206 deletions
diff --git a/classes/concatenated-image.bbclass b/classes/concatenated-image.bbclass
new file mode 100644
index 0000000000..5cf8d33c05
--- /dev/null
+++ b/classes/concatenated-image.bbclass
@@ -0,0 +1,38 @@
+
+#
+# define the FLASH_KERNEL_SIZE and FLASH_ROOT_SIZE in your machine.conf,
+# and this class builds a simple, padded concatenated image of
+# <kernel><padding><rootfs> and performs error checking that either
+# kernel or rootfs isn't too large to fit.
+#
+concat_pack_image() {
+ # find latest kernel - is there a more general way to do this?
+ KERNEL=`ls -tr ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}* | tail -n 1`
+ if [ -z "$KERNEL" ]; then
+ oefatal "No kernel found in ${DEPLOY_DIR_IMAGE}. Was expecting a ${KERNEL_IMAGETYPE}\* file."
+ exit 1
+ fi
+ ROOTFS=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2
+ OUTPUT=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.flash.img
+ PADFILE=${DEPLOY_DIR_IMAGE}/padfile.zzz
+ KERNEL_SIZE_MAX_DEC=`echo ${FLASH_KERNEL_SIZE} | awk --non-decimal-data '{printf "%d\n", $1}' `
+ ROOT_SIZE_MAX_DEC=`echo ${FLASH_ROOT_SIZE} | awk --non-decimal-data '{printf "%d\n", $1}' `
+ KERNEL_SIZE=`ls -l $KERNEL | awk '{print $5}'`
+ if [ $KERNEL_SIZE -gt $KERNEL_SIZE_MAX_DEC ]; then
+ oefatal "Kernel too large at $KERNEL_SIZE bytes. Max is $KERNEL_SIZE_MAX_DEC."
+ exit 1
+ fi
+ ROOT_SIZE=`ls -l $ROOTFS | awk '{print $5}'`
+ if [ $ROOT_SIZE -gt $ROOT_SIZE_MAX_DEC ]; then
+ oefatal "Rootfs is too large at $ROOT_SIZE bytes. Max is $ROOT_SIZE_MAX_DEC."
+ exit 1
+ fi
+ PAD_SIZE=`echo "$KERNEL_SIZE_MAX_DEC - $KERNEL_SIZE" | bc `
+ dd if=/dev/zero of=$PADFILE bs=$PAD_SIZE count=1 2>>/dev/null
+ cat $KERNEL $PADFILE $ROOTFS > $OUTPUT
+ rm -f $PADFILE
+ ls -l $OUTPUT
+}
+
+IMAGE_POSTPROCESS_COMMAND += "concat_pack_image; "
+
diff --git a/conf/distro/openprotium.conf b/conf/distro/openprotium.conf
index 928817d815..03115118ed 100644
--- a/conf/distro/openprotium.conf
+++ b/conf/distro/openprotium.conf
@@ -1,69 +1,83 @@
#
-# Open Iomega distribution - based on openslug and generic confs
+# OpenProtium distribution - based upon openslug and generic confs
#
DISTRO_NAME = "openprotium"
-DISTRO_VERSION = ".dev-snapshot-${SRCDATE}"
-DISTRO_TYPE = "alpha"
+DISTRO_VERSION = "1.3"
+DISTRO_TYPE ?= "alpha"
+TARGET_OS = "linux"
+#
+# Basic configuration
+#
+DISTRO_DEV_MANAGER = "udev"
+DISTRO_SSH_DAEMON = "dropbear"
+DISTRO_INIT_MANAGER = "sysvinit"
+DISTRO_LOGIN_MANAGER = "tinylogin"
+MACHINE_TASK_PROVIDER = "task-openprotium"
#
# Naming schemes
#
-INHERIT += "debian"
+INHERIT += "debian multimachine"
#
# Packaging and output format
#
INHERIT += "package_ipk"
-IMAGE_BASENAME = "openprotium"
-IMAGE_FSTYPES = "jffs2"
-FEED_URIS = "openprotium##http://www.openprotium.org/ipkg.ppc.v1.0"
+IMAGE_FSTYPES = "jffs2 tar.gz"
+OPENPROTIUM_URI = "http://www.openprotium.org"
+FEED_ARCH ?= ${PACKAGE_ARCH}
+FEED_URIS = "\
+ no-arch##${OPENPROTIUM_URI}/releases/${DISTRO_VERSION}/all \
+ base##${OPENPROTIUM_URI}/releases/${DISTRO_VERSION}/${FEED_ARCH} \
+ ${MACHINE}##${OPENPROTIUM_URI}/releases/${DISTRO_VERSION}/${MACHINE} \
+ "
# For protium on the turbostation
+IMAGE_BASENAME = "openprotium"
IMAGE_BASENAME_turbostation = "openprotium-ts"
-#
-# binutils and compilers
-#
-PREFERRED_PROVIDERS += "virtual/${TARGET_PREFIX}gcc-initial:gcc-cross-initial"
-PREFERRED_PROVIDERS += "virtual/${TARGET_PREFIX}gcc:gcc-cross"
-PREFERRED_PROVIDERS += "virtual/${TARGET_PREFIX}g++:gcc-cross"
-#conflict between this and the last below.
-#PREFERRED_PROVIDERS += "virtual/${TARGET_PREFIX}libc-for-gcc:glibc"
-# Select 2.6 versions of the depmod support
-PREFERRED_PROVIDERS += "virtual/${TARGET_PREFIX}depmod:module-init-tools-cross"
-PREFERRED_PROVIDERS += "virtual/${TARGET_PREFIX}libc-for-gcc:glibc-intermediate"
+# versions
+PREFERRED_VERSION_binutils ?= "2.18"
+PREFERRED_VERSION_binutils-cross ?= "2.18"
-PREFERRED_VERSION_binutils = "2.16"
-PREFERRED_VERSION_binutils-cross = "2.16"
+PREFERRED_VERSION_gcc ?= "4.1.1"
+PREFERRED_VERSION_gcc-cross ?= "4.1.2"
+PREFERRED_VERSION_gcc-cross-sdk ?= "4.1.2"
+PREFERRED_VERSION_gcc-cross-initial ?= "4.1.2"
-PREFERRED_VERSION_gcc = "4.1.1"
-PREFERRED_VERSION_gcc-cross = "4.1.1"
-PREFERRED_VERSION_gcc-cross-initial = "4.1.1"
+PREFERRED_VERSION_glibc = "2.6.1"
+PREFERRED_VERSION_glibc-intermediate = "2.6.1"
+PREFERRED_VERSION_glibc-initial = "2.6.1"
-PREFERRED_VERSION_glibc = "2.5"
-PREFERRED_VERSION_glibc-intermediate = "2.5"
-PREFERRED_VERSION_glibc-initial = "2.3.2"
+PREFERRED_VERSION_linux-libc-headers = "2.6.11.1"
-#
-# Target OS & FPU system
#
-USE_NLS ?= "no"
-TARGET_OS = "linux"
-HOTPLUG = "udev"
-PREFERRED_PROVIDER_virtual/libiconv = "glibc"
-PREFERRED_PROVIDER_virtual/libintl = "glibc"
-
+# Providers...
#
-# Bootstrap & Init
+# binutils and compilers
#
-#PREFERRED_PROVIDER_task-bootstrap = "task-bootstrap"
-require conf/distro/include/sane-srcdates.inc
+PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}binutils = "binutils-cross"
+PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc-initial = "gcc-cross-initial"
+PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc = "gcc-cross"
+PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}g++ = "gcc-cross"
+
+PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}libc-for-gcc = "glibc-intermediate"
+PREFERRED_PROVIDER_virtual/powerpc-linux-libc-for-gcc = "glibc-intermediate"
+PREFERRED_PROVIDER_virtual/powerpc-linux-libc-initial = "glibc-initial"
+
+PREFERRED_PROVIDER_virtual/libc = "glibc"
+PREFERRED_PROVIDER_virtual/libiconv = "glibc"
+PREFERRED_PROVIDER_virtual/libintl = "glibc"
+
+#silence a warning message...
+PREFERRED_PROVIDER_linux-libc-headers = "linux-libc-headers"
+
#
+# Misc items.
#
-# Ensure consistency across all SlugOS builds for the provider of a
-# relational database - use the latest version of the SleepyCat
-# Berkeley database
-PREFERRED_PROVIDER_virtual/db = "db"
-PREFERRED_PROVIDER_virtual/db-native = "db-native"
+PREFERRED_PROVIDER_virtual/db ?= "db"
+PREFERRED_PROVIDER_virtual/db-native ?= "db-native"
+PREFERRED_PROVIDER_gconf ?= "gconf"
-CMDLINE_DEBUG = "noirqdebug"
+require conf/distro/include/sane-srcdates.inc
+require conf/distro/include/sane-srcrevs.inc
diff --git a/conf/machine/storcenter.conf b/conf/machine/storcenter.conf
index 519c565061..5b69bbdc9a 100644
--- a/conf/machine/storcenter.conf
+++ b/conf/machine/storcenter.conf
@@ -1,23 +1,27 @@
TARGET_ARCH = "powerpc"
-TARGET_OS = "linux"
TARGET_FPU = "hard"
-PACKAGE_EXTRA_ARCHS = "ppc ppc603e"
-
-INHERIT += "storcenter-image"
+PACKAGE_EXTRA_ARCHS = "ppc603e"
# terminal specs - console, but no other ports
-SERIAL_CONSOLE="115200 console"
+SERIAL_CONSOLE="115200 ttyS0"
USE_VT="0"
-MODUTILS=26
-MACHINE_FEATURES= "kernel26 usbhost pci ext2 uboot"
+# uboot switches
+UBOOT_MACHINE="Sandpoint8240_config"
+
+# plug in other tasks - not "really" used unless we are using task-boot
+MACHINE_FEATURES= "kernel26 usbhost pci ext2"
PREFERRED_PROVIDER_virtual/kernel = "linux-storcenter"
+PREFERRED_VERSION_udev = "115"
-# We want udev support in the image
-udevdir = "/dev"
+# the StorCenter Control Daemon provides cmdline fan and light control
+MACHINE_EXTRA_RDEPENDS = "sccd"
-EXTRA_IMAGECMD = "--big-endian"
-ERASEBLOCK_SIZE = "0x10000"
IMAGE_FSTYPES = "jffs2"
+KERNEL_IMAGETYPE ?= uImage
+EXTRA_IMAGECMD_jffs2 += "--pad --big-endian --eraseblock=0x10000"
+# must be in HEX
+FLASH_KERNEL_SIZE=0x170000
+FLASH_ROOT_SIZE=0x590000
require conf/machine/include/tune-ppc603e.inc
diff --git a/files/device_table-minimal-add-md.txt b/files/device_table-minimal-add-md.txt
new file mode 100644
index 0000000000..a78ca76605
--- /dev/null
+++ b/files/device_table-minimal-add-md.txt
@@ -0,0 +1,32 @@
+#<path> <type> <mode> <uid> <gid> <major> <minor> <start> <inc> <count>
+#/dev/mem c 640 0 0 1 1 0 0 -
+#
+#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)
+
+/dev d 755 0 0 - - - - -
+/dev/initctl p 600 0 0 - - - - -
+/dev/apm_bios c 660 0 46 10 134 - - -
+/dev/fb0 c 600 0 0 29 0 - - -
+/dev/hda b 660 0 6 3 0 - - -
+/dev/hda b 660 0 6 3 1 1 1 5
+/dev/kmem c 640 0 15 1 2 - - -
+/dev/mem c 640 0 15 1 1 - - -
+/dev/null c 666 0 0 1 3 - - -
+/dev/ram b 640 0 0 1 0 0 1 4
+/dev/tty c 662 0 5 5 0 - - -
+/dev/tty c 666 0 5 4 0 0 1 9
+/dev/ttyS c 640 0 5 4 64 0 1 2
+/dev/ttySA c 640 0 5 204 5 0 1 1
+/dev/zero c 644 0 0 1 5 - - -
+/dev/mtd c 660 0 6 90 0 0 2 8
+/dev/mtdblock b 640 0 0 31 0 0 1 8
+/dev/console c 662 0 5 5 1 - - -
+/dev/random c 644 0 0 1 8 - - -
+/dev/urandom c 644 0 0 1 9 - - -
+/dev/ptmx c 644 0 0 5 2 - - -
+/dev/md b 644 0 0 9 0 0 1 4
diff --git a/packages/base-files/base-files/openprotium/.mtn2git_empty b/packages/base-files/base-files/openprotium/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/base-files/base-files/openprotium/.mtn2git_empty
diff --git a/packages/base-files/base-files/openprotium/fstab b/packages/base-files/base-files/openprotium/fstab
new file mode 100644
index 0000000000..96b0e2adb8
--- /dev/null
+++ b/packages/base-files/base-files/openprotium/fstab
@@ -0,0 +1,11 @@
+rootfs / auto defaults 1 1
+proc /proc proc defaults 0 0
+devpts /dev/pts devpts mode=0620,gid=5 0 0
+usbfs /proc/bus/usb usbfs defaults 0 0
+#tmpfs /var/volatile tmpfs defaults 0 0
+tmpfs /dev/shm tmpfs mode=0777 0 0
+#tmpfs /media/ram tmpfs defaults 0 0
+
+# uncomment this if your device has a SD/MMC/Transflash slot
+#/dev/mmcblk0p1 /media/card auto defaults,sync,noauto 0 0
+
diff --git a/packages/gcc/gcc-4.2.2/fortran-libs-rpath-to-staging-hack.patch b/packages/gcc/gcc-4.2.2/fortran-libs-rpath-to-staging-hack.patch
new file mode 100644
index 0000000000..bf319f8b0a
--- /dev/null
+++ b/packages/gcc/gcc-4.2.2/fortran-libs-rpath-to-staging-hack.patch
@@ -0,0 +1,48 @@
+f951 (fortran) links to MPFR and GMP of our staging area but when executing
+the command the libs can not be found. Use rpath like all the other apps in
+our staging bin/ directory.
+
+Patch the configure to avoid the regeneration...
+
+Index: gcc-4.2.2/configure
+===================================================================
+--- gcc-4.2.2.orig/configure 2008-01-15 23:23:41.000000000 +0100
++++ gcc-4.2.2/configure 2008-01-15 23:25:20.000000000 +0100
+@@ -2278,14 +2278,14 @@
+
+
+ if test "x$with_mpfr" != x; then
+- gmplibs="-L$with_mpfr/lib $gmplibs"
++ gmplibs="-Wl,-rpath,$with_mpfr/lib -L$with_mpfr/lib $gmplibs"
+ gmpinc="-I$with_mpfr/include"
+ fi
+ if test "x$with_mpfr_include" != x; then
+ gmpinc="-I$with_mpfr_include"
+ fi
+ if test "x$with_mpfr_lib" != x; then
+- gmplibs="-L$with_mpfr_lib $gmplibs"
++ gmplibs="-Wl,-rpath,$with_mpfr_lib -L$with_mpfr_lib $gmplibs"
+ fi
+
+ # Specify a location for gmp
+Index: gcc-4.2.2/configure.in
+===================================================================
+--- gcc-4.2.2.orig/configure.in 2008-01-15 23:23:41.000000000 +0100
++++ gcc-4.2.2/configure.in 2008-01-15 23:24:36.000000000 +0100
+@@ -1066,14 +1066,14 @@
+ AC_ARG_WITH(mpfr_lib, [ --with-mpfr-lib=PATH Specify the directory for the installed MPFR library])
+
+ if test "x$with_mpfr" != x; then
+- gmplibs="-L$with_mpfr/lib $gmplibs"
++ gmplibs="-Wl,-rpath,$with_mpfr/lib -L$with_mpfr/lib $gmplibs"
+ gmpinc="-I$with_mpfr/include"
+ fi
+ if test "x$with_mpfr_include" != x; then
+ gmpinc="-I$with_mpfr_include"
+ fi
+ if test "x$with_mpfr_lib" != x; then
+- gmplibs="-L$with_mpfr_lib $gmplibs"
++ gmplibs="-Wl,-rpath,$with_mpfr_lib -L$with_mpfr_lib $gmplibs"
+ fi
+
+ # Specify a location for gmp
diff --git a/packages/gcc/gcc-cross_4.2.2.bb b/packages/gcc/gcc-cross_4.2.2.bb
index ec169072af..3984147eae 100644
--- a/packages/gcc/gcc-cross_4.2.2.bb
+++ b/packages/gcc/gcc-cross_4.2.2.bb
@@ -15,6 +15,7 @@ require gcc3-build-cross.inc
# cross packaging
require gcc-package-cross.inc
SRC_URI_append_fail-fast = " file://zecke-no-host-includes.patch;patch=1 "
+SRC_URI_append = " file://fortran-libs-rpath-to-staging-hack.patch;patch=1 "
# Do not build libssp libmudflap and libgomp
# We might need them for some beefy targets
EXTRA_OECONF += "--disable-libunwind-exceptions --disable-libssp \
diff --git a/packages/images/openprotium-image.bb b/packages/images/openprotium-image.bb
index 818fd0b186..0f64ba2052 100644
--- a/packages/images/openprotium-image.bb
+++ b/packages/images/openprotium-image.bb
@@ -1,128 +1,28 @@
DESCRIPTION = "OpenProtium image"
HOMEPAGE = "http://www.openprotium.com"
-DEPENDS = "${MACHINE_TASK_PROVIDER}"
-EXTRA_IMAGECMD_jffs2 = "--pad --big-endian --eraseblock=0x10000 -D ${SLUGOS_DEVICE_TABLE}"
+DEPENDS = "task-openprotium"
+IMAGE_INSTALL = "task-openprotium"
IMAGE_LINGUAS = ""
-# Setting USE_DEVFS prevents *any* entries being created initially
-# in /dev
-USE_DEVFS = "1"
+IMAGE_NAME = "${IMAGE_BASENAME}-${MACHINE}-${DISTRO_VERSION}"
+PACKAGE_REMOVE = "kernel-image-* task-openprotium"
-# This is passed to the image command to build the correct /dev
-# directory (because only the image program can make actual
-# dev entries!)
-SLUGOS_DEVICE_TABLE = "${@bb.which(bb.data.getVar('BBPATH', d, 1), 'files/device_table-slugos.txt')}"
+USE_DEVFS = "1"
+OPENPROTIUM_DEVICE_TABLE = "${@bb.which(bb.data.getVar('BBPATH', d, 1), 'files/device_table-minimal-add-md.txt')}"
+EXTRA_IMAGECMD_jffs2 += " -D ${OPENPROTIUM_DEVICE_TABLE}"
-# IMAGE_PREPROCESS_COMMAND is run before making the image.
-# We use this to do a few things:
-# . remove the uImage, which is in a separate part of the flash already.
-# . adjust the default run level (sysvinit is 5 by default, we like 3)
-# . set a default root password, which is no more secure than a blank one
-# (since it is documented, in case you were wondering)
-# . make the boot more verbose
-#
-IMAGE_PREPROCESS_COMMAND += "rm ${IMAGE_ROOTFS}/boot/uImage-*;"
-IMAGE_PREPROCESS_COMMAND += "sed -i -es,^id:5:initdefault:,id:3:initdefault:, ${IMAGE_ROOTFS}/etc/inittab;"
+IMAGE_PREPROCESS_COMMAND += "install -c -m 644 ${OPENPROTIUM_DEVICE_TABLE} ${IMAGE_ROOTFS}/etc/device_table;"
+IMAGE_PREPROCESS_COMMAND += "sed -i -es,^id:5:initdefault:,id:3:initdefault:, ${IMAGE_ROOTFS}/etc/inittab;"
IMAGE_PREPROCESS_COMMAND += "sed -i -es,^root::0,root:BTMzOOAQfESg6:0, ${IMAGE_ROOTFS}/etc/passwd;"
IMAGE_PREPROCESS_COMMAND += "sed -i -es,^VERBOSE=no,VERBOSE=very, ${IMAGE_ROOTFS}/etc/default/rcS;"
+IMAGE_PREPROCESS_COMMAND += "sed -i -es,^VOLATILE_ENABLE_CACHE=yes,VOLATILE_ENABLE_CACHE=no, ${IMAGE_ROOTFS}/etc/default/rcS;"
+IMAGE_PREPROCESS_COMMAND += "sed -i -es,/dev/tty0,/dev/console, ${IMAGE_ROOTFS}/etc/init.d/populate-volatile.sh;"
+IMAGE_PREPROCESS_COMMAND += "echo /dev/md >> ${IMAGE_ROOTFS}/etc/udev/mount.blacklist;"
+IMAGE_PREPROCESS_COMMAND += "echo /dev/hd >> ${IMAGE_ROOTFS}/etc/udev/mount.blacklist;"
+IMAGE_PREPROCESS_COMMAND += "echo /dev/mtd3 0x30000 0x10000 0x10000 > ${IMAGE_ROOTFS}/etc/fw_env.config;"
-# Always just make a new flash image.
-PACK_IMAGE = 'storcenter_pack_image;'
-IMAGE_POSTPROCESS_COMMAND += "${PACK_IMAGE}"
-PACK_IMAGE_DEPENDS = ""
-#EXTRA_IMAGEDEPENDS += "${PACK_IMAGE_DEPENDS}"
-
-# This hack removes '${MACHINE}' from the end of the arch.conf for ipk,
-# preventing _mach.ipk (with no byte sex) taking precedence over everything
-# else.
-# but we want 'storcenter' in there so kernel modules work correctly.
-#
-#ROOTFS_POSTPROCESS_COMMAND += "sed -i '$d' '${IMAGE_ROOTFS}/etc/ipkg/arch.conf';"
-
-# These depends define native utilities - they do not get put in the flash and
-# are not required to build the image.
-IMAGE_TOOLS = ""
-#EXTRA_IMAGEDEPENDS += "${IMAGE_TOOLS}"
-
-# CONFIG:
-# SLUGOS_EXTRA_RDEPENDS: set in conf, things to add to the image
-# SLUGOS_SUPPORT: set to here, see below, added to the image.
-# SLUGOS_KERNEL: set here, kernel modules added to the image
-#
-# Do not override the last two unless you really know what you
-# are doing - there is more information below.
-
-# diff, cpio and find are required for reflash and turnup ram.
-# Removing these probably leaves the system bootable, but standard
-# openslug and ucslugc stuff won't work, so only take these out in
-# very non-standard turnkey slugos builds.
-#
-# udev is the default way of handling devices, there is no guarantee
-# that the static device table is completely correct (it is just
-# known to be sufficient for boot.)
-# we'ere still on 2.6.12 devfs....
-#OPENPROTIUM_SUPPORT ?= "diffutils cpio findutils udev"
-#
-OPENPROTIUM_SUPPORT ?= "diffutils cpio findutils uboot-utils"
-
-# kernel-module-af-packet must be in the image for DHCP to work
-# kernel-module-netconsole is here because it is small and is
-# highly useful on minimal systems (which really don't have anywhere
-# other than the network to output error messages!)
-SLUGOS_KERNEL ?= "kernel-module-af-packet kernel-module-netconsole \
- kernel-module-mii "
-
-# this gets /lib/modules made....
-OPENPROTIUM_KERNEL = "kernel-module-dummy \
- kernel-module-af-packet "
-
-IMAGE_INSTALL = " \
- kernel base-files base-passwd netbase \
- busybox initscripts-openprotium openprotium-init \
- update-modules sysvinit tinylogin \
- module-init-tools-depmod modutils-initscripts \
- ipkg-collateral ipkg ipkg-link \
- libgcc1 \
- portmap \
- dropbear \
- e2fsprogs-blkid \
- mdadm \
- hdparm \
- mtd-utils \
- ${OPENPROTIUM_SUPPORT} \
- ${OPENPROTIUM_KERNEL} "
-# ${SLUGOS_EXTRA_RDEPENDS}"
-
-inherit image
+ROOTFS_POSTPROCESS_COMMAND += "ipkg-cl ${IPKG_ARGS} -force-depends \
+ remove ${PACKAGE_REMOVE};"
-storcenter_pack_image() {
- # find latest kernel
- KERNEL=`ls -tr ${DEPLOY_DIR_IMAGE}/uImage* | tail -1`
- if [ -z "$KERNEL" ]; then
- oefatal "No kernel found in ${DEPLOY_DIR_IMAGE}. Bitbake linux-storcenter to create one."
- exit 1
- fi
- ROOTFS=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2
- OUTPUT=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.flash.img
- PADFILE=${DEPLOY_DIR_IMAGE}/padfile.zzz
- HEX_MAX_KERN_SIZE=170000
- DEC_MAX_KERN_SIZE=`echo "ibase=16; $HEX_MAX_KERN_SIZE" | bc `
- HEX_MAX_ROOT_SIZE=590000
- DEC_MAX_ROOT_SIZE=`echo "ibase=16; $HEX_MAX_ROOT_SIZE" | bc `
- KERNEL_SIZE=`ls -l $KERNEL | awk '{print $5}'`
- if [ $KERNEL_SIZE -gt $DEC_MAX_KERN_SIZE ]; then
- oefatal "Kernel too large at $KERNEL_SIZE bytes. Max is $DEC_MAX_KERN_SIZE."
- exit 1
- fi
- ROOT_SIZE=`ls -l $ROOTFS | awk '{print $5}'`
- if [ $ROOT_SIZE -gt $DEC_MAX_ROOT_SIZE ]; then
- oefatal "Rootfs is too large at $ROOT_SIZE bytes. Max is $DEC_MAX_ROOT_SIZE."
- exit 1
- fi
- PAD_SIZE=`echo "$DEC_MAX_KERN_SIZE - $KERNEL_SIZE" | bc `
- dd if=/dev/zero of=$PADFILE bs=$PAD_SIZE count=1 2>>/dev/null
- cat $KERNEL $PADFILE $ROOTFS > $OUTPUT
- rm -f $PADFILE
- ls -l $OUTPUT
-}
+inherit image concatenated-image
diff --git a/packages/initscripts/initscripts-1.0/openprotium/checkroot.sh b/packages/initscripts/initscripts-1.0/openprotium/checkroot.sh
index c69a773482..6b63b07188 100755
--- a/packages/initscripts/initscripts-1.0/openprotium/checkroot.sh
+++ b/packages/initscripts/initscripts-1.0/openprotium/checkroot.sh
@@ -205,7 +205,7 @@ then
: > /etc/mtab
fi
mount -f -o remount /
- mount -f /proc
+ grep -q '^proc /proc' /etc/mtab || mount -f /proc
test "$devfs" && grep -q '^devfs /dev' /proc/mounts && mount -f "$devfs"
fi
diff --git a/packages/initscripts/initscripts-1.0/openprotium/mountall.sh b/packages/initscripts/initscripts-1.0/openprotium/mountall.sh
new file mode 100644
index 0000000000..94ea8217fd
--- /dev/null
+++ b/packages/initscripts/initscripts-1.0/openprotium/mountall.sh
@@ -0,0 +1,27 @@
+#
+# mountall.sh Mount all filesystems.
+#
+# Version: @(#)mountall.sh 2.83-2 01-Nov-2001 miquels@cistron.nl
+#
+. /etc/default/rcS
+
+#
+# Mount local filesystems in /etc/fstab. For some reason, people
+# might want to mount "proc" several times, and mount -v complains
+# about this. So we mount "proc" filesystems without -v.
+#
+test "$VERBOSE" != no && echo "Mounting local filesystems..."
+mount -at nonfs,nosmbfs,noncpfs 2>/dev/null
+
+#
+# We might have mounted something over /dev, see if /dev/initctl is there.
+#
+if test ! -p /dev/initctl
+then
+ rm -f /dev/initctl
+ mknod -m 600 /dev/initctl p
+fi
+kill -USR1 1
+
+: exit 0
+
diff --git a/packages/initscripts/initscripts-1.0/openprotium/umountfs b/packages/initscripts/initscripts-1.0/openprotium/umountfs
new file mode 100755
index 0000000000..e489c4c1cd
--- /dev/null
+++ b/packages/initscripts/initscripts-1.0/openprotium/umountfs
@@ -0,0 +1,27 @@
+#! /bin/sh
+#
+# umountfs Turn off swap and unmount all local filesystems.
+#
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+
+echo "Deactivating swap..."
+swapoff -a
+
+# We leave /proc mounted.
+echo "Unmounting local filesystems..."
+# umount anything not a pseudo file system, and not root
+# doesn't work for nested mounts at a non-root mount point
+while read device mountpt fstype options
+do
+ echo "$device" | grep -q "^/"
+ if [ $? -eq 0 ]; then
+ if [ "$mountpt" != "/" ] && [ "$mountpt" != "/dev/" ]; then
+ umount $mountpt
+ fi
+ fi
+done</proc/mounts
+
+mount -o remount,ro /
+
+: exit 0
diff --git a/packages/initscripts/initscripts-1.0/openprotium/umountinitrd.sh b/packages/initscripts/initscripts-1.0/openprotium/umountinitrd.sh
new file mode 100644
index 0000000000..6ee0d50e84
--- /dev/null
+++ b/packages/initscripts/initscripts-1.0/openprotium/umountinitrd.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+# umount the static dev - we'd probably never use it.
+#
+[ -d /dev/.static/dev ] && umount /dev/.static/dev
+#
+# if a root is found on an ext* filesystem, umount the old initrd
+#
+grep -q "/ ext" /proc/mounts
+if [ $? -eq 0 ]; then
+ umount /initrd
+fi
diff --git a/packages/initscripts/initscripts-openprotium_1.0.bb b/packages/initscripts/initscripts-openprotium_1.0.bb
index 83e89ef7a1..890bbd756c 100644
--- a/packages/initscripts/initscripts-openprotium_1.0.bb
+++ b/packages/initscripts/initscripts-openprotium_1.0.bb
@@ -24,16 +24,16 @@ SRC_URI += "file://openprotium/halt"
SRC_URI += "file://openprotium/reboot"
SRC_URI += "file://openprotium/flashclean"
SRC_URI += "file://openprotium/checkroot.sh"
+SRC_URI += "file://openprotium/mountall.sh"
+SRC_URI += "file://openprotium/umountinitrd.sh"
+SRC_URI += "file://openprotium/umountfs"
# Without this it is not possible to patch checkroot.sh
S = "${WORKDIR}"
do_install_append() {
- # the image build command now installs this for slugos
- # except that mine doesn't. we don't need it, but we turnup
- # expects it to at least exist
- rm ${D}${sysconfdir}/device_table
- touch ${D}${sysconfdir}/device_table
+ #rm ${D}${sysconfdir}/device_table
+ #touch ${D}${sysconfdir}/device_table
# openprotium specific scripts
# install -m 0755 ${WORKDIR}/alignment.sh ${D}${sysconfdir}/init.d
@@ -44,6 +44,8 @@ do_install_append() {
install -m 0755 ${WORKDIR}/openprotium/devices ${D}${sysconfdir}/init.d
install -m 0755 ${WORKDIR}/openprotium/flashclean ${D}${sysconfdir}/init.d
install -m 0755 ${WORKDIR}/openprotium/checkroot.sh ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/openprotium/mountall.sh ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/openprotium/umountinitrd.sh ${D}${sysconfdir}/init.d
# Remove the do install links (this detects a change to the
# initscripts .bb file - it will cause a build failure here.)
@@ -130,7 +132,7 @@ do_install_append() {
# slugos network syslog starts here (44)
update-rc.d -r ${D} mountnfs.sh start 45 S .
- update-rc.d -r ${D} bootmisc.sh start 55 S .
+ # update-rc.d -r ${D} bootmisc.sh start 55 S .
# urandom is currently disabled from S 55 (and won't work with tmpfs /var)
# ipkg-cl configure runs at S 98
@@ -158,7 +160,7 @@ do_install_append() {
# This is the special, correct, slugos umountnfs.sh (it looks in
# the /proc/mounts information, not /etc/fstab)
update-rc.d -r ${D} umountnfs.sh start 31 0 6 .
- update-rc.d -r ${D} save-rtc.sh start 25 0 6 .
+ # update-rc.d -r ${D} save-rtc.sh start 25 0 6 .
# portmap stops at 32
# slugos network syslog stops here (39)
# networking stops at 40 (nothing else does, believe me.)
diff --git a/packages/linux/linux-storcenter/defconfig-2.6.15.7 b/packages/linux/linux-storcenter/defconfig-2.6.15.7
new file mode 100644
index 0000000000..de5e5b80f7
--- /dev/null
+++ b/packages/linux/linux-storcenter/defconfig-2.6.15.7
@@ -0,0 +1,1176 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.15.7
+# Tue Jan 15 08:24:59 2008
+#
+CONFIG_MMU=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_PPC=y
+CONFIG_PPC32=y
+CONFIG_GENERIC_NVRAM=y
+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
+CONFIG_ARCH_MAY_HAVE_PC_FDC=y
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_CLEAN_COMPILE=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_POSIX_MQUEUE=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_SYSCTL=y
+# CONFIG_AUDIT is not set
+CONFIG_HOTPLUG=y
+CONFIG_KOBJECT_UEVENT=y
+# CONFIG_IKCONFIG is not set
+CONFIG_INITRAMFS_SOURCE=""
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_EMBEDDED=y
+# CONFIG_KALLSYMS is not set
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_CC_ALIGN_FUNCTIONS=0
+CONFIG_CC_ALIGN_LABELS=0
+CONFIG_CC_ALIGN_LOOPS=0
+CONFIG_CC_ALIGN_JUMPS=0
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+CONFIG_OBSOLETE_MODPARM=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+
+#
+# Block layer
+#
+CONFIG_LBD=y
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_AS is not set
+CONFIG_IOSCHED_DEADLINE=y
+# CONFIG_IOSCHED_CFQ is not set
+# CONFIG_DEFAULT_AS is not set
+CONFIG_DEFAULT_DEADLINE=y
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="deadline"
+
+#
+# Processor
+#
+CONFIG_6xx=y
+# CONFIG_40x is not set
+# CONFIG_44x is not set
+# CONFIG_POWER3 is not set
+# CONFIG_POWER4 is not set
+# CONFIG_8xx is not set
+# CONFIG_E200 is not set
+# CONFIG_E500 is not set
+CONFIG_PPC_FPU=y
+# CONFIG_ALTIVEC is not set
+# CONFIG_TAU is not set
+# CONFIG_KEXEC is not set
+# CONFIG_CPU_FREQ is not set
+# CONFIG_WANT_EARLY_SERIAL is not set
+CONFIG_PPC_GEN550=y
+CONFIG_PPC_STD_MMU=y
+
+#
+# Platform options
+#
+# CONFIG_PPC_MULTIPLATFORM is not set
+# CONFIG_APUS is not set
+# CONFIG_KATANA is not set
+# CONFIG_WILLOW is not set
+# CONFIG_CPCI690 is not set
+# CONFIG_POWERPMC250 is not set
+# CONFIG_CHESTNUT is not set
+# CONFIG_SPRUCE is not set
+# CONFIG_HDPU is not set
+# CONFIG_EV64260 is not set
+# CONFIG_LOPEC is not set
+# CONFIG_MVME5100 is not set
+# CONFIG_PPLUS is not set
+# CONFIG_PRPMC750 is not set
+# CONFIG_PRPMC800 is not set
+# CONFIG_SANDPOINT is not set
+# CONFIG_RADSTONE_PPC7D is not set
+# CONFIG_PAL4 is not set
+# CONFIG_GEMINI is not set
+# CONFIG_EST8260 is not set
+# CONFIG_SBC82xx is not set
+CONFIG_IOMEGA8241=y
+# CONFIG_SBS8260 is not set
+# CONFIG_RPX8260 is not set
+# CONFIG_TQM8260 is not set
+# CONFIG_ADS8272 is not set
+# CONFIG_PQ2FADS is not set
+# CONFIG_LITE5200 is not set
+# CONFIG_MPC834x_SYS is not set
+# CONFIG_EV64360 is not set
+CONFIG_MPC10X_BRIDGE=y
+CONFIG_MPC10X_OPENPIC=y
+# CONFIG_MPC10X_STORE_GATHERING is not set
+# CONFIG_SMP is not set
+# CONFIG_HIGHMEM is not set
+# CONFIG_HZ_100 is not set
+CONFIG_HZ_250=y
+# CONFIG_HZ_1000 is not set
+CONFIG_HZ=250
+CONFIG_PREEMPT_NONE=y
+# CONFIG_PREEMPT_VOLUNTARY is not set
+# CONFIG_PREEMPT is not set
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+# CONFIG_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_MISC=y
+CONFIG_CMDLINE_BOOL=y
+CONFIG_CMDLINE="console=ttyS0,115200"
+# CONFIG_PM is not set
+# CONFIG_SOFTWARE_SUSPEND is not set
+CONFIG_SECCOMP=y
+CONFIG_ISA_DMA_API=y
+
+#
+# Bus options
+#
+CONFIG_GENERIC_ISA_DMA=y
+# CONFIG_PPC_I8259 is not set
+CONFIG_PPC_INDIRECT_PCI=y
+CONFIG_PCI=y
+CONFIG_PCI_DOMAINS=y
+# CONFIG_PCI_LEGACY_PROC is not set
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Advanced setup
+#
+# CONFIG_ADVANCED_OPTIONS is not set
+
+#
+# Default settings for advanced configuration options are used
+#
+CONFIG_HIGHMEM_START=0xfe000000
+CONFIG_LOWMEM_SIZE=0x30000000
+CONFIG_KERNEL_START=0xc0000000
+CONFIG_TASK_SIZE=0x80000000
+CONFIG_BOOT_LOAD=0x00800000
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=m
+# CONFIG_PACKET_MMAP is not set
+CONFIG_UNIX=y
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_IP_MROUTE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_TUNNEL is not set
+# CONFIG_INET_DIAG is not set
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_BIC=y
+# CONFIG_IPV6 is not set
+# CONFIG_NETFILTER is not set
+
+#
+# DCCP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_SCTP is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_NET_DIVERT is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+# CONFIG_IEEE80211 is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+# CONFIG_FW_LOADER is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+# CONFIG_CONNECTOR is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLOCK=y
+CONFIG_FTL=y
+CONFIG_NFTL=y
+CONFIG_NFTL_RW=y
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=y
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_GEN_PROBE=y
+# CONFIG_MTD_CFI_ADV_OPTIONS is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_CFI_INTELEXT is not set
+CONFIG_MTD_CFI_AMDSTD=y
+CONFIG_MTD_CFI_AMDSTD_RETRY=0
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+CONFIG_MTD_PHYSMAP=y
+CONFIG_MTD_PHYSMAP_START=0xFF800000
+CONFIG_MTD_PHYSMAP_LEN=0x00800000
+CONFIG_MTD_PHYSMAP_BANKWIDTH=1
+# CONFIG_MTD_PLATRAM is not set
+CONFIG_MTD_IOMEGA8241=y
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_PMC551 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLKMTD is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+
+#
+# NAND Flash Device Drivers
+#
+# CONFIG_MTD_NAND is not set
+
+#
+# OneNAND Flash Device Drivers
+#
+# CONFIG_MTD_ONENAND is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_FD is not set
+# CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_CPQ_CISS_DA is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+# CONFIG_BLK_DEV_UMEM is not set
+# CONFIG_BLK_DEV_COW_COMMON is not set
+# CONFIG_BLK_DEV_LOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_SX8 is not set
+# CONFIG_BLK_DEV_UB is not set
+# CONFIG_BLK_DEV_RAM is not set
+CONFIG_BLK_DEV_RAM_COUNT=16
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+CONFIG_IDE=y
+CONFIG_BLK_DEV_IDE=y
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_IDE_SATA is not set
+CONFIG_BLK_DEV_IDEDISK=y
+CONFIG_IDEDISK_MULTI_MODE=y
+# CONFIG_BLK_DEV_IDECD is not set
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_BLK_DEV_IDESCSI is not set
+# CONFIG_IDE_TASK_IOCTL is not set
+
+#
+# IDE chipset support/bugfixes
+#
+CONFIG_IDE_GENERIC=y
+CONFIG_BLK_DEV_IDEPCI=y
+# CONFIG_IDEPCI_SHARE_IRQ is not set
+CONFIG_BLK_DEV_OFFBOARD=y
+# CONFIG_BLK_DEV_GENERIC is not set
+# CONFIG_BLK_DEV_OPTI621 is not set
+# CONFIG_BLK_DEV_SL82C105 is not set
+CONFIG_BLK_DEV_IDEDMA_PCI=y
+# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
+# CONFIG_IDEDMA_PCI_AUTO is not set
+# CONFIG_BLK_DEV_AEC62XX is not set
+# CONFIG_BLK_DEV_ALI15X3 is not set
+# CONFIG_BLK_DEV_AMD74XX is not set
+# CONFIG_BLK_DEV_CMD64X is not set
+# CONFIG_BLK_DEV_TRIFLEX is not set
+# CONFIG_BLK_DEV_CY82C693 is not set
+# CONFIG_BLK_DEV_CS5520 is not set
+# CONFIG_BLK_DEV_CS5530 is not set
+# CONFIG_BLK_DEV_HPT34X is not set
+# CONFIG_BLK_DEV_HPT366 is not set
+# CONFIG_BLK_DEV_SC1200 is not set
+# CONFIG_BLK_DEV_PIIX is not set
+# CONFIG_BLK_DEV_IT821X is not set
+# CONFIG_BLK_DEV_NS87415 is not set
+# CONFIG_BLK_DEV_PDC202XX_OLD is not set
+# CONFIG_BLK_DEV_PDC202XX_NEW is not set
+# CONFIG_BLK_DEV_SVWKS is not set
+# CONFIG_BLK_DEV_SIIMAGE is not set
+# CONFIG_BLK_DEV_SLC90E66 is not set
+# CONFIG_BLK_DEV_TRM290 is not set
+CONFIG_BLK_DEV_VIA82CXXX=y
+# CONFIG_IDE_ARM is not set
+CONFIG_BLK_DEV_IDEDMA=y
+# CONFIG_IDEDMA_IVB is not set
+# CONFIG_IDEDMA_AUTO is not set
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=y
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+# CONFIG_CHR_DEV_ST is not set
+# CONFIG_CHR_DEV_OSST is not set
+CONFIG_BLK_DEV_SR=y
+# CONFIG_BLK_DEV_SR_VENDOR is not set
+# CONFIG_CHR_DEV_SG is not set
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+CONFIG_SCSI_MULTI_LUN=y
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+
+#
+# SCSI Transport Attributes
+#
+CONFIG_SCSI_SPI_ATTRS=y
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_ATTRS is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
+# CONFIG_SCSI_3W_9XXX is not set
+# CONFIG_SCSI_ACARD is not set
+# CONFIG_SCSI_AACRAID is not set
+# CONFIG_SCSI_AIC7XXX is not set
+# CONFIG_SCSI_AIC7XXX_OLD is not set
+# CONFIG_SCSI_AIC79XX is not set
+# CONFIG_SCSI_DPT_I2O is not set
+# CONFIG_MEGARAID_NEWGEN is not set
+# CONFIG_MEGARAID_LEGACY is not set
+# CONFIG_MEGARAID_SAS is not set
+# CONFIG_SCSI_SATA is not set
+# CONFIG_SCSI_BUSLOGIC is not set
+# CONFIG_SCSI_DMX3191D is not set
+# CONFIG_SCSI_EATA is not set
+# CONFIG_SCSI_FUTURE_DOMAIN is not set
+# CONFIG_SCSI_GDTH is not set
+# CONFIG_SCSI_IPS is not set
+# CONFIG_SCSI_INITIO is not set
+# CONFIG_SCSI_INIA100 is not set
+# CONFIG_SCSI_SYM53C8XX_2 is not set
+# CONFIG_SCSI_IPR is not set
+# CONFIG_SCSI_QLOGIC_FC is not set
+# CONFIG_SCSI_QLOGIC_1280 is not set
+CONFIG_SCSI_QLA2XXX=y
+# CONFIG_SCSI_QLA21XX is not set
+# CONFIG_SCSI_QLA22XX is not set
+# CONFIG_SCSI_QLA2300 is not set
+# CONFIG_SCSI_QLA2322 is not set
+# CONFIG_SCSI_QLA6312 is not set
+# CONFIG_SCSI_QLA24XX is not set
+# CONFIG_SCSI_LPFC is not set
+# CONFIG_SCSI_DC395x is not set
+# CONFIG_SCSI_DC390T is not set
+# CONFIG_SCSI_NSP32 is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+CONFIG_MD=y
+CONFIG_BLK_DEV_MD=y
+CONFIG_MD_LINEAR=y
+CONFIG_MD_RAID0=y
+CONFIG_MD_RAID1=y
+CONFIG_MD_RAID10=y
+CONFIG_MD_RAID5=y
+# CONFIG_MD_RAID6 is not set
+# CONFIG_MD_MULTIPATH is not set
+# CONFIG_MD_FAULTY is not set
+# CONFIG_BLK_DEV_DM is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+# CONFIG_FUSION_SPI is not set
+# CONFIG_FUSION_FC is not set
+# CONFIG_FUSION_SAS is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+# CONFIG_IEEE1394 is not set
+
+#
+# I2O device support
+#
+# CONFIG_I2O is not set
+
+#
+# Macintosh device drivers
+#
+# CONFIG_WINDFARM is not set
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+CONFIG_DUMMY=m
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+
+#
+# ARCnet devices
+#
+# CONFIG_ARCNET is not set
+
+#
+# PHY device support
+#
+
+#
+# Ethernet (10 or 100Mbit)
+#
+# CONFIG_NET_ETHERNET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+# CONFIG_ACENIC is not set
+# CONFIG_DL2K is not set
+# CONFIG_E1000 is not set
+# CONFIG_NS83820 is not set
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
+CONFIG_R8169=y
+# CONFIG_R8169_NAPI is not set
+# CONFIG_SIS190 is not set
+# CONFIG_SKGE is not set
+# CONFIG_SK98LIN is not set
+# CONFIG_TIGON3 is not set
+# CONFIG_BNX2 is not set
+
+#
+# Ethernet (10000 Mbit)
+#
+# CONFIG_CHELSIO_T1 is not set
+# CONFIG_IXGB is not set
+# CONFIG_S2IO is not set
+
+#
+# Token Ring devices
+#
+# CONFIG_TR is not set
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+# CONFIG_NET_FC is not set
+# CONFIG_SHAPER is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Telephony Support
+#
+# CONFIG_PHONE is not set
+
+#
+# Input device support
+#
+# CONFIG_INPUT is not set
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+# CONFIG_VT is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_NR_UARTS=2
+CONFIG_SERIAL_8250_EXTENDED=y
+CONFIG_SERIAL_8250_MANY_PORTS=y
+# CONFIG_SERIAL_8250_SHARE_IRQ is not set
+# CONFIG_SERIAL_8250_DETECT_IRQ is not set
+# CONFIG_SERIAL_8250_RSA is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_SERIAL_JSM is not set
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_NVRAM is not set
+CONFIG_GEN_RTC=y
+# CONFIG_GEN_RTC_X 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_AGP is not set
+# CONFIG_DRM is not set
+# CONFIG_RAW_DRIVER is not set
+CONFIG_8241EMI=y
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+# CONFIG_TELCLOCK is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=y
+CONFIG_I2C_CHARDEV=y
+
+#
+# I2C Algorithms
+#
+# CONFIG_I2C_ALGOBIT is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_ALI1535 is not set
+# CONFIG_I2C_ALI1563 is not set
+# CONFIG_I2C_ALI15X3 is not set
+# CONFIG_I2C_AMD756 is not set
+# CONFIG_I2C_AMD8111 is not set
+# CONFIG_I2C_I801 is not set
+# CONFIG_I2C_I810 is not set
+# CONFIG_I2C_PIIX4 is not set
+CONFIG_I2C_MPC=y
+# CONFIG_I2C_NFORCE2 is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_PROSAVAGE is not set
+# CONFIG_I2C_SAVAGE4 is not set
+# CONFIG_SCx200_ACB is not set
+# CONFIG_I2C_SIS5595 is not set
+# CONFIG_I2C_SIS630 is not set
+# CONFIG_I2C_SIS96X is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_VIA is not set
+# CONFIG_I2C_VIAPRO is not set
+# CONFIG_I2C_VOODOO3 is not set
+# CONFIG_I2C_PCA_ISA is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+CONFIG_SENSORS_DS1337=y
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_RTC8564 is not set
+# CONFIG_SENSORS_M41T00 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_RTC_X1205_I2C is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# Dallas's 1-wire bus
+#
+# CONFIG_W1 is not set
+
+#
+# Hardware Monitoring support
+#
+CONFIG_HWMON=y
+# CONFIG_HWMON_VID is not set
+# CONFIG_SENSORS_ADM1021 is not set
+# CONFIG_SENSORS_ADM1025 is not set
+# CONFIG_SENSORS_ADM1026 is not set
+# CONFIG_SENSORS_ADM1031 is not set
+# CONFIG_SENSORS_ADM9240 is not set
+# CONFIG_SENSORS_ASB100 is not set
+# CONFIG_SENSORS_ATXP1 is not set
+# CONFIG_SENSORS_DS1621 is not set
+# CONFIG_SENSORS_FSCHER is not set
+# CONFIG_SENSORS_FSCPOS is not set
+# CONFIG_SENSORS_GL518SM is not set
+# CONFIG_SENSORS_GL520SM is not set
+# CONFIG_SENSORS_IT87 is not set
+# CONFIG_SENSORS_LM63 is not set
+# CONFIG_SENSORS_LM75 is not set
+# CONFIG_SENSORS_LM77 is not set
+# CONFIG_SENSORS_LM78 is not set
+# CONFIG_SENSORS_LM80 is not set
+# CONFIG_SENSORS_LM83 is not set
+# CONFIG_SENSORS_LM85 is not set
+# CONFIG_SENSORS_LM87 is not set
+# CONFIG_SENSORS_LM90 is not set
+# CONFIG_SENSORS_LM92 is not set
+# CONFIG_SENSORS_MAX1619 is not set
+# CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_SIS5595 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
+# CONFIG_SENSORS_VIA686A is not set
+# CONFIG_SENSORS_W83781D is not set
+# CONFIG_SENSORS_W83792D is not set
+# CONFIG_SENSORS_W83L785TS is not set
+# CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+
+#
+# Misc devices
+#
+
+#
+# Multimedia Capabilities Port drivers
+#
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+
+#
+# Graphics support
+#
+# CONFIG_FB is not set
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_BANDWIDTH is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+CONFIG_USB_EHCI_HCD=y
+# CONFIG_USB_EHCI_SPLIT_ISO is not set
+# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+# CONFIG_USB_OHCI_BIG_ENDIAN is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+# CONFIG_USB_UHCI_HCD is not set
+# CONFIG_USB_SL811_HCD is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+CONFIG_USB_PRINTER=y
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=y
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+CONFIG_USB_STORAGE_FREECOM=y
+CONFIG_USB_STORAGE_ISD200=y
+CONFIG_USB_STORAGE_DPCM=y
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+
+#
+# USB Input Devices
+#
+# CONFIG_USB_HID is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+
+#
+# USB Multimedia devices
+#
+# CONFIG_USB_DABUSB is not set
+
+#
+# Video4Linux support is needed for USB Multimedia device support
+#
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET is not set
+# CONFIG_USB_MON is not set
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_AUERSWALD is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGETKIT is not set
+# CONFIG_USB_PHIDGETSERVO is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_SISUSBVGA is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+
+#
+# MMC/SD Card support
+#
+# CONFIG_MMC is not set
+
+#
+# InfiniBand support
+#
+# CONFIG_INFINIBAND is not set
+
+#
+# SN Devices
+#
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+CONFIG_XFS_FS=m
+# CONFIG_XFS_QUOTA is not set
+# CONFIG_XFS_SECURITY is not set
+# CONFIG_XFS_POSIX_ACL is not set
+# CONFIG_XFS_RT is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_FUSE_FS is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=y
+CONFIG_JOLIET=y
+# CONFIG_ZISOFS is not set
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+CONFIG_NTFS_FS=y
+# CONFIG_NTFS_DEBUG is not set
+# CONFIG_NTFS_RW is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_KCORE=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_RELAYFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_JFFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+# CONFIG_NFS_FS is not set
+# CONFIG_NFSD is not set
+# CONFIG_SMB_FS is not set
+# CONFIG_CIFS is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+# CONFIG_9P_FS is not set
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+
+#
+# Native Language Support
+#
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="utf8"
+CONFIG_NLS_CODEPAGE_437=y
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=y
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+CONFIG_NLS_UTF8=y
+
+#
+# Library routines
+#
+# CONFIG_CRC_CCITT is not set
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+# CONFIG_DEBUG_KERNEL is not set
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_SERIAL_TEXT_DEBUG=y
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+# CONFIG_CRYPTO is not set
+
+#
+# Hardware crypto devices
+#
diff --git a/packages/linux/linux-storcenter/kernel.patch-2.6.15.7 b/packages/linux/linux-storcenter/kernel.patch-2.6.15.7
new file mode 100644
index 0000000000..030ef64d2a
--- /dev/null
+++ b/packages/linux/linux-storcenter/kernel.patch-2.6.15.7
@@ -0,0 +1,1181 @@
+--- linux-2.6.15.orig/arch/ppc/platforms/iomega8241.c 1969-12-31 16:00:00.000000000 -0800
++++ linux-2.6.15/arch/ppc/platforms/iomega8241.c 2008-01-07 16:56:45.628534603 -0800
+@@ -0,0 +1,603 @@
++/*
++ * arch/ppc/platforms/iomega8241.c
++ *
++ * The Iomega StorCenter Network Hard Drive platform is based on the
++ * original sandpoint test platform. That GNU copyright information
++ * is reproduced below:
++ *
++ * Board setup routines for the Motorola SPS Sandpoint Test Platform.
++ *
++ * Author: Mark A. Greer
++ * mgreer@mvista.com
++ *
++ * 2000-2003 (c) MontaVista Software, Inc. This file is licensed under
++ * the terms of the GNU General Public License version 2. This program
++ * is licensed "as is" without any warranty of any kind, whether express
++ * or implied.
++ */
++
++/*
++ * Iomega StorCenter Network Hard Drive.
++ *
++ * Maintainer (Iomega Port): Anthony Russello
++ * russello@iomega.com
++ * Much of the below code was taken from the original sandpoint.c/.h port
++ * done my Mark A. Greer (see above copyright information). It was adapted
++ * to support a custom board.
++ */
++
++#include <linux/config.h>
++#include <linux/stddef.h>
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/errno.h>
++#include <linux/reboot.h>
++#include <linux/pci.h>
++#include <linux/kdev_t.h>
++#include <linux/major.h>
++#include <linux/initrd.h>
++#include <linux/console.h>
++#include <linux/delay.h>
++#include <linux/irq.h>
++#include <linux/ide.h>
++#include <linux/seq_file.h>
++#include <linux/root_dev.h>
++#include <linux/serial.h>
++#include <linux/tty.h> /* for linux/serial_core.h */
++#include <linux/serial_8250.h>
++
++#include <asm/system.h>
++#include <asm/pgtable.h>
++#include <asm/page.h>
++#include <asm/time.h>
++#include <asm/dma.h>
++#include <asm/io.h>
++#include <asm/machdep.h>
++#include <asm/prom.h>
++#include <asm/smp.h>
++#include <asm/vga.h>
++#include <asm/open_pic.h>
++#include <asm/todc.h>
++#include <asm/bootinfo.h>
++#include <asm/mpc10x.h>
++#include <asm/pci-bridge.h>
++#include <asm/kgdb.h>
++
++#include "iomega8241.h"
++
++/* Real Time Clock */
++extern spinlock_t rtc_lock;
++extern int ds1337_do_command(int id, int cmd, void *arg);
++#define DS1337_GET_DATE 0
++#define DS1337_SET_DATE 1
++
++unsigned char __res[sizeof(bd_t)];
++
++static void iomega8241_halt(void);
++
++/*
++ * Define all of the IRQ senses and polarities.
++ */
++static u_char iomega8241_openpic_initsenses[] __initdata = {
++ (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* 0: AN983B */
++ (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* 1: IDE VIA DS6410 */
++ (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* 2: USB */
++ (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* 3: USB */
++ (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* 4: USB */
++ (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* 5: UART0 */
++ (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* 6: UART1 */
++};
++
++/*
++ * Define all of the PCI IRQ Mappings
++ */
++static inline int
++iomega8241_map_irq(struct pci_dev *dev, unsigned char idsel, unsigned char pin)
++{
++ static char pci_irq_table[][4] =
++ /*
++ * PCI IDSEL/INTPIN->INTLINE
++ * A B C D
++ */
++ {
++ { 1, 1, 0, 0 },
++ { 2, 3, 4, 1 },
++ { 0, 0, 4, 4 },
++ { 3, 3, 4, 4 },
++ { 3, 3, 4, 4 },
++ };
++
++ const long min_idsel = 13, max_idsel = 17, irqs_per_slot = 4;
++ return PCI_IRQ_TABLE_LOOKUP;
++}
++
++static int
++iomega8241_exclude_device(u_char bus, u_char devfn)
++{
++ if ((bus == 0) && (PCI_SLOT(devfn) == IOMEGA8241_HOST_BRIDGE_IDSEL))
++ return PCIBIOS_DEVICE_NOT_FOUND;
++ else
++ return PCIBIOS_SUCCESSFUL;
++}
++
++static void __init
++iomega8241_find_bridges(void)
++{
++ struct pci_controller *hose;
++
++ hose = pcibios_alloc_controller();
++
++ if (!hose)
++ return;
++
++ hose->first_busno = 0;
++ hose->last_busno = 0x1;
++
++ if (mpc10x_bridge_init(hose,
++ MPC10X_MEM_MAP_B,
++ MPC10X_MEM_MAP_B,
++ MPC10X_MAPB_EUMB_BASE) == 0) {
++
++ ppc_md.pci_exclude_device = iomega8241_exclude_device;
++ hose->last_busno = pciauto_bus_scan(hose, hose->first_busno);
++ ppc_md.pcibios_fixup = NULL;
++ ppc_md.pcibios_fixup_bus = NULL;
++ ppc_md.pci_swizzle = common_swizzle;
++ ppc_md.pci_map_irq = iomega8241_map_irq;
++ }
++ else {
++ if (ppc_md.progress)
++ ppc_md.progress("Bridge init failed", 0x100);
++ printk("Host bridge init failed\n");
++ }
++ return;
++}
++
++
++static ulong
++get_bus_frequency(void)
++{
++ bd_t *bp = (bd_t *)__res;
++ ulong freq;
++ if (133333332 == bp->bi_busfreq)
++ freq = 132000000;
++ if (99999999 == bp->bi_busfreq)
++ freq = 100000000;
++ return(freq);
++}
++
++
++static void
++iomega8241_early_serial_map(void)
++{
++#if defined(CONFIG_SERIAL_8250)
++ struct plat_serial8250_port *pdata;
++ bd_t *binfo = (bd_t *) __res;
++
++ pdata = (struct plat_serial8250_port *) ppc_sys_get_pdata(MPC10X_UART0);
++ pdata[0].uartclk = get_bus_frequency();
++ pdata[0].membase = (unsigned char __iomem *) IOMEGA8241_SERIAL_0;
++
++ pdata = (struct plat_serial8250_port *) ppc_sys_get_pdata(MPC10X_UART1);
++ pdata[0].uartclk = get_bus_frequency();
++ pdata[0].membase = (unsigned char __iomem *) IOMEGA8241_SERIAL_1;
++#endif
++}
++
++static void __init
++iomega8241_setup_arch(void)
++{
++ int i = 0;
++
++ loops_per_jiffy = 100000000 / HZ;
++
++#ifdef CONFIG_BLK_DEV_INITRD
++ if (initrd_start)
++ ROOT_DEV = Root_RAM0;
++ else
++#endif
++#ifdef CONFIG_ROOT_NFS
++ ROOT_DEV = Root_NFS;
++#else
++ ROOT_DEV = Root_HDA1;
++#endif
++
++ /* Lookup PCI host bridges */
++ iomega8241_find_bridges();
++
++ iomega8241_early_serial_map();
++
++ printk(KERN_INFO "Iomega StorCenter Network Hard Drive\n");
++ printk(KERN_INFO "Linux Kernel by Protium Computing\n");
++
++ /* DINK32 12.3 and below do not correctly enable any caches.
++ * We will do this now with good known values. Future versions
++ * of DINK32 are supposed to get this correct.
++ */
++ if (cpu_has_feature(CPU_FTR_SPEC7450))
++ /* 745x is different. We only want to pass along enable. */
++ _set_L2CR(L2CR_L2E);
++ else if (cpu_has_feature(CPU_FTR_L2CR))
++ /* All modules have 1MB of L2. We also assume that an
++ * L2 divisor of 3 will work.
++ */
++ _set_L2CR(L2CR_L2E | L2CR_L2SIZ_1MB | L2CR_L2CLK_DIV3
++ | L2CR_L2RAM_PIPE | L2CR_L2OH_1_0 | L2CR_L2DF);
++#if 0
++ /* Untested right now. */
++ if (cpu_has_feature(CPU_FTR_L3CR)) {
++ /* Magic value. */
++ _set_L3CR(0x8f032000);
++ }
++#endif
++}
++
++#define IOMEGA8241_87308_CFG_ADDR 0x15c
++#define IOMEGA8241_87308_CFG_DATA 0x15d
++
++#define IOMEGA8241_87308_CFG_INB(addr, byte) { \
++ outb((addr), IOMEGA8241_87308_CFG_ADDR); \
++ (byte) = inb(IOMEGA8241_87308_CFG_DATA); \
++}
++
++#define IOMEGA8241_87308_CFG_OUTB(addr, byte) { \
++ outb((addr), IOMEGA8241_87308_CFG_ADDR); \
++ outb((byte), IOMEGA8241_87308_CFG_DATA); \
++}
++
++#define IOMEGA8241_87308_SELECT_DEV(dev_num) { \
++ IOMEGA8241_87308_CFG_OUTB(0x07, (dev_num)); \
++}
++
++#define IOMEGA8241_87308_DEV_ENABLE(dev_num) { \
++ IOMEGA8241_87308_SELECT_DEV(dev_num); \
++ IOMEGA8241_87308_CFG_OUTB(0x30, 0x01); \
++}
++
++static int __init
++iomega8241_request_io(void)
++{
++ request_region(0x00,0x20,"dma1");
++ request_region(0x20,0x20,"pic1");
++ request_region(0x40,0x20,"timer");
++ request_region(0x80,0x10,"dma page reg");
++ request_region(0xa0,0x20,"pic2");
++ request_region(0xc0,0x20,"dma2");
++
++ return 0;
++}
++
++arch_initcall(iomega8241_request_io);
++
++/*
++ * Interrupt setup and service. Interrrupts on the Sandpoint come
++ * from the four PCI slots plus the 8259 in the Winbond Super I/O (SIO).
++ * The 8259 is cascaded from EPIC IRQ0, IRQ1-4 map to PCI slots 1-4,
++ * IDE is on EPIC 7 and 8.
++ */
++static void __init
++iomega8241_init_IRQ(void)
++{
++ OpenPIC_InitSenses = iomega8241_openpic_initsenses;
++ OpenPIC_NumInitSenses = sizeof(iomega8241_openpic_initsenses);
++
++ /*
++ * We need to tell openpic_set_sources where things actually are.
++ * mpc10x_common will set up OpenPIC_Addr at ioremap(EUMB phys base +
++ * EPIC offset (0x40000)); The EPIC IRQ register address map -
++ * Interrupt Source Configuration Registers gives these numbers as
++ * offsets starting at 0x50200, we need to adjust accordingly
++ */
++ mpc10x_set_openpic();
++}
++
++static int
++iomega8241_get_irq(struct pt_regs *regs)
++{
++ int irq;
++
++ irq = openpic_irq();
++ if (irq == OPENPIC_VEC_SPURIOUS)
++ irq = -1;
++
++ return irq;
++}
++
++static u32
++iomega8241_irq_canonicalize(u32 irq)
++{
++ return irq;
++}
++
++static unsigned long __init
++iomega8241_find_end_of_memory(void)
++{
++ bd_t *bp = (bd_t *)__res;
++
++ if (bp->bi_memsize)
++ return bp->bi_memsize;
++
++ return 64*1024*1024;
++}
++
++static void __init
++iomega8241_map_io(void)
++{
++ /* changes suggested by Freescale: */
++ io_block_mapping(0xfc000000, 0xfc000000, 0x04000000, _PAGE_IO);
++}
++
++static void
++iomega8241_restart(char *cmd)
++{
++ local_irq_disable();
++
++ /* Set exception prefix high - to the firmware */
++ _nmask_and_or_msr(0, MSR_IP);
++
++ for(;;); /* Spin until reset happens */
++}
++
++static void
++iomega8241_power_off(void)
++{
++ local_irq_disable();
++ for(;;); /* No way to shut power off with software */
++ /* NOTREACHED */
++}
++
++static void
++iomega8241_halt(void)
++{
++ iomega8241_power_off();
++ /* NOTREACHED */
++}
++
++static int
++iomega8241_show_cpuinfo(struct seq_file *m)
++{
++ seq_printf(m, "vendor\t\t: Iomega Corporation\n");
++ seq_printf(m, "machine\t\t: Iomega StorCenter Network Hard Drive\n");
++
++ return 0;
++}
++
++#if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE)
++/*
++ * IDE support.
++ */
++static int iomega8241_ide_ports_known = 0;
++static unsigned long iomega8241_ide_regbase[MAX_HWIFS];
++static unsigned long iomega8241_ide_ctl_regbase[MAX_HWIFS];
++static unsigned long iomega8241_idedma_regbase;
++
++static void
++iomega8241_ide_probe(void)
++{
++ struct pci_dev *pdev = pci_get_device(PCI_VENDOR_ID_VIA,
++ PCI_DEVICE_ID_VIA_6410, NULL);
++
++ if (pdev) {
++ iomega8241_ide_regbase[0]=pdev->resource[0].start;
++ iomega8241_ide_regbase[1]=pdev->resource[2].start;
++ iomega8241_ide_ctl_regbase[0]=pdev->resource[1].start;
++ iomega8241_ide_ctl_regbase[1]=pdev->resource[3].start;
++ iomega8241_idedma_regbase=pdev->resource[4].start;
++
++ printk("Found: VIA VT6410 based IDE\n");
++ }
++
++ iomega8241_ide_ports_known = 1;
++}
++
++static int
++iomega8241_ide_default_irq(unsigned long base)
++{
++ if (iomega8241_ide_ports_known == 0)
++ iomega8241_ide_probe();
++
++ if (base == iomega8241_ide_regbase[0])
++ return IDE_INTRUPT;
++ else if (base == iomega8241_ide_regbase[1])
++ return IDE_INTRUPT;
++ else
++ return 0;
++}
++
++static unsigned long
++iomega8241_ide_default_io_base(int index)
++{
++ if (iomega8241_ide_ports_known == 0)
++ iomega8241_ide_probe();
++
++ return iomega8241_ide_regbase[index];
++}
++
++static void __init
++iomega8241_ide_init_hwif_ports(hw_regs_t *hw, unsigned long data_port,
++ unsigned long ctrl_port, int *irq)
++{
++ unsigned long reg = data_port;
++ uint alt_status_base;
++ int i;
++
++ for (i = IDE_DATA_OFFSET; i <= IDE_STATUS_OFFSET; i++) {
++ hw->io_ports[i] = reg++;
++ }
++
++ if (data_port == iomega8241_ide_regbase[0]) {
++ alt_status_base = iomega8241_ide_ctl_regbase[0] + 2;
++ hw->irq = IDE_INTRUPT;
++ } else if (data_port == iomega8241_ide_regbase[1]) {
++ alt_status_base = iomega8241_ide_ctl_regbase[1] + 2;
++ hw->irq = IDE_INTRUPT;
++ } else {
++ alt_status_base = 0;
++ hw->irq = 0;
++ }
++
++ if (ctrl_port) {
++ hw->io_ports[IDE_CONTROL_OFFSET] = ctrl_port;
++ } else {
++ hw->io_ports[IDE_CONTROL_OFFSET] = alt_status_base;
++ }
++
++ if (irq != NULL) {
++ *irq = hw->irq;
++ }
++}
++#endif
++
++/*
++ * Set BAT 3 to map 0xf8000000 to end of physical memory space 1-to-1.
++ */
++static __inline__ void
++iomega8241_set_bat(void)
++{
++ unsigned long bat3u, bat3l;
++
++ __asm__ __volatile__(
++ " lis %0,0xf800\n \
++ ori %1,%0,0x002a\n \
++ ori %0,%0,0x0ffe\n \
++ mtspr 0x21e,%0\n \
++ mtspr 0x21f,%1\n \
++ isync\n \
++ sync "
++ : "=r" (bat3u), "=r" (bat3l));
++}
++
++TODC_ALLOC();
++
++/* Real Time Clock support.
++ * StorCenter has a DS1337 accessed by I2C.
++ */
++static void __init
++iomega8241_calibrate_decr(void)
++{
++ ulong freq = get_bus_frequency() / 4;
++ printk("time_init: decrementer frequency = %lu.%.6lu MHz\n",
++ freq/1000000, freq%1000000);
++ if (freq == 33000000)
++ freq += 332550;
++
++ tb_ticks_per_jiffy = freq / HZ;
++ tb_to_us = mulhwu_scale_factor(freq, 1000000);
++
++ return;
++}
++
++
++static ulong iomega8241_get_rtc_time(void)
++{
++ struct rtc_time tm;
++ int result;
++
++ spin_lock(&rtc_lock);
++ result = ds1337_do_command(0, DS1337_GET_DATE, &tm);
++ spin_unlock(&rtc_lock);
++
++ if (result == 0)
++ result = mktime(tm.tm_year+1900, tm.tm_mon, tm.tm_mday,
++ tm.tm_hour, tm.tm_min, tm.tm_sec);
++
++ return result;
++}
++
++
++static int iomega8241_set_rtc_time(unsigned long nowtime)
++{
++ struct rtc_time tm;
++ int result;
++
++ to_tm(nowtime, &tm);
++ tm.tm_year -= 1900;
++ spin_lock(&rtc_lock);
++ result = ds1337_do_command(0, DS1337_SET_DATE, &tm);
++ spin_unlock(&rtc_lock);
++
++ return result;
++}
++
++
++static void __init
++iomega8241_init2(void)
++{
++ ppc_md.set_rtc_time = iomega8241_set_rtc_time;
++ ppc_md.get_rtc_time = iomega8241_get_rtc_time;
++}
++
++
++void __init
++platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
++ unsigned long r6, unsigned long r7)
++{
++ parse_bootinfo(find_bootinfo());
++
++ /* ASSUMPTION: If both r3 (bd_t pointer) and r6 (cmdline pointer)
++ * are non-zero, then we should use the board info from the bd_t
++ * structure and the cmdline pointed to by r6 instead of the
++ * information from birecs, if any. Otherwise, use the information
++ * from birecs as discovered by the preceeding call to
++ * parse_bootinfo(). This rule should work with both PPCBoot, which
++ * uses a bd_t board info structure, and the kernel boot wrapper,
++ * which uses birecs.
++ */
++ if (r3 && r6) {
++ /* copy board info structure */
++ memcpy( (void *)__res,(void *)(r3+KERNELBASE), sizeof(bd_t) );
++ /* copy command line */
++ *(char *)(r7+KERNELBASE) = 0;
++ strcpy(cmd_line, (char *)(r6+KERNELBASE));
++ }
++
++#ifdef CONFIG_BLK_DEV_INITRD
++ /* take care of initrd if we have one */
++ if (r4) {
++ initrd_start = r4 + KERNELBASE;
++ initrd_end = r5 + KERNELBASE;
++ }
++#endif /* CONFIG_BLK_DEV_INITRD */
++
++ /* Map in board regs, etc. */
++ iomega8241_set_bat();
++
++ isa_io_base = MPC10X_MAPB_ISA_IO_BASE;
++ isa_mem_base = MPC10X_MAPB_ISA_MEM_BASE;
++ pci_dram_offset = MPC10X_MAPB_DRAM_OFFSET;
++ ISA_DMA_THRESHOLD = 0x00ffffff;
++ DMA_MODE_READ = 0x44;
++ DMA_MODE_WRITE = 0x48;
++
++ ppc_md.setup_arch = iomega8241_setup_arch;
++ ppc_md.show_cpuinfo = iomega8241_show_cpuinfo;
++ ppc_md.irq_canonicalize = iomega8241_irq_canonicalize;
++ ppc_md.init_IRQ = iomega8241_init_IRQ;
++ ppc_md.get_irq = iomega8241_get_irq;
++ ppc_md.init = iomega8241_init2;
++
++ ppc_md.restart = iomega8241_restart;
++ ppc_md.power_off = iomega8241_power_off;
++ ppc_md.halt = iomega8241_halt;
++
++ ppc_md.find_end_of_memory = iomega8241_find_end_of_memory;
++ ppc_md.setup_io_mappings = iomega8241_map_io;
++
++ ppc_md.time_init = NULL;
++ ppc_md.set_rtc_time = NULL;
++ ppc_md.get_rtc_time = NULL;
++ ppc_md.calibrate_decr = iomega8241_calibrate_decr;
++
++/*
++ * extra credit:
++ *
++ * ppc_md.nvram_read_val = todc_mc146818_read_val;
++ * ppc_md.nvram_write_val = todc_mc146818_write_val;
++ */
++#if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE)
++ ppc_ide_md.default_irq = iomega8241_ide_default_irq;
++ ppc_ide_md.default_io_base = iomega8241_ide_default_io_base;
++ ppc_ide_md.ide_init_hwif = iomega8241_ide_init_hwif_ports;
++#endif
++
++}
+--- linux-2.6.15.orig/arch/ppc/Kconfig 2006-01-02 19:21:10.000000000 -0800
++++ linux-2.6.15/arch/ppc/Kconfig 2008-01-01 22:12:32.365126129 -0800
+@@ -649,6 +649,15 @@
+ End of Life: -
+ URL: <http://www.windriver.com/>
+
++config IOMEGA8241
++ bool "IOMEGA8241"
++ ---help---
++ Iomega StorCenter Network Hard Drive
++ Manufacturer: Iomega Corporation
++ Date of Release: May 2005
++ End of Life: -
++ URL: <http://www.iomega.com/>
++
+ config SBS8260
+ bool "SBS8260"
+
+@@ -801,7 +810,7 @@
+ depends on SANDPOINT || SPRUCE || PPLUS || \
+ PRPMC750 || PRPMC800 || LOPEC || \
+ (EV64260 && !SERIAL_MPSC) || CHESTNUT || RADSTONE_PPC7D || \
+- 83xx
++ 83xx || IOMEGA8241
+ default y
+
+ config FORCE
+@@ -870,13 +879,13 @@
+
+ config MPC10X_BRIDGE
+ bool
+- depends on POWERPMC250 || LOPEC || SANDPOINT
++ depends on POWERPMC250 || LOPEC || SANDPOINT || IOMEGA8241
+ select PPC_INDIRECT_PCI
+ default y
+
+ config MPC10X_OPENPIC
+ bool
+- depends on POWERPMC250 || LOPEC || SANDPOINT
++ depends on POWERPMC250 || LOPEC || SANDPOINT || IOMEGA8241
+ default y
+
+ config MPC10X_STORE_GATHERING
+--- linux-2.6.15.orig/arch/ppc/boot/Makefile 2006-01-02 19:21:10.000000000 -0800
++++ linux-2.6.15/arch/ppc/boot/Makefile 2008-01-01 22:12:32.365126129 -0800
+@@ -13,7 +13,7 @@
+ CFLAGS += -fno-builtin -D__BOOTER__ -Iarch/$(ARCH)/boot/include
+ HOSTCFLAGS += -Iarch/$(ARCH)/boot/include
+
+-BOOT_TARGETS = zImage zImage.initrd znetboot znetboot.initrd
++BOOT_TARGETS = zImage zImage.initrd znetboot znetboot.initrd uImage
+
+ bootdir-y := simple
+ bootdir-$(CONFIG_PPC_OF) += openfirmware
+--- linux-2.6.15.orig/arch/ppc/boot/simple/Makefile 2006-01-02 19:21:10.000000000 -0800
++++ linux-2.6.15/arch/ppc/boot/simple/Makefile 2008-01-01 22:12:32.365126129 -0800
+@@ -158,6 +158,10 @@
+ end-$(CONFIG_SANDPOINT) := sandpoint
+ cacheflag-$(CONFIG_SANDPOINT) := -include $(clear_L2_L3)
+
++ end-$(CONFIG_IOMEGA8241) := iomega8241
++ cacheflag-$(CONFIG_IOMEGA8241) := -include $(clear_L2_L3)
++
++
+ zimage-$(CONFIG_SPRUCE) := zImage-TREE
+ zimageinitrd-$(CONFIG_SPRUCE) := zImage.initrd-TREE
+ end-$(CONFIG_SPRUCE) := spruce
+--- linux-2.6.15.orig/arch/ppc/platforms/Makefile 2006-01-02 19:21:10.000000000 -0800
++++ linux-2.6.15/arch/ppc/platforms/Makefile 2008-01-01 22:12:32.365126129 -0800
+@@ -42,6 +42,7 @@
+ obj-$(CONFIG_RADSTONE_PPC7D) += radstone_ppc7d.o
+ obj-$(CONFIG_SANDPOINT) += sandpoint.o
+ obj-$(CONFIG_SBC82xx) += sbc82xx.o
++obj-$(CONFIG_IOMEGA8241) += iomega8241.o
+ obj-$(CONFIG_SPRUCE) += spruce.o
+ obj-$(CONFIG_LITE5200) += lite5200.o
+ obj-$(CONFIG_EV64360) += ev64360.o
+--- linux-2.6.15.orig/arch/ppc/platforms/iomega8241.h 1969-12-31 16:00:00.000000000 -0800
++++ linux-2.6.15/arch/ppc/platforms/iomega8241.h 2008-01-01 22:12:32.365126129 -0800
+@@ -0,0 +1,66 @@
++/*
++ * arch/ppc/platforms/iomega8241.h
++ *
++ * The Iomega StorCenter Network Hard Drive platform is based on the
++ * original sandpoint test platform. That GNU copyright information
++ * is reproduced below:
++ *
++ * Board setup routines for the Motorola SPS Sandpoint Test Platform.
++ *
++ * Author: Mark A. Greer
++ * mgreer@mvista.com
++ *
++ * 2000-2003 (c) MontaVista Software, Inc. This file is licensed under
++ * the terms of the GNU General Public License version 2. This program
++ * is licensed "as is" without any warranty of any kind, whether express
++ * or implied.
++ */
++
++#ifndef __PPC_PLATFORMS_IOMEGA8241_H
++#define __PPC_PLATFORMS_IOMEGA8241_H
++
++#include <asm/ppcboot.h>
++#include <linux/config.h>
++
++/*
++ * G2 Configuration:
++ *
++ * DEVICE IDSEL INTERRUPT NUMBER
++ * AN983B AD12 IRQ0
++ * IDE Via DS6410 AD13 IRQ1
++ * NEC USB uPD720101 AD14 IRQ2,3,4
++ */
++
++#define IDE_INTRUPT 1
++
++/*
++ * The sandpoint boards have processor modules that either have an 8240 or
++ * an MPC107 host bridge on them. These bridges have an IDSEL line that allows
++ * them to respond to PCI transactions as if they were a normal PCI devices.
++ * However, the processor on the processor side of the bridge can not reach
++ * out onto the PCI bus and then select the bridge or bad things will happen
++ * (documented in the 8240 and 107 manuals).
++ * Because of this, we always skip the bridge PCI device when accessing the
++ * PCI bus. The PCI slot that the bridge occupies is defined by the macro
++ * below.
++ */
++#define IOMEGA8241_HOST_BRIDGE_IDSEL 12
++
++void board_find_bridges(void);
++void iomega8241_fix_uart(void);
++/*
++ * Serial defines.
++ */
++#define IOMEGA8241_SERIAL_0 0xFDF04500
++#define IOMEGA8241_SERIAL_1 0xFDF04600
++
++#define RS_TABLE_SIZE 4
++
++/* Rate for the 1.8432 Mhz clock for the onboard serial chip */
++#define BASE_BAUD ( 100000000 / 16 ) /* 100Mhz speed, divided by 16
++ to make the output freqency*/
++#define UART_CLK 1843200
++
++#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF|ASYNC_SKIP_TEST)
++
++#endif /* __PPC_PLATFORMS_IOMEGA8241_H */
+--- linux-2.6.15.orig/arch/ppc/syslib/Makefile 2006-01-02 19:21:10.000000000 -0800
++++ linux-2.6.15/arch/ppc/syslib/Makefile 2008-01-01 22:12:32.365126129 -0800
+@@ -71,6 +71,7 @@
+ obj-$(CONFIG_PRPMC800) += open_pic.o pci_auto.o
+ obj-$(CONFIG_RADSTONE_PPC7D) += pci_auto.o
+ obj-$(CONFIG_SANDPOINT) += pci_auto.o todc_time.o
++obj-$(CONFIG_IOMEGA8241) += pci_auto.o
+ obj-$(CONFIG_SBC82xx) += todc_time.o
+ obj-$(CONFIG_SPRUCE) += cpc700_pic.o pci_auto.o \
+ todc_time.o
+--- linux-2.6.15.orig/arch/ppc/syslib/mpc10x_common.c 2006-01-02 19:21:10.000000000 -0800
++++ linux-2.6.15/arch/ppc/syslib/mpc10x_common.c 2008-01-01 22:12:32.365126129 -0800
+@@ -35,6 +35,10 @@
+ #include <asm/mpc10x.h>
+ #include <asm/ppc_sys.h>
+
++#ifdef CONFIG_IOMEGA8241
++#define NUM_8259_INTERRUPTS 0
++#endif
++
+ #ifdef CONFIG_MPC10X_OPENPIC
+ #ifdef CONFIG_EPIC_SERIAL_MODE
+ #define EPIC_IRQ_BASE (epic_serial_mode ? 16 : 5)
+--- linux-2.6.15.orig/drivers/char/Kconfig 2006-01-02 19:21:10.000000000 -0800
++++ linux-2.6.15/drivers/char/Kconfig 2008-01-01 22:12:32.369126358 -0800
+@@ -999,6 +999,25 @@
+ The mmtimer device allows direct userspace access to the
+ Altix system timer.
+
++config 8241EMI
++ tristate "EMI fixes for the 8241 processor"
++ depends on IOMEGA8241
++ default y
++ help
++ By changing the ODCR value from 0xAB to 0x95, we are able to reduce
++ the EMI along the PCI and MEMORY buses.
++
++ msb 7 1 Controls the drive strength of DRV_PCI (40ohm)
++ 6 0 reserved
++ 5-4 01 Controls the drive strength of SDRAM_CLK (40ohm)
++ 3-2 01 Controls the drive strength of PCI_CLK and
++ PCI_CLK_SYNC_OUT (40ohm)
++ 1-0 01 Controls the drive strength of SDRAM_CLK and
++ SDRAM_SYNC_OUT (40ohm)
++
++ See table 4-19 on page 4-22 of the MPC8245 Integrated Processor
++ User's Manual for details on these registers.
++
+ source "drivers/char/tpm/Kconfig"
+
+ config TELCLOCK
+--- linux-2.6.15.orig/drivers/char/Makefile 2006-01-02 19:21:10.000000000 -0800
++++ linux-2.6.15/drivers/char/Makefile 2008-01-01 22:12:32.369126358 -0800
+@@ -48,6 +48,7 @@
+ obj-$(CONFIG_VIOTAPE) += viotape.o
+ obj-$(CONFIG_HVCS) += hvcs.o
+ obj-$(CONFIG_SGI_MBCS) += mbcs.o
++obj-$(CONFIG_8241EMI) += emiregs.o
+
+ obj-$(CONFIG_PRINTER) += lp.o
+ obj-$(CONFIG_TIPAR) += tipar.o
+--- linux-2.6.15.orig/drivers/char/emiregs.c 1969-12-31 16:00:00.000000000 -0800
++++ linux-2.6.15/drivers/char/emiregs.c 2008-01-01 22:12:32.369126358 -0800
+@@ -0,0 +1,68 @@
++#include <linux/init.h>
++#include <linux/module.h>
++
++MODULE_LICENSE ("GPL");
++
++/*
++ The following CONFIG_READ_BYTE and CONFIG_WRITE_BYTE
++ functions were taken from u-boot
++
++ By changing the ODCR value from 0xAB to 0x95, we are able to reduce
++ the EMI along the PCI and MEMORY buses.
++
++ msb 7 1 Controls the drive strength of DRV_PCI (40ohm)
++ 6 0 reserved
++ 5-4 01 Controls the drive strength of SDRAM_CLK (40ohm)
++ 3-2 01 Controls the drive strength of PCI_CLK and
++ PCI_CLK_SYNC_OUT (40ohm)
++ 1-0 01 Controls the drive strength of SDRAM_CLK and
++ SDRAM_SYNC_OUT (40ohm)
++
++ See table 4-19 on page 4-22 of the MPC8245 Integrated Processor
++ User's Manual for details on these registers.
++*/
++#define CONFIG_ADDR 0xfec00000
++#define CONFIG_DATA 0xfee00000
++
++#define CONFIG_READ_BYTE( addr, reg ) \
++ __asm__ ( \
++ " stwbrx %1, 0, %2\n \
++ sync\n \
++ lbz %0, %4(%3)\n \
++ sync " \
++ : "=r" (reg) \
++ : "r" ((addr) & ~3), "r" (CONFIG_ADDR), \
++ "b" (CONFIG_DATA), "n" ((addr) & 3));
++
++#define CONFIG_WRITE_BYTE( addr, data ) \
++ __asm__ __volatile__( \
++ " stwbrx %1, 0, %0\n \
++ sync\n \
++ stb %3, %4(%2)\n \
++ sync " \
++ : /* no output */ \
++ : "r" (CONFIG_ADDR), "r" ((addr) & ~3), \
++ "b" (CONFIG_DATA), "r" (data), \
++ "n" ((addr) & 3));
++
++
++static int emiregs_init (void)
++ {
++ u_long val, val2;
++ CONFIG_READ_BYTE (0x80000073, val);
++ CONFIG_WRITE_BYTE (0x80000073, 0x95);
++ CONFIG_READ_BYTE (0x80000073, val2);
++
++ printk (KERN_INFO "8241 ODCR: changed from 0x%02lx, to 0x%02lx\n", val, val2);
++
++ return 0;
++ }
++
++static void emiregs_exit (void)
++ {
++ printk (KERN_INFO "emiregs module exitting\n");
++ return;
++ }
++
++module_init (emiregs_init);
++module_exit (emiregs_exit);
+--- linux-2.6.15.orig/drivers/char/rtc.c 2006-01-02 19:21:10.000000000 -0800
++++ linux-2.6.15/drivers/char/rtc.c 2008-01-01 22:12:32.369126358 -0800
+@@ -514,9 +514,16 @@
+ }
+ case RTC_RD_TIME: /* Read the time/date from RTC */
+ {
++#ifdef CONFIG_IOMEGA8241
++ unsigned long usi_time;
++ usi_time = ds1337_get_time();
++ to_tm(usi_time,wtime);
++ break;
++#else
+ memset(&wtime, 0, sizeof(struct rtc_time));
+ rtc_get_rtc_time(&wtime);
+ break;
++#endif /* CONFIG_IOMEGA8241 */
+ }
+ case RTC_SET_TIME: /* Set the RTC */
+ {
+@@ -558,7 +565,7 @@
+
+ if ((yrs -= epoch) > 255) /* They are unsigned */
+ return -EINVAL;
+-
++#ifndef CONFIG_IOMEGA8241
+ spin_lock_irq(&rtc_lock);
+ #ifdef CONFIG_MACH_DECSTATION
+ real_yrs = yrs;
+@@ -614,6 +621,11 @@
+
+ spin_unlock_irq(&rtc_lock);
+ return 0;
++#else /* CONFIG_IOMEGA8241 */
++ /* next is the forth API provided by ds1337.c USI-SS */
++ ds1337_usi_set_time(yrs,mon,day,hrs,min,sec);
++ break;
++#endif /* CONFIG_IOMEGA8241 */
+ }
+ #ifdef RTC_IRQ
+ case RTC_IRQP_READ: /* Read the periodic IRQ rate. */
+--- linux-2.6.15.orig/drivers/i2c/busses/i2c-mpc.c 2006-01-02 19:21:10.000000000 -0800
++++ linux-2.6.15/drivers/i2c/busses/i2c-mpc.c 2008-01-01 22:12:32.369126358 -0800
+@@ -285,7 +285,11 @@
+ .algo = &mpc_algo,
+ .class = I2C_CLASS_HWMON,
+ .timeout = 1,
++#ifdef CONFIG_IOMEGA8241
++ .retries = 400
++#else
+ .retries = 1
++#endif /* CONFIG_IOMEGA8241 */
+ };
+
+ static int fsl_i2c_probe(struct platform_device *pdev)
+--- linux-2.6.15.orig/drivers/ide/pci/via82cxxx.c 2006-01-02 19:21:10.000000000 -0800
++++ linux-2.6.15/drivers/ide/pci/via82cxxx.c 2008-01-02 08:21:42.876113109 -0800
+@@ -305,6 +305,12 @@
+ */
+
+ pci_read_config_byte(dev, VIA_IDE_ENABLE, &v);
++#ifdef CONFIG_IOMEGA8241
++ if(via_config->id == PCI_DEVICE_ID_VIA_6410) {
++ pci_write_config_byte(dev, VIA_IDE_ENABLE, v | 0x3);
++ }
++#endif
++
+
+ /*
+ * Set up FIFO sizes and thresholds.
+@@ -485,7 +492,11 @@
+ .channels = 2,
+ .autodma = AUTODMA,
+ .enablebits = {{0x00,0x00,0x00}, {0x00,0x00,0x00}},
++#ifdef CONFIG_IOMEGA8241
++ .bootable = NEVER_BOARD,
++#else
+ .bootable = ON_BOARD,
++#endif
+ }
+ };
+
+--- linux-2.6.15.orig/drivers/mtd/maps/Kconfig 2006-01-02 19:21:10.000000000 -0800
++++ linux-2.6.15/drivers/mtd/maps/Kconfig 2008-01-01 22:12:32.369126358 -0800
+@@ -639,5 +639,10 @@
+
+ This selection automatically selects the map_ram driver.
+
+-endmenu
++config MTD_IOMEGA8241
++ tristate "Map driver for the Iomega 8241 StorCenter board"
++ depends on IOMEGA8241
++ help
++ Map driver for the Iomega StorCenter Network Hard Drive.
+
++endmenu
+--- linux-2.6.15.orig/drivers/mtd/maps/Makefile 2006-01-02 19:21:10.000000000 -0800
++++ linux-2.6.15/drivers/mtd/maps/Makefile 2008-01-01 22:12:32.369126358 -0800
+@@ -68,6 +68,7 @@
+ obj-$(CONFIG_MTD_WRSBC8260) += wr_sbc82xx_flash.o
+ obj-$(CONFIG_MTD_DMV182) += dmv182.o
+ obj-$(CONFIG_MTD_SHARP_SL) += sharpsl-flash.o
++obj-$(CONFIG_MTD_IOMEGA8241) += iomega8241_mtd.o
+ obj-$(CONFIG_MTD_PLATRAM) += plat-ram.o
+ obj-$(CONFIG_MTD_OMAP_NOR) += omap_nor.o
+ obj-$(CONFIG_MTD_MTX1) += mtx-1_flash.o
+--- linux-2.6.15.orig/drivers/mtd/maps/iomega8241_mtd.c 1969-12-31 16:00:00.000000000 -0800
++++ linux-2.6.15/drivers/mtd/maps/iomega8241_mtd.c 2008-01-01 22:12:32.369126358 -0800
+@@ -0,0 +1,102 @@
++/*
++ * drivers/mtd/maps/iomega8241_mtd.c
++ *
++ * Iomega Corporation
++ *
++ * Flash mapping for the Iomega StorCenter Network Hard Drive
++ *
++ * This module is based on the mpc1211.c file created by
++ * Saito.K & Jeanne <ksaito@interface.co.jp>
++ *
++ */
++
++#include <linux/module.h>
++#include <linux/types.h>
++#include <linux/kernel.h>
++#include <asm/io.h>
++#include <linux/mtd/mtd.h>
++#include <linux/mtd/map.h>
++#include <linux/config.h>
++#include <linux/mtd/partitions.h>
++
++#include <asm/immap_cpm2.h>
++
++static struct mtd_info *iomegamtd;
++static struct mtd_partition *parsed_parts;
++
++struct map_info iomega8241_flash_map = {
++ .name = "Flash",
++ .phys = 0xFF800000,
++ .size = 0x800000,
++ .bankwidth = 1,
++};
++
++static struct mtd_partition iomega8241_partitions[] = {
++ {
++ .name = "kernel",
++ /* 1507328 bytes: kernel space */
++ .size = 0x00170000,
++ .offset = 0,
++ }, {
++ .name = "filesystem",
++ /* 5832704 bytes: root partition */
++ .size = 0x00590000,
++ /* start is FF970000 */
++ .offset = MTDPART_OFS_APPEND,
++ }, {
++ .name = "bootloader",
++ /* 262144 bytes for u-boot */
++ .size = 0x00040000,
++ /* start is FFF00000 */
++ .offset = MTDPART_OFS_APPEND,
++ }, {
++ .name = "sysconfig",
++ /* 786432 bytes: sysconf partition */
++ .size = 0x000C0000,
++ /* start is FFF40000 */
++ .offset = MTDPART_OFS_APPEND,
++ }
++};
++
++static int __init
++init_iomega8241_flash(void)
++{
++ int nr_parts;
++
++ iomega8241_flash_map.virt = ioremap(iomega8241_flash_map.phys, iomega8241_flash_map.size);
++
++ simple_map_init(&iomega8241_flash_map);
++
++ printk("Iomega8241: Probing for flash...\n");
++ iomegamtd = do_map_probe("cfi_probe", &iomega8241_flash_map);
++ if (!iomegamtd) {
++ printk(KERN_NOTICE "Flash chips not detected at either possible location.\n");
++ return -ENXIO;
++ }
++ printk("Iomega8241: Flash found at location 0x%x\n", iomega8241_flash_map.phys);
++ iomegamtd->owner = THIS_MODULE;
++
++ parsed_parts = iomega8241_partitions;
++ nr_parts = ARRAY_SIZE(iomega8241_partitions);
++
++ add_mtd_partitions(iomegamtd, parsed_parts, nr_parts);
++ return 0;
++}
++
++static void __exit
++cleanup_iomega8241_flash(void)
++{
++ if (parsed_parts)
++ del_mtd_partitions(iomegamtd);
++ else
++ del_mtd_device(iomegamtd);
++ map_destroy(iomegamtd);
++}
++
++module_init(init_iomega8241_flash);
++module_exit(cleanup_iomega8241_flash);
++
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Anthony Russello <russello@iomega.com>");
++MODULE_DESCRIPTION("Flash mapping for the Iomega StorCenter Network Hard Drive");
+--- linux-2.6.15.orig/drivers/net/wireless/prism54/islpci_dev.c 2006-01-02 19:21:10.000000000 -0800
++++ linux-2.6.15/drivers/net/wireless/prism54/islpci_dev.c 2008-01-01 22:12:32.369126358 -0800
+@@ -874,6 +874,7 @@
+
+ /* select the firmware file depending on the device id */
+ switch (pdev->device) {
++ case 0x3873:
+ case 0x3877:
+ strcpy(priv->firmware, ISL3877_IMAGE_FILE);
+ break;
+--- linux-2.6.15.orig/drivers/net/wireless/prism54/islpci_hotplug.c 2006-01-02 19:21:10.000000000 -0800
++++ linux-2.6.15/drivers/net/wireless/prism54/islpci_hotplug.c 2008-01-01 22:12:32.373126589 -0800
+@@ -70,6 +70,13 @@
+ PCI_ANY_ID, PCI_ANY_ID,
+ 0, 0, 0
+ },
++ /* Intersil PRISM NetGate 2511 MP PLUS 100mW */
++ {
++ 0x1260, 0x3873,
++ PCI_ANY_ID, PCI_ANY_ID,
++ 0, 0, 0
++ },
++
+
+ /* End of list */
+ {0,0,0,0,0,0,0}
+--- linux-2.6.15.orig/drivers/pci/probe.c 2006-01-02 19:21:10.000000000 -0800
++++ linux-2.6.15/drivers/pci/probe.c 2008-01-01 22:12:32.373126589 -0800
+@@ -596,6 +596,20 @@
+ pci_read_config_dword(dev, PCI_CLASS_REVISION, &class);
+ class >>= 8; /* upper 3 bytes */
+ dev->class = class;
++#ifdef CONFIG_IOMEGA8241
++ /*
++ * The VIA VT6410 used on the Iomega StorCenter Network Hard Drive reports
++ * with a class of 0x01040 (PCI_CLASS_STORAGE_RAID).
++ *
++ * The following correction allows it to be used as a standard PCI IDE
++ * controller (0x0101)
++ */
++ if((dev->vendor==PCI_VENDOR_ID_VIA)&&(dev->device==PCI_DEVICE_ID_VIA_6410)) {
++ dev->class=0x01018f;
++ printk("PCI: Adjustments for the VIA VT6410 controller have been made\n");
++ }
++#endif /* CONFIG_IOMEGA8241 */
++
+ class >>= 8;
+
+ pr_debug("PCI: Found %s [%04x/%04x] %06x %02x\n", pci_name(dev),
+--- linux-2.6.15.orig/include/asm-ppc/mpc10x.h 2006-01-02 19:21:10.000000000 -0800
++++ linux-2.6.15/include/asm-ppc/mpc10x.h 2008-01-01 22:12:32.373126589 -0800
+@@ -76,7 +76,11 @@
+
+ #define MPC10X_MAPB_PCI_INTACK_ADDR 0xfef00000
+ #define MPC10X_MAPB_PCI_IO_START 0x00000000
++#ifdef CONFIG_IOMEGA8241
++#define MPC10X_MAPB_PCI_IO_END 0xFFFF
++#else
+ #define MPC10X_MAPB_PCI_IO_END (0x00c00000 - 1)
++#endif /* CONFIG_IOMEGA8241 */
+ #define MPC10X_MAPB_PCI_MEM_START 0x80000000
+ #define MPC10X_MAPB_PCI_MEM_END (0xc0000000 - 1)
+
+@@ -157,7 +161,12 @@
+ */
+ extern unsigned long ioremap_base;
+ #define MPC10X_MAPA_EUMB_BASE (ioremap_base - MPC10X_EUMB_SIZE)
++
++#ifdef CONFIG_IOMEGA8241
++#define MPC10X_MAPB_EUMB_BASE 0xFDF00000
++#else
+ #define MPC10X_MAPB_EUMB_BASE MPC10X_MAPA_EUMB_BASE
++#endif
+
+ enum ppc_sys_devices {
+ MPC10X_IIC1,
+--- linux-2.6.15.orig/include/asm-ppc/serial.h 2006-01-02 19:21:10.000000000 -0800
++++ linux-2.6.15/include/asm-ppc/serial.h 2008-01-01 22:12:32.373126589 -0800
+@@ -38,6 +38,8 @@
+ #include <asm/mpc85xx.h>
+ #elif defined(CONFIG_RADSTONE_PPC7D)
+ #include <platforms/radstone_ppc7d.h>
++#elif defined(CONFIG_IOMEGA8241)
++#include <platforms/iomega8241.h>
+ #else
+
+ /*
diff --git a/packages/linux/linux-storcenter_2.6.15.7.bb b/packages/linux/linux-storcenter_2.6.15.7.bb
new file mode 100644
index 0000000000..4895b2174e
--- /dev/null
+++ b/packages/linux/linux-storcenter_2.6.15.7.bb
@@ -0,0 +1,36 @@
+DESCRIPTION = "Linux Kernel for the Iomega storcenter platform"
+SECTION = "kernel"
+LICENSE = "GPL"
+DEPENDS = "u-boot-utils-native"
+PR = "r1"
+
+COMPATIBLE_MACHINE = "storcenter"
+
+SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2 \
+ file://kernel.patch-${PV};patch=1 \
+ file://defconfig-${PV} "
+
+S = "${WORKDIR}/linux-${PV}"
+
+inherit kernel
+
+export ARCH = "ppc"
+
+KERNEL_IMAGETYPE = "uImage"
+KERNEL_OUTPUT = "arch/${ARCH}/boot/images/${KERNEL_IMAGETYPE}"
+
+do_configure() {
+ install -m 644 ${WORKDIR}/defconfig-${PV} ${S}/.config
+ make ARCH=${ARCH} oldconfig
+}
+
+do_deploy() {
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0644 ${KERNEL_OUTPUT} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}
+}
+
+do_deploy[dirs] = "${S}"
+
+addtask deploy before do_build after do_compile
+
+
diff --git a/packages/meta/openprotium-packages.bb b/packages/meta/openprotium-packages.bb
index 3df2f5e3b2..7d66ee5d61 100644
--- a/packages/meta/openprotium-packages.bb
+++ b/packages/meta/openprotium-packages.bb
@@ -30,13 +30,14 @@ inherit meta
# flac \
# gphoto2 \
# gdb \
-# glib-2.0 \
# lirc \
# masqmail \
# wakelan \
# wireless-tools \
# wpa-supplicant \
+# openldap \
# bluez-utils-nodbus \
+# lcdproc \
# libxml2 \
# libdvb \
# madwifi-ng \
@@ -53,7 +54,13 @@ inherit meta
# samba \
# sane-backends \
# vsftpd \
+# syslog-ng \
# zd1211 \
+# cdparanoia \
+# litestream \
+# pvrusb2-mci \
+# pwc \
+# fetchmail \
OPENPROTIUM_PACKAGES = "\
alsa-lib \
@@ -70,7 +77,6 @@ OPENPROTIUM_PACKAGES = "\
bridge-utils \
bzip2 \
ccxstream \
- cdparanoia \
cdstatus \
coreutils \
cron \
@@ -85,7 +91,6 @@ OPENPROTIUM_PACKAGES = "\
e2fsprogs-libs \
expat \
ez-ipupdate \
- fetchmail \
file \
findutils \
flex \
@@ -94,6 +99,7 @@ OPENPROTIUM_PACKAGES = "\
gawk \
gcc \
gdbm \
+ glib-2.0 \
gnu-config \
grep \
gtk-doc \
@@ -105,8 +111,6 @@ OPENPROTIUM_PACKAGES = "\
ircp \
joe \
jpeg \
- lcdproc \
- less \
libao \
libid3tag \
liblockfile \
@@ -119,7 +123,6 @@ OPENPROTIUM_PACKAGES = "\
libupnp \
libusb \
libvorbis \
- litestream \
lrzsz \
lsof \
lvm2 \
@@ -144,7 +147,6 @@ OPENPROTIUM_PACKAGES = "\
nmap \
ntp \
openobex-apps \
- openldap \
openntpd \
openobex \
openssh \
@@ -156,8 +158,6 @@ OPENPROTIUM_PACKAGES = "\
pkgconfig \
ppp \
procps \
- pvrusb2-mci \
- pwc \
quilt \
rng-tools \
rsync \
@@ -169,7 +169,6 @@ OPENPROTIUM_PACKAGES = "\
strace \
streamripper \
sysfsutils \
- syslog-ng \
tar \
thttpd \
tiff \
@@ -178,7 +177,6 @@ OPENPROTIUM_PACKAGES = "\
util-linux \
vim \
vlan \
- watchdog \
wget \
zip \
zlib \
diff --git a/packages/openprotium-init/files/boot/disk b/packages/openprotium-init/files/boot/disk
index b4bbaf1f3c..e1096e225a 100644
--- a/packages/openprotium-init/files/boot/disk
+++ b/packages/openprotium-init/files/boot/disk
@@ -25,9 +25,6 @@ then
sleep=6
test "$sleep" -gt 0 && sleep "$sleep"
else
- # make the device links so turnup can use short disk names.
- # probably only necessary on devfs based systems.
- /etc/init.d/devices start
scc -l redflash -f auto
fi
#
diff --git a/packages/openprotium-init/files/functions b/packages/openprotium-init/files/functions
index 25832cf3f9..2700551cc4 100644
--- a/packages/openprotium-init/files/functions
+++ b/packages/openprotium-init/files/functions
@@ -65,21 +65,13 @@ load_functions(){
# use this rather than hard-wiring the device because the partition
# table can change - looking in /proc/mtd is more reliable.
mtdev(){
- if test $(machine) = storcenter ; then
- sed -n 's!^mtd\([0-9][0-9]*\):[^"]*"'"$1"'"$!/dev/mtd/\1!p' /proc/mtd
- else
sed -n 's!^\(mtd[0-9][0-9]*\):[^"]*"'"$1"'"$!/dev/\1!p' /proc/mtd
- fi
}
#
# mtblockdev "name"
# as mtdev but output the name of the block (not character) device
mtblockdev(){
- if test "$(machine)" = storcenter ; then
- sed -n 's!^mtd\([0-9][0-9]*\):[^"]*"'"$1"'"$!/dev/mtdblock/\1!p' /proc/mtd
- else
sed -n 's!^mtd\([0-9][0-9]*\):[^"]*"'"$1"'"$!/dev/mtdblock\1!p' /proc/mtd
- fi
}
#
# mtsize "name"
diff --git a/packages/openprotium-init/files/initscripts/zleds b/packages/openprotium-init/files/initscripts/zleds
new file mode 100644
index 0000000000..37adb8490e
--- /dev/null
+++ b/packages/openprotium-init/files/initscripts/zleds
@@ -0,0 +1,29 @@
+#!/bin/sh
+#
+# This script is executed at the start and end of each run-level
+# transition. It is the first 'stop' script and the last 'start'
+# script.
+#
+# 'stop' indicates the start of a runlevel change
+# 'start' at the end of the runlevel change - we are in the new
+# runlevel.
+#
+# state outputs 'system', 'user' etc according the the nature of
+# the runlevel it is passed (the *new* runlevel is used).
+state(){
+ case "$1" in
+ S|N) echo system;;
+ 0|6) echo shutdown;;
+ 1) echo singleuser;;
+ 2|3|4|5) echo user;;
+ *) echo "led change: $runlevel: runlevel unknown" >&2
+ echo system;;
+ esac
+}
+
+case "$1" in
+start) scc -l blue -f auto;;
+stop) scc -l redflash;;
+*) echo "led change: $1: command ignored" >&2
+ ;;
+esac
diff --git a/packages/openprotium-init/openprotium-init_0.10.bb b/packages/openprotium-init/openprotium-init_0.10.bb
index 92c9d789cb..f8facbb36f 100644
--- a/packages/openprotium-init/openprotium-init_0.10.bb
+++ b/packages/openprotium-init/openprotium-init_0.10.bb
@@ -19,6 +19,7 @@ SRC_URI = "file://boot/flash \
file://initscripts/sysconfsetup \
file://initscripts/umountinitrd.sh \
file://initscripts/loadmodules.sh \
+ file://initscripts/zleds \
file://functions \
file://modulefunctions \
file://conffiles \
@@ -35,7 +36,7 @@ SCRIPTS = "turnup reflash sysconf"
BOOTSCRIPTS = "flash disk nfs network udhcpc.script"
INITSCRIPTS = "syslog.buffer syslog.file syslog.network \
rmrecovery sysconfsetup umountinitrd.sh \
- fixfstab loadmodules.sh"
+ fixfstab loadmodules.sh zleds"
# This just makes things easier...
@@ -129,6 +130,8 @@ pkg_postinst_openprotium-init() {
update-rc.d $opt syslog.file start 39 S . start 47 0 6 .
update-rc.d $opt syslog.network start 44 S . start 39 0 6 .
update-rc.d $opt rmrecovery start 99 1 2 3 4 5 .
+ update-rc.d $opt zleds start 99 1 2 3 4 5 . stop 5 0 1 2 3 4 5 6 .
+
}
pkg_postrm_openprotium-init() {
diff --git a/packages/sccd/files/scc.h b/packages/sccd/files/scc.h
index 611092fd9c..b920791f66 100644
--- a/packages/sccd/files/scc.h
+++ b/packages/sccd/files/scc.h
@@ -33,7 +33,7 @@
*/
#define SCC_PIDFILE "/var/run/sccd.pid"
-#define SCC_DEVICE "/dev/tts/1"
+#define SCC_DEVICE "/dev/ttyS1"
#define SCC_SOCKET "/dev/sccd"
#define SCC_PACKETLEN 8
diff --git a/packages/sccd/sccd_1.0.bb b/packages/sccd/sccd_1.0.bb
index 5eeaeef343..bf25fbe90c 100644
--- a/packages/sccd/sccd_1.0.bb
+++ b/packages/sccd/sccd_1.0.bb
@@ -1,7 +1,7 @@
-DECSCRIPTION = "StorCenter Control Daemon - controls the leds, fans, softpower"
+DECSCRIPTION = "StorCenter Control Daemon controls leds, fans, softpower"
SECTION = "utils"
LICENSE = "BSD"
-PR = "r3"
+PR = "r4"
SRC_URI = "file://scc.h \
file://scc.c \
@@ -14,7 +14,7 @@ SRC_URI = "file://scc.h \
inherit autotools update-rc.d
-INITSCRIPT_PARAMS = "defaults 91 20"
+INITSCRIPT_PARAMS = "defaults 9 9"
INITSCRIPT_NAME = "sccd"
do_unpack() {
diff --git a/packages/tasks/task-openprotium.bb b/packages/tasks/task-openprotium.bb
new file mode 100644
index 0000000000..4c5d762f8f
--- /dev/null
+++ b/packages/tasks/task-openprotium.bb
@@ -0,0 +1,52 @@
+DESCRIPTION = "Basic image for openprotium"
+HOMEPAGE = "http://www.openprotium.org"
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+ALLOW_EMPTY = "1"
+PR = "r1"
+
+inherit task
+
+# be sure to build the kernel:
+DEPENDS = "virtual/kernel"
+
+# always make this one for testing.
+DISTRO_KERNEL_MODULES = "kernel-module-dummy"
+# do we still need this?
+DISTRO_KERNEL_MODULES += "kernel-module-af-packet"
+# unused for now
+#DISTRO_KERNEL_MODULES += "kernel-module-netconsole"
+
+# these are listed separately because the are not needed
+# for boot, but are needed by reflash, etc.
+DISTRO_EXTRA_RDEPENDS += "diffutils cpio findutils"
+
+# pick up the fw_set/get env utils.
+DISTRO_EXTRA_RDEPENDS += "u-boot-utils"
+
+RDEPENDS = " kernel \
+ base-files \
+ base-passwd \
+ netbase \
+ busybox \
+ openprotium-init \
+ initscripts-openprotium \
+ update-modules \
+ module-init-tools \
+ modutils-initscripts \
+ ipkg-collateral ipkg ipkg-link \
+ portmap \
+ e2fsprogs-blkid \
+ mdadm \
+ hdparm \
+ mtd-utils \
+ ${DISTRO_SSH_DAEMON} \
+ ${DISTRO_DEV_MANAGER} \
+ ${DISTRO_INIT_MANAGER} \
+ ${DISTRO_LOGIN_MANAGER} \
+ ${DISTRO_KERNEL_MODULES} \
+ ${MACHINE_EXTRA_RDEPENDS} \
+ ${DISTRO_EXTRA_RDEPENDS} "
+
+RRECOMMENDS += " \
+ ${DISTRO_EXTRA_RRECOMMENDS} \
+ ${MACHINE_EXTRA_RRECOMMENDS}"