core/linux-kirkwood fix nsa310 support

This commit is contained in:
moonman 2013-05-18 03:26:21 -06:00
parent 32b61c1f5d
commit db85d96ff3
3 changed files with 357 additions and 297 deletions

View file

@ -9,7 +9,7 @@ pkgname=('linux-kirkwood' 'linux-headers-kirkwood')
_kernelname=${pkgname#linux}
_basekernel=3.9.2
pkgver=${_basekernel}
pkgrel=1
pkgrel=2
cryptover=1.6
bfqver=v6r1
arch=('arm')
@ -30,9 +30,9 @@ source=("ftp://ftp.kernel.org/pub/linux/kernel/v3.x/linux-${_basekernel}.tar.bz2
'aufs3-3.9.patch.xz')
md5sums=('661100fdf8a633f53991684b555373ba'
'ae6b481fcd630df6affcef18327d30da'
'a47687b9b52ec74bf833851b918fa8b5'
'f5d3635da03cb45904bedd69b47133de'
'b515ad1ddce3bdeede46f18735c2b82f'
'd699018dcf0cd8850743daa605c7ab66'
'73e81c21600fe1bab1baffa537bb3dbe'
'80b2fb500e6811495c6b072d7e6fd112'
'9b5a265440abf57d2052838f31486a3a'

View file

@ -1,5 +1,5 @@
diff -ruN a/arch/arm/boot/dts/kirkwood-ts219.dtsi b/arch/arm/boot/dts/kirkwood-ts219.dtsi
--- a/arch/arm/boot/dts/kirkwood-ts219.dtsi 2013-05-07 21:58:03.000000000 -0600
--- a/arch/arm/boot/dts/kirkwood-ts219.dtsi 2013-05-11 08:19:28.000000000 -0600
+++ b/arch/arm/boot/dts/kirkwood-ts219.dtsi 1969-12-31 17:00:00.000000000 -0700
@@ -1,78 +0,0 @@
-/include/ "kirkwood.dtsi"
@ -81,8 +81,8 @@ diff -ruN a/arch/arm/boot/dts/kirkwood-ts219.dtsi b/arch/arm/boot/dts/kirkwood-t
- };
-};
diff -ruN a/arch/arm/mach-kirkwood/common.h b/arch/arm/mach-kirkwood/common.h
--- a/arch/arm/mach-kirkwood/common.h 2013-05-07 21:58:03.000000000 -0600
+++ b/arch/arm/mach-kirkwood/common.h 2013-05-08 23:05:13.000000000 -0600
--- a/arch/arm/mach-kirkwood/common.h 2013-05-11 08:19:28.000000000 -0600
+++ b/arch/arm/mach-kirkwood/common.h 2013-05-17 23:35:46.000000000 -0600
@@ -77,12 +77,6 @@
static inline void dnskw_init(void) {};
#endif
@ -110,8 +110,8 @@ diff -ruN a/arch/arm/mach-kirkwood/common.h b/arch/arm/mach-kirkwood/common.h
void lsxl_init(void);
#else
diff -ruN a/arch/arm/mach-kirkwood/dockstar-setup.c b/arch/arm/mach-kirkwood/dockstar-setup.c
--- a/arch/arm/mach-kirkwood/dockstar-setup.c 2013-05-07 21:58:03.000000000 -0600
+++ b/arch/arm/mach-kirkwood/dockstar-setup.c 2013-05-08 23:05:13.000000000 -0600
--- a/arch/arm/mach-kirkwood/dockstar-setup.c 2013-05-11 08:19:28.000000000 -0600
+++ b/arch/arm/mach-kirkwood/dockstar-setup.c 2013-05-17 23:35:46.000000000 -0600
@@ -28,6 +28,10 @@
.offset = 0,
.size = SZ_1M
@ -157,7 +157,7 @@ diff -ruN a/arch/arm/mach-kirkwood/dockstar-setup.c b/arch/arm/mach-kirkwood/doc
diff -ruN a/arch/arm/mach-kirkwood/goflexhome-setup.c b/arch/arm/mach-kirkwood/goflexhome-setup.c
--- a/arch/arm/mach-kirkwood/goflexhome-setup.c 1969-12-31 17:00:00.000000000 -0700
+++ b/arch/arm/mach-kirkwood/goflexhome-setup.c 2013-05-08 23:05:13.000000000 -0600
+++ b/arch/arm/mach-kirkwood/goflexhome-setup.c 2013-05-17 23:35:46.000000000 -0600
@@ -0,0 +1,124 @@
+/*
+ * arch/arm/mach-kirkwood/goflexhome-setup.c
@ -285,7 +285,7 @@ diff -ruN a/arch/arm/mach-kirkwood/goflexhome-setup.c b/arch/arm/mach-kirkwood/g
+
diff -ruN a/arch/arm/mach-kirkwood/goflexnet-setup.c b/arch/arm/mach-kirkwood/goflexnet-setup.c
--- a/arch/arm/mach-kirkwood/goflexnet-setup.c 1969-12-31 17:00:00.000000000 -0700
+++ b/arch/arm/mach-kirkwood/goflexnet-setup.c 2013-05-08 23:05:13.000000000 -0600
+++ b/arch/arm/mach-kirkwood/goflexnet-setup.c 2013-05-17 23:35:46.000000000 -0600
@@ -0,0 +1,177 @@
+/*
+ * arch/arm/mach-kirkwood/goflexnet-setup.c
@ -465,8 +465,8 @@ diff -ruN a/arch/arm/mach-kirkwood/goflexnet-setup.c b/arch/arm/mach-kirkwood/go
+MACHINE_END
+
diff -ruN a/arch/arm/mach-kirkwood/guruplug-setup.c b/arch/arm/mach-kirkwood/guruplug-setup.c
--- a/arch/arm/mach-kirkwood/guruplug-setup.c 2013-05-07 21:58:03.000000000 -0600
+++ b/arch/arm/mach-kirkwood/guruplug-setup.c 2013-05-08 23:05:13.000000000 -0600
--- a/arch/arm/mach-kirkwood/guruplug-setup.c 2013-05-11 08:19:28.000000000 -0600
+++ b/arch/arm/mach-kirkwood/guruplug-setup.c 2013-05-17 23:35:46.000000000 -0600
@@ -59,22 +59,24 @@
static struct gpio_led guruplug_led_pins[] = {
@ -498,7 +498,7 @@ diff -ruN a/arch/arm/mach-kirkwood/guruplug-setup.c b/arch/arm/mach-kirkwood/gur
},
diff -ruN a/arch/arm/mach-kirkwood/iconnect-setup.c b/arch/arm/mach-kirkwood/iconnect-setup.c
--- a/arch/arm/mach-kirkwood/iconnect-setup.c 1969-12-31 17:00:00.000000000 -0700
+++ b/arch/arm/mach-kirkwood/iconnect-setup.c 2013-05-08 23:05:13.000000000 -0600
+++ b/arch/arm/mach-kirkwood/iconnect-setup.c 2013-05-17 23:35:46.000000000 -0600
@@ -0,0 +1,204 @@
+/*
+ * arch/arm/mach-kirkwood/iconnect-setup.c
@ -706,7 +706,7 @@ diff -ruN a/arch/arm/mach-kirkwood/iconnect-setup.c b/arch/arm/mach-kirkwood/ico
+MACHINE_END
diff -ruN a/arch/arm/mach-kirkwood/ionics-stratus-setup.c b/arch/arm/mach-kirkwood/ionics-stratus-setup.c
--- a/arch/arm/mach-kirkwood/ionics-stratus-setup.c 1969-12-31 17:00:00.000000000 -0700
+++ b/arch/arm/mach-kirkwood/ionics-stratus-setup.c 2013-05-08 23:05:13.000000000 -0600
+++ b/arch/arm/mach-kirkwood/ionics-stratus-setup.c 2013-05-17 23:35:46.000000000 -0600
@@ -0,0 +1,137 @@
+/*
+ * arch/arm/mach-kirkwood/ionics-stratus-setup.c
@ -846,8 +846,8 @@ diff -ruN a/arch/arm/mach-kirkwood/ionics-stratus-setup.c b/arch/arm/mach-kirkwo
+ .restart = kirkwood_restart,
+MACHINE_END
diff -ruN a/arch/arm/mach-kirkwood/Kconfig b/arch/arm/mach-kirkwood/Kconfig
--- a/arch/arm/mach-kirkwood/Kconfig 2013-05-07 21:58:03.000000000 -0600
+++ b/arch/arm/mach-kirkwood/Kconfig 2013-05-08 23:05:13.000000000 -0600
--- a/arch/arm/mach-kirkwood/Kconfig 2013-05-11 08:19:28.000000000 -0600
+++ b/arch/arm/mach-kirkwood/Kconfig 2013-05-17 23:35:46.000000000 -0600
@@ -72,12 +72,6 @@
Say 'Y' here if you want your kernel to support the
Marvell DreamPlug (Flattened Device Tree).
@ -971,8 +971,8 @@ diff -ruN a/arch/arm/mach-kirkwood/Kconfig b/arch/arm/mach-kirkwood/Kconfig
endif
diff -ruN a/arch/arm/mach-kirkwood/Makefile b/arch/arm/mach-kirkwood/Makefile
--- a/arch/arm/mach-kirkwood/Makefile 2013-05-07 21:58:03.000000000 -0600
+++ b/arch/arm/mach-kirkwood/Makefile 2013-05-08 23:05:14.000000000 -0600
--- a/arch/arm/mach-kirkwood/Makefile 2013-05-11 08:19:28.000000000 -0600
+++ b/arch/arm/mach-kirkwood/Makefile 2013-05-17 23:35:46.000000000 -0600
@@ -8,6 +8,14 @@
obj-$(CONFIG_MACH_ESATA_SHEEVAPLUG) += sheevaplug-setup.o
obj-$(CONFIG_MACH_GURUPLUG) += guruplug-setup.o
@ -1017,7 +1017,7 @@ diff -ruN a/arch/arm/mach-kirkwood/Makefile b/arch/arm/mach-kirkwood/Makefile
obj-$(CONFIG_MACH_TOPKICK_DT) += board-usi_topkick.o
diff -ruN a/arch/arm/mach-kirkwood/nas6210-setup.c b/arch/arm/mach-kirkwood/nas6210-setup.c
--- a/arch/arm/mach-kirkwood/nas6210-setup.c 1969-12-31 17:00:00.000000000 -0700
+++ b/arch/arm/mach-kirkwood/nas6210-setup.c 2013-05-08 23:05:14.000000000 -0600
+++ b/arch/arm/mach-kirkwood/nas6210-setup.c 2013-05-17 23:35:46.000000000 -0600
@@ -0,0 +1,186 @@
+/*
+ * arch/arm/mach-kirkwood/nas6210-setup.c
@ -1207,12 +1207,12 @@ diff -ruN a/arch/arm/mach-kirkwood/nas6210-setup.c b/arch/arm/mach-kirkwood/nas6
+MACHINE_END
diff -ruN a/arch/arm/mach-kirkwood/nsa310-setup.c b/arch/arm/mach-kirkwood/nsa310-setup.c
--- a/arch/arm/mach-kirkwood/nsa310-setup.c 1969-12-31 17:00:00.000000000 -0700
+++ b/arch/arm/mach-kirkwood/nsa310-setup.c 2013-05-08 23:05:14.000000000 -0600
@@ -0,0 +1,299 @@
+++ b/arch/arm/mach-kirkwood/nsa310-setup.c 2013-05-17 23:37:56.000000000 -0600
@@ -0,0 +1,359 @@
+/*
+ * arch/arm/mach-kirkwood/nsa310-setup.c
+ *
+ * ZyXEL NSA310 1-Bay Power Media Server Setup
+ * Zyxel NSA-310 Setup, by AA666 and Peeter123
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2. This program is licensed "as is" without any
@ -1221,296 +1221,356 @@ diff -ruN a/arch/arm/mach-kirkwood/nsa310-setup.c b/arch/arm/mach-kirkwood/nsa31
+
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/input.h>
+#include <linux/delay.h>
+#include <linux/platform_device.h>
+#include <linux/mtd/nand.h>
+#include <linux/i2c.h>
+#include <linux/irq.h>
+#include <linux/mtd/partitions.h>
+#include <mtd/mtd-abi.h>
+#include <linux/ata_platform.h>
+#include <linux/mv643xx_eth.h>
+#include <linux/ethtool.h> /* for SPEED_1000, DUPLEX_FULL */
+#include <linux/i2c.h>
+#include <linux/mv643xx_i2c.h>
+#include <linux/ethtool.h>
+#include <linux/gpio.h>
+#include <linux/gpio_keys.h>
+#include <linux/leds.h>
+#include <linux/input.h>
+#include <linux/nsa3xx-hwmon.h>
+#include <asm/mach-types.h>
+#include <asm/mach/arch.h>
+#include <mach/kirkwood.h>
+#include <linux/platform_data/mmc-mvsdio.h>
+#include <plat/orion-gpio.h>
+#include "common.h"
+#include "mpp.h"
+#include <linux/timer.h>
+#include <linux/jiffies.h>
+
+static void nsa310_timerfunc(unsigned long data);
+static DEFINE_TIMER(timer, nsa310_timerfunc, 0, 0);
+
+static struct mtd_partition nsa310_nand_parts[] = {
+ {
+ .name = "uboot",
+ .offset = 0,
+ .size = SZ_1M,
+ .mask_flags = MTD_WRITEABLE
+ }, {
+ .name = "uboot_env",
+ .offset = MTDPART_OFS_NXTBLK,
+ .size = SZ_512K
+ }, {
+ .name = "key_store",
+ .offset = MTDPART_OFS_NXTBLK,
+ .size = SZ_512K
+ }, {
+ .name = "info",
+ .offset = MTDPART_OFS_NXTBLK,
+ .size = SZ_512K
+ }, {
+ .name = "etc",
+ .offset = MTDPART_OFS_NXTBLK,
+ .size = 10 * SZ_1M
+ }, {
+ .name = "kernel_1",
+ .offset = MTDPART_OFS_NXTBLK,
+ .size = 10 * SZ_1M
+ }, {
+ .name = "rootfs1",
+ .offset = MTDPART_OFS_NXTBLK,
+ .size = 48 * SZ_1M - SZ_256K
+ }, {
+ .name = "kernel_2",
+ .offset = MTDPART_OFS_NXTBLK,
+ .size = 10 * SZ_1M
+ }, {
+ .name = "rootfs2",
+ .offset = MTDPART_OFS_NXTBLK,
+ .size = 48 * SZ_1M - SZ_256K
+ },
+ {
+ .name = "uboot",
+ .offset = 0,
+ .size = 0x100000,
+ .mask_flags = MTD_WRITEABLE
+ }, {
+ .name = "uboot_env",
+ .offset = MTDPART_OFS_NXTBLK,
+ .size = 0x80000
+ }, {
+ .name = "key_store",
+ .offset = MTDPART_OFS_NXTBLK,
+ .size = 0x80000
+ }, {
+ .name = "info",
+ .offset = MTDPART_OFS_NXTBLK,
+ .size = 0x80000
+ }, {
+ .name = "etc",
+ .offset = MTDPART_OFS_NXTBLK,
+ .size = 0xA00000
+ }, {
+ .name = "kernel_1",
+ .offset = MTDPART_OFS_NXTBLK,
+ .size = 0xA00000
+ }, {
+ .name = "rootfs1",
+ .offset = MTDPART_OFS_NXTBLK,
+ .size = 0x2FC0000
+ }, {
+ .name = "kernel_2",
+ .offset = MTDPART_OFS_NXTBLK,
+ .size = 0xA00000
+ }, {
+ .name = "rootfs2",
+ .offset = MTDPART_OFS_NXTBLK,
+ .size = 0x2FC0000
+ },
+};
+
+static struct i2c_board_info __initdata nsa310_i2c_rtc = {
+ I2C_BOARD_INFO("pcf8563", 0x51),
+};
+
+static struct mv643xx_eth_platform_data nsa310_ge00_data = {
+ .phy_addr = MV643XX_ETH_PHY_ADDR(0),
+ .speed = SPEED_1000,
+ .duplex = DUPLEX_FULL,
+};
+
+static struct mv_sata_platform_data nsa310_sata_data = {
+ .n_ports = 2,
+};
+
+static struct gpio_keys_button nsa310_button_pins[] = {
+ {
+ .code = KEY_RESTART,
+ .gpio = 36,
+ .desc = "Reset",
+ .active_low = 1,
+ }, {
+ .code = KEY_COPY,
+ .gpio = 37,
+ .desc = "Copy",
+ .active_low = 1,
+ }, {
+ .code = KEY_POWER,
+ .gpio = 46,
+ .desc = "Power",
+ .active_low = 0,
+ },
+};
+
+static struct gpio_keys_platform_data nsa310_button_data = {
+ .buttons = nsa310_button_pins,
+ .nbuttons = ARRAY_SIZE(nsa310_button_pins),
+};
+
+static struct platform_device nsa310_buttons = {
+ .name = "gpio-keys",
+ .id = -1,
+ .num_resources = 0,
+ .dev = {
+ .platform_data = &nsa310_button_data,
+ },
+};
+
+static struct gpio_led nsa310_led_pins[] = {
+ {
+ .name = "nsa310:green:hdd2",
+ .default_trigger = "default-off",
+ .gpio = 12,
+ .active_low = 0,
+ }, {
+ .name = "nsa310:red:hdd2",
+ .default_trigger = "default-off",
+ .gpio = 13,
+ .active_low = 0,
+ }, {
+ .name = "nsa310:green:usb",
+ .default_trigger = "default-off",
+ .gpio = 15,
+ .active_low = 0,
+ }, {
+ .name = "nsa310:green:sys",
+ .default_trigger = "default-off",
+ .gpio = 28,
+ .active_low = 0,
+ }, {
+ .name = "nsa310:orange:sys",
+ .default_trigger = "default-on",
+ .gpio = 29,
+ .active_low = 0,
+ }, {
+ .name = "nsa310:green:copy",
+ .default_trigger = "default-off",
+ .gpio = 39,
+ .active_low = 0,
+ }, {
+ .name = "nsa310:red:copy",
+ .default_trigger = "default-off",
+ .gpio = 40,
+ .active_low = 0,
+ }, {
+ .name = "nsa310:green:hdd1",
+ .default_trigger = "default-off",
+ .gpio = 41,
+ .active_low = 0,
+ }, {
+ .name = "nsa310:red:hdd1",
+ .default_trigger = "default-off",
+ .gpio = 42,
+ .active_low = 0,
+ },
+};
+
+static struct gpio_led_platform_data nsa310_led_data = {
+ .leds = nsa310_led_pins,
+ .num_leds = ARRAY_SIZE(nsa310_led_pins),
+};
+
+static struct platform_device nsa310_leds = {
+ .name = "leds-gpio",
+ .id = -1,
+ .dev = {
+ .platform_data = &nsa310_led_data,
+ },
+};
+
+static struct nsa3xx_hwmon_platform_data nsa310_hwmon_data = {
+ /* GPIOs connected to Holtek HT46R065 MCU */
+ .act_pin = 17,
+ .clk_pin = 16,
+ .data_pin = 14,
+};
+
+static struct platform_device nsa310_hwmon = {
+ .name = "nsa3xx-hwmon",
+ .id = -1,
+ .num_resources = 0,
+ .dev = {
+ .platform_data = &nsa310_hwmon_data,
+ },
+ .n_ports = 2,
+};
+
+static unsigned int nsa310_mpp_config[] __initdata = {
+ MPP0_NF_IO2,
+ MPP1_NF_IO3,
+ MPP2_NF_IO4,
+ MPP3_NF_IO5,
+ MPP4_NF_IO6,
+ MPP5_NF_IO7,
+ MPP6_SYSRST_OUTn,
+ MPP7_GPO,
+ MPP8_TW0_SDA, /* PCF8563 RTC chip */
+ MPP9_TW0_SCK, /* connected to TWSI */
+ MPP10_UART0_TXD,
+ MPP11_UART0_RXD,
+ MPP12_GPO, /* HDD2 LED (green) */
+ MPP13_GPIO, /* HDD2 LED (red) */
+ MPP14_GPIO, /* MCU DATA pin (in) */
+ MPP15_GPIO, /* USB LED (green) */
+ MPP16_GPIO, /* MCU CLK pin (out) */
+ MPP17_GPIO, /* MCU ACT pin (out) */
+ MPP18_NF_IO0,
+ MPP19_NF_IO1,
+ MPP20_GPIO,
+ MPP21_GPIO, /* USB power */
+ MPP22_GPIO,
+ MPP23_GPIO,
+ MPP24_GPIO,
+ MPP25_GPIO,
+ MPP26_GPIO,
+ MPP27_GPIO,
+ MPP28_GPIO, /* SYS LED (green) */
+ MPP29_GPIO, /* SYS LED (orange) */
+ MPP30_GPIO,
+ MPP31_GPIO,
+ MPP32_GPIO,
+ MPP33_GPO,
+ MPP34_GPIO,
+ MPP35_GPIO,
+ MPP36_GPIO, /* reset button */
+ MPP37_GPIO, /* copy button */
+ MPP38_GPIO, /* VID B0 */
+ MPP39_GPIO, /* COPY LED (green) */
+ MPP40_GPIO, /* COPY LED (red) */
+ MPP41_GPIO, /* HDD1 LED (green) */
+ MPP42_GPIO, /* HDD1 LED (red) */
+ MPP43_GPIO, /* HTP pin */
+ MPP44_GPIO, /* buzzer */
+ MPP45_GPIO, /* VID B1 */
+ MPP46_GPIO, /* power button */
+ MPP47_GPIO, /* power resume data */
+ MPP48_GPIO, /* power off */
+ MPP49_GPIO, /* power resume clock */
+ 0
+ MPP36_GPIO, // Reset button
+ MPP37_GPIO, // Copy button
+ MPP46_GPIO, // Power button
+
+ MPP48_GPIO, // Power Off
+ MPP21_GPIO, // USB Power Off
+
+ MPP28_GPIO, // Sys LED Green
+ MPP29_GPIO, // Sys LED Yellow
+ MPP41_GPIO, // SATA1 LED Green
+ MPP42_GPIO, // SATA1 LED Red
+ MPP12_GPO, // SATA2 LED Green
+ MPP13_GPIO, // SATA2 LED Red
+ MPP39_GPIO, // Copy LED Green
+ MPP40_GPIO, // Copy LED Red
+ MPP15_GPIO, // USB LED Green
+
+ MPP14_GPIO, // MCU Data
+ MPP16_GPIO, // MCU Clk
+ MPP17_GPIO, // MCU Act
+
+ MPP38_GPIO, // VID B0
+ MPP45_GPIO, // VID B1
+
+ MPP44_GPIO, // Buzzer
+ MPP43_GPIO, // HTP
+
+ MPP47_GPIO, // Power Resume Data
+ MPP49_GPIO, // Power Resume Clock
+
+ 0
+};
+
+#define NSA310_GPIO_USB_POWER 21
+#define NSA310_GPIO_POWER_OFF 48
+static struct gpio_led nsa310_gpio_led[] = {
+ {
+ .name = "nsa310:green:System",
+ .default_trigger = "timer",
+ .gpio = 28,
+ .active_low = 0,
+
+ },
+ {
+ .name = "nsa310:red:System",
+ .default_trigger = "none",
+ .gpio = 29,
+ .active_low = 0,
+ },
+ {
+ .name = "nsa310:green:SATA1",
+ .default_trigger = "none",
+ .gpio = 41,
+ .active_low = 0,
+ },
+ {
+ .name = "nsa310:red:SATA1",
+ .default_trigger = "sata-disk",
+ .gpio = 42,
+ .active_low = 0,
+ },
+ {
+ .name = "nsa310:green:SATA2",
+ .default_trigger = "none",
+ .gpio = 12,
+ .active_low = 0,
+ },
+ {
+ .name = "nsa310:red:SATA2",
+ .default_trigger = "none",
+ .gpio = 13,
+ .active_low = 0,
+ },
+ {
+ .name = "nsa310:green:USB",
+ .default_trigger = "none",
+ .gpio = 15,
+ .active_low = 0,
+ },
+ {
+ .name = "nsa310:green:Copy",
+ .default_trigger = "none",
+ .gpio = 39,
+ .active_low = 0,
+ },
+ {
+ .name = "nsa310:red:Copy",
+ .default_trigger = "none",
+ .gpio = 40,
+ .active_low = 0,
+ },
+};
+
+
+static int nsa310_gpio_blink_set(unsigned gpio, int state,
+ unsigned long *delay_on, unsigned long *delay_off)
+{
+
+// Use hardware acceleration
+// if (delay_on && delay_off && !*delay_on && !*delay_off)
+// *delay_on = *delay_off = 100;
+
+ switch(state) {
+ case GPIO_LED_NO_BLINK_LOW:
+ case GPIO_LED_NO_BLINK_HIGH:
+ orion_gpio_set_blink(gpio, 0);
+ gpio_set_value(gpio, state);
+ break;
+ case GPIO_LED_BLINK:
+ orion_gpio_set_blink(gpio, 1);
+ break;
+ }
+ return 0;
+}
+
+
+static struct gpio_led_platform_data nsa310_led_data = {
+ .leds = nsa310_gpio_led,
+ .num_leds = ARRAY_SIZE(nsa310_gpio_led),
+ .gpio_blink_set = nsa310_gpio_blink_set,
+};
+
+static struct platform_device nsa310_leds = {
+ .name = "leds-gpio",
+ .id = -1,
+ .dev = { .platform_data = &nsa310_led_data, }
+};
+
+static struct gpio_keys_button nsa310_gpio_keys_button[] = {
+ {
+ .code = KEY_POWER,
+ .type = EV_KEY,
+ .gpio = 46,
+ .desc = "Power Button",
+ .active_low = 0,
+ .debounce_interval = 1000,
+ },
+ {
+ .code = KEY_COPY,
+ .type = EV_KEY,
+ .gpio = 37,
+ .desc = "USB Copy",
+ .active_low = 1,
+ .debounce_interval = 1000,
+ },
+ {
+ .code = KEY_OPTION,
+ .type = EV_KEY,
+ .gpio = 36,
+ .desc = "Reset",
+ .active_low = 1,
+ .debounce_interval = 1000,
+ },
+};
+
+static struct gpio_keys_platform_data nsa310_keys_data = {
+ .buttons = nsa310_gpio_keys_button,
+ .nbuttons = ARRAY_SIZE(nsa310_gpio_keys_button),
+};
+
+
+static struct platform_device nsa310_buttons = {
+ .name = "gpio-keys",
+ .id = -1,
+ .dev = { .platform_data = &nsa310_keys_data, }
+};
+
+static void nsa310_power_off(void)
+{
+ gpio_set_value(NSA310_GPIO_POWER_OFF, 1);
+//
+//don't work with sysfs
+ printk(KERN_INFO "Activating power off GPIO pin...\n");
+ gpio_set_value(48, 1);
+
+// If machine goes to restart, uncomment next lines for infinite loop
+/* printk(KERN_INFO "System halted, please turn off power manually\n");
+ gpio_set_value(28, 0);
+ do {
+ mdelay(1000);
+ } while(1);
+*/
+}
+
+static int __initdata usb_power = 1; /* default "on" */
+
+static int __init nsa310_usb_power(char *str)
+static void nsa310_timerfunc(unsigned long data)
+{
+ usb_power = strncmp(str, "off", 3) ? 1 : 0;
+ return 1;
+// Activate USB Power
+ if (gpio_request(21, "USB Power") != 0 || gpio_direction_output(21, 1) != 0)
+ printk(KERN_ERR "failed to setup USB power GPIO\n");
+ else
+ printk(KERN_INFO "USB power enabled\n");
+ gpio_free(21);
+}
+/* Parse boot_command_line string nsa310_usb_power=on|off */
+__setup("nsa310_usb_power=", nsa310_usb_power);
+
+static void __init nsa310_init(void)
+{
+ /*
+ * Basic setup. Needs to be called early.
+ */
+ kirkwood_init();
+ kirkwood_mpp_conf(nsa310_mpp_config);
+ u32 dev, rev;
+
+ kirkwood_uart0_init();
+ kirkwood_nand_init(ARRAY_AND_SIZE(nsa310_nand_parts), 40);
+ kirkwood_init();
+
+ kirkwood_i2c_init();
+ kirkwood_mpp_conf(nsa310_mpp_config);
+ kirkwood_nand_init(ARRAY_AND_SIZE(nsa310_nand_parts), 25);
+ kirkwood_ge00_init(&nsa310_ge00_data);
+ kirkwood_pcie_id(&dev, &rev);
+
+ if (gpio_request(NSA310_GPIO_USB_POWER, "USB Power Enable") ||
+ gpio_direction_output(NSA310_GPIO_USB_POWER, usb_power))
+ pr_err("nsa310: failed to configure USB power enable GPIO)\n");
+ gpio_free(NSA310_GPIO_USB_POWER);
+ kirkwood_sata_init(&nsa310_sata_data);
+ kirkwood_uart0_init();
+ kirkwood_i2c_init();
+ i2c_register_board_info(0, &nsa310_i2c_rtc, 1);
+
+ kirkwood_ehci_init();
+ kirkwood_sata_init(&nsa310_sata_data);
+ platform_device_register(&nsa310_leds);
+ platform_device_register(&nsa310_buttons);
+ platform_device_register(&nsa310_hwmon);
+ platform_device_register(&nsa310_leds);
+ platform_device_register(&nsa310_buttons);
+
+ kirkwood_ehci_init();
+// USB Power delay for 20 sec
+ timer.function = nsa310_timerfunc;
+ timer.data = 0;
+ timer.expires = jiffies + msecs_to_jiffies(20000);
+ add_timer(&timer);
+
+ if (gpio_request(NSA310_GPIO_POWER_OFF, "power-off") ||
+ gpio_direction_output(NSA310_GPIO_POWER_OFF, 0))
+ pr_err("nsa310: failed to configure power-off GPIO\n");
+ else
+ pm_power_off = nsa310_power_off;
+
+/* Power resume control */
+ gpio_request(49, "Power-clk");
+ gpio_direction_output(49, 1);
+ gpio_request(47, "Power-data");
+// Clear power resume
+// gpio_direction_output(47, 0);
+// Set power resume
+ gpio_direction_output(47, 1);
+ udelay(1000);
+// gpio_direction_output(49, 0);
+ gpio_set_value(49, 0);
+// release GPIO?
+//test
+ gpio_free(47);
+ gpio_free(49);
+ printk(KERN_INFO "Power resume enabled\n");
+
+
+// Activate Power-off GPIO
+ if (gpio_request(48, "Power-off") == 0 && gpio_direction_output(48, 0) == 0) {
+// gpio_free(48);
+ pm_power_off = nsa310_power_off;
+ printk(KERN_INFO "Power-off GPIO enabled\n");
+ } else
+ printk(KERN_ERR "failed to configure Power-off GPIO\n");
+
+};
+
+static int __init nsa310_pci_init(void)
+{
+ if (machine_is_nsa310())
+ kirkwood_pcie_init(KW_PCIE0);
+ return 0;
+}
+
+MACHINE_START(NSA310, "ZyXEL NSA310 1-Bay Power Media Server")
+ /* Maintainer: Peter Oostewechel <peter_oostewechel@hotmail.com> */
+ .atag_offset = 0x100,
+ .init_machine = nsa310_init,
+ .map_io = kirkwood_map_io,
+ .init_early = kirkwood_init_early,
+ .init_irq = kirkwood_init_irq,
+ .init_time = kirkwood_timer_init,
+ .restart = kirkwood_restart,
+subsys_initcall(nsa310_pci_init);
+
+MACHINE_START(NSA310, "Zyxel NSA-310")
+ .atag_offset = 0x100,
+ .init_machine = nsa310_init,
+ .map_io = kirkwood_map_io,
+ .init_early = kirkwood_init_early,
+ .init_irq = kirkwood_init_irq,
+ .init_time = kirkwood_timer_init,
+ .restart = kirkwood_restart,
+MACHINE_END
diff -ruN a/arch/arm/mach-kirkwood/nsa320-setup.c b/arch/arm/mach-kirkwood/nsa320-setup.c
--- a/arch/arm/mach-kirkwood/nsa320-setup.c 1969-12-31 17:00:00.000000000 -0700
+++ b/arch/arm/mach-kirkwood/nsa320-setup.c 2013-05-08 23:05:14.000000000 -0600
+++ b/arch/arm/mach-kirkwood/nsa320-setup.c 2013-05-17 23:35:46.000000000 -0600
@@ -0,0 +1,305 @@
+/*
+ * arch/arm/mach-kirkwood/nsa320-setup.c
@ -1819,7 +1879,7 @@ diff -ruN a/arch/arm/mach-kirkwood/nsa320-setup.c b/arch/arm/mach-kirkwood/nsa32
+MACHINE_END
diff -ruN 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 1969-12-31 17:00:00.000000000 -0700
+++ b/arch/arm/mach-kirkwood/pogo_e02-setup.c 2013-05-08 23:05:14.000000000 -0600
+++ b/arch/arm/mach-kirkwood/pogo_e02-setup.c 2013-05-17 23:35:46.000000000 -0600
@@ -0,0 +1,115 @@
+/*
+ * arch/arm/mach-kirkwood/pogo_e02-setup.c
@ -1938,7 +1998,7 @@ diff -ruN a/arch/arm/mach-kirkwood/pogo_e02-setup.c b/arch/arm/mach-kirkwood/pog
+MACHINE_END
diff -ruN a/arch/arm/mach-kirkwood/pogoplugv4-setup.c b/arch/arm/mach-kirkwood/pogoplugv4-setup.c
--- a/arch/arm/mach-kirkwood/pogoplugv4-setup.c 1969-12-31 17:00:00.000000000 -0700
+++ b/arch/arm/mach-kirkwood/pogoplugv4-setup.c 2013-05-08 23:05:14.000000000 -0600
+++ b/arch/arm/mach-kirkwood/pogoplugv4-setup.c 2013-05-17 23:35:46.000000000 -0600
@@ -0,0 +1,195 @@
+/*
+ * arch/arm/mach-kirkwood/pogoplugv4-setup.c
@ -2136,8 +2196,8 @@ diff -ruN a/arch/arm/mach-kirkwood/pogoplugv4-setup.c b/arch/arm/mach-kirkwood/p
+ .restart = kirkwood_restart,
+MACHINE_END
diff -ruN a/arch/arm/mach-kirkwood/sheevaplug-setup.c b/arch/arm/mach-kirkwood/sheevaplug-setup.c
--- a/arch/arm/mach-kirkwood/sheevaplug-setup.c 2013-05-07 21:58:03.000000000 -0600
+++ b/arch/arm/mach-kirkwood/sheevaplug-setup.c 2013-05-08 23:05:14.000000000 -0600
--- a/arch/arm/mach-kirkwood/sheevaplug-setup.c 2013-05-11 08:19:28.000000000 -0600
+++ b/arch/arm/mach-kirkwood/sheevaplug-setup.c 2013-05-17 23:35:46.000000000 -0600
@@ -43,7 +43,7 @@
.phy_addr = MV643XX_ETH_PHY_ADDR(0),
};
@ -2218,7 +2278,7 @@ diff -ruN a/arch/arm/mach-kirkwood/sheevaplug-setup.c b/arch/arm/mach-kirkwood/s
diff -ruN a/arch/arm/mach-kirkwood/topkick-setup.c b/arch/arm/mach-kirkwood/topkick-setup.c
--- a/arch/arm/mach-kirkwood/topkick-setup.c 1969-12-31 17:00:00.000000000 -0700
+++ b/arch/arm/mach-kirkwood/topkick-setup.c 2013-05-08 23:05:14.000000000 -0600
+++ b/arch/arm/mach-kirkwood/topkick-setup.c 2013-05-17 23:35:46.000000000 -0600
@@ -0,0 +1,165 @@
+/*
+ * arch/arm/mach-kirkwood/topkick-setup.c
@ -2386,8 +2446,8 @@ diff -ruN a/arch/arm/mach-kirkwood/topkick-setup.c b/arch/arm/mach-kirkwood/topk
+ .restart = kirkwood_restart,
+MACHINE_END
diff -ruN a/arch/arm/plat-orion/common.c b/arch/arm/plat-orion/common.c
--- a/arch/arm/plat-orion/common.c 2013-05-07 21:58:03.000000000 -0600
+++ b/arch/arm/plat-orion/common.c 2013-05-08 23:05:14.000000000 -0600
--- a/arch/arm/plat-orion/common.c 2013-05-11 08:19:28.000000000 -0600
+++ b/arch/arm/plat-orion/common.c 2013-05-17 23:35:46.000000000 -0600
@@ -253,7 +253,9 @@
/*****************************************************************************
* GE00
@ -2400,8 +2460,8 @@ diff -ruN a/arch/arm/plat-orion/common.c b/arch/arm/plat-orion/common.c
static struct resource orion_ge00_shared_resources[] = {
{
diff -ruN a/drivers/ata/sata_mv.c b/drivers/ata/sata_mv.c
--- a/drivers/ata/sata_mv.c 2013-05-07 21:58:03.000000000 -0600
+++ b/drivers/ata/sata_mv.c 2013-05-08 23:05:14.000000000 -0600
--- a/drivers/ata/sata_mv.c 2013-05-11 08:19:28.000000000 -0600
+++ b/drivers/ata/sata_mv.c 2013-05-17 23:35:46.000000000 -0600
@@ -71,6 +71,7 @@
#include <scsi/scsi_cmnd.h>
#include <scsi/scsi_device.h>
@ -2420,8 +2480,8 @@ diff -ruN a/drivers/ata/sata_mv.c b/drivers/ata/sata_mv.c
int using_ncq = ((pp->pp_flags & MV_PP_FLAG_NCQ_EN) != 0);
if (want_ncq != using_ncq)
diff -ruN a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
--- a/drivers/hwmon/Kconfig 2013-05-07 21:58:03.000000000 -0600
+++ b/drivers/hwmon/Kconfig 2013-05-08 23:05:14.000000000 -0600
--- a/drivers/hwmon/Kconfig 2013-05-11 08:19:28.000000000 -0600
+++ b/drivers/hwmon/Kconfig 2013-05-17 23:35:46.000000000 -0600
@@ -1462,6 +1462,19 @@
help
Support for the A/D converter on MC13783 and MC13892 PMIC.
@ -2443,8 +2503,8 @@ diff -ruN a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
comment "ACPI drivers"
diff -ruN a/drivers/hwmon/Makefile b/drivers/hwmon/Makefile
--- a/drivers/hwmon/Makefile 2013-05-07 21:58:03.000000000 -0600
+++ b/drivers/hwmon/Makefile 2013-05-08 23:05:14.000000000 -0600
--- a/drivers/hwmon/Makefile 2013-05-11 08:19:28.000000000 -0600
+++ b/drivers/hwmon/Makefile 2013-05-17 23:35:46.000000000 -0600
@@ -102,6 +102,7 @@
obj-$(CONFIG_SENSORS_MAX6650) += max6650.o
obj-$(CONFIG_SENSORS_MAX6697) += max6697.o
@ -2455,7 +2515,7 @@ diff -ruN a/drivers/hwmon/Makefile b/drivers/hwmon/Makefile
obj-$(CONFIG_SENSORS_PC87360) += pc87360.o
diff -ruN a/drivers/hwmon/nsa3xx-hwmon.c b/drivers/hwmon/nsa3xx-hwmon.c
--- a/drivers/hwmon/nsa3xx-hwmon.c 1969-12-31 17:00:00.000000000 -0700
+++ b/drivers/hwmon/nsa3xx-hwmon.c 2013-05-08 23:05:14.000000000 -0600
+++ b/drivers/hwmon/nsa3xx-hwmon.c 2013-05-17 23:35:47.000000000 -0600
@@ -0,0 +1,251 @@
+/*
+ * drivers/hwmon/nsa3xx-hwmon.c
@ -2709,8 +2769,8 @@ diff -ruN a/drivers/hwmon/nsa3xx-hwmon.c b/drivers/hwmon/nsa3xx-hwmon.c
+MODULE_LICENSE("GPL");
+MODULE_ALIAS("platform:nsa3xx-hwmon");
diff -ruN a/drivers/leds/Kconfig b/drivers/leds/Kconfig
--- a/drivers/leds/Kconfig 2013-05-07 21:58:03.000000000 -0600
+++ b/drivers/leds/Kconfig 2013-05-08 23:05:14.000000000 -0600
--- a/drivers/leds/Kconfig 2013-05-11 08:19:28.000000000 -0600
+++ b/drivers/leds/Kconfig 2013-05-17 23:35:47.000000000 -0600
@@ -506,7 +506,6 @@
config LEDS_TRIGGER_IDE_DISK
@ -2720,8 +2780,8 @@ diff -ruN a/drivers/leds/Kconfig b/drivers/leds/Kconfig
help
This allows LEDs to be controlled by IDE disk activity.
diff -ruN a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
--- a/drivers/mmc/core/core.c 2013-05-07 21:58:03.000000000 -0600
+++ b/drivers/mmc/core/core.c 2013-05-08 23:05:14.000000000 -0600
--- a/drivers/mmc/core/core.c 2013-05-11 08:19:28.000000000 -0600
+++ b/drivers/mmc/core/core.c 2013-05-17 23:35:47.000000000 -0600
@@ -785,7 +785,7 @@
*/
limit_us = 3000000;
@ -2732,8 +2792,8 @@ diff -ruN a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
/*
* SDHC cards always use these fixed values.
diff -ruN a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c
--- a/drivers/mmc/core/sd.c 2013-05-07 21:58:03.000000000 -0600
+++ b/drivers/mmc/core/sd.c 2013-05-08 23:05:14.000000000 -0600
--- a/drivers/mmc/core/sd.c 2013-05-11 08:19:28.000000000 -0600
+++ b/drivers/mmc/core/sd.c 2013-05-17 23:35:47.000000000 -0600
@@ -355,6 +355,15 @@
return -ENOMEM;
}
@ -2751,8 +2811,8 @@ diff -ruN a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c
if (err)
goto out;
diff -ruN a/drivers/mmc/host/mvsdio.c b/drivers/mmc/host/mvsdio.c
--- a/drivers/mmc/host/mvsdio.c 2013-05-07 21:58:03.000000000 -0600
+++ b/drivers/mmc/host/mvsdio.c 2013-05-08 23:05:14.000000000 -0600
--- a/drivers/mmc/host/mvsdio.c 2013-05-11 08:19:28.000000000 -0600
+++ b/drivers/mmc/host/mvsdio.c 2013-05-17 23:35:47.000000000 -0600
@@ -25,6 +25,7 @@
#include <linux/of_irq.h>
#include <linux/mmc/host.h>
@ -2771,7 +2831,7 @@ diff -ruN a/drivers/mmc/host/mvsdio.c b/drivers/mmc/host/mvsdio.c
diff -ruN a/include/linux/nsa3xx-hwmon.h b/include/linux/nsa3xx-hwmon.h
--- a/include/linux/nsa3xx-hwmon.h 1969-12-31 17:00:00.000000000 -0700
+++ b/include/linux/nsa3xx-hwmon.h 2013-05-08 23:05:14.000000000 -0600
+++ b/include/linux/nsa3xx-hwmon.h 2013-05-17 23:35:47.000000000 -0600
@@ -0,0 +1,21 @@
+/*
+ * include/linux/nsa3xx.hwmon.h

View file

@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
# Linux/arm 3.9.1-1 Kernel Configuration
# Linux/arm 3.9.2-1 Kernel Configuration
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@ -1659,7 +1659,7 @@ CONFIG_NET_VENDOR_QLOGIC=y
CONFIG_NET_VENDOR_REALTEK=y
# CONFIG_8139CP is not set
# CONFIG_8139TOO is not set
# CONFIG_R8169 is not set
CONFIG_R8169=y
CONFIG_NET_VENDOR_RDC=y
# CONFIG_R6040 is not set
CONFIG_NET_VENDOR_SEEQ=y
@ -2351,7 +2351,7 @@ CONFIG_POWER_SUPPLY=y
# CONFIG_POWER_RESET_RESTART is not set
# CONFIG_POWER_AVS is not set
CONFIG_HWMON=m
# CONFIG_HWMON_VID is not set
CONFIG_HWMON_VID=m
# CONFIG_HWMON_DEBUG_CHIP is not set
#
@ -2396,7 +2396,7 @@ CONFIG_SENSORS_LM77=m
# 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_LM85=m
# CONFIG_SENSORS_LM87 is not set
CONFIG_SENSORS_LM90=m
# CONFIG_SENSORS_LM92 is not set