ARM: dts: Convert Linkstation Mini to Device Tree
Subsystems (5)
RFC PATCH 1/1 ARM: dts: Convert Linkstation Mini to Device Tree
Hi,
This is my conversion patch to DT for my Linkstation Mini. The name of the file better reflects the manufacturer's device name (LS-WSGL), as there also exists a newer Linkstation Mini (LS-WSXL) based on Kirkwood (and as Andrew noted, a patch for it landed yesterday). I did not actually re-test it from clean build (it worked fine before, modulo some cosmetics fixes), as I had a problem with the hardware that I am going to fix soon, but I wanted some comments on it. I included Andrew's remarks, even though I do not know what to do about the buttons name for now: I don't know how the switch is wired exactly for now, and FYI the ?auto-power? is an intermediate position between off and power that in the original firmware does some wake-up/sleep of the disks when the backup utility is run from the PC connected to the NAS. I never used it and do not know what to do with it, and what ?key? should be associated with it.
--- arch/arm/boot/dts/Makefile | 3 +- arch/arm/boot/dts/orion5x-lswsgl.dts | 241 ++++++++++++++++++++++++++++++ arch/arm/mach-orion5x/Kconfig | 6 +- arch/arm/mach-orion5x/lsmini-setup.c | 280 ----------------------------------- 4 files changed, 246 insertions(+), 284 deletions(-) create mode 100644 arch/arm/boot/dts/orion5x-lswsgl.dts delete mode 100644 arch/arm/mach-orion5x/lsmini-setup.c
arch/arm/boot/dts/Makefile +2 -1
@@ -441,7 +441,8 @@ dtb-$(CONFIG_ARCH_ORION5X) += \ orion5x-lacie-d2-network.dtb \ orion5x-lacie-ethernet-disk-mini-v2.dtb \ orion5x-maxtor-shared-storage-2.dtb \ - orion5x-rd88f5182-nas.dtb + orion5x-rd88f5182-nas.dtb \ + orion5x-lswsgl.dtb dtb-$(CONFIG_ARCH_PRIMA2) += \ prima2-evb.dtb dtb-$(CONFIG_ARCH_QCOM) += \
arch/arm/boot/dts/orion5x-lswsgl.dts new file +241 -0
241 lines not on this page · raw message
arch/arm/mach-orion5x/Kconfig +3 -3
@@ -78,11 +78,11 @@ config MACH_LINKSTATION_LSCHL Buffalo Linkstation Live v3 (LS-CHL) platform. config MACH_LINKSTATION_MINI - bool "Buffalo Linkstation Mini" - select I2C_BOARDINFO + bool "Buffalo Linkstation Mini (Flattened Device Tree)" + select ARCH_ORION5X_DT help Say 'Y' here if you want your kernel to support the - Buffalo Linkstation Mini platform. + Buffalo Linkstation Mini (LS-WSGL) platform. config MACH_LINKSTATION_LS_HGL bool "Buffalo Linkstation LS-HGL"
arch/arm/mach-orion5x/lsmini-setup.c deleted +0 -280
280 lines not on this page · raw message
Signature · 1 line
2.1.4
RFC PATCH 1/1 ARM: dts: Convert Linkstation Mini to Device Tree
Le samedi 20 juin 2015 ? 03:53 +0200, Benjamin Cama a ?crit :
Quoted 1 line
Reviewed-by Andrew Lunn <[email protected]>
Please ignore this Reviewed-by, it is a mistake, Andrew did not find it acceptable yet. I was not sure of the meaning of this and sent this email too soon. I apologize for this.
Regards,
--
benjamin
Andrew Lunn
maintainerRFC PATCH 1/1 ARM: dts: Convert Linkstation Mini to Device Tree
Quoted 6 lines · Benjamin Cama
Le samedi 20 juin 2015 ? 03:53 +0200, Benjamin Cama a ?crit :
Quoted 1 line
Reviewed-by Andrew Lunn <[email protected]>Please ignore this Reviewed-by, it is a mistake, Andrew did not find it acceptable yet. I was not sure of the meaning of this and sent this email too soon. I apologize for this.
Hi Benjamin
Thanks for revoking the Reviewed-by. You can expect to get an Acked-by from me once the patch is good.
You can find details about these tags starting here:
http://lxr.free-electrons.com/source/Documentation/SubmittingPatches#L407
Andrew
RFC PATCH 1/1 ARM: dts: Convert Linkstation Mini to Device Tree
In reply to Benjamin CamaBenjamin, Andrew, other mvebu cats,
Quoted 4 lines · Benjamin Cama
From here -----vvvv
Hi,
Quoted 14 lines
This is my conversion patch to DT for my Linkstation Mini. The name of the file better reflects the manufacturer's device name (LS-WSGL), as there also exists a newer Linkstation Mini (LS-WSXL) based on Kirkwood (and as Andrew noted, a patch for it landed yesterday). I did not actually re-test it from clean build (it worked fine before, modulo some cosmetics fixes), as I had a problem with the hardware that I am going to fix soon, but I wanted some comments on it. I included Andrew's remarks, even though I do not know what to do about the buttons name for now: I don't know how the switch is wired exactly for now, and FYI the ???auto-power??? is an intermediate position between off and power that in the original firmware does some wake-up/sleep of the disks when the backup utility is run from the PC connected to the NAS. I never used it and do not know what to do with it, and what ???key??? should be associated with it.
To here -----^^^^^
Is very conversational. This should be a more technical description of the changes being made as this is the block that 'git am' will use for the commit message. Then the conversational bits go ...
Quoted 4 lines
Signed-off-by Benjamin Cama <[email protected]>Reviewed-by Andrew Lunn <[email protected]>---
right here, below the '---'.
Quoted 7 lines
arch/arm/boot/dts/Makefile | 3 +- arch/arm/boot/dts/orion5x-lswsgl.dts | 241 ++++++++++++++++++++++++++++++ arch/arm/mach-orion5x/Kconfig | 6 +- arch/arm/mach-orion5x/lsmini-setup.c | 280 ----------------------------------- 4 files changed, 246 insertions(+), 284 deletions(-) create mode 100644 arch/arm/boot/dts/orion5x-lswsgl.dts delete mode 100644 arch/arm/mach-orion5x/lsmini-setup.c
Ahhh, that's always refreshing to see...
arch/arm/boot/dts/orion5x-lswsgl.dts line 4
Quoted 10 lines
arch/arm/boot/dts/orion5x-lswsgl.dts new file +4
-0@@ -0,0 +1,241 @@ +/* + * Copyright (C) 2015 Benjamin Cama <[email protected]> + * Copyright (C) 2014 Thomas Petazzoni <[email protected]> + * Copyright (C) 2008 Alexey Kopytko <[email protected]>
It may be preferable to say "Based on the board file arch/arm/mach-orion5x/lsmini-setup.c, Copyright (C) 2008 Alexey Kopytko <[email protected]>" But that's very nit-picky. As long as Alexey is recognized, it should be fine.
arch/arm/boot/dts/orion5x-lswsgl.dts line 9
Quoted 5 lines
arch/arm/boot/dts/orion5x-lswsgl.dts new file +5
-0+ * + * 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. + */
We're trying to move the dts{i} files to dual license. Please take a look at the current armada-*.dts{i} license blocks. If you are ok with it, please change the above to match.
Quoted 6 lines
arch/arm/mach-orion5x/Kconfig +0
-0@@ -78,11 +78,11 @@ config MACH_LINKSTATION_LSCHL Buffalo Linkstation Live v3 (LS-CHL) platform.
arch/arm/mach-orion5x/Kconfig config MACH_LINKSTATION_LSCHL · line 85
Quoted 10 lines
arch/arm/mach-orion5x/Kconfig +3
-3config MACH_LINKSTATION_MINI - bool "Buffalo Linkstation Mini" - select I2C_BOARDINFO + bool "Buffalo Linkstation Mini (Flattened Device Tree)" + select ARCH_ORION5X_DT help Say 'Y' here if you want your kernel to support the - Buffalo Linkstation Mini platform. + Buffalo Linkstation Mini (LS-WSGL) platform.
Hmmm, this question is for the other mvebu maintainers: When we originally converted kirkwood and dove, we put a lot of effort into keeping the board files and the dts files around in parallel for a while. Do we need to do that here? All the drivers are converted, so we don't need to keep the legacy board files for that reason.
I'm not sure it's necessary myself, but I'm thinking it might be a good idea on general principal to deprecate the board file over time. Thoughts?
thx,
Jason.
Andrew Lunn
maintainerRFC PATCH 1/1 ARM: dts: Convert Linkstation Mini to Device Tree
Quoted 9 lines
Quoted 7 lines
arch/arm/boot/dts/Makefile | 3 +- arch/arm/boot/dts/orion5x-lswsgl.dts | 241 ++++++++++++++++++++++++++++++ arch/arm/mach-orion5x/Kconfig | 6 +- arch/arm/mach-orion5x/lsmini-setup.c | 280 ----------------------------------- 4 files changed, 246 insertions(+), 284 deletions(-) create mode 100644 arch/arm/boot/dts/orion5x-lswsgl.dts delete mode 100644 arch/arm/mach-orion5x/lsmini-setup.cAhhh, that's always refreshing to see...
And i missed it all together. More discussion below.
Quoted 23 lines
arch/arm/boot/dts/orion5x-lswsgl.dts line 4
Quoted 11 lines
arch/arm/boot/dts/orion5x-lswsgl.dts new file +4
-0@@ -0,0 +1,241 @@ +/* + * Copyright (C) 2015 Benjamin Cama <[email protected]> + * Copyright (C) 2014 Thomas Petazzoni <[email protected]> + * Copyright (C) 2008 Alexey Kopytko <[email protected]>It may be preferable to say "Based on the board file
arch/arm/mach-orion5x/lsmini-setup.c, Copyright (C) 2008 Alexey Kopytko <[email protected]>" But that's very nit-picky. As long as Alexey is recognized, it should be fine.arch/arm/boot/dts/orion5x-lswsgl.dts line 9
Quoted 5 lines
arch/arm/boot/dts/orion5x-lswsgl.dts new file +5
-0+ * + * 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. + */
Quoted 3 lines
We're trying to move the dts{i} files to dual license. Please take a look at the current armada-*.dts{i} license blocks. If you are ok with it, please change the above to match.
For orion5x we have a chance to make this happen, since most of orion5x.dtsi comes from the usual suspects.
So, yes, this makes sense.
Quoted 7 lines
Quoted 7 lines
arch/arm/mach-orion5x/Kconfig +0
-0@@ -78,11 +78,11 @@ config MACH_LINKSTATION_LSCHL Buffalo Linkstation Live v3 (LS-CHL) platform.
Quoted 15 lines
arch/arm/mach-orion5x/Kconfig config MACH_LINKSTATION_LSCHL · line 85
Quoted 9 lines
arch/arm/mach-orion5x/Kconfig +3
-3config MACH_LINKSTATION_MINI - bool "Buffalo Linkstation Mini" - select I2C_BOARDINFO + bool "Buffalo Linkstation Mini (Flattened Device Tree)" + select ARCH_ORION5X_DT help Say 'Y' here if you want your kernel to support the - Buffalo Linkstation Mini platform. + Buffalo Linkstation Mini (LS-WSGL) platform.Hmmm, this question is for the other mvebu maintainers: When we originally converted kirkwood and dove, we put a lot of effort into keeping the board files and the dts files around in parallel for a while. Do we need to do that here? All the drivers are converted, so we don't need to keep the legacy board files for that reason.
We get so little interest in orion5x, and it has been shown to be broken for quite a while with respect to IRQ0, that if a real user comes by and swaps his platform to DT only, i say we go with it.
Andrew
RFC PATCH 1/1 ARM: dts: Convert Linkstation Mini to Device Tree
On Sat, Jun 20, 2015 at 08:08:39PM +0200, Andrew Lunn wrote:
...
Quoted 23 lines
Quoted 7 lines
Quoted 7 lines
arch/arm/mach-orion5x/Kconfig +0
-0@@ -78,11 +78,11 @@ config MACH_LINKSTATION_LSCHL Buffalo Linkstation Live v3 (LS-CHL) platform.Quoted 15 lines
arch/arm/mach-orion5x/Kconfig config MACH_LINKSTATION_LSCHL · line 85
Quoted 9 lines
arch/arm/mach-orion5x/Kconfig +3
-3config MACH_LINKSTATION_MINI - bool "Buffalo Linkstation Mini" - select I2C_BOARDINFO + bool "Buffalo Linkstation Mini (Flattened Device Tree)" + select ARCH_ORION5X_DT help Say 'Y' here if you want your kernel to support the - Buffalo Linkstation Mini platform. + Buffalo Linkstation Mini (LS-WSGL) platform.Hmmm, this question is for the other mvebu maintainers: When we originally converted kirkwood and dove, we put a lot of effort into keeping the board files and the dts files around in parallel for a while. Do we need to do that here? All the drivers are converted, so we don't need to keep the legacy board files for that reason.
Quoted 3 lines
We get so little interest in orion5x, and it has been shown to be broken for quite a while with respect to IRQ0, that if a real user comes by and swaps his platform to DT only, i say we go with it.
Ack.
thx,
Jason.
RFC PATCH 1/1 ARM: dts: Convert Linkstation Mini to Device Tree
In reply to Jason CooperJason,
Quoted 16 lines · Jason Cooper
arch/arm/mach-orion5x/Kconfig config MACH_LINKSTATION_LSCHL · line 85
Quoted 9 lines
config
MACH_LINKSTATION_MINIarch/arm/mach-orion5x/Kconfig +3
-3- bool "Buffalo Linkstation Mini" - select I2C_BOARDINFO + bool "Buffalo Linkstation Mini (Flattened Device Tree)" + select ARCH_ORION5X_DT help Say 'Y' here if you want your kernel to support the - Buffalo Linkstation Mini platform. + Buffalo Linkstation Mini (LS-WSGL) platform.Hmmm, this question is for the other mvebu maintainers: When we originally converted kirkwood and dove, we put a lot of effort into keeping the board files and the dts files around in parallel for a while. Do we need to do that here? All the drivers are converted, so we don't need to keep the legacy board files for that reason.
Quoted 3 lines
I'm not sure it's necessary myself, but I'm thinking it might be a good idea on general principal to deprecate the board file over time. Thoughts?
I don't think it's necessary to keep both the DT and legacy versions around. If the DT conversion is as functional as the legacy one (even if it requires doing some legacy probing of certain devices that don't yet have a DT binding), then there is no point in keeping the legacy board file.
There is only one board for which I've kept both the DT and legacy
versions: the rd88f5182. That's because it's a board I have, and keeping both the DT and legacy versions allowed me to make sure that legacy booting is not broken by the progressive conversion do DT for other boards.
Best regards,
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
RFC PATCH 1/1 ARM: dts: Convert Linkstation Mini to Device Tree
In reply to Jason CooperHi Jason,
Le samedi 20 juin 2015 ? 17:34 +0000, Jason Cooper a ?crit :
Quoted 28 lines · Benjamin Cama
From here -----vvvv
Quoted 16 lines
Hi,
This is my conversion patch to DT for my Linkstation Mini. The name of the file better reflects the manufacturer's device name (LS-WSGL), as there also exists a newer Linkstation Mini (LS-WSXL) based on Kirkwood (and as Andrew noted, a patch for it landed yesterday). I did not actually re-test it from clean build (it worked fine before, modulo some cosmetics fixes), as I had a problem with the hardware that I am going to fix soon, but I wanted some comments on it. I included Andrew's remarks, even though I do not know what to do about the buttons name for now: I don't know how the switch is wired exactly for now, and FYI the ???auto-power??? is an intermediate position between off and power that in the original firmware does some wake-up/sleep of the disks when the backup utility is run from the PC connected to the NAS. I never used it and do not know what to do with it, and what ???key??? should be associated with it.
To here -----^^^^^
Is very conversational. This should be a more technical description of the changes being made as this is the block that 'git am' will use for the commit message. Then the conversational bits go ...
Quoted 1 line
Quoted 5 lines
Quoted 3 lines
Signed-off-by Benjamin Cama <[email protected]>Reviewed-by Andrew Lunn <[email protected]>---
right here, below the '---'.
Thanks, I didn't know there was a way to do that. As it was an RFC, I didn't bother separating the chatting, sorry.
Quoted 11 lines
Quoted 8 lines
arch/arm/boot/dts/Makefile | 3 +- arch/arm/boot/dts/orion5x-lswsgl.dts | 241 ++++++++++++++++++++++++++++++ arch/arm/mach-orion5x/Kconfig | 6 +- arch/arm/mach-orion5x/lsmini-setup.c | 280 ----------------------------------- 4 files changed, 246 insertions(+), 284 deletions(-) create mode 100644 arch/arm/boot/dts/orion5x-lswsgl.dts delete mode 100644 arch/arm/mach-orion5x/lsmini-setup.cAhhh, that's always refreshing to see...
Quoted 15 lines
arch/arm/boot/dts/orion5x-lswsgl.dts line 4
Quoted 10 lines
arch/arm/boot/dts/orion5x-lswsgl.dts new file +4
-0@@ -0,0 +1,241 @@ +/* + * Copyright (C) 2015 Benjamin Cama <[email protected]> + * Copyright (C) 2014 Thomas Petazzoni <[email protected]> + * Copyright (C) 2008 Alexey Kopytko <[email protected]>It may be preferable to say "Based on the board file
arch/arm/mach-orion5x/lsmini-setup.c, Copyright (C) 2008 Alexey Kopytko <[email protected]>" But that's very nit-picky. As long as Alexey is recognized, it should be fine.
OK, I'll do that.
Quoted 9 lines
arch/arm/boot/dts/orion5x-lswsgl.dts line 9
Quoted 5 lines
arch/arm/boot/dts/orion5x-lswsgl.dts new file +5
-0+ * + * 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. + */We're trying to move the dts{i} files to dual license. Please take a look at the current armada-*.dts{i} license blocks. If you are ok with it, please change the above to match.
OK, so this is moving to dual-licensed GPLv2+ and X11? I am OK with it, if Alexey and Thomas are too (Thomas, your Armada changes are dual -licensed while your orion5x and GPLv2 only; is this because of the previous work licences?).
Regards,
--
benjamin
Andrew Lunn
maintainerRFC PATCH 1/1 ARM: dts: Convert Linkstation Mini to Device Tree
Quoted 8 lines
Quoted 3 lines
We're trying to move the dts{i} files to dual license. Please take a look at the current armada-*.dts{i} license blocks. If you are ok with it, please change the above to match.
OK, so this is moving to dual-licensed GPLv2+ and X11? I am OK with it, if Alexey and Thomas are too (Thomas, your Armada changes are dual -licensed while your orion5x and GPLv2 only; is this because of the previous work licences?).
I can put this onto my TODO list. Of the existing files, the orion5x.dtsi should probably be done first, since that is used by all boards.
Andrew
RFC PATCH 1/1 ARM: dts: Convert Linkstation Mini to Device Tree
In reply to Benjamin CamaQuoted 12 lines · Benjamin Cama
as I had a problem with the hardware that I am
going to fix soon, but I wanted some comments on it. I included Andrew's remarks, even though I do not know what to do about the buttons name for now: I don't know how the switch is wired exactly for now, and FYI the ?auto-power? is an intermediate position between off and power that in the original firmware does some wake-up/sleep of the disks when the backup utility is run from the PC connected to the NAS. I never used it and do not know what to do with it, and what ?key? should be associated with it.
1. These buttons shall be dealt with from the userspace. Actually there is a userspace daemon in the original firmware that reboots the whole thing if you turn the switch to off position. That's clearly not a kernel's job so don't just worry about this switch for now. Moreover I don't think this button does anything at all if there's no daemon.
Running evtest against this button and wiggling it gives this:
# 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 1 (Key)
Event code 357 (Option)
Event type 5 (?)
Event code 0 (?)
Event code 1 (?)
Testing ... (interrupt to exit)
Event: time 1434848366.955536, type 5 (?), code 0 (?), value 0
Event: time 1434848366.955557, -------------- Report Sync ------------
Event: time 1434848366.955576, type 5 (?), code 0 (?), value 1
Event: time 1434848366.955589, -------------- Report Sync ------------
Event: time 1434848366.955593, type 5 (?), code 0 (?), value 02. As far as I remember in my patch I intentionally changed states of some of the lights to be able to see if a kernel is booting or we have a bad build. Can't tell if you did this too, but if I would that will be nice for those people who don't have a serial soldered.
-Alexey
Quoted 580 lines
Signed-off-by Benjamin Cama <[email protected]>Reviewed-by Andrew Lunn <[email protected]>---
arch/arm/boot/dts/Makefile | 3 +- arch/arm/boot/dts/orion5x-lswsgl.dts | 241 ++++++++++++++++++++++++++++++ arch/arm/mach-orion5x/Kconfig | 6 +- arch/arm/mach-orion5x/lsmini-setup.c | 280 ----------------------------------- 4 files changed, 246 insertions(+), 284 deletions(-)create mode 100644
arch/arm/boot/dts/orion5x-lswsgl.dtsdelete mode 100644arch/arm/mach-orion5x/lsmini-setup.carch/arm/boot/dts/Makefile +2
-1@@ -441,7 +441,8 @@ dtb-$(CONFIG_ARCH_ORION5X) += \ orion5x-lacie-d2-network.dtb \ orion5x-lacie-ethernet-disk-mini-v2.dtb \ orion5x-maxtor-shared-storage-2.dtb \ - orion5x-rd88f5182-nas.dtb + orion5x-rd88f5182-nas.dtb \ + orion5x-lswsgl.dtb dtb-$(CONFIG_ARCH_PRIMA2) += \ prima2-evb.dtb dtb-$(CONFIG_ARCH_QCOM) += \arch/arm/boot/dts/orion5x-lswsgl.dts new file +241
-0@@ -0,0 +1,241 @@ +/* + * Copyright (C) 2015 Benjamin Cama <[email protected]> + * Copyright (C) 2014 Thomas Petazzoni <[email protected]> + * Copyright (C) 2008 Alexey Kopytko <[email protected]> + * + * 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. + */ + +/dts-v1/; + +#include <dt-bindings/gpio/gpio.h> +#include <dt-bindings/input/input.h> +#include <dt-bindings/interrupt-controller/irq.h> +#include "orion5x-mv88f5182.dtsi" + +/ { + model = "Buffalo Linkstation Mini (LS-WSGL)"; + compatible = "buffalo,lswsgl", "marvell,orion5x-88f5182", "marvell,orion5x"; + + memory { + reg = <0x00000000 0x8000000>; /* 128 MB */ + }; + + chosen { + bootargs = "console=ttyS0,115200"; + linux,stdout-path = &uart0; + }; + + soc { + ranges = <MBUS_ID(0xf0, 0x01) 0 0xf1000000 0x100000>, + <MBUS_ID(0x09, 0x00) 0 0xf2200000 0x800>, + <MBUS_ID(0x01, 0x0f) 0 0xf4000000 0x40000>; + }; + + gpio-keys { + compatible = "gpio-keys"; + pinctrl-0 = <&pmx_buttons>; + pinctrl-names = "default"; + #address-cells = <1>; + #size-cells = <0>; + func { + label = "Function Button"; + linux,code = <KEY_OPTION>; + gpios = <&gpio0 15 GPIO_ACTIVE_LOW>; + }; + + power { + label = "Power-on Switch"; + linux,input-type = <5>; /* EV_SW */ + linux,code = <0>; /* LSMINI_SW_POWER */ + gpios = <&gpio0 18 GPIO_ACTIVE_LOW>; + }; + + autopower { + label = "Power-auto Switch"; + linux,input-type = <5>; /* EV_SW */ + linux,code = <1>; /* LSMINI_SW_AUTOPOWER */ + gpios = <&gpio0 17 GPIO_ACTIVE_LOW>; + }; + }; + + gpio-leds { + compatible = "gpio-leds"; + pinctrl-0 = <&pmx_led_alarm &pmx_led_info &pmx_led_func + &pmx_led_power>; + pinctrl-names = "default"; + + alarm { + label = "lswsgl:alarm:red"; + gpio = <&gpio0 2 GPIO_ACTIVE_LOW>; + }; + + info { + label = "lswsgl:info:amber"; + gpio = <&gpio0 3 GPIO_ACTIVE_LOW>; + }; + + func { + label = "lswsgl:func:blue:top"; + gpio = <&gpio0 9 GPIO_ACTIVE_LOW>; + }; + + power { + label = "lswsgl:power:blue:bottom"; + gpio = <&gpio0 14 GPIO_ACTIVE_LOW>; + default-state = "on"; + }; + }; + + restart_poweroff { + compatible = "restart-poweroff"; + }; + + regulators { + compatible = "simple-bus"; + #address-cells = <1>; + #size-cells = <0>; + pinctrl-0 = <&pmx_sata0_power &pmx_sata1_power &pmx_usb_power>; + pinctrl-names = "default"; + + sata0_power: regulator at 0 { + compatible = "regulator-fixed"; + reg = <0>; + regulator-name = "SATA0 Power"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + enable-active-high; + regulator-always-on; + regulator-boot-on; + gpio = <&gpio0 1 GPIO_ACTIVE_HIGH>; + }; + + sata1_power: regulator at 1 { + compatible = "regulator-fixed"; + reg = <1>; + regulator-name = "SATA1 Power"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + enable-active-high; + regulator-always-on; + regulator-boot-on; + gpio = <&gpio0 19 GPIO_ACTIVE_HIGH>; + }; + + usb_power: regulator at 2 { + compatible = "regulator-fixed"; + reg = <2>; + regulator-name = "USB Power"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + enable-active-high; + regulator-always-on; + regulator-boot-on; + gpio = <&gpio0 16 GPIO_ACTIVE_HIGH>; + }; + }; +}; + +&devbus_bootcs { + status = "okay"; + + devbus,keep-config; + + flash at 0 { + compatible = "cfi-flash"; + reg = <0 0x40000>; + bank-width = <1>; + #address-cells = <1>; + #size-cells = <1>; + + partition at 0 { + label = "Full256Kb"; + reg = <0 0x40000>; + read-only; + }; + }; +}; + +&mdio { + status = "okay"; + + ethphy: ethernet-phy { + reg = <8>; + }; +}; + +&ehci0 { + status = "okay"; +}; + +ð { + status = "okay"; + + ethernet-port at 0 { + phy-handle = <ðphy>; + }; +}; + +&i2c { + status = "okay"; + clock-frequency = <100000>; + #address-cells = <1>; + + rtc at 32 { + compatible = "ricoh,rs5c372a"; + reg = <0x32>; + }; +}; + +&pinctrl { + pmx_buttons: pmx-buttons { + marvell,pins = "mpp15", "mpp17", "mpp18"; + marvell,function = "gpio"; + }; + + pmx_led_alarm: pmx-leds { + marvell,pins = "mpp2"; + marvell,function = "gpio"; + }; + + pmx_led_info: pmx-leds { + marvell,pins = "mpp3"; + marvell,function = "gpio"; + }; + + pmx_led_func: pmx-leds { + marvell,pins = "mpp9"; + marvell,function = "gpio"; + }; + + pmx_led_power: pmx-leds { + marvell,pins = "mpp14"; + marvell,function = "gpio"; + }; + + pmx_sata0_power: pmx-sata0-power { + marvell,pins = "mpp1"; + marvell,function = "gpio"; + }; + + pmx_sata1_power: pmx-sata1-power { + marvell,pins = "mpp19"; + marvell,function = "gpio"; + }; + + pmx_usb_power: pmx-usb-power { + marvell,pins = "mpp16"; + marvell,function = "gpio"; + }; +}; + +&sata { + status = "okay"; + nr-ports = <2>; +}; + +&uart0 { + status = "okay"; +};arch/arm/mach-orion5x/Kconfig +0
-0@@ -78,11 +78,11 @@ config MACH_LINKSTATION_LSCHL Buffalo Linkstation Live v3 (LS-CHL) platform.config
MACH_LINKSTATION_MINIarch/arm/mach-orion5x/Kconfig +3
-3- bool "Buffalo Linkstation Mini" - select I2C_BOARDINFO + bool "Buffalo Linkstation Mini (Flattened Device Tree)" + select ARCH_ORION5X_DT help Say 'Y' here if you want your kernel to support the - Buffalo Linkstation Mini platform. + Buffalo Linkstation Mini (LS-WSGL) platform.config
MACH_LINKSTATION_LS_HGL
bool "Buffalo Linkstation LS-HGL"arch/arm/mach-orion5x/lsmini-setup.c deleted +0
-281@@ -1,280 +0,0 @@ -/* -* arch/arm/mach-orion5x/lsmini-setup.c -* -* Maintainer: Alexey Kopytko <[email protected]> -* -* 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/mv643xx_eth.h> -#include <linux/leds.h> -#include <linux/gpio_keys.h> -#include <linux/input.h> -#include <linux/i2c.h> -#include <linux/ata_platform.h> -#include <linux/gpio.h> -#include <asm/mach-types.h> -#include <asm/mach/arch.h> -#include <mach/orion5x.h> -#include "common.h" -#include "mpp.h" - -/***************************************************************************** -* Linkstation Mini Info -****************************************************************************/ - -/* -* 256K NOR flash Device bus boot chip select -*/ - -#define LSMINI_NOR_BOOT_BASE 0xf4000000 -#define LSMINI_NOR_BOOT_SIZE SZ_256K - -/***************************************************************************** -* 256KB NOR Flash on BOOT Device -****************************************************************************/ - -static struct physmap_flash_data lsmini_nor_flash_data = { - .width =1 , -}; - -static struct resource lsmini_nor_flash_resource = { - .flags =IORESOURCE_MEM , - .start =LSMINI_NOR_BOOT_BASE , - .end =LSMINI_NOR_BOOT_BASE +LSMINI_NOR_BOOT_SIZE -1 , -}; - -static struct platform_device lsmini_nor_flash = { - .name ="physmap-flash" , - .id =0 , - .dev = { - .platform_data = &lsmini_nor_flash_data, - }, - .num_resources =1 , - .resource = &lsmini_nor_flash_resource, -}; - -/***************************************************************************** -* Ethernet -****************************************************************************/ - -static struct mv643xx_eth_platform_data lsmini_eth_data = { - .phy_addr =8 , -}; - -/***************************************************************************** -* RTC 5C372a on I2C bus -****************************************************************************/ - -static struct i2c_board_info __initdata lsmini_i2c_rtc = { -I2C_BOARD_INFO ("rs5c372a" ,0x32 ), -}; - -/***************************************************************************** -* LEDs attached to GPIO -****************************************************************************/ - -#define LSMINI_GPIO_LED_ALARM 2 -#define LSMINI_GPIO_LED_INFO 3 -#define LSMINI_GPIO_LED_FUNC 9 -#define LSMINI_GPIO_LED_PWR 14 - -static struct gpio_led lsmini_led_pins[] = { - { - .name ="alarm:red" , - .gpio =LSMINI_GPIO_LED_ALARM , - .active_low =1 , - }, { - .name ="info:amber" , - .gpio =LSMINI_GPIO_LED_INFO , - .active_low =1 , - }, { - .name ="func:blue:top" , - .gpio =LSMINI_GPIO_LED_FUNC , - .active_low =1 , - }, { - .name ="power:blue:bottom" , - .gpio =LSMINI_GPIO_LED_PWR , - }, -}; - -static struct gpio_led_platform_data lsmini_led_data = { - .leds = lsmini_led_pins, - .num_leds =ARRAY_SIZE (lsmini_led_pins), -}; - -static struct platform_device lsmini_leds = { - .name ="leds-gpio" , - .id =-1 , - .dev = { - .platform_data = &lsmini_led_data, - }, -}; - -/**************************************************************************** -* GPIO Attached Keys -****************************************************************************/ - -#define LSMINI_GPIO_KEY_FUNC 15 -#define LSMINI_GPIO_KEY_POWER 18 -#define LSMINI_GPIO_KEY_AUTOPOWER 17 - -#define LSMINI_SW_POWER 0x00 -#define LSMINI_SW_AUTOPOWER 0x01 - -static struct gpio_keys_button lsmini_buttons[] = { - { - .code =KEY_OPTION , - .gpio =LSMINI_GPIO_KEY_FUNC , - .desc ="Function Button" , - .active_low =1 , - }, { - .type =EV_SW , - .code =LSMINI_SW_POWER , - .gpio =LSMINI_GPIO_KEY_POWER , - .desc ="Power-on Switch" , - .active_low =1 , - }, { - .type =EV_SW , - .code =LSMINI_SW_AUTOPOWER , - .gpio =LSMINI_GPIO_KEY_AUTOPOWER , - .desc ="Power-auto Switch" , - .active_low =1 , - }, -}; - -static struct gpio_keys_platform_data lsmini_button_data = { - .buttons = lsmini_buttons, - .nbuttons =ARRAY_SIZE (lsmini_buttons), -}; - -static struct platform_device lsmini_button_device = { - .name ="gpio-keys" , - .id =-1 , - .num_resources =0 , - .dev = { - .platform_data = &lsmini_button_data, - }, -}; - - -/***************************************************************************** -* SATA -****************************************************************************/ -static struct mv_sata_platform_data lsmini_sata_data = { - .n_ports =2 , -}; - - -/***************************************************************************** -* Linkstation Mini specific power off method: reboot -****************************************************************************/ -/* -* On the Linkstation Mini, 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 lsmini_power_off (void ) -{ -orion5x_restart (REBOOT_HARD ,NULL ); -} - - -/***************************************************************************** -* General Setup -****************************************************************************/ - -#define LSMINI_GPIO_USB_POWER 16 -#define LSMINI_GPIO_AUTO_POWER 17 -#define LSMINI_GPIO_POWER 18 - -#define LSMINI_GPIO_HDD_POWER0 1 -#define LSMINI_GPIO_HDD_POWER1 19 - -static unsigned int lsmini_mpp_modes[]__initdata = { -MPP0_UNUSED ,/* LED_RESERVE1 (unused) */ -MPP1_GPIO ,/* HDD_PWR */ -MPP2_GPIO ,/* LED_ALARM */ -MPP3_GPIO ,/* LED_INFO */ -MPP4_UNUSED , -MPP5_UNUSED , -MPP6_UNUSED , -MPP7_UNUSED , -MPP8_UNUSED , -MPP9_GPIO ,/* LED_FUNC */ -MPP10_UNUSED , -MPP11_UNUSED ,/* LED_ETH (dummy) */ -MPP12_UNUSED , -MPP13_UNUSED , -MPP14_GPIO ,/* LED_PWR */ -MPP15_GPIO ,/* FUNC */ -MPP16_GPIO ,/* USB_PWR */ -MPP17_GPIO ,/* AUTO_POWER */ -MPP18_GPIO ,/* POWER */ -MPP19_GPIO ,/* HDD_PWR1 */ -0 , -}; - -static void __init lsmini_init (void ) -{ -/* -* Setup basic Orion functions. Need to be called early. -*/ -orion5x_init (); - -orion5x_mpp_conf (lsmini_mpp_modes); - -/* -* Configure peripherals. -*/ -orion5x_ehci0_init (); -orion5x_ehci1_init (); -orion5x_eth_init (&lsmini_eth_data); -orion5x_i2c_init (); -orion5x_sata_init (&lsmini_sata_data); -orion5x_uart0_init (); -orion5x_xor_init (); - -mvebu_mbus_add_window_by_id (ORION_MBUS_DEVBUS_BOOT_TARGET , -ORION_MBUS_DEVBUS_BOOT_ATTR , -LSMINI_NOR_BOOT_BASE , -LSMINI_NOR_BOOT_SIZE ); -platform_device_register (&lsmini_nor_flash); - -platform_device_register (&lsmini_button_device); - -platform_device_register (&lsmini_leds); - -i2c_register_board_info (0 , &lsmini_i2c_rtc,1 ); - -/* enable USB power */ -gpio_set_value (LSMINI_GPIO_USB_POWER ,1 ); - -/* register power-off method */ - pm_power_off = lsmini_power_off; - -pr_info ("%s: finished\n" , __func__); -} - -#ifdef CONFIG_MACH_LINKSTATION_MINI -MACHINE_START(LINKSTATION_MINI, "Buffalo Linkstation Mini") - /* Maintainer: Alexey Kopytko <[email protected]> */ - .atag_offset = 0x100, - .init_machine = lsmini_init, - .map_io = orion5x_map_io, - .init_early = orion5x_init_early, - .init_irq = orion5x_init_irq, - .init_time = orion5x_timer_init, - .fixup = tag_fixup_mem32, - .restart = orion5x_restart, -MACHINE_END -#endif --2.1.4
RFC PATCH 1/1 ARM: dts: Convert Linkstation Mini to Device Tree
Le dimanche 21 juin 2015 ? 10:05 +0900, Alexey Kopytko a ?crit :
Quoted 14 lines
Quoted 13 lines · Benjamin Cama
as I had a problem with the hardware that I am
going to fix soon, but I wanted some comments on it. I included Andrew's remarks, even though I do not know what to do about the buttons name for now: I don't know how the switch is wired exactly for now, and FYI the ?auto-power? is an intermediate position between off and power that in the original firmware does some wake-up/sleep of the disks when the backup utility is run from the PC connected to the NAS. I never used it and do not know what to do with it, and what ?key? should be associated with it.
Quoted 5 lines
1. These buttons shall be dealt with from the userspace. Actually there is a userspace daemon in the original firmware that reboots the whole thing if you turn the switch to off position. That's clearly not a kernel's job so don't just worry about this switch for now. Moreover I don't think this button does anything at all if there's no daemon.
Sorry, I didn't mean to handle it in the kernel, but to associate a correct _keycode_ with it. I mean, 0 (KEY_RESERVED) for power and 1 (KEY_ESC) for auto-power don't seem right to me.
Quoted 21 lines
Running evtest against this button and wiggling it gives this:
# 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 1 (Key) Event code 357 (Option) Event type 5 (?) Event code 0 (?) Event code 1 (?) Testing ... (interrupt to exit) Event: time 1434848366.955536, type 5 (?), code 0 (?), value 0 Event: time 1434848366.955557, -------------- Report Sync ------------ Event: time 1434848366.955576, type 5 (?), code 0 (?), value 1 Event: time 1434848366.955589, -------------- Report Sync ------------ Event: time 1434848366.955593, type 5 (?), code 0 (?), value 0
Quoted 4 lines
2. As far as I remember in my patch I intentionally changed states of some of the lights to be able to see if a kernel is booting or we have a bad build. Can't tell if you did this too, but if I would that will be nice for those people who don't have a serial soldered.
Well, there is the basic blinking blue power (from bootloader) named now lswsgl:power:blue:bottom that transitions to solid blue, that IIRC the original firmware does too.
Regarding people without serial access: this is the main problem I think, that make people not use anything else than their stock firmware; it is too easy to fuck things up and need serial for repair. Personally, *every* board that I tried toying with ended up needing some serial access for recovery, so I understand that less knowledgeable people don't want to risk ?bricking? their device.
Furthermore, Buffalo are really vicious with serial access: traces cut under a capacitor for this Mini, but for the newer one (LS-WSXL), traces cut under the SOIC-8 NOR Flash (more difficult to solder) _and_ bootloader not outputting anything on serial port!
No wonder these boards don't get tested much, only crazy people like me, you and some others do it.
--
benjamin