From f5e17942f21d5d57bdce7df8ed7ea0d66d6d5718 Mon Sep 17 00:00:00 2001
From: Kevin Mihelich <kevin@plugapps.com>
Date: Thu, 2 Feb 2012 21:41:30 -0500
Subject: [PATCH] core/linux to 3.1.10-2

---
 core/linux/PKGBUILD           |   6 +-
 core/linux/archlinuxarm.patch | 204 +++++++++++++++++++++++++++++++++-
 core/linux/config             |   3 +-
 core/linux/linux.install      |   2 +-
 4 files changed, 206 insertions(+), 9 deletions(-)

diff --git a/core/linux/PKGBUILD b/core/linux/PKGBUILD
index 284d49f5b..f982017fe 100644
--- a/core/linux/PKGBUILD
+++ b/core/linux/PKGBUILD
@@ -10,7 +10,7 @@ pkgname=('linux' 'linux-headers')
 _kernelname=${pkgname#linux}
 _basekernel=3.1
 pkgver=${_basekernel}.10
-pkgrel=1
+pkgrel=2
 arch=('arm')
 url="http://www.kernel.org/"
 license=('GPL2')
@@ -30,13 +30,13 @@ source=("ftp://ftp.kernel.org/pub/linux/kernel/v3.x/linux-${_basekernel}.tar.bz2
         'usb-add-reset-resume-quirk-for-several-webcams.patch')
 md5sums=('8d43453f8159b2332ad410b19d86a931'
          'a8e1c25a93a685ec2a1c3a808715fe9d'
-         '7f3ec25d5ab2e368a05376d59e400850'
+         'f7b581e728911995dee392c11fd2b2fd'
          'f5d3635da03cb45904bedd69b47133de'
          '3f64ed9d71499fe9293dc671f4e4087e'
          '29628745258df910abfb8cb24ca3ccd9'
          'c9e6e8bb0774a89f7f9bd30a13be7532'
          '55b04499a4578e586cf5a4d0b69fc5aa'
-         '1bc999c824910b5eab108a48e75302ad'
+         'e9c48e4c43e1044122bc4832dcbe065c'
          'ca6fec585152e0488ee04bc0b311ecf3'
          '9d3c56a4b999c8bfbd4018089a62f662'
          'd00814b57448895e65fbbc800e8a58ba')
diff --git a/core/linux/archlinuxarm.patch b/core/linux/archlinuxarm.patch
index 9e4f99e6c..39efa7b44 100644
--- a/core/linux/archlinuxarm.patch
+++ b/core/linux/archlinuxarm.patch
@@ -600,8 +600,8 @@ diff -urN a/arch/arm/mach-kirkwood/iconnect-setup.c b/arch/arm/mach-kirkwood/ico
 +MACHINE_END
 diff -urN a/arch/arm/mach-kirkwood/Kconfig b/arch/arm/mach-kirkwood/Kconfig
 --- a/arch/arm/mach-kirkwood/Kconfig	2011-10-24 07:10:05.000000000 +0000
-+++ b/arch/arm/mach-kirkwood/Kconfig	2012-01-29 18:11:29.007972046 +0000
-@@ -64,6 +64,36 @@
++++ b/arch/arm/mach-kirkwood/Kconfig	2012-01-31 01:24:44.229451005 +0000
+@@ -64,6 +64,42 @@
  	  Say 'Y' here if you want your kernel to support the
  	  Seagate FreeAgent DockStar.
  
@@ -634,14 +634,20 @@ diff -urN a/arch/arm/mach-kirkwood/Kconfig b/arch/arm/mach-kirkwood/Kconfig
 +	help
 +	  Say 'Y' here if you want your kernel to support the
 +	  CloudEngines Pogoplug e02.
++
++config MACH_NAS6210
++	bool "RaidSonic ICY BOX IB-NAS6210"
++	help
++	  Say 'Y' here if you want your kernel to support the
++	  RaidSonic ICY BOX IB-NAS6210 device.
 +
  config MACH_OPENRD
          bool
  
 diff -urN a/arch/arm/mach-kirkwood/Makefile b/arch/arm/mach-kirkwood/Makefile
 --- a/arch/arm/mach-kirkwood/Makefile	2011-10-24 07:10:05.000000000 +0000
-+++ b/arch/arm/mach-kirkwood/Makefile	2012-01-29 18:11:44.610037721 +0000
-@@ -8,6 +8,11 @@
++++ b/arch/arm/mach-kirkwood/Makefile	2012-01-31 01:24:14.197201753 +0000
+@@ -8,6 +8,12 @@
  obj-$(CONFIG_MACH_ESATA_SHEEVAPLUG)	+= sheevaplug-setup.o
  obj-$(CONFIG_MACH_GURUPLUG)		+= guruplug-setup.o
  obj-$(CONFIG_MACH_DOCKSTAR)		+= dockstar-setup.o
@@ -650,6 +656,7 @@ diff -urN a/arch/arm/mach-kirkwood/Makefile b/arch/arm/mach-kirkwood/Makefile
 +obj-$(CONFIG_MACH_ICONNECT)		+= iconnect-setup.o
 +obj-$(CONFIG_MACH_POGOPLUGV4)		+= pogoplugv4-setup.o
 +obj-$(CONFIG_MACH_POGO_E02)		+= pogo_e02-setup.o
++obj-$(CONFIG_MACH_NAS6210)		+= nas6210-setup.o
  obj-$(CONFIG_MACH_TS219)		+= ts219-setup.o tsx1x-common.o
  obj-$(CONFIG_MACH_TS41X)		+= ts41x-setup.o tsx1x-common.o
  obj-$(CONFIG_MACH_OPENRD)		+= openrd-setup.o
@@ -664,6 +671,195 @@ diff -urN a/arch/arm/mach-kirkwood/mpp.h b/arch/arm/mach-kirkwood/mpp.h
  #define MPP12_SD_CLK		MPP( 12, 0x1, 0, 1, 1,   1,   1,   1,   1 )
  #define MPP12_AU_SPDIF0		MPP( 12, 0xa, 0, 1, 0,   0,   0,   0,   1 )
  #define MPP12_SPI_MOSI		MPP( 12, 0xb, 0, 1, 0,   0,   0,   0,   1 )
+diff -urN a/arch/arm/mach-kirkwood/nas6210-setup.c b/arch/arm/mach-kirkwood/nas6210-setup.c
+--- a/arch/arm/mach-kirkwood/nas6210-setup.c	1970-01-01 00:00:00.000000000 +0000
++++ b/arch/arm/mach-kirkwood/nas6210-setup.c	2012-01-31 01:28:32.440124460 +0000
+@@ -0,0 +1,185 @@
++/*
++ * arch/arm/mach-kirkwood/nas6210-setup.c
++ *
++ * Raidsonic ICYBOX NAS6210 Board Setup
++ *
++ * 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.
++ */
++
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
++#include <linux/mtd/partitions.h>
++#include <linux/ata_platform.h>
++#include <linux/mv643xx_eth.h>
++#include <linux/gpio.h>
++#include <linux/gpio_keys.h>
++#include <linux/input.h>
++#include <linux/leds.h>
++#include <asm/mach-types.h>
++#include <asm/mach/arch.h>
++#include <mach/kirkwood.h>
++#include "common.h"
++#include "mpp.h"
++
++#define NAS6210_GPIO_POWER_OFF	24
++
++static struct mtd_partition nas6210_nand_parts[] = {
++	{
++		.name = "u-boot",
++		.offset = 0,
++		.size = SZ_1M
++	}, {
++		.name = "uImage",
++		.offset = MTDPART_OFS_NXTBLK,
++		.size = 6*SZ_1M
++	}, {
++		.name = "root",
++		.offset = MTDPART_OFS_NXTBLK,
++		.size = MTDPART_SIZ_FULL
++	},
++};
++
++static struct mv643xx_eth_platform_data nas6210_ge00_data = {
++	.phy_addr	= MV643XX_ETH_PHY_ADDR(8),
++};
++
++static struct mv_sata_platform_data nas6210_sata_data = {
++	.n_ports	= 2,
++};
++
++static struct gpio_led nas6210_led_pins[] = {
++	{
++		.name			= "status:green:power",
++		.default_trigger	= "default-on",
++		.gpio			= 25,
++		.active_low		= 0,
++	},
++	{
++		.name			= "status:red:power",
++		.default_trigger	= "none",
++		.gpio			= 22,
++		.active_low		= 0,
++	},
++	{
++		.name			= "status:red:usb_copy",
++		.default_trigger	= "none",
++		.gpio			= 27,
++		.active_low		= 0,
++	},
++};
++
++static struct gpio_led_platform_data nas6210_led_data = {
++	.leds		= nas6210_led_pins,
++	.num_leds	= ARRAY_SIZE(nas6210_led_pins),
++};
++
++static struct platform_device nas6210_leds = {
++	.name	= "leds-gpio",
++	.id	= -1,
++	.dev	= {
++		.platform_data	= &nas6210_led_data,
++	}
++};
++
++static struct gpio_keys_button nas6210_buttons[] = {
++	{
++		.code		= KEY_COPY,
++		.gpio		= 29,
++		.desc		= "USB Copy",
++		.active_low	= 1,
++	},
++	{
++		.code		= KEY_RESTART,
++		.gpio		= 28,
++		.desc		= "Reset",
++		.active_low	= 1,
++	},
++};
++
++static struct gpio_keys_platform_data nas6210_button_data = {
++	.buttons	= nas6210_buttons,
++	.nbuttons	= ARRAY_SIZE(nas6210_buttons),
++};
++
++static struct platform_device nas6210_button_device = {
++	.name		= "gpio-keys",
++	.id		= -1,
++	.num_resources	= 0,
++	.dev		= {
++		.platform_data	= &nas6210_button_data,
++	}
++};
++
++static unsigned int nas6210_mpp_config[] __initdata = {
++	MPP0_NF_IO2,
++	MPP1_NF_IO3,
++	MPP2_NF_IO4,
++	MPP3_NF_IO5,
++	MPP4_NF_IO6,
++	MPP5_NF_IO7,
++	MPP18_NF_IO0,
++	MPP19_NF_IO1,
++ 	MPP22_GPIO,	/* Power LED red */
++	MPP24_GPIO,	/* Power off device */
++	MPP25_GPIO,	/* Power LED green */
++	MPP27_GPIO,	/* USB transfer LED */
++	MPP28_GPIO,	/* Reset button */
++	MPP29_GPIO,	/* USB Copy button */
++	0
++};
++
++static void nas6210_power_off(void)
++{
++	gpio_set_value(NAS6210_GPIO_POWER_OFF, 1);
++}
++
++static void __init nas6210_init(void)
++{
++	/*
++	 * Basic setup. Needs to be called early.
++	 */
++	kirkwood_init();
++	kirkwood_mpp_conf(nas6210_mpp_config);
++
++	kirkwood_nand_init(ARRAY_AND_SIZE(nas6210_nand_parts), 25);
++	kirkwood_ehci_init();
++	kirkwood_ge00_init(&nas6210_ge00_data);
++	kirkwood_sata_init(&nas6210_sata_data);
++	kirkwood_uart0_init();
++	platform_device_register(&nas6210_leds);
++	platform_device_register(&nas6210_button_device);
++	if (gpio_request(NAS6210_GPIO_POWER_OFF, "power-off") == 0 &&
++	    gpio_direction_output(NAS6210_GPIO_POWER_OFF, 0) == 0)
++		pm_power_off = nas6210_power_off;
++	else
++		pr_err("nas6210: failed to configure power-off GPIO\n");
++}
++
++static int __init nas6210_pci_init(void)
++{
++	if (machine_is_nas6210()) {
++		u32 dev, rev;
++ 
++		kirkwood_pcie_id(&dev, &rev);
++		if (dev == MV88F6282_DEV_ID)
++			kirkwood_pcie_init(KW_PCIE1 | KW_PCIE0);
++		else
++			kirkwood_pcie_init(KW_PCIE0);
++	}
++
++	return 0;
++}
++subsys_initcall(nas6210_pci_init);
++
++MACHINE_START(NAS6210, "RaidSonic ICY BOX IB-NAS6210")
++	/* Maintainer: <gmbnomis at gmail dot com> */
++	.boot_params	= 0x00000100,
++	.init_machine	= nas6210_init,
++	.map_io		= kirkwood_map_io,
++	.init_early	= kirkwood_init_early,
++	.init_irq	= kirkwood_init_irq,
++	.timer		= &kirkwood_timer,
++MACHINE_END
 diff -urN a/arch/arm/mach-kirkwood/pogo_e02-setup.c b/arch/arm/mach-kirkwood/pogo_e02-setup.c
 --- a/arch/arm/mach-kirkwood/pogo_e02-setup.c	1970-01-01 00:00:00.000000000 +0000
 +++ b/arch/arm/mach-kirkwood/pogo_e02-setup.c	2012-01-29 18:56:18.062423780 +0000
diff --git a/core/linux/config b/core/linux/config
index 287c472ec..3975dd10c 100644
--- a/core/linux/config
+++ b/core/linux/config
@@ -287,6 +287,7 @@ CONFIG_MACH_GOFLEXHOME=y
 CONFIG_MACH_ICONNECT=y
 CONFIG_MACH_POGOPLUGV4=y
 CONFIG_MACH_POGO_E02=y
+CONFIG_MACH_NAS6210=y
 CONFIG_MACH_OPENRD=y
 CONFIG_MACH_OPENRD_BASE=y
 CONFIG_MACH_OPENRD_CLIENT=y
@@ -3136,7 +3137,7 @@ CONFIG_DMA_ENGINE=y
 #
 # DMA Clients
 #
-CONFIG_NET_DMA=y
+# CONFIG_NET_DMA is not set
 CONFIG_ASYNC_TX_DMA=y
 # CONFIG_DMATEST is not set
 # CONFIG_AUXDISPLAY is not set
diff --git a/core/linux/linux.install b/core/linux/linux.install
index 76ed7e233..a65a9c876 100644
--- a/core/linux/linux.install
+++ b/core/linux/linux.install
@@ -2,7 +2,7 @@
 # arg 2:  the old package version
 
 KERNEL_NAME=
-KERNEL_VERSION=3.1.10-1-ARCH
+KERNEL_VERSION=3.1.10-2-ARCH
 
 post_install () {
   # updating module dependencies