* [PATCH v2] ARM: kirkwood: Add support for Buffalo LS-XHL
@ 2011-06-09 21:38 Michael Walle
2011-06-09 21:38 ` Michael Walle
0 siblings, 1 reply; 8+ messages in thread
From: Michael Walle @ 2011-06-09 21:38 UTC (permalink / raw)
To: linux-arm-kernel
This is the second version of my board support patch for the Buffalo
Linkstation XHL.
Changes from v1:
* fix gpio-fan speeds
Michael Walle (1):
ARM: kirkwood: Add support for Buffalo LS-XHL
arch/arm/configs/kirkwood_defconfig | 1 +
arch/arm/mach-kirkwood/Kconfig | 6 +
arch/arm/mach-kirkwood/Makefile | 1 +
arch/arm/mach-kirkwood/lsxhl-setup.c | 313 ++++++++++++++++++++++++++++++++++
arch/arm/tools/mach-types | 1 +
5 files changed, 322 insertions(+), 0 deletions(-)
create mode 100644 arch/arm/mach-kirkwood/lsxhl-setup.c
--
1.7.2.3
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2] ARM: kirkwood: Add support for Buffalo LS-XHL
2011-06-09 21:38 [PATCH v2] ARM: kirkwood: Add support for Buffalo LS-XHL Michael Walle
@ 2011-06-09 21:38 ` Michael Walle
2011-06-10 13:45 ` Simon Guinot
2011-06-30 20:58 ` Bjørn Forsman
0 siblings, 2 replies; 8+ messages in thread
From: Michael Walle @ 2011-06-09 21:38 UTC (permalink / raw)
To: linux-arm-kernel
Add support for the Buffalo Linkstation XHL. This NAS box is based on a
Marvell Kirkwood chip at 1.2 GHz and features 256 MB RAM, 512kb SPI boot
flash, gigabit ethernet and one SATA port.
Signed-off-by: Michael Walle <michael@walle.cc>
---
arch/arm/configs/kirkwood_defconfig | 1 +
arch/arm/mach-kirkwood/Kconfig | 6 +
arch/arm/mach-kirkwood/Makefile | 1 +
arch/arm/mach-kirkwood/lsxhl-setup.c | 313 ++++++++++++++++++++++++++++++++++
arch/arm/tools/mach-types | 1 +
5 files changed, 322 insertions(+), 0 deletions(-)
create mode 100644 arch/arm/mach-kirkwood/lsxhl-setup.c
diff --git a/arch/arm/configs/kirkwood_defconfig b/arch/arm/configs/kirkwood_defconfig
index aeb3af5..9f77811 100644
--- a/arch/arm/configs/kirkwood_defconfig
+++ b/arch/arm/configs/kirkwood_defconfig
@@ -28,6 +28,7 @@ CONFIG_MACH_D2NET_V2=y
CONFIG_MACH_NET2BIG_V2=y
CONFIG_MACH_NET5BIG_V2=y
CONFIG_MACH_T5325=y
+CONFIG_MACH_LSXHL=y
# CONFIG_CPU_FEROCEON_OLD_ID is not set
CONFIG_NO_HZ=y
CONFIG_HIGH_RES_TIMERS=y
diff --git a/arch/arm/mach-kirkwood/Kconfig b/arch/arm/mach-kirkwood/Kconfig
index 7fc603b..307cc99 100644
--- a/arch/arm/mach-kirkwood/Kconfig
+++ b/arch/arm/mach-kirkwood/Kconfig
@@ -130,6 +130,12 @@ config MACH_T5325
Say 'Y' here if you want your kernel to support the
HP t5325 Thin Client.
+config MACH_LSXHL
+ bool "Buffalo LS-XHL Series"
+ help
+ Say 'Y' here if you want your kernel to support the
+ Buffalo LS-XHL Series.
+
endmenu
endif
diff --git a/arch/arm/mach-kirkwood/Makefile b/arch/arm/mach-kirkwood/Makefile
index 5dcaa81..221980b 100644
--- a/arch/arm/mach-kirkwood/Makefile
+++ b/arch/arm/mach-kirkwood/Makefile
@@ -18,5 +18,6 @@ obj-$(CONFIG_MACH_D2NET_V2) += d2net_v2-setup.o lacie_v2-common.o
obj-$(CONFIG_MACH_NET2BIG_V2) += netxbig_v2-setup.o lacie_v2-common.o
obj-$(CONFIG_MACH_NET5BIG_V2) += netxbig_v2-setup.o lacie_v2-common.o
obj-$(CONFIG_MACH_T5325) += t5325-setup.o
+obj-$(CONFIG_MACH_LSXHL) += lsxhl-setup.o
obj-$(CONFIG_CPU_IDLE) += cpuidle.o
diff --git a/arch/arm/mach-kirkwood/lsxhl-setup.c b/arch/arm/mach-kirkwood/lsxhl-setup.c
new file mode 100644
index 0000000..783d257
--- /dev/null
+++ b/arch/arm/mach-kirkwood/lsxhl-setup.c
@@ -0,0 +1,313 @@
+/*
+ * arch/arm/mach-kirkwood/lsxhl-setup.c
+ *
+ * Buffalo LS-XHL Series 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/physmap.h>
+#include <linux/ata_platform.h>
+#include <linux/spi/flash.h>
+#include <linux/spi/spi.h>
+#include <linux/mv643xx_eth.h>
+#include <linux/gpio.h>
+#include <linux/gpio_keys.h>
+#include <linux/gpio-fan.h>
+#include <linux/input.h>
+#include <linux/leds.h>
+#include <asm/mach-types.h>
+#include <asm/mach/arch.h>
+#include <mach/kirkwood.h>
+#include <plat/mvsdio.h>
+#include "common.h"
+#include "mpp.h"
+
+/*****************************************************************************
+ * 512KB SPI Flash on BOOT Device
+ ****************************************************************************/
+static struct mtd_partition lsxhl_partitions[] = {
+ {
+ .name = "u-boot",
+ .size = 0x70000,
+ .offset = 0x00000,
+ .mask_flags = MTD_WRITEABLE,
+ },
+ {
+ .name = "u-boot env",
+ .size = 0x10000,
+ .offset = 0x70000,
+ }
+};
+
+static struct flash_platform_data lsxhl_spi_slave_data = {
+ .type = "m25p40",
+ .parts = lsxhl_partitions,
+ .nr_parts = ARRAY_SIZE(lsxhl_partitions),
+};
+
+static struct spi_board_info __initdata lsxhl_spi_slave_info[] = {
+ {
+ .modalias = "m25p80",
+ .platform_data = &lsxhl_spi_slave_data,
+ .irq = -1,
+ .max_speed_hz = 20000000,
+ .bus_num = 0,
+ .chip_select = 0,
+ }
+};
+
+/*****************************************************************************
+ * Ethernet
+ ****************************************************************************/
+static struct mv643xx_eth_platform_data lsxhl_ge00_data = {
+ .phy_addr = MV643XX_ETH_PHY_ADDR(0),
+};
+
+static struct mv643xx_eth_platform_data lsxhl_ge01_data = {
+ .phy_addr = MV643XX_ETH_PHY_ADDR(8),
+};
+
+/*****************************************************************************
+ * SATA
+ ****************************************************************************/
+static struct mv_sata_platform_data lsxhl_sata_data = {
+ .n_ports = 1,
+};
+
+/*****************************************************************************
+ * LEDs attached to GPIO
+ ****************************************************************************/
+#define LSXHL_GPIO_LED_ALARM 37
+#define LSXHL_GPIO_LED_INFO 38
+#define LSXHL_GPIO_LED_PWR 39
+#define LSXHL_GPIO_LED_FUNC_BLUE 36
+#define LSXHL_GPIO_LED_FUNC_RED 48
+
+static struct gpio_led lsxhl_led_pins[] = {
+ {
+ .name = "alarm:red",
+ .gpio = LSXHL_GPIO_LED_ALARM,
+ .active_low = 1,
+ },
+ {
+ .name = "info:amber",
+ .gpio = LSXHL_GPIO_LED_INFO,
+ .active_low = 1,
+ },
+ {
+ .name = "power:blue",
+ .default_trigger = "default-on",
+ .gpio = LSXHL_GPIO_LED_PWR,
+ .active_low = 1,
+ },
+ {
+ .name = "func:blue:bottom",
+ .gpio = LSXHL_GPIO_LED_FUNC_BLUE,
+ .active_low = 1,
+ },
+ {
+ .name = "func:red:bottom",
+ .gpio = LSXHL_GPIO_LED_FUNC_RED,
+ .active_low = 1,
+ },
+};
+
+static struct gpio_led_platform_data lsxhl_led_data = {
+ .leds = lsxhl_led_pins,
+ .num_leds = ARRAY_SIZE(lsxhl_led_pins),
+};
+
+static struct platform_device lsxhl_leds = {
+ .name = "leds-gpio",
+ .id = -1,
+ .dev = {
+ .platform_data = &lsxhl_led_data,
+ }
+};
+
+/*****************************************************************************
+ * General Setup
+ ****************************************************************************/
+#define LSXHL_GPIO_HDD_POWER 10
+#define LSXHL_GPIO_USB_POWER 11
+
+/*****************************************************************************
+ * GPIO Attached Keys
+ ****************************************************************************/
+#define LSXHL_GPIO_KEY_FUNC 41
+#define LSXHL_GPIO_KEY_AUTOPOWER 42
+#define LSXHL_GPIO_KEY_POWER 43
+#define LSXHL_SW_POWER 0x00
+#define LSXHL_SW_AUTOPOWER 0x01
+#define LSXHL_SW_FUNC 0x02
+
+static struct gpio_keys_button lsxhl_buttons[] = {
+ {
+ .type = EV_SW,
+ .code = LSXHL_SW_POWER,
+ .gpio = LSXHL_GPIO_KEY_POWER,
+ .desc = "Power-on Switch",
+ .active_low = 1,
+ }, {
+ .type = EV_SW,
+ .code = LSXHL_SW_AUTOPOWER,
+ .gpio = LSXHL_GPIO_KEY_AUTOPOWER,
+ .desc = "Power-auto Switch",
+ .active_low = 1,
+ }, {
+ .type = EV_SW,
+ .code = LSXHL_SW_POWER,
+ .gpio = LSXHL_GPIO_KEY_FUNC,
+ .desc = "Function Button",
+ .active_low = 1,
+ },
+};
+
+static struct gpio_keys_platform_data lsxhl_button_data = {
+ .buttons = lsxhl_buttons,
+ .nbuttons = ARRAY_SIZE(lsxhl_buttons),
+};
+
+static struct platform_device lsxhl_button_device = {
+ .name = "gpio-keys",
+ .id = -1,
+ .num_resources = 0,
+ .dev = {
+ .platform_data = &lsxhl_button_data,
+ },
+};
+
+/*****************************************************************************
+ * GPIO Fan
+ ****************************************************************************/
+#define LSXHL_GPIO_FAN_HIGH 18
+#define LSXHL_GPIO_FAN_LOW 19
+#define LSXHL_GPIO_FAN_LOCK 40
+
+static struct gpio_fan_alarm lsxhl_alarm = {
+ .gpio = LSXHL_GPIO_FAN_LOCK,
+};
+
+static struct gpio_fan_speed lsxhl_speeds[] = {
+ {
+ .rpm = 0,
+ .ctrl_val = 3,
+ }, {
+ .rpm = 1500,
+ .ctrl_val = 1,
+ }, {
+ .rpm = 3250,
+ .ctrl_val = 2,
+ }, {
+ .rpm = 5000,
+ .ctrl_val = 0,
+ }
+};
+
+static int lsxhl_gpio_list[] = {
+ LSXHL_GPIO_FAN_HIGH, LSXHL_GPIO_FAN_LOW,
+};
+
+static struct gpio_fan_platform_data lsxhl_fan_data = {
+ .num_ctrl = ARRAY_SIZE(lsxhl_gpio_list),
+ .ctrl = lsxhl_gpio_list,
+ .alarm = &lsxhl_alarm,
+ .num_speed = ARRAY_SIZE(lsxhl_speeds),
+ .speed = lsxhl_speeds,
+};
+
+static struct platform_device lsxhl_fan_device = {
+ .name = "gpio-fan",
+ .id = -1,
+ .num_resources = 0,
+ .dev = {
+ .platform_data = &lsxhl_fan_data,
+ },
+};
+
+/*****************************************************************************
+ * GPIO Data
+ ****************************************************************************/
+
+static unsigned int lsxhl_mpp_config[] __initdata = {
+ MPP10_GPO, /* HDD Power Enable */
+ MPP11_GPIO, /* USB Vbus Enable */
+ MPP18_GPO, /* FAN High Enable# */
+ MPP19_GPO, /* FAN Low Enable# */
+ MPP36_GPIO, /* Function Blue LED */
+ MPP37_GPIO, /* Alarm LED */
+ MPP38_GPIO, /* Info LED */
+ MPP39_GPIO, /* Power LED */
+ MPP40_GPIO, /* Fan Lock */
+ MPP41_GPIO, /* Function Button */
+ MPP42_GPIO, /* Power Switch */
+ MPP43_GPIO, /* Power Auto Switch */
+ MPP48_GPIO, /* Function Red LED */
+ 0
+};
+
+/*****************************************************************************
+ * LS-XHL specific power off method: reboot
+ ****************************************************************************/
+/*
+ * On the LS-XHL, the shutdown process is following:
+ * - Userland monitors key events until the power switch goes to off position
+ * - The board reboots
+ * - U-boot starts and goes into an idle mode waiting for the user
+ * to move the switch to ON position
+ *
+ */
+
+static void lsxhl_power_off(void)
+{
+ arm_machine_restart('h', NULL);
+}
+
+static void __init lsxhl_init(void)
+{
+ /*
+ * Basic setup. Needs to be called early.
+ */
+ kirkwood_init();
+ kirkwood_mpp_conf(lsxhl_mpp_config);
+
+ /*
+ * Configure peripherals.
+ */
+ kirkwood_uart0_init();
+ kirkwood_ehci_init();
+ kirkwood_ge00_init(&lsxhl_ge00_data);
+ kirkwood_ge01_init(&lsxhl_ge01_data);
+ kirkwood_sata_init(&lsxhl_sata_data);
+ kirkwood_spi_init();
+
+ platform_device_register(&lsxhl_leds);
+ platform_device_register(&lsxhl_button_device);
+ platform_device_register(&lsxhl_fan_device);
+
+ spi_register_board_info(lsxhl_spi_slave_info,
+ ARRAY_SIZE(lsxhl_spi_slave_info));
+
+ /* usb power on */
+ gpio_set_value(LSXHL_GPIO_USB_POWER, 1);
+
+ /* register power-off method */
+ pm_power_off = lsxhl_power_off;
+
+ pr_info("%s: finished\n", __func__);
+}
+
+MACHINE_START(LSXHL, "Buffalo LS-XHL Series")
+ .boot_params = 0x00000100,
+ .init_machine = lsxhl_init,
+ .map_io = kirkwood_map_io,
+ .init_early = kirkwood_init_early,
+ .init_irq = kirkwood_init_irq,
+ .timer = &kirkwood_timer,
+MACHINE_END
diff --git a/arch/arm/tools/mach-types b/arch/arm/tools/mach-types
index 3b3776d..8acc587 100644
--- a/arch/arm/tools/mach-types
+++ b/arch/arm/tools/mach-types
@@ -448,6 +448,7 @@ mityomapl138 MACH_MITYOMAPL138 MITYOMAPL138 2650
guruplug MACH_GURUPLUG GURUPLUG 2659
spear310 MACH_SPEAR310 SPEAR310 2660
spear320 MACH_SPEAR320 SPEAR320 2661
+lsxhl MACH_LSXHL LSXHL 2663
aquila MACH_AQUILA AQUILA 2676
sheeva_esata MACH_ESATA_SHEEVAPLUG ESATA_SHEEVAPLUG 2678
msm7x30_surf MACH_MSM7X30_SURF MSM7X30_SURF 2679
--
1.7.2.3
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v2] ARM: kirkwood: Add support for Buffalo LS-XHL
2011-06-09 21:38 ` Michael Walle
@ 2011-06-10 13:45 ` Simon Guinot
2011-06-11 2:52 ` Nicolas Pitre
2011-06-30 20:58 ` Bjørn Forsman
1 sibling, 1 reply; 8+ messages in thread
From: Simon Guinot @ 2011-06-10 13:45 UTC (permalink / raw)
To: linux-arm-kernel
Hi Michael,
On Thu, Jun 09, 2011 at 11:38:08PM +0200, Michael Walle wrote:
> Add support for the Buffalo Linkstation XHL. This NAS box is based on a
> Marvell Kirkwood chip at 1.2 GHz and features 256 MB RAM, 512kb SPI boot
> flash, gigabit ethernet and one SATA port.
>
> Signed-off-by: Michael Walle <michael@walle.cc>
> ---
> arch/arm/configs/kirkwood_defconfig | 1 +
> arch/arm/mach-kirkwood/Kconfig | 6 +
> arch/arm/mach-kirkwood/Makefile | 1 +
> arch/arm/mach-kirkwood/lsxhl-setup.c | 313 ++++++++++++++++++++++++++++++++++
> arch/arm/tools/mach-types | 1 +
> 5 files changed, 322 insertions(+), 0 deletions(-)
> create mode 100644 arch/arm/mach-kirkwood/lsxhl-setup.c
>
... snip ...
> diff --git a/arch/arm/mach-kirkwood/lsxhl-setup.c b/arch/arm/mach-kirkwood/lsxhl-setup.c
> new file mode 100644
> index 0000000..783d257
> --- /dev/null
> +++ b/arch/arm/mach-kirkwood/lsxhl-setup.c
> @@ -0,0 +1,313 @@
> +/*
> + * arch/arm/mach-kirkwood/lsxhl-setup.c
> + *
> + * Buffalo LS-XHL Series 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/physmap.h>
> +#include <linux/ata_platform.h>
> +#include <linux/spi/flash.h>
> +#include <linux/spi/spi.h>
> +#include <linux/mv643xx_eth.h>
> +#include <linux/gpio.h>
> +#include <linux/gpio_keys.h>
> +#include <linux/gpio-fan.h>
> +#include <linux/input.h>
> +#include <linux/leds.h>
> +#include <asm/mach-types.h>
> +#include <asm/mach/arch.h>
> +#include <mach/kirkwood.h>
> +#include <plat/mvsdio.h>
I think this include is unneeded.
... snip ...
> diff --git a/arch/arm/tools/mach-types b/arch/arm/tools/mach-types
> index 3b3776d..8acc587 100644
> --- a/arch/arm/tools/mach-types
> +++ b/arch/arm/tools/mach-types
> @@ -448,6 +448,7 @@ mityomapl138 MACH_MITYOMAPL138 MITYOMAPL138 2650
> guruplug MACH_GURUPLUG GURUPLUG 2659
> spear310 MACH_SPEAR310 SPEAR310 2660
> spear320 MACH_SPEAR320 SPEAR320 2661
> +lsxhl MACH_LSXHL LSXHL 2663
> aquila MACH_AQUILA AQUILA 2676
> sheeva_esata MACH_ESATA_SHEEVAPLUG ESATA_SHEEVAPLUG 2678
> msm7x30_surf MACH_MSM7X30_SURF MSM7X30_SURF 2679
You should probably ask the ARM maintainer to restore this machine
number entry.
BTW, I don't know if Nicolas will mainline this old fashioned board
setup. He is waiting for a DT alternative for Kirkwood.
Regards,
Simon
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20110610/b7b123cc/attachment-0001.sig>
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2] ARM: kirkwood: Add support for Buffalo LS-XHL
2011-06-10 13:45 ` Simon Guinot
@ 2011-06-11 2:52 ` Nicolas Pitre
0 siblings, 0 replies; 8+ messages in thread
From: Nicolas Pitre @ 2011-06-11 2:52 UTC (permalink / raw)
To: linux-arm-kernel
On Fri, 10 Jun 2011, Simon Guinot wrote:
> BTW, I don't know if Nicolas will mainline this old fashioned board
> setup. He is waiting for a DT alternative for Kirkwood.
That's exact. Right now there is a de facto moratorium with the
addition of old style board support to the mainline kernel.
We need some generic Kirkwood infrastructure based on device tree to be
created instead. And then the addition of support for a new board would
only require a new DTB to be passed to the kernel.
Nicolas
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2] ARM: kirkwood: Add support for Buffalo LS-XHL
2011-06-09 21:38 ` Michael Walle
2011-06-10 13:45 ` Simon Guinot
@ 2011-06-30 20:58 ` Bjørn Forsman
2011-06-30 21:49 ` Simon Guinot
2011-07-04 20:50 ` Michael Walle
1 sibling, 2 replies; 8+ messages in thread
From: Bjørn Forsman @ 2011-06-30 20:58 UTC (permalink / raw)
To: linux-arm-kernel
Hi Michael,
On 9 June 2011 23:38, Michael Walle <michael@walle.cc> wrote:
> Add support for the Buffalo Linkstation XHL. This NAS box is based on a
> Marvell Kirkwood chip at 1.2 GHz and features 256 MB RAM, 512kb SPI boot
> flash, gigabit ethernet and one SATA port.
>
> Signed-off-by: Michael Walle <michael@walle.cc>
> ---
> ?arch/arm/configs/kirkwood_defconfig ?| ? ?1 +
> ?arch/arm/mach-kirkwood/Kconfig ? ? ? | ? ?6 +
> ?arch/arm/mach-kirkwood/Makefile ? ? ?| ? ?1 +
> ?arch/arm/mach-kirkwood/lsxhl-setup.c | ?313 ++++++++++++++++++++++++++++++++++
> ?arch/arm/tools/mach-types ? ? ? ? ? ?| ? ?1 +
> ?5 files changed, 322 insertions(+), 0 deletions(-)
> ?create mode 100644 arch/arm/mach-kirkwood/lsxhl-setup.c
First, thanks a lot for posting this, I've been wanting mainline
support for this device for a long time :-)
I tried this patch on my LS-XHL and found two issues:
1) When setting the fan speed to 0, the system produces a lot of GPIO
fan alarm IRQs and then the kernel reports that it's disabling the
GPIO fan alarm IRQ altogether:
$ echo 0 | sudo tee /sys/bus/platform/devices/gpio-fan/fan1_target
Message from syslogd at localhost at Jun 30 22:44:28 ...
kernel:Disabling IRQ #104
$ dmesg
[...]
irq 104: nobody cared (try booting with the "irqpoll" option)
[<c0031210>] (unwind_backtrace+0x0/0xf0) from [<c0072d44>]
(__report_bad_irq.clone.6+0x24/0xec)
[<c0072d44>] (__report_bad_irq.clone.6+0x24/0xec) from [<c0073040>]
(note_interrupt+0x1d4/0x234)
[<c0073040>] (note_interrupt+0x1d4/0x234) from [<c00717d4>]
(handle_irq_event_percpu+0xa8/0x1ac)
[<c00717d4>] (handle_irq_event_percpu+0xa8/0x1ac) from [<c007192c>]
(handle_irq_event+0x54/0x84)
[<c007192c>] (handle_irq_event+0x54/0x84) from [<c0073bac>]
(handle_edge_irq+0xa4/0x1a0)
[<c0073bac>] (handle_edge_irq+0xa4/0x1a0) from [<c0071144>]
(generic_handle_irq+0x30/0x44)
[<c0071144>] (generic_handle_irq+0x30/0x44) from [<c00361d4>]
(orion_gpio_irq_handler+0xa4/0xb4)
[<c00361d4>] (orion_gpio_irq_handler+0xa4/0xb4) from [<c0071144>]
(generic_handle_irq+0x30/0x44)
[<c0071144>] (generic_handle_irq+0x30/0x44) from [<c002c030>]
(asm_do_IRQ+0x30/0x84)
[<c002c030>] (asm_do_IRQ+0x30/0x84) from [<c0391348>] (__irq_svc+0x48/0xa8)
Exception stack(0xc2181f18 to 0xc2181f60)
1f00: c2181f60 fed20204
1f20: 00000000 20000013 00000202 c05609c4 c2180000 00000001 c05609c4 c04bdbd8
1f40: c05609a0 0000000a 006881e0 c2181f60 c0043580 c0043070 20000013 ffffffff
[<c0391348>] (__irq_svc+0x48/0xa8) from [<c0043070>] (__do_softirq+0x4c/0x124)
[<c0043070>] (__do_softirq+0x4c/0x124) from [<c0043580>] (irq_exit+0x90/0x98)
[<c0043580>] (irq_exit+0x90/0x98) from [<c002c034>] (asm_do_IRQ+0x34/0x84)
[<c002c034>] (asm_do_IRQ+0x34/0x84) from [<c039154c>] (__irq_usr+0x4c/0xa0)
Exception stack(0xc2181fb0 to 0xc2181ff8)
1fa0: 00000001 bef0ead0 0000003f 00000001
1fc0: 0009c9cd 0000006f 00000004 bef0eaf8 0009c9c8 00000036 00000001 00000002
1fe0: 00000005 bef0eaf8 00077bd0 00077be4 00000010 ffffffff
handlers:
[<c0280ed8>] fan_alarm_irq_handler
Disabling IRQ #104
$ cat /proc/interrupts
CPU0
1: 14919 orion_irq orion_tick
5: 2 orion_irq mv_xor.0
6: 2 orion_irq mv_xor.1
7: 2 orion_irq mv_xor.2
8: 2 orion_irq mv_xor.3
15: 2714 orion_irq eth1
19: 0 orion_irq ehci_hcd:usb1
21: 4560 orion_irq sata_mv
22: 0 orion_irq mv_crypto
33: 279 orion_irq
46: 36 orion_irq mv643xx_eth
47: 0 orion_irq mv643xx_eth
53: 0 orion_irq rtc-mv
104: 100000 - GPIO fan alarm
105: 0 - Function Button
106: 0 - Power-auto Switch
107: 0 - Power-on Switch
Err: 0
2) Pressing the FUNC button or moving the power switch seems to hang
the device; my SSH connection freezes and the only way back is a
reboot. One time I managed to capture this output before the box froze
(I only moved the power switch this time):
$ evtest /dev/input/event0
Input driver version is 1.0.1
Input device ID: bus 0x19 vendor 0x1 product 0x1 version 0x100
Input device name: "gpio-keys"
Supported events:
Event type 0 (Sync)
Event type 5 (?)
Event code 0 (?)
Event code 1 (?)
Testing ... (interrupt to exit)
Event: time 1309463461.949923, type 5 (?), code 1 (?), value 1
Event: time 1309463461.949926, -------------- Report Sync ------------
Event: time 1309463462.070543, type 5 (?), code 1 (?), value 0
Event: time 1309463462.070545, -------------- Report Sync ------------
Event: time 1309463462.070658, type 5 (?), code 0 (?), value 1
Event: time 1309463462.070660, -------------- Report Sync ------------
And at the same time, in another terminal:
$ cat /proc/interrupts
CPU0
1: 15567 orion_irq orion_tick
5: 2 orion_irq mv_xor.0
6: 2 orion_irq mv_xor.1
7: 2 orion_irq mv_xor.2
8: 2 orion_irq mv_xor.3
15: 1965 orion_irq eth1
19: 0 orion_irq ehci_hcd:usb1
21: 4675 orion_irq sata_mv
22: 0 orion_irq mv_crypto
33: 268 orion_irq
46: 36 orion_irq mv643xx_eth
47: 0 orion_irq mv643xx_eth
53: 0 orion_irq rtc-mv
104: 0 - GPIO fan alarm
105: 0 - Function Button
106: 775 - Power-auto Switch
107: 10154532 - Power-on Switch
Err: 0
So, the power switch also seem to suffer from some interrupt overload;
10154532 IRQs for Power-auto Switch is not right...right?
Have you seen this behaviour?
I can do more testing if someone can point me in the right direction.
(I don't have serial port access to the box, so it's a bit of a
crippled development environment. But it will have to do.)
Best regards,
Bj?rn Forsman
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2] ARM: kirkwood: Add support for Buffalo LS-XHL
2011-06-30 20:58 ` Bjørn Forsman
@ 2011-06-30 21:49 ` Simon Guinot
2011-07-04 20:50 ` Michael Walle
1 sibling, 0 replies; 8+ messages in thread
From: Simon Guinot @ 2011-06-30 21:49 UTC (permalink / raw)
To: linux-arm-kernel
Hi Bj?rn,
On Thu, Jun 30, 2011 at 10:58:15PM +0200, Bj?rn Forsman wrote:
> Hi Michael,
>
> On 9 June 2011 23:38, Michael Walle <michael@walle.cc> wrote:
> > Add support for the Buffalo Linkstation XHL. This NAS box is based on a
> > Marvell Kirkwood chip at 1.2 GHz and features 256 MB RAM, 512kb SPI boot
> > flash, gigabit ethernet and one SATA port.
> >
> > Signed-off-by: Michael Walle <michael@walle.cc>
> > ---
> > ?arch/arm/configs/kirkwood_defconfig ?| ? ?1 +
> > ?arch/arm/mach-kirkwood/Kconfig ? ? ? | ? ?6 +
> > ?arch/arm/mach-kirkwood/Makefile ? ? ?| ? ?1 +
> > ?arch/arm/mach-kirkwood/lsxhl-setup.c | ?313 ++++++++++++++++++++++++++++++++++
> > ?arch/arm/tools/mach-types ? ? ? ? ? ?| ? ?1 +
> > ?5 files changed, 322 insertions(+), 0 deletions(-)
> > ?create mode 100644 arch/arm/mach-kirkwood/lsxhl-setup.c
>
> First, thanks a lot for posting this, I've been wanting mainline
> support for this device for a long time :-)
>
> I tried this patch on my LS-XHL and found two issues:
>
> 1) When setting the fan speed to 0, the system produces a lot of GPIO
> fan alarm IRQs and then the kernel reports that it's disabling the
> GPIO fan alarm IRQ altogether:
>
> $ echo 0 | sudo tee /sys/bus/platform/devices/gpio-fan/fan1_target
> Message from syslogd at localhost at Jun 30 22:44:28 ...
> kernel:Disabling IRQ #104
> $ dmesg
> [...]
> irq 104: nobody cared (try booting with the "irqpoll" option)
> [<c0031210>] (unwind_backtrace+0x0/0xf0) from [<c0072d44>]
> (__report_bad_irq.clone.6+0x24/0xec)
> [<c0072d44>] (__report_bad_irq.clone.6+0x24/0xec) from [<c0073040>]
> (note_interrupt+0x1d4/0x234)
> [<c0073040>] (note_interrupt+0x1d4/0x234) from [<c00717d4>]
> (handle_irq_event_percpu+0xa8/0x1ac)
> [<c00717d4>] (handle_irq_event_percpu+0xa8/0x1ac) from [<c007192c>]
> (handle_irq_event+0x54/0x84)
> [<c007192c>] (handle_irq_event+0x54/0x84) from [<c0073bac>]
> (handle_edge_irq+0xa4/0x1a0)
> [<c0073bac>] (handle_edge_irq+0xa4/0x1a0) from [<c0071144>]
> (generic_handle_irq+0x30/0x44)
> [<c0071144>] (generic_handle_irq+0x30/0x44) from [<c00361d4>]
> (orion_gpio_irq_handler+0xa4/0xb4)
> [<c00361d4>] (orion_gpio_irq_handler+0xa4/0xb4) from [<c0071144>]
> (generic_handle_irq+0x30/0x44)
> [<c0071144>] (generic_handle_irq+0x30/0x44) from [<c002c030>]
> (asm_do_IRQ+0x30/0x84)
> [<c002c030>] (asm_do_IRQ+0x30/0x84) from [<c0391348>] (__irq_svc+0x48/0xa8)
> Exception stack(0xc2181f18 to 0xc2181f60)
> 1f00: c2181f60 fed20204
> 1f20: 00000000 20000013 00000202 c05609c4 c2180000 00000001 c05609c4 c04bdbd8
> 1f40: c05609a0 0000000a 006881e0 c2181f60 c0043580 c0043070 20000013 ffffffff
> [<c0391348>] (__irq_svc+0x48/0xa8) from [<c0043070>] (__do_softirq+0x4c/0x124)
> [<c0043070>] (__do_softirq+0x4c/0x124) from [<c0043580>] (irq_exit+0x90/0x98)
> [<c0043580>] (irq_exit+0x90/0x98) from [<c002c034>] (asm_do_IRQ+0x34/0x84)
> [<c002c034>] (asm_do_IRQ+0x34/0x84) from [<c039154c>] (__irq_usr+0x4c/0xa0)
> Exception stack(0xc2181fb0 to 0xc2181ff8)
> 1fa0: 00000001 bef0ead0 0000003f 00000001
> 1fc0: 0009c9cd 0000006f 00000004 bef0eaf8 0009c9c8 00000036 00000001 00000002
> 1fe0: 00000005 bef0eaf8 00077bd0 00077be4 00000010 ffffffff
> handlers:
> [<c0280ed8>] fan_alarm_irq_handler
> Disabling IRQ #104
>
> $ cat /proc/interrupts
> CPU0
> 1: 14919 orion_irq orion_tick
> 5: 2 orion_irq mv_xor.0
> 6: 2 orion_irq mv_xor.1
> 7: 2 orion_irq mv_xor.2
> 8: 2 orion_irq mv_xor.3
> 15: 2714 orion_irq eth1
> 19: 0 orion_irq ehci_hcd:usb1
> 21: 4560 orion_irq sata_mv
> 22: 0 orion_irq mv_crypto
> 33: 279 orion_irq
> 46: 36 orion_irq mv643xx_eth
> 47: 0 orion_irq mv643xx_eth
> 53: 0 orion_irq rtc-mv
> 104: 100000 - GPIO fan alarm
> 105: 0 - Function Button
> 106: 0 - Power-auto Switch
> 107: 0 - Power-on Switch
> Err: 0
>
>
> 2) Pressing the FUNC button or moving the power switch seems to hang
> the device; my SSH connection freezes and the only way back is a
> reboot. One time I managed to capture this output before the box froze
> (I only moved the power switch this time):
>
> $ evtest /dev/input/event0
> Input driver version is 1.0.1
> Input device ID: bus 0x19 vendor 0x1 product 0x1 version 0x100
> Input device name: "gpio-keys"
> Supported events:
> Event type 0 (Sync)
> Event type 5 (?)
> Event code 0 (?)
> Event code 1 (?)
> Testing ... (interrupt to exit)
> Event: time 1309463461.949923, type 5 (?), code 1 (?), value 1
> Event: time 1309463461.949926, -------------- Report Sync ------------
> Event: time 1309463462.070543, type 5 (?), code 1 (?), value 0
> Event: time 1309463462.070545, -------------- Report Sync ------------
> Event: time 1309463462.070658, type 5 (?), code 0 (?), value 1
> Event: time 1309463462.070660, -------------- Report Sync ------------
>
> And at the same time, in another terminal:
>
> $ cat /proc/interrupts
> CPU0
> 1: 15567 orion_irq orion_tick
> 5: 2 orion_irq mv_xor.0
> 6: 2 orion_irq mv_xor.1
> 7: 2 orion_irq mv_xor.2
> 8: 2 orion_irq mv_xor.3
> 15: 1965 orion_irq eth1
> 19: 0 orion_irq ehci_hcd:usb1
> 21: 4675 orion_irq sata_mv
> 22: 0 orion_irq mv_crypto
> 33: 268 orion_irq
> 46: 36 orion_irq mv643xx_eth
> 47: 0 orion_irq mv643xx_eth
> 53: 0 orion_irq rtc-mv
> 104: 0 - GPIO fan alarm
> 105: 0 - Function Button
> 106: 775 - Power-auto Switch
> 107: 10154532 - Power-on Switch
> Err: 0
>
> So, the power switch also seem to suffer from some interrupt overload;
> 10154532 IRQs for Power-auto Switch is not right...right?
>
> Have you seen this behaviour?
>
> I can do more testing if someone can point me in the right direction.
> (I don't have serial port access to the box, so it's a bit of a
> crippled development environment. But it will have to do.)
It is probably related to a edge GPIO interrupts bug:
http://lists.arm.linux.org.uk/lurker/message/20110629.200122.012d23be.en.html
Regards,
Simon
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20110630/c9d3e94f/attachment.sig>
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2] ARM: kirkwood: Add support for Buffalo LS-XHL
2011-06-30 20:58 ` Bjørn Forsman
2011-06-30 21:49 ` Simon Guinot
@ 2011-07-04 20:50 ` Michael Walle
2011-07-05 21:42 ` Bjørn Forsman
1 sibling, 1 reply; 8+ messages in thread
From: Michael Walle @ 2011-07-04 20:50 UTC (permalink / raw)
To: linux-arm-kernel
Am Donnerstag 30 Juni 2011, 22:58:15 schrieb Bj?rn Forsman:
> Hi Michael,
[..]
> So, the power switch also seem to suffer from some interrupt overload;
> 10154532 IRQs for Power-auto Switch is not right...right?
>
> Have you seen this behaviour?
Nope, the interrupt behaves normally for me. But i'm running this patch with
kernel 2.6.32 and tested it briefly with 2.6.39.
Could you verify, if you are triggering the bug Simon posted above?
--
Michael
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2] ARM: kirkwood: Add support for Buffalo LS-XHL
2011-07-04 20:50 ` Michael Walle
@ 2011-07-05 21:42 ` Bjørn Forsman
0 siblings, 0 replies; 8+ messages in thread
From: Bjørn Forsman @ 2011-07-05 21:42 UTC (permalink / raw)
To: linux-arm-kernel
2011/7/4 Michael Walle <michael@walle.cc>:
> Am Donnerstag 30 Juni 2011, 22:58:15 schrieb Bj?rn Forsman:
>> Hi Michael,
> [..]
>> So, the power switch also seem to suffer from some interrupt overload;
>> 10154532 IRQs for Power-auto Switch is not right...right?
>>
>> Have you seen this behaviour?
> Nope, the interrupt behaves normally for me. But i'm running this patch with
> kernel 2.6.32 and tested it briefly with 2.6.39.
>
> Could you verify, if you are triggering the bug Simon posted above?
Yes, it must be the same bug. I reverted
e59347a1d15c0b1d9fdc510520f8fa78d7d19a5b (arm: orion: Use generic irq
chip) on top of "3.0-rc5 + this LS-XHL patch" and the IRQ issues are
gone.
$ cat /proc/interrupts # after toggling the buttons and setting fan
speed to 0 a few times
...
104: 4 orion_gpio_irq GPIO fan alarm
105: 4 orion_gpio_irq Function Button
106: 6 orion_gpio_irq Power-auto Switch
107: 4 orion_gpio_irq Power-on Switch
No system hang/reboot/lockups :-)
Compare that with /proc/interrupts from the bugged version; it lists
"-" instead of "orion_gpio_irq" as IRQ handler:
104: 100000 - GPIO fan alarm
105: 0 - Function Button
106: 0 - Power-auto Switch
107: 0 - Power-on Switch
Best regards,
Bj?rn Forsman
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2011-07-05 21:42 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-06-09 21:38 [PATCH v2] ARM: kirkwood: Add support for Buffalo LS-XHL Michael Walle
2011-06-09 21:38 ` Michael Walle
2011-06-10 13:45 ` Simon Guinot
2011-06-11 2:52 ` Nicolas Pitre
2011-06-30 20:58 ` Bjørn Forsman
2011-06-30 21:49 ` Simon Guinot
2011-07-04 20:50 ` Michael Walle
2011-07-05 21:42 ` Bjørn Forsman
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.