* [PATCH] convert orion5x ls-chl to device tree @ 2016-10-24 23:04 Ash Hughes 2016-10-25 11:14 ` Andrew Lunn 2016-11-04 12:44 ` Gregory CLEMENT 0 siblings, 2 replies; 5+ messages in thread From: Ash Hughes @ 2016-10-24 23:04 UTC (permalink / raw) To: linux-arm-kernel Hi all, This patch converts my orion5x ls-chl Linkstation device to device tree. Signed-off-by: Ashley Hughes <ashley.hughes@blueyonder.co.uk> --- arch/arm/boot/dts/Makefile | 1 + arch/arm/boot/dts/orion5x-lschl.dts | 171 ++++++++++++++++++ arch/arm/mach-orion5x/Kconfig | 4 +- arch/arm/mach-orion5x/Makefile | 1 - arch/arm/mach-orion5x/ls-chl-setup.c | 331 ----------------------------------- 5 files changed, 174 insertions(+), 334 deletions(-) create mode 100644 arch/arm/boot/dts/orion5x-lschl.dts delete mode 100644 arch/arm/mach-orion5x/ls-chl-setup.c diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile index befcd26..4853049 100644 --- a/arch/arm/boot/dts/Makefile +++ b/arch/arm/boot/dts/Makefile @@ -597,6 +597,7 @@ dtb-$(CONFIG_ARCH_ORION5X) += \ orion5x-lacie-ethernet-disk-mini-v2.dtb \ orion5x-linkstation-lsgl.dtb \ orion5x-linkstation-lswtgl.dtb \ + orion5x-lschl.dtb \ orion5x-lswsgl.dtb \ orion5x-maxtor-shared-storage-2.dtb \ orion5x-netgear-wnr854t.dtb \ diff --git a/arch/arm/boot/dts/orion5x-lschl.dts b/arch/arm/boot/dts/orion5x-lschl.dts new file mode 100644 index 0000000..9474092 --- /dev/null +++ b/arch/arm/boot/dts/orion5x-lschl.dts @@ -0,0 +1,171 @@ +/* + * Device Tree file for Buffalo Linkstation LS-CHLv3 + * + * Copyright (C) 2016 Ash Hughes <ashley.hughes@blueyonder.co.uk> + * Copyright (C) 2015, 2016 + * Roger Shimizu <rogershimizu@gmail.com> + * + * This file is dual-licensed: you can use it either under the terms + * of the GPL or the X11 license, at your option. Note that this dual + * licensing only applies to this file, and not this project as a + * whole. + * + * a) This file is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This file is distributed in the hope that it will be useful + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * Or, alternatively + * + * b) Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +/dts-v1/; + +#include "orion5x-linkstation.dtsi" +#include "mvebu-linkstation-gpio-simple.dtsi" +#include "mvebu-linkstation-fan.dtsi" +#include <dt-bindings/gpio/gpio.h> + +/ { + model = "Buffalo Linkstation Live v3 (LS-CHL)"; + compatible = "buffalo,lschl", "marvell,orion5x-88f5182", "marvell,orion5x"; + + memory { /* 128 MB */ + device_type = "memory"; + reg = <0x00000000 0x8000000>; + }; + + gpio_keys { + func { + label = "Function Button"; + linux,code = <KEY_OPTION>; + gpios = <&gpio0 15 GPIO_ACTIVE_LOW>; + }; + + power-on-switch { + gpios = <&gpio0 8 GPIO_ACTIVE_LOW>; + }; + + power-auto-switch { + gpios = <&gpio0 10 GPIO_ACTIVE_LOW>; + }; + }; + + gpio_leds { + pinctrl-0 = <&pmx_led_power &pmx_led_alarm &pmx_led_info &pmx_led_func>; + blue-power-led { + gpios = <&gpio0 0 GPIO_ACTIVE_LOW>; + }; + + red-alarm-led { + gpios = <&gpio0 2 GPIO_ACTIVE_LOW>; + }; + + amber-info-led { + gpios = <&gpio0 3 GPIO_ACTIVE_LOW>; + }; + + func { + label = "lschl:func:blue:top"; + gpios = <&gpio0 17 GPIO_ACTIVE_LOW>; + }; + }; + + gpio_fan { + gpios = <&gpio0 14 GPIO_ACTIVE_LOW + &gpio0 16 GPIO_ACTIVE_LOW>; + + alarm-gpios = <&gpio0 6 GPIO_ACTIVE_HIGH>; + }; +}; + +&pinctrl { + pmx_led_power: pmx-leds { + marvell,pins = "mpp0"; + marvell,function = "gpio"; + }; + + pmx_power_hdd: pmx-power-hdd { + marvell,pins = "mpp1"; + 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_fan_lock: pmx-fan-lock { + marvell,pins = "mpp6"; + marvell,function = "gpio"; + }; + + pmx_power_switch: pmx-power-switch { + marvell,pins = "mpp8", "mpp10", "mpp15"; + marvell,function = "gpio"; + }; + + pmx_power_usb: pmx-power-usb { + marvell,pins = "mpp9"; + marvell,function = "gpio"; + }; + + pmx_fan_high: pmx-fan-high { + marvell,pins = "mpp14"; + marvell,function = "gpio"; + }; + + pmx_fan_low: pmx-fan-low { + marvell,pins = "mpp16"; + marvell,function = "gpio"; + }; + + pmx_led_func: pmx-leds { + marvell,pins = "mpp17"; + marvell,function = "gpio"; + }; + + pmx_sw_init: pmx-sw-init { + marvell,pins = "mpp7"; + marvell,function = "gpio"; + }; +}; + +&hdd_power { + gpios = <&gpio0 1 GPIO_ACTIVE_HIGH>; +}; + +&usb_power { + gpios = <&gpio0 9 GPIO_ACTIVE_HIGH>; +}; + diff --git a/arch/arm/mach-orion5x/Kconfig b/arch/arm/mach-orion5x/Kconfig index 89bb0fc..793efa9 100644 --- a/arch/arm/mach-orion5x/Kconfig +++ b/arch/arm/mach-orion5x/Kconfig @@ -85,8 +85,8 @@ config MACH_LINKSTATION_PRO v2 devices are supported. config MACH_LINKSTATION_LSCHL - bool "Buffalo Linkstation Live v3 (LS-CHL)" - select I2C_BOARDINFO if I2C + bool "Buffalo Linkstation Live v3 (LS-CHL) (Flattened Device Tree)" + select ARCH_ORION5X_DT help Say 'Y' here if you want your kernel to support the Buffalo Linkstation Live v3 (LS-CHL) platform. diff --git a/arch/arm/mach-orion5x/Makefile b/arch/arm/mach-orion5x/Makefile index 4b2502b..ae91872 100644 --- a/arch/arm/mach-orion5x/Makefile +++ b/arch/arm/mach-orion5x/Makefile @@ -18,7 +18,6 @@ obj-$(CONFIG_MACH_WNR854T) += wnr854t-setup.o obj-$(CONFIG_MACH_RD88F5181L_GE) += rd88f5181l-ge-setup.o obj-$(CONFIG_MACH_RD88F5181L_FXO) += rd88f5181l-fxo-setup.o obj-$(CONFIG_MACH_RD88F6183AP_GE) += rd88f6183ap-ge-setup.o -obj-$(CONFIG_MACH_LINKSTATION_LSCHL) += ls-chl-setup.o obj-$(CONFIG_ARCH_ORION5X_DT) += board-dt.o obj-$(CONFIG_MACH_D2NET_DT) += board-d2net.o diff --git a/arch/arm/mach-orion5x/ls-chl-setup.c b/arch/arm/mach-orion5x/ls-chl-setup.c deleted file mode 100644 index dfdaa8a..0000000 --- a/arch/arm/mach-orion5x/ls-chl-setup.c +++ /dev/null @@ -1,331 +0,0 @@ -/* - * arch/arm/mach-orion5x/ls-chl-setup.c - * - * Maintainer: Ash Hughes <ashley.hughes@blueyonder.co.uk> - * - * 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/gpio-fan.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 "common.h" -#include "mpp.h" -#include "orion5x.h" - -/***************************************************************************** - * Linkstation LS-CHL Info - ****************************************************************************/ - -/* - * 256K NOR flash Device bus boot chip select - */ - -#define LSCHL_NOR_BOOT_BASE 0xf4000000 -#define LSCHL_NOR_BOOT_SIZE SZ_256K - -/***************************************************************************** - * 256KB NOR Flash on BOOT Device - ****************************************************************************/ - -static struct physmap_flash_data lschl_nor_flash_data = { - .width = 1, -}; - -static struct resource lschl_nor_flash_resource = { - .flags = IORESOURCE_MEM, - .start = LSCHL_NOR_BOOT_BASE, - .end = LSCHL_NOR_BOOT_BASE + LSCHL_NOR_BOOT_SIZE - 1, -}; - -static struct platform_device lschl_nor_flash = { - .name = "physmap-flash", - .id = 0, - .dev = { - .platform_data = &lschl_nor_flash_data, - }, - .num_resources = 1, - .resource = &lschl_nor_flash_resource, -}; - -/***************************************************************************** - * Ethernet - ****************************************************************************/ - -static struct mv643xx_eth_platform_data lschl_eth_data = { - .phy_addr = MV643XX_ETH_PHY_ADDR(8), -}; - -/***************************************************************************** - * RTC 5C372a on I2C bus - ****************************************************************************/ - -static struct i2c_board_info __initdata lschl_i2c_rtc = { - I2C_BOARD_INFO("rs5c372a", 0x32), -}; - -/***************************************************************************** - * LEDs attached to GPIO - ****************************************************************************/ - -#define LSCHL_GPIO_LED_ALARM 2 -#define LSCHL_GPIO_LED_INFO 3 -#define LSCHL_GPIO_LED_FUNC 17 -#define LSCHL_GPIO_LED_PWR 0 - -static struct gpio_led lschl_led_pins[] = { - { - .name = "alarm:red", - .gpio = LSCHL_GPIO_LED_ALARM, - .active_low = 1, - }, { - .name = "info:amber", - .gpio = LSCHL_GPIO_LED_INFO, - .active_low = 1, - }, { - .name = "func:blue:top", - .gpio = LSCHL_GPIO_LED_FUNC, - .active_low = 1, - }, { - .name = "power:blue:bottom", - .gpio = LSCHL_GPIO_LED_PWR, - }, -}; - -static struct gpio_led_platform_data lschl_led_data = { - .leds = lschl_led_pins, - .num_leds = ARRAY_SIZE(lschl_led_pins), -}; - -static struct platform_device lschl_leds = { - .name = "leds-gpio", - .id = -1, - .dev = { - .platform_data = &lschl_led_data, - }, -}; - -/***************************************************************************** - * SATA - ****************************************************************************/ -static struct mv_sata_platform_data lschl_sata_data = { - .n_ports = 2, -}; - -/***************************************************************************** - * LS-CHL specific power off method: reboot - ****************************************************************************/ -/* - * On the LS-CHL, 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 lschl_power_off(void) -{ - orion5x_restart(REBOOT_HARD, NULL); -} - -/***************************************************************************** - * General Setup - ****************************************************************************/ -#define LSCHL_GPIO_USB_POWER 9 -#define LSCHL_GPIO_AUTO_POWER 17 -#define LSCHL_GPIO_POWER 18 - -/**************************************************************************** - * GPIO Attached Keys - ****************************************************************************/ -#define LSCHL_GPIO_KEY_FUNC 15 -#define LSCHL_GPIO_KEY_POWER 8 -#define LSCHL_GPIO_KEY_AUTOPOWER 10 -#define LSCHL_SW_POWER 0x00 -#define LSCHL_SW_AUTOPOWER 0x01 -#define LSCHL_SW_FUNC 0x02 - -static struct gpio_keys_button lschl_buttons[] = { - { - .type = EV_SW, - .code = LSCHL_SW_POWER, - .gpio = LSCHL_GPIO_KEY_POWER, - .desc = "Power-on Switch", - .active_low = 1, - }, { - .type = EV_SW, - .code = LSCHL_SW_AUTOPOWER, - .gpio = LSCHL_GPIO_KEY_AUTOPOWER, - .desc = "Power-auto Switch", - .active_low = 1, - }, { - .type = EV_SW, - .code = LSCHL_SW_FUNC, - .gpio = LSCHL_GPIO_KEY_FUNC, - .desc = "Function Switch", - .active_low = 1, - }, -}; - -static struct gpio_keys_platform_data lschl_button_data = { - .buttons = lschl_buttons, - .nbuttons = ARRAY_SIZE(lschl_buttons), -}; - -static struct platform_device lschl_button_device = { - .name = "gpio-keys", - .id = -1, - .num_resources = 0, - .dev = { - .platform_data = &lschl_button_data, - }, -}; - -#define LSCHL_GPIO_HDD_POWER 1 - -/**************************************************************************** - * GPIO Fan - ****************************************************************************/ - -#define LSCHL_GPIO_FAN_LOW 16 -#define LSCHL_GPIO_FAN_HIGH 14 -#define LSCHL_GPIO_FAN_LOCK 6 - -static struct gpio_fan_alarm lschl_alarm = { - .gpio = LSCHL_GPIO_FAN_LOCK, -}; - -static struct gpio_fan_speed lschl_speeds[] = { - { - .rpm = 0, - .ctrl_val = 3, - }, { - .rpm = 1500, - .ctrl_val = 2, - }, { - .rpm = 3250, - .ctrl_val = 1, - }, { - .rpm = 5000, - .ctrl_val = 0, - }, -}; - -static int lschl_gpio_list[] = { - LSCHL_GPIO_FAN_HIGH, LSCHL_GPIO_FAN_LOW, -}; - -static struct gpio_fan_platform_data lschl_fan_data = { - .num_ctrl = ARRAY_SIZE(lschl_gpio_list), - .ctrl = lschl_gpio_list, - .alarm = &lschl_alarm, - .num_speed = ARRAY_SIZE(lschl_speeds), - .speed = lschl_speeds, -}; - -static struct platform_device lschl_fan_device = { - .name = "gpio-fan", - .id = -1, - .num_resources = 0, - .dev = { - .platform_data = &lschl_fan_data, - }, -}; - -/**************************************************************************** - * GPIO Data - ****************************************************************************/ - -static unsigned int lschl_mpp_modes[] __initdata = { - MPP0_GPIO, /* LED POWER */ - MPP1_GPIO, /* HDD POWER */ - MPP2_GPIO, /* LED ALARM */ - MPP3_GPIO, /* LED INFO */ - MPP4_UNUSED, - MPP5_UNUSED, - MPP6_GPIO, /* FAN LOCK */ - MPP7_GPIO, /* SW INIT */ - MPP8_GPIO, /* SW POWER */ - MPP9_GPIO, /* USB POWER */ - MPP10_GPIO, /* SW AUTO POWER */ - MPP11_UNUSED, - MPP12_UNUSED, - MPP13_UNUSED, - MPP14_GPIO, /* FAN HIGH */ - MPP15_GPIO, /* SW FUNC */ - MPP16_GPIO, /* FAN LOW */ - MPP17_GPIO, /* LED FUNC */ - MPP18_UNUSED, - MPP19_UNUSED, - 0, -}; - -static void __init lschl_init(void) -{ - /* - * Setup basic Orion functions. Needs to be called early. - */ - orion5x_init(); - - orion5x_mpp_conf(lschl_mpp_modes); - - /* - * Configure peripherals. - */ - orion5x_ehci0_init(); - orion5x_ehci1_init(); - orion5x_eth_init(&lschl_eth_data); - orion5x_i2c_init(); - orion5x_sata_init(&lschl_sata_data); - orion5x_uart0_init(); - orion5x_xor_init(); - - mvebu_mbus_add_window_by_id(ORION_MBUS_DEVBUS_BOOT_TARGET, - ORION_MBUS_DEVBUS_BOOT_ATTR, - LSCHL_NOR_BOOT_BASE, - LSCHL_NOR_BOOT_SIZE); - platform_device_register(&lschl_nor_flash); - - platform_device_register(&lschl_leds); - - platform_device_register(&lschl_button_device); - - platform_device_register(&lschl_fan_device); - - i2c_register_board_info(0, &lschl_i2c_rtc, 1); - - /* usb power on */ - gpio_set_value(LSCHL_GPIO_USB_POWER, 1); - - /* register power-off method */ - pm_power_off = lschl_power_off; - - pr_info("%s: finished\n", __func__); -} - -MACHINE_START(LINKSTATION_LSCHL, "Buffalo Linkstation LiveV3 (LS-CHL)") - /* Maintainer: Ash Hughes <ashley.hughes@blueyonder.co.uk> */ - .atag_offset = 0x100, - .nr_irqs = ORION5X_NR_IRQS, - .init_machine = lschl_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 -- 2.7.4 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH] convert orion5x ls-chl to device tree 2016-10-24 23:04 [PATCH] convert orion5x ls-chl to device tree Ash Hughes @ 2016-10-25 11:14 ` Andrew Lunn 2016-11-04 12:44 ` Gregory CLEMENT 1 sibling, 0 replies; 5+ messages in thread From: Andrew Lunn @ 2016-10-25 11:14 UTC (permalink / raw) To: linux-arm-kernel On Tue, Oct 25, 2016 at 12:04:49AM +0100, Ash Hughes wrote: > Hi all, > > This patch converts my orion5x ls-chl Linkstation device to device tree. > > Signed-off-by: Ashley Hughes <ashley.hughes@blueyonder.co.uk> Hi Ash Nicely done. Reviewed-by: Andrew Lunn <andrew@lunn.ch> Andrew ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH] convert orion5x ls-chl to device tree 2016-10-24 23:04 [PATCH] convert orion5x ls-chl to device tree Ash Hughes 2016-10-25 11:14 ` Andrew Lunn @ 2016-11-04 12:44 ` Gregory CLEMENT 2016-11-05 23:02 ` Ash Hughes 1 sibling, 1 reply; 5+ messages in thread From: Gregory CLEMENT @ 2016-11-04 12:44 UTC (permalink / raw) To: linux-arm-kernel Hi Ash, On mar., oct. 25 2016, Ash Hughes <sehguh.hsa@gmail.com> wrote: > Hi all, > > This patch converts my orion5x ls-chl Linkstation device to device > tree. I was about to apply your patch but it does not apply on mvebu/dt or even on v4.9-rc1. Could you rebase it? Thanks, Gregory > > Signed-off-by: Ashley Hughes <ashley.hughes@blueyonder.co.uk> > --- > arch/arm/boot/dts/Makefile | 1 + > arch/arm/boot/dts/orion5x-lschl.dts | 171 ++++++++++++++++++ > arch/arm/mach-orion5x/Kconfig | 4 +- > arch/arm/mach-orion5x/Makefile | 1 - > arch/arm/mach-orion5x/ls-chl-setup.c | 331 ----------------------------------- > 5 files changed, 174 insertions(+), 334 deletions(-) > create mode 100644 arch/arm/boot/dts/orion5x-lschl.dts > delete mode 100644 arch/arm/mach-orion5x/ls-chl-setup.c > > diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile > index befcd26..4853049 100644 > --- a/arch/arm/boot/dts/Makefile > +++ b/arch/arm/boot/dts/Makefile > @@ -597,6 +597,7 @@ dtb-$(CONFIG_ARCH_ORION5X) += \ > orion5x-lacie-ethernet-disk-mini-v2.dtb \ > orion5x-linkstation-lsgl.dtb \ > orion5x-linkstation-lswtgl.dtb \ > + orion5x-lschl.dtb \ > orion5x-lswsgl.dtb \ > orion5x-maxtor-shared-storage-2.dtb \ > orion5x-netgear-wnr854t.dtb \ > diff --git a/arch/arm/boot/dts/orion5x-lschl.dts b/arch/arm/boot/dts/orion5x-lschl.dts > new file mode 100644 > index 0000000..9474092 > --- /dev/null > +++ b/arch/arm/boot/dts/orion5x-lschl.dts > @@ -0,0 +1,171 @@ > +/* > + * Device Tree file for Buffalo Linkstation LS-CHLv3 > + * > + * Copyright (C) 2016 Ash Hughes <ashley.hughes@blueyonder.co.uk> > + * Copyright (C) 2015, 2016 > + * Roger Shimizu <rogershimizu@gmail.com> > + * > + * This file is dual-licensed: you can use it either under the terms > + * of the GPL or the X11 license, at your option. Note that this dual > + * licensing only applies to this file, and not this project as a > + * whole. > + * > + * a) This file is free software; you can redistribute it and/or > + * modify it under the terms of the GNU General Public License as > + * published by the Free Software Foundation; either version 2 of the > + * License, or (at your option) any later version. > + * > + * This file is distributed in the hope that it will be useful > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > + * GNU General Public License for more details. > + * > + * Or, alternatively > + * > + * b) Permission is hereby granted, free of charge, to any person > + * obtaining a copy of this software and associated documentation > + * files (the "Software"), to deal in the Software without > + * restriction, including without limitation the rights to use > + * copy, modify, merge, publish, distribute, sublicense, and/or > + * sell copies of the Software, and to permit persons to whom the > + * Software is furnished to do so, subject to the following > + * conditions: > + * > + * The above copyright notice and this permission notice shall be > + * included in all copies or substantial portions of the Software. > + * > + * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND > + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES > + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND > + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT > + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY > + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING > + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR > + * OTHER DEALINGS IN THE SOFTWARE. > + */ > + > +/dts-v1/; > + > +#include "orion5x-linkstation.dtsi" > +#include "mvebu-linkstation-gpio-simple.dtsi" > +#include "mvebu-linkstation-fan.dtsi" > +#include <dt-bindings/gpio/gpio.h> > + > +/ { > + model = "Buffalo Linkstation Live v3 (LS-CHL)"; > + compatible = "buffalo,lschl", "marvell,orion5x-88f5182", "marvell,orion5x"; > + > + memory { /* 128 MB */ > + device_type = "memory"; > + reg = <0x00000000 0x8000000>; > + }; > + > + gpio_keys { > + func { > + label = "Function Button"; > + linux,code = <KEY_OPTION>; > + gpios = <&gpio0 15 GPIO_ACTIVE_LOW>; > + }; > + > + power-on-switch { > + gpios = <&gpio0 8 GPIO_ACTIVE_LOW>; > + }; > + > + power-auto-switch { > + gpios = <&gpio0 10 GPIO_ACTIVE_LOW>; > + }; > + }; > + > + gpio_leds { > + pinctrl-0 = <&pmx_led_power &pmx_led_alarm &pmx_led_info &pmx_led_func>; > + blue-power-led { > + gpios = <&gpio0 0 GPIO_ACTIVE_LOW>; > + }; > + > + red-alarm-led { > + gpios = <&gpio0 2 GPIO_ACTIVE_LOW>; > + }; > + > + amber-info-led { > + gpios = <&gpio0 3 GPIO_ACTIVE_LOW>; > + }; > + > + func { > + label = "lschl:func:blue:top"; > + gpios = <&gpio0 17 GPIO_ACTIVE_LOW>; > + }; > + }; > + > + gpio_fan { > + gpios = <&gpio0 14 GPIO_ACTIVE_LOW > + &gpio0 16 GPIO_ACTIVE_LOW>; > + > + alarm-gpios = <&gpio0 6 GPIO_ACTIVE_HIGH>; > + }; > +}; > + > +&pinctrl { > + pmx_led_power: pmx-leds { > + marvell,pins = "mpp0"; > + marvell,function = "gpio"; > + }; > + > + pmx_power_hdd: pmx-power-hdd { > + marvell,pins = "mpp1"; > + 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_fan_lock: pmx-fan-lock { > + marvell,pins = "mpp6"; > + marvell,function = "gpio"; > + }; > + > + pmx_power_switch: pmx-power-switch { > + marvell,pins = "mpp8", "mpp10", "mpp15"; > + marvell,function = "gpio"; > + }; > + > + pmx_power_usb: pmx-power-usb { > + marvell,pins = "mpp9"; > + marvell,function = "gpio"; > + }; > + > + pmx_fan_high: pmx-fan-high { > + marvell,pins = "mpp14"; > + marvell,function = "gpio"; > + }; > + > + pmx_fan_low: pmx-fan-low { > + marvell,pins = "mpp16"; > + marvell,function = "gpio"; > + }; > + > + pmx_led_func: pmx-leds { > + marvell,pins = "mpp17"; > + marvell,function = "gpio"; > + }; > + > + pmx_sw_init: pmx-sw-init { > + marvell,pins = "mpp7"; > + marvell,function = "gpio"; > + }; > +}; > + > +&hdd_power { > + gpios = <&gpio0 1 GPIO_ACTIVE_HIGH>; > +}; > + > +&usb_power { > + gpios = <&gpio0 9 GPIO_ACTIVE_HIGH>; > +}; > + > diff --git a/arch/arm/mach-orion5x/Kconfig b/arch/arm/mach-orion5x/Kconfig > index 89bb0fc..793efa9 100644 > --- a/arch/arm/mach-orion5x/Kconfig > +++ b/arch/arm/mach-orion5x/Kconfig > @@ -85,8 +85,8 @@ config MACH_LINKSTATION_PRO > v2 devices are supported. > > config MACH_LINKSTATION_LSCHL > - bool "Buffalo Linkstation Live v3 (LS-CHL)" > - select I2C_BOARDINFO if I2C > + bool "Buffalo Linkstation Live v3 (LS-CHL) (Flattened Device Tree)" > + select ARCH_ORION5X_DT > help > Say 'Y' here if you want your kernel to support the > Buffalo Linkstation Live v3 (LS-CHL) platform. > diff --git a/arch/arm/mach-orion5x/Makefile b/arch/arm/mach-orion5x/Makefile > index 4b2502b..ae91872 100644 > --- a/arch/arm/mach-orion5x/Makefile > +++ b/arch/arm/mach-orion5x/Makefile > @@ -18,7 +18,6 @@ obj-$(CONFIG_MACH_WNR854T) += wnr854t-setup.o > obj-$(CONFIG_MACH_RD88F5181L_GE) += rd88f5181l-ge-setup.o > obj-$(CONFIG_MACH_RD88F5181L_FXO) += rd88f5181l-fxo-setup.o > obj-$(CONFIG_MACH_RD88F6183AP_GE) += rd88f6183ap-ge-setup.o > -obj-$(CONFIG_MACH_LINKSTATION_LSCHL) += ls-chl-setup.o > > obj-$(CONFIG_ARCH_ORION5X_DT) += board-dt.o > obj-$(CONFIG_MACH_D2NET_DT) += board-d2net.o > diff --git a/arch/arm/mach-orion5x/ls-chl-setup.c b/arch/arm/mach-orion5x/ls-chl-setup.c > deleted file mode 100644 > index dfdaa8a..0000000 > --- a/arch/arm/mach-orion5x/ls-chl-setup.c > +++ /dev/null > @@ -1,331 +0,0 @@ > -/* > - * arch/arm/mach-orion5x/ls-chl-setup.c > - * > - * Maintainer: Ash Hughes <ashley.hughes@blueyonder.co.uk> > - * > - * 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/gpio-fan.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 "common.h" > -#include "mpp.h" > -#include "orion5x.h" > - > -/***************************************************************************** > - * Linkstation LS-CHL Info > - ****************************************************************************/ > - > -/* > - * 256K NOR flash Device bus boot chip select > - */ > - > -#define LSCHL_NOR_BOOT_BASE 0xf4000000 > -#define LSCHL_NOR_BOOT_SIZE SZ_256K > - > -/***************************************************************************** > - * 256KB NOR Flash on BOOT Device > - ****************************************************************************/ > - > -static struct physmap_flash_data lschl_nor_flash_data = { > - .width = 1, > -}; > - > -static struct resource lschl_nor_flash_resource = { > - .flags = IORESOURCE_MEM, > - .start = LSCHL_NOR_BOOT_BASE, > - .end = LSCHL_NOR_BOOT_BASE + LSCHL_NOR_BOOT_SIZE - 1, > -}; > - > -static struct platform_device lschl_nor_flash = { > - .name = "physmap-flash", > - .id = 0, > - .dev = { > - .platform_data = &lschl_nor_flash_data, > - }, > - .num_resources = 1, > - .resource = &lschl_nor_flash_resource, > -}; > - > -/***************************************************************************** > - * Ethernet > - ****************************************************************************/ > - > -static struct mv643xx_eth_platform_data lschl_eth_data = { > - .phy_addr = MV643XX_ETH_PHY_ADDR(8), > -}; > - > -/***************************************************************************** > - * RTC 5C372a on I2C bus > - ****************************************************************************/ > - > -static struct i2c_board_info __initdata lschl_i2c_rtc = { > - I2C_BOARD_INFO("rs5c372a", 0x32), > -}; > - > -/***************************************************************************** > - * LEDs attached to GPIO > - ****************************************************************************/ > - > -#define LSCHL_GPIO_LED_ALARM 2 > -#define LSCHL_GPIO_LED_INFO 3 > -#define LSCHL_GPIO_LED_FUNC 17 > -#define LSCHL_GPIO_LED_PWR 0 > - > -static struct gpio_led lschl_led_pins[] = { > - { > - .name = "alarm:red", > - .gpio = LSCHL_GPIO_LED_ALARM, > - .active_low = 1, > - }, { > - .name = "info:amber", > - .gpio = LSCHL_GPIO_LED_INFO, > - .active_low = 1, > - }, { > - .name = "func:blue:top", > - .gpio = LSCHL_GPIO_LED_FUNC, > - .active_low = 1, > - }, { > - .name = "power:blue:bottom", > - .gpio = LSCHL_GPIO_LED_PWR, > - }, > -}; > - > -static struct gpio_led_platform_data lschl_led_data = { > - .leds = lschl_led_pins, > - .num_leds = ARRAY_SIZE(lschl_led_pins), > -}; > - > -static struct platform_device lschl_leds = { > - .name = "leds-gpio", > - .id = -1, > - .dev = { > - .platform_data = &lschl_led_data, > - }, > -}; > - > -/***************************************************************************** > - * SATA > - ****************************************************************************/ > -static struct mv_sata_platform_data lschl_sata_data = { > - .n_ports = 2, > -}; > - > -/***************************************************************************** > - * LS-CHL specific power off method: reboot > - ****************************************************************************/ > -/* > - * On the LS-CHL, 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 lschl_power_off(void) > -{ > - orion5x_restart(REBOOT_HARD, NULL); > -} > - > -/***************************************************************************** > - * General Setup > - ****************************************************************************/ > -#define LSCHL_GPIO_USB_POWER 9 > -#define LSCHL_GPIO_AUTO_POWER 17 > -#define LSCHL_GPIO_POWER 18 > - > -/**************************************************************************** > - * GPIO Attached Keys > - ****************************************************************************/ > -#define LSCHL_GPIO_KEY_FUNC 15 > -#define LSCHL_GPIO_KEY_POWER 8 > -#define LSCHL_GPIO_KEY_AUTOPOWER 10 > -#define LSCHL_SW_POWER 0x00 > -#define LSCHL_SW_AUTOPOWER 0x01 > -#define LSCHL_SW_FUNC 0x02 > - > -static struct gpio_keys_button lschl_buttons[] = { > - { > - .type = EV_SW, > - .code = LSCHL_SW_POWER, > - .gpio = LSCHL_GPIO_KEY_POWER, > - .desc = "Power-on Switch", > - .active_low = 1, > - }, { > - .type = EV_SW, > - .code = LSCHL_SW_AUTOPOWER, > - .gpio = LSCHL_GPIO_KEY_AUTOPOWER, > - .desc = "Power-auto Switch", > - .active_low = 1, > - }, { > - .type = EV_SW, > - .code = LSCHL_SW_FUNC, > - .gpio = LSCHL_GPIO_KEY_FUNC, > - .desc = "Function Switch", > - .active_low = 1, > - }, > -}; > - > -static struct gpio_keys_platform_data lschl_button_data = { > - .buttons = lschl_buttons, > - .nbuttons = ARRAY_SIZE(lschl_buttons), > -}; > - > -static struct platform_device lschl_button_device = { > - .name = "gpio-keys", > - .id = -1, > - .num_resources = 0, > - .dev = { > - .platform_data = &lschl_button_data, > - }, > -}; > - > -#define LSCHL_GPIO_HDD_POWER 1 > - > -/**************************************************************************** > - * GPIO Fan > - ****************************************************************************/ > - > -#define LSCHL_GPIO_FAN_LOW 16 > -#define LSCHL_GPIO_FAN_HIGH 14 > -#define LSCHL_GPIO_FAN_LOCK 6 > - > -static struct gpio_fan_alarm lschl_alarm = { > - .gpio = LSCHL_GPIO_FAN_LOCK, > -}; > - > -static struct gpio_fan_speed lschl_speeds[] = { > - { > - .rpm = 0, > - .ctrl_val = 3, > - }, { > - .rpm = 1500, > - .ctrl_val = 2, > - }, { > - .rpm = 3250, > - .ctrl_val = 1, > - }, { > - .rpm = 5000, > - .ctrl_val = 0, > - }, > -}; > - > -static int lschl_gpio_list[] = { > - LSCHL_GPIO_FAN_HIGH, LSCHL_GPIO_FAN_LOW, > -}; > - > -static struct gpio_fan_platform_data lschl_fan_data = { > - .num_ctrl = ARRAY_SIZE(lschl_gpio_list), > - .ctrl = lschl_gpio_list, > - .alarm = &lschl_alarm, > - .num_speed = ARRAY_SIZE(lschl_speeds), > - .speed = lschl_speeds, > -}; > - > -static struct platform_device lschl_fan_device = { > - .name = "gpio-fan", > - .id = -1, > - .num_resources = 0, > - .dev = { > - .platform_data = &lschl_fan_data, > - }, > -}; > - > -/**************************************************************************** > - * GPIO Data > - ****************************************************************************/ > - > -static unsigned int lschl_mpp_modes[] __initdata = { > - MPP0_GPIO, /* LED POWER */ > - MPP1_GPIO, /* HDD POWER */ > - MPP2_GPIO, /* LED ALARM */ > - MPP3_GPIO, /* LED INFO */ > - MPP4_UNUSED, > - MPP5_UNUSED, > - MPP6_GPIO, /* FAN LOCK */ > - MPP7_GPIO, /* SW INIT */ > - MPP8_GPIO, /* SW POWER */ > - MPP9_GPIO, /* USB POWER */ > - MPP10_GPIO, /* SW AUTO POWER */ > - MPP11_UNUSED, > - MPP12_UNUSED, > - MPP13_UNUSED, > - MPP14_GPIO, /* FAN HIGH */ > - MPP15_GPIO, /* SW FUNC */ > - MPP16_GPIO, /* FAN LOW */ > - MPP17_GPIO, /* LED FUNC */ > - MPP18_UNUSED, > - MPP19_UNUSED, > - 0, > -}; > - > -static void __init lschl_init(void) > -{ > - /* > - * Setup basic Orion functions. Needs to be called early. > - */ > - orion5x_init(); > - > - orion5x_mpp_conf(lschl_mpp_modes); > - > - /* > - * Configure peripherals. > - */ > - orion5x_ehci0_init(); > - orion5x_ehci1_init(); > - orion5x_eth_init(&lschl_eth_data); > - orion5x_i2c_init(); > - orion5x_sata_init(&lschl_sata_data); > - orion5x_uart0_init(); > - orion5x_xor_init(); > - > - mvebu_mbus_add_window_by_id(ORION_MBUS_DEVBUS_BOOT_TARGET, > - ORION_MBUS_DEVBUS_BOOT_ATTR, > - LSCHL_NOR_BOOT_BASE, > - LSCHL_NOR_BOOT_SIZE); > - platform_device_register(&lschl_nor_flash); > - > - platform_device_register(&lschl_leds); > - > - platform_device_register(&lschl_button_device); > - > - platform_device_register(&lschl_fan_device); > - > - i2c_register_board_info(0, &lschl_i2c_rtc, 1); > - > - /* usb power on */ > - gpio_set_value(LSCHL_GPIO_USB_POWER, 1); > - > - /* register power-off method */ > - pm_power_off = lschl_power_off; > - > - pr_info("%s: finished\n", __func__); > -} > - > -MACHINE_START(LINKSTATION_LSCHL, "Buffalo Linkstation LiveV3 (LS-CHL)") > - /* Maintainer: Ash Hughes <ashley.hughes@blueyonder.co.uk> */ > - .atag_offset = 0x100, > - .nr_irqs = ORION5X_NR_IRQS, > - .init_machine = lschl_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 > -- 2.7.4 > > -- Gregory Clement, Free Electrons Kernel, drivers, real-time and embedded Linux development, consulting, training and support. http://free-electrons.com ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH] convert orion5x ls-chl to device tree 2016-11-04 12:44 ` Gregory CLEMENT @ 2016-11-05 23:02 ` Ash Hughes 2016-11-07 16:29 ` Gregory CLEMENT 0 siblings, 1 reply; 5+ messages in thread From: Ash Hughes @ 2016-11-05 23:02 UTC (permalink / raw) To: linux-arm-kernel Sorry about that, formatting error with tabs being converted to spaces in email. This should now apply. Ash --- >From 398d2c6e5c834e6887a5e6b5e898455977d0c00b Mon Sep 17 00:00:00 2001 From: Ashley Hughes <ashley.hughes@blueyonder.co.uk> Date: Sun, 9 Oct 2016 17:04:12 +0100 Subject: [PATCH] convert ls-chl to FDT Signed-off-by: Ashley Hughes <ashley.hughes@blueyonder.co.uk> --- arch/arm/boot/dts/Makefile | 1 + arch/arm/boot/dts/orion5x-lschl.dts | 171 ++++++++++++++++++ arch/arm/mach-orion5x/Kconfig | 4 +- arch/arm/mach-orion5x/Makefile | 1 - arch/arm/mach-orion5x/ls-chl-setup.c | 331 ----------------------------------- 5 files changed, 174 insertions(+), 334 deletions(-) create mode 100644 arch/arm/boot/dts/orion5x-lschl.dts delete mode 100644 arch/arm/mach-orion5x/ls-chl-setup.c diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile index befcd26..4853049 100644 --- a/arch/arm/boot/dts/Makefile +++ b/arch/arm/boot/dts/Makefile @@ -597,6 +597,7 @@ dtb-$(CONFIG_ARCH_ORION5X) += \ orion5x-lacie-ethernet-disk-mini-v2.dtb \ orion5x-linkstation-lsgl.dtb \ orion5x-linkstation-lswtgl.dtb \ + orion5x-lschl.dtb \ orion5x-lswsgl.dtb \ orion5x-maxtor-shared-storage-2.dtb \ orion5x-netgear-wnr854t.dtb \ diff --git a/arch/arm/boot/dts/orion5x-lschl.dts b/arch/arm/boot/dts/orion5x-lschl.dts new file mode 100644 index 0000000..9474092 --- /dev/null +++ b/arch/arm/boot/dts/orion5x-lschl.dts @@ -0,0 +1,171 @@ +/* + * Device Tree file for Buffalo Linkstation LS-CHLv3 + * + * Copyright (C) 2016 Ash Hughes <ashley.hughes@blueyonder.co.uk> + * Copyright (C) 2015, 2016 + * Roger Shimizu <rogershimizu@gmail.com> + * + * This file is dual-licensed: you can use it either under the terms + * of the GPL or the X11 license, at your option. Note that this dual + * licensing only applies to this file, and not this project as a + * whole. + * + * a) This file is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This file is distributed in the hope that it will be useful + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * Or, alternatively + * + * b) Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +/dts-v1/; + +#include "orion5x-linkstation.dtsi" +#include "mvebu-linkstation-gpio-simple.dtsi" +#include "mvebu-linkstation-fan.dtsi" +#include <dt-bindings/gpio/gpio.h> + +/ { + model = "Buffalo Linkstation Live v3 (LS-CHL)"; + compatible = "buffalo,lschl", "marvell,orion5x-88f5182", "marvell,orion5x"; + + memory { /* 128 MB */ + device_type = "memory"; + reg = <0x00000000 0x8000000>; + }; + + gpio_keys { + func { + label = "Function Button"; + linux,code = <KEY_OPTION>; + gpios = <&gpio0 15 GPIO_ACTIVE_LOW>; + }; + + power-on-switch { + gpios = <&gpio0 8 GPIO_ACTIVE_LOW>; + }; + + power-auto-switch { + gpios = <&gpio0 10 GPIO_ACTIVE_LOW>; + }; + }; + + gpio_leds { + pinctrl-0 = <&pmx_led_power &pmx_led_alarm &pmx_led_info &pmx_led_func>; + blue-power-led { + gpios = <&gpio0 0 GPIO_ACTIVE_LOW>; + }; + + red-alarm-led { + gpios = <&gpio0 2 GPIO_ACTIVE_LOW>; + }; + + amber-info-led { + gpios = <&gpio0 3 GPIO_ACTIVE_LOW>; + }; + + func { + label = "lschl:func:blue:top"; + gpios = <&gpio0 17 GPIO_ACTIVE_LOW>; + }; + }; + + gpio_fan { + gpios = <&gpio0 14 GPIO_ACTIVE_LOW + &gpio0 16 GPIO_ACTIVE_LOW>; + + alarm-gpios = <&gpio0 6 GPIO_ACTIVE_HIGH>; + }; +}; + +&pinctrl { + pmx_led_power: pmx-leds { + marvell,pins = "mpp0"; + marvell,function = "gpio"; + }; + + pmx_power_hdd: pmx-power-hdd { + marvell,pins = "mpp1"; + 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_fan_lock: pmx-fan-lock { + marvell,pins = "mpp6"; + marvell,function = "gpio"; + }; + + pmx_power_switch: pmx-power-switch { + marvell,pins = "mpp8", "mpp10", "mpp15"; + marvell,function = "gpio"; + }; + + pmx_power_usb: pmx-power-usb { + marvell,pins = "mpp9"; + marvell,function = "gpio"; + }; + + pmx_fan_high: pmx-fan-high { + marvell,pins = "mpp14"; + marvell,function = "gpio"; + }; + + pmx_fan_low: pmx-fan-low { + marvell,pins = "mpp16"; + marvell,function = "gpio"; + }; + + pmx_led_func: pmx-leds { + marvell,pins = "mpp17"; + marvell,function = "gpio"; + }; + + pmx_sw_init: pmx-sw-init { + marvell,pins = "mpp7"; + marvell,function = "gpio"; + }; +}; + +&hdd_power { + gpios = <&gpio0 1 GPIO_ACTIVE_HIGH>; +}; + +&usb_power { + gpios = <&gpio0 9 GPIO_ACTIVE_HIGH>; +}; + diff --git a/arch/arm/mach-orion5x/Kconfig b/arch/arm/mach-orion5x/Kconfig index 89bb0fc..793efa9 100644 --- a/arch/arm/mach-orion5x/Kconfig +++ b/arch/arm/mach-orion5x/Kconfig @@ -85,8 +85,8 @@ config MACH_LINKSTATION_PRO v2 devices are supported. config MACH_LINKSTATION_LSCHL - bool "Buffalo Linkstation Live v3 (LS-CHL)" - select I2C_BOARDINFO if I2C + bool "Buffalo Linkstation Live v3 (LS-CHL) (Flattened Device Tree)" + select ARCH_ORION5X_DT help Say 'Y' here if you want your kernel to support the Buffalo Linkstation Live v3 (LS-CHL) platform. diff --git a/arch/arm/mach-orion5x/Makefile b/arch/arm/mach-orion5x/Makefile index 4b2502b..ae91872 100644 --- a/arch/arm/mach-orion5x/Makefile +++ b/arch/arm/mach-orion5x/Makefile @@ -18,7 +18,6 @@ obj-$(CONFIG_MACH_WNR854T) += wnr854t-setup.o obj-$(CONFIG_MACH_RD88F5181L_GE) += rd88f5181l-ge-setup.o obj-$(CONFIG_MACH_RD88F5181L_FXO) += rd88f5181l-fxo-setup.o obj-$(CONFIG_MACH_RD88F6183AP_GE) += rd88f6183ap-ge-setup.o -obj-$(CONFIG_MACH_LINKSTATION_LSCHL) += ls-chl-setup.o obj-$(CONFIG_ARCH_ORION5X_DT) += board-dt.o obj-$(CONFIG_MACH_D2NET_DT) += board-d2net.o diff --git a/arch/arm/mach-orion5x/ls-chl-setup.c b/arch/arm/mach-orion5x/ls-chl-setup.c deleted file mode 100644 index dfdaa8a..0000000 --- a/arch/arm/mach-orion5x/ls-chl-setup.c +++ /dev/null @@ -1,331 +0,0 @@ -/* - * arch/arm/mach-orion5x/ls-chl-setup.c - * - * Maintainer: Ash Hughes <ashley.hughes@blueyonder.co.uk> - * - * 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/gpio-fan.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 "common.h" -#include "mpp.h" -#include "orion5x.h" - -/***************************************************************************** - * Linkstation LS-CHL Info - ****************************************************************************/ - -/* - * 256K NOR flash Device bus boot chip select - */ - -#define LSCHL_NOR_BOOT_BASE 0xf4000000 -#define LSCHL_NOR_BOOT_SIZE SZ_256K - -/***************************************************************************** - * 256KB NOR Flash on BOOT Device - ****************************************************************************/ - -static struct physmap_flash_data lschl_nor_flash_data = { - .width = 1, -}; - -static struct resource lschl_nor_flash_resource = { - .flags = IORESOURCE_MEM, - .start = LSCHL_NOR_BOOT_BASE, - .end = LSCHL_NOR_BOOT_BASE + LSCHL_NOR_BOOT_SIZE - 1, -}; - -static struct platform_device lschl_nor_flash = { - .name = "physmap-flash", - .id = 0, - .dev = { - .platform_data = &lschl_nor_flash_data, - }, - .num_resources = 1, - .resource = &lschl_nor_flash_resource, -}; - -/***************************************************************************** - * Ethernet - ****************************************************************************/ - -static struct mv643xx_eth_platform_data lschl_eth_data = { - .phy_addr = MV643XX_ETH_PHY_ADDR(8), -}; - -/***************************************************************************** - * RTC 5C372a on I2C bus - ****************************************************************************/ - -static struct i2c_board_info __initdata lschl_i2c_rtc = { - I2C_BOARD_INFO("rs5c372a", 0x32), -}; - -/***************************************************************************** - * LEDs attached to GPIO - ****************************************************************************/ - -#define LSCHL_GPIO_LED_ALARM 2 -#define LSCHL_GPIO_LED_INFO 3 -#define LSCHL_GPIO_LED_FUNC 17 -#define LSCHL_GPIO_LED_PWR 0 - -static struct gpio_led lschl_led_pins[] = { - { - .name = "alarm:red", - .gpio = LSCHL_GPIO_LED_ALARM, - .active_low = 1, - }, { - .name = "info:amber", - .gpio = LSCHL_GPIO_LED_INFO, - .active_low = 1, - }, { - .name = "func:blue:top", - .gpio = LSCHL_GPIO_LED_FUNC, - .active_low = 1, - }, { - .name = "power:blue:bottom", - .gpio = LSCHL_GPIO_LED_PWR, - }, -}; - -static struct gpio_led_platform_data lschl_led_data = { - .leds = lschl_led_pins, - .num_leds = ARRAY_SIZE(lschl_led_pins), -}; - -static struct platform_device lschl_leds = { - .name = "leds-gpio", - .id = -1, - .dev = { - .platform_data = &lschl_led_data, - }, -}; - -/***************************************************************************** - * SATA - ****************************************************************************/ -static struct mv_sata_platform_data lschl_sata_data = { - .n_ports = 2, -}; - -/***************************************************************************** - * LS-CHL specific power off method: reboot - ****************************************************************************/ -/* - * On the LS-CHL, 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 lschl_power_off(void) -{ - orion5x_restart(REBOOT_HARD, NULL); -} - -/***************************************************************************** - * General Setup - ****************************************************************************/ -#define LSCHL_GPIO_USB_POWER 9 -#define LSCHL_GPIO_AUTO_POWER 17 -#define LSCHL_GPIO_POWER 18 - -/**************************************************************************** - * GPIO Attached Keys - ****************************************************************************/ -#define LSCHL_GPIO_KEY_FUNC 15 -#define LSCHL_GPIO_KEY_POWER 8 -#define LSCHL_GPIO_KEY_AUTOPOWER 10 -#define LSCHL_SW_POWER 0x00 -#define LSCHL_SW_AUTOPOWER 0x01 -#define LSCHL_SW_FUNC 0x02 - -static struct gpio_keys_button lschl_buttons[] = { - { - .type = EV_SW, - .code = LSCHL_SW_POWER, - .gpio = LSCHL_GPIO_KEY_POWER, - .desc = "Power-on Switch", - .active_low = 1, - }, { - .type = EV_SW, - .code = LSCHL_SW_AUTOPOWER, - .gpio = LSCHL_GPIO_KEY_AUTOPOWER, - .desc = "Power-auto Switch", - .active_low = 1, - }, { - .type = EV_SW, - .code = LSCHL_SW_FUNC, - .gpio = LSCHL_GPIO_KEY_FUNC, - .desc = "Function Switch", - .active_low = 1, - }, -}; - -static struct gpio_keys_platform_data lschl_button_data = { - .buttons = lschl_buttons, - .nbuttons = ARRAY_SIZE(lschl_buttons), -}; - -static struct platform_device lschl_button_device = { - .name = "gpio-keys", - .id = -1, - .num_resources = 0, - .dev = { - .platform_data = &lschl_button_data, - }, -}; - -#define LSCHL_GPIO_HDD_POWER 1 - -/**************************************************************************** - * GPIO Fan - ****************************************************************************/ - -#define LSCHL_GPIO_FAN_LOW 16 -#define LSCHL_GPIO_FAN_HIGH 14 -#define LSCHL_GPIO_FAN_LOCK 6 - -static struct gpio_fan_alarm lschl_alarm = { - .gpio = LSCHL_GPIO_FAN_LOCK, -}; - -static struct gpio_fan_speed lschl_speeds[] = { - { - .rpm = 0, - .ctrl_val = 3, - }, { - .rpm = 1500, - .ctrl_val = 2, - }, { - .rpm = 3250, - .ctrl_val = 1, - }, { - .rpm = 5000, - .ctrl_val = 0, - }, -}; - -static int lschl_gpio_list[] = { - LSCHL_GPIO_FAN_HIGH, LSCHL_GPIO_FAN_LOW, -}; - -static struct gpio_fan_platform_data lschl_fan_data = { - .num_ctrl = ARRAY_SIZE(lschl_gpio_list), - .ctrl = lschl_gpio_list, - .alarm = &lschl_alarm, - .num_speed = ARRAY_SIZE(lschl_speeds), - .speed = lschl_speeds, -}; - -static struct platform_device lschl_fan_device = { - .name = "gpio-fan", - .id = -1, - .num_resources = 0, - .dev = { - .platform_data = &lschl_fan_data, - }, -}; - -/**************************************************************************** - * GPIO Data - ****************************************************************************/ - -static unsigned int lschl_mpp_modes[] __initdata = { - MPP0_GPIO, /* LED POWER */ - MPP1_GPIO, /* HDD POWER */ - MPP2_GPIO, /* LED ALARM */ - MPP3_GPIO, /* LED INFO */ - MPP4_UNUSED, - MPP5_UNUSED, - MPP6_GPIO, /* FAN LOCK */ - MPP7_GPIO, /* SW INIT */ - MPP8_GPIO, /* SW POWER */ - MPP9_GPIO, /* USB POWER */ - MPP10_GPIO, /* SW AUTO POWER */ - MPP11_UNUSED, - MPP12_UNUSED, - MPP13_UNUSED, - MPP14_GPIO, /* FAN HIGH */ - MPP15_GPIO, /* SW FUNC */ - MPP16_GPIO, /* FAN LOW */ - MPP17_GPIO, /* LED FUNC */ - MPP18_UNUSED, - MPP19_UNUSED, - 0, -}; - -static void __init lschl_init(void) -{ - /* - * Setup basic Orion functions. Needs to be called early. - */ - orion5x_init(); - - orion5x_mpp_conf(lschl_mpp_modes); - - /* - * Configure peripherals. - */ - orion5x_ehci0_init(); - orion5x_ehci1_init(); - orion5x_eth_init(&lschl_eth_data); - orion5x_i2c_init(); - orion5x_sata_init(&lschl_sata_data); - orion5x_uart0_init(); - orion5x_xor_init(); - - mvebu_mbus_add_window_by_id(ORION_MBUS_DEVBUS_BOOT_TARGET, - ORION_MBUS_DEVBUS_BOOT_ATTR, - LSCHL_NOR_BOOT_BASE, - LSCHL_NOR_BOOT_SIZE); - platform_device_register(&lschl_nor_flash); - - platform_device_register(&lschl_leds); - - platform_device_register(&lschl_button_device); - - platform_device_register(&lschl_fan_device); - - i2c_register_board_info(0, &lschl_i2c_rtc, 1); - - /* usb power on */ - gpio_set_value(LSCHL_GPIO_USB_POWER, 1); - - /* register power-off method */ - pm_power_off = lschl_power_off; - - pr_info("%s: finished\n", __func__); -} - -MACHINE_START(LINKSTATION_LSCHL, "Buffalo Linkstation LiveV3 (LS-CHL)") - /* Maintainer: Ash Hughes <ashley.hughes@blueyonder.co.uk> */ - .atag_offset = 0x100, - .nr_irqs = ORION5X_NR_IRQS, - .init_machine = lschl_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 -- 2.7.4 On 04/11/16 12:44, Gregory CLEMENT wrote: > Hi Ash, > > On mar., oct. 25 2016, Ash Hughes <sehguh.hsa@gmail.com> wrote: > >> Hi all, >> >> This patch converts my orion5x ls-chl Linkstation device to device >> tree. > I was about to apply your patch but it does not apply on mvebu/dt or > even on v4.9-rc1. > > Could you rebase it? > > Thanks, > > Gregory > >> Signed-off-by: Ashley Hughes <ashley.hughes@blueyonder.co.uk> >> --- >> arch/arm/boot/dts/Makefile | 1 + >> arch/arm/boot/dts/orion5x-lschl.dts | 171 ++++++++++++++++++ >> arch/arm/mach-orion5x/Kconfig | 4 +- >> arch/arm/mach-orion5x/Makefile | 1 - >> arch/arm/mach-orion5x/ls-chl-setup.c | 331 ----------------------------------- >> 5 files changed, 174 insertions(+), 334 deletions(-) >> create mode 100644 arch/arm/boot/dts/orion5x-lschl.dts >> delete mode 100644 arch/arm/mach-orion5x/ls-chl-setup.c >> >> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile >> index befcd26..4853049 100644 >> --- a/arch/arm/boot/dts/Makefile >> +++ b/arch/arm/boot/dts/Makefile >> @@ -597,6 +597,7 @@ dtb-$(CONFIG_ARCH_ORION5X) += \ >> orion5x-lacie-ethernet-disk-mini-v2.dtb \ >> orion5x-linkstation-lsgl.dtb \ >> orion5x-linkstation-lswtgl.dtb \ >> + orion5x-lschl.dtb \ >> orion5x-lswsgl.dtb \ >> orion5x-maxtor-shared-storage-2.dtb \ >> orion5x-netgear-wnr854t.dtb \ >> diff --git a/arch/arm/boot/dts/orion5x-lschl.dts b/arch/arm/boot/dts/orion5x-lschl.dts >> new file mode 100644 >> index 0000000..9474092 >> --- /dev/null >> +++ b/arch/arm/boot/dts/orion5x-lschl.dts >> @@ -0,0 +1,171 @@ >> +/* >> + * Device Tree file for Buffalo Linkstation LS-CHLv3 >> + * >> + * Copyright (C) 2016 Ash Hughes <ashley.hughes@blueyonder.co.uk> >> + * Copyright (C) 2015, 2016 >> + * Roger Shimizu <rogershimizu@gmail.com> >> + * >> + * This file is dual-licensed: you can use it either under the terms >> + * of the GPL or the X11 license, at your option. Note that this dual >> + * licensing only applies to this file, and not this project as a >> + * whole. >> + * >> + * a) This file is free software; you can redistribute it and/or >> + * modify it under the terms of the GNU General Public License as >> + * published by the Free Software Foundation; either version 2 of the >> + * License, or (at your option) any later version. >> + * >> + * This file is distributed in the hope that it will be useful >> + * but WITHOUT ANY WARRANTY; without even the implied warranty of >> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >> + * GNU General Public License for more details. >> + * >> + * Or, alternatively >> + * >> + * b) Permission is hereby granted, free of charge, to any person >> + * obtaining a copy of this software and associated documentation >> + * files (the "Software"), to deal in the Software without >> + * restriction, including without limitation the rights to use >> + * copy, modify, merge, publish, distribute, sublicense, and/or >> + * sell copies of the Software, and to permit persons to whom the >> + * Software is furnished to do so, subject to the following >> + * conditions: >> + * >> + * The above copyright notice and this permission notice shall be >> + * included in all copies or substantial portions of the Software. >> + * >> + * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND >> + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES >> + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND >> + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT >> + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY >> + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING >> + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR >> + * OTHER DEALINGS IN THE SOFTWARE. >> + */ >> + >> +/dts-v1/; >> + >> +#include "orion5x-linkstation.dtsi" >> +#include "mvebu-linkstation-gpio-simple.dtsi" >> +#include "mvebu-linkstation-fan.dtsi" >> +#include <dt-bindings/gpio/gpio.h> >> + >> +/ { >> + model = "Buffalo Linkstation Live v3 (LS-CHL)"; >> + compatible = "buffalo,lschl", "marvell,orion5x-88f5182", "marvell,orion5x"; >> + >> + memory { /* 128 MB */ >> + device_type = "memory"; >> + reg = <0x00000000 0x8000000>; >> + }; >> + >> + gpio_keys { >> + func { >> + label = "Function Button"; >> + linux,code = <KEY_OPTION>; >> + gpios = <&gpio0 15 GPIO_ACTIVE_LOW>; >> + }; >> + >> + power-on-switch { >> + gpios = <&gpio0 8 GPIO_ACTIVE_LOW>; >> + }; >> + >> + power-auto-switch { >> + gpios = <&gpio0 10 GPIO_ACTIVE_LOW>; >> + }; >> + }; >> + >> + gpio_leds { >> + pinctrl-0 = <&pmx_led_power &pmx_led_alarm &pmx_led_info &pmx_led_func>; >> + blue-power-led { >> + gpios = <&gpio0 0 GPIO_ACTIVE_LOW>; >> + }; >> + >> + red-alarm-led { >> + gpios = <&gpio0 2 GPIO_ACTIVE_LOW>; >> + }; >> + >> + amber-info-led { >> + gpios = <&gpio0 3 GPIO_ACTIVE_LOW>; >> + }; >> + >> + func { >> + label = "lschl:func:blue:top"; >> + gpios = <&gpio0 17 GPIO_ACTIVE_LOW>; >> + }; >> + }; >> + >> + gpio_fan { >> + gpios = <&gpio0 14 GPIO_ACTIVE_LOW >> + &gpio0 16 GPIO_ACTIVE_LOW>; >> + >> + alarm-gpios = <&gpio0 6 GPIO_ACTIVE_HIGH>; >> + }; >> +}; >> + >> +&pinctrl { >> + pmx_led_power: pmx-leds { >> + marvell,pins = "mpp0"; >> + marvell,function = "gpio"; >> + }; >> + >> + pmx_power_hdd: pmx-power-hdd { >> + marvell,pins = "mpp1"; >> + 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_fan_lock: pmx-fan-lock { >> + marvell,pins = "mpp6"; >> + marvell,function = "gpio"; >> + }; >> + >> + pmx_power_switch: pmx-power-switch { >> + marvell,pins = "mpp8", "mpp10", "mpp15"; >> + marvell,function = "gpio"; >> + }; >> + >> + pmx_power_usb: pmx-power-usb { >> + marvell,pins = "mpp9"; >> + marvell,function = "gpio"; >> + }; >> + >> + pmx_fan_high: pmx-fan-high { >> + marvell,pins = "mpp14"; >> + marvell,function = "gpio"; >> + }; >> + >> + pmx_fan_low: pmx-fan-low { >> + marvell,pins = "mpp16"; >> + marvell,function = "gpio"; >> + }; >> + >> + pmx_led_func: pmx-leds { >> + marvell,pins = "mpp17"; >> + marvell,function = "gpio"; >> + }; >> + >> + pmx_sw_init: pmx-sw-init { >> + marvell,pins = "mpp7"; >> + marvell,function = "gpio"; >> + }; >> +}; >> + >> +&hdd_power { >> + gpios = <&gpio0 1 GPIO_ACTIVE_HIGH>; >> +}; >> + >> +&usb_power { >> + gpios = <&gpio0 9 GPIO_ACTIVE_HIGH>; >> +}; >> + >> diff --git a/arch/arm/mach-orion5x/Kconfig b/arch/arm/mach-orion5x/Kconfig >> index 89bb0fc..793efa9 100644 >> --- a/arch/arm/mach-orion5x/Kconfig >> +++ b/arch/arm/mach-orion5x/Kconfig >> @@ -85,8 +85,8 @@ config MACH_LINKSTATION_PRO >> v2 devices are supported. >> >> config MACH_LINKSTATION_LSCHL >> - bool "Buffalo Linkstation Live v3 (LS-CHL)" >> - select I2C_BOARDINFO if I2C >> + bool "Buffalo Linkstation Live v3 (LS-CHL) (Flattened Device Tree)" >> + select ARCH_ORION5X_DT >> help >> Say 'Y' here if you want your kernel to support the >> Buffalo Linkstation Live v3 (LS-CHL) platform. >> diff --git a/arch/arm/mach-orion5x/Makefile b/arch/arm/mach-orion5x/Makefile >> index 4b2502b..ae91872 100644 >> --- a/arch/arm/mach-orion5x/Makefile >> +++ b/arch/arm/mach-orion5x/Makefile >> @@ -18,7 +18,6 @@ obj-$(CONFIG_MACH_WNR854T) += wnr854t-setup.o >> obj-$(CONFIG_MACH_RD88F5181L_GE) += rd88f5181l-ge-setup.o >> obj-$(CONFIG_MACH_RD88F5181L_FXO) += rd88f5181l-fxo-setup.o >> obj-$(CONFIG_MACH_RD88F6183AP_GE) += rd88f6183ap-ge-setup.o >> -obj-$(CONFIG_MACH_LINKSTATION_LSCHL) += ls-chl-setup.o >> >> obj-$(CONFIG_ARCH_ORION5X_DT) += board-dt.o >> obj-$(CONFIG_MACH_D2NET_DT) += board-d2net.o >> diff --git a/arch/arm/mach-orion5x/ls-chl-setup.c b/arch/arm/mach-orion5x/ls-chl-setup.c >> deleted file mode 100644 >> index dfdaa8a..0000000 >> --- a/arch/arm/mach-orion5x/ls-chl-setup.c >> +++ /dev/null >> @@ -1,331 +0,0 @@ >> -/* >> - * arch/arm/mach-orion5x/ls-chl-setup.c >> - * >> - * Maintainer: Ash Hughes <ashley.hughes@blueyonder.co.uk> >> - * >> - * 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/gpio-fan.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 "common.h" >> -#include "mpp.h" >> -#include "orion5x.h" >> - >> -/***************************************************************************** >> - * Linkstation LS-CHL Info >> - ****************************************************************************/ >> - >> -/* >> - * 256K NOR flash Device bus boot chip select >> - */ >> - >> -#define LSCHL_NOR_BOOT_BASE 0xf4000000 >> -#define LSCHL_NOR_BOOT_SIZE SZ_256K >> - >> -/***************************************************************************** >> - * 256KB NOR Flash on BOOT Device >> - ****************************************************************************/ >> - >> -static struct physmap_flash_data lschl_nor_flash_data = { >> - .width = 1, >> -}; >> - >> -static struct resource lschl_nor_flash_resource = { >> - .flags = IORESOURCE_MEM, >> - .start = LSCHL_NOR_BOOT_BASE, >> - .end = LSCHL_NOR_BOOT_BASE + LSCHL_NOR_BOOT_SIZE - 1, >> -}; >> - >> -static struct platform_device lschl_nor_flash = { >> - .name = "physmap-flash", >> - .id = 0, >> - .dev = { >> - .platform_data = &lschl_nor_flash_data, >> - }, >> - .num_resources = 1, >> - .resource = &lschl_nor_flash_resource, >> -}; >> - >> -/***************************************************************************** >> - * Ethernet >> - ****************************************************************************/ >> - >> -static struct mv643xx_eth_platform_data lschl_eth_data = { >> - .phy_addr = MV643XX_ETH_PHY_ADDR(8), >> -}; >> - >> -/***************************************************************************** >> - * RTC 5C372a on I2C bus >> - ****************************************************************************/ >> - >> -static struct i2c_board_info __initdata lschl_i2c_rtc = { >> - I2C_BOARD_INFO("rs5c372a", 0x32), >> -}; >> - >> -/***************************************************************************** >> - * LEDs attached to GPIO >> - ****************************************************************************/ >> - >> -#define LSCHL_GPIO_LED_ALARM 2 >> -#define LSCHL_GPIO_LED_INFO 3 >> -#define LSCHL_GPIO_LED_FUNC 17 >> -#define LSCHL_GPIO_LED_PWR 0 >> - >> -static struct gpio_led lschl_led_pins[] = { >> - { >> - .name = "alarm:red", >> - .gpio = LSCHL_GPIO_LED_ALARM, >> - .active_low = 1, >> - }, { >> - .name = "info:amber", >> - .gpio = LSCHL_GPIO_LED_INFO, >> - .active_low = 1, >> - }, { >> - .name = "func:blue:top", >> - .gpio = LSCHL_GPIO_LED_FUNC, >> - .active_low = 1, >> - }, { >> - .name = "power:blue:bottom", >> - .gpio = LSCHL_GPIO_LED_PWR, >> - }, >> -}; >> - >> -static struct gpio_led_platform_data lschl_led_data = { >> - .leds = lschl_led_pins, >> - .num_leds = ARRAY_SIZE(lschl_led_pins), >> -}; >> - >> -static struct platform_device lschl_leds = { >> - .name = "leds-gpio", >> - .id = -1, >> - .dev = { >> - .platform_data = &lschl_led_data, >> - }, >> -}; >> - >> -/***************************************************************************** >> - * SATA >> - ****************************************************************************/ >> -static struct mv_sata_platform_data lschl_sata_data = { >> - .n_ports = 2, >> -}; >> - >> -/***************************************************************************** >> - * LS-CHL specific power off method: reboot >> - ****************************************************************************/ >> -/* >> - * On the LS-CHL, 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 lschl_power_off(void) >> -{ >> - orion5x_restart(REBOOT_HARD, NULL); >> -} >> - >> -/***************************************************************************** >> - * General Setup >> - ****************************************************************************/ >> -#define LSCHL_GPIO_USB_POWER 9 >> -#define LSCHL_GPIO_AUTO_POWER 17 >> -#define LSCHL_GPIO_POWER 18 >> - >> -/**************************************************************************** >> - * GPIO Attached Keys >> - ****************************************************************************/ >> -#define LSCHL_GPIO_KEY_FUNC 15 >> -#define LSCHL_GPIO_KEY_POWER 8 >> -#define LSCHL_GPIO_KEY_AUTOPOWER 10 >> -#define LSCHL_SW_POWER 0x00 >> -#define LSCHL_SW_AUTOPOWER 0x01 >> -#define LSCHL_SW_FUNC 0x02 >> - >> -static struct gpio_keys_button lschl_buttons[] = { >> - { >> - .type = EV_SW, >> - .code = LSCHL_SW_POWER, >> - .gpio = LSCHL_GPIO_KEY_POWER, >> - .desc = "Power-on Switch", >> - .active_low = 1, >> - }, { >> - .type = EV_SW, >> - .code = LSCHL_SW_AUTOPOWER, >> - .gpio = LSCHL_GPIO_KEY_AUTOPOWER, >> - .desc = "Power-auto Switch", >> - .active_low = 1, >> - }, { >> - .type = EV_SW, >> - .code = LSCHL_SW_FUNC, >> - .gpio = LSCHL_GPIO_KEY_FUNC, >> - .desc = "Function Switch", >> - .active_low = 1, >> - }, >> -}; >> - >> -static struct gpio_keys_platform_data lschl_button_data = { >> - .buttons = lschl_buttons, >> - .nbuttons = ARRAY_SIZE(lschl_buttons), >> -}; >> - >> -static struct platform_device lschl_button_device = { >> - .name = "gpio-keys", >> - .id = -1, >> - .num_resources = 0, >> - .dev = { >> - .platform_data = &lschl_button_data, >> - }, >> -}; >> - >> -#define LSCHL_GPIO_HDD_POWER 1 >> - >> -/**************************************************************************** >> - * GPIO Fan >> - ****************************************************************************/ >> - >> -#define LSCHL_GPIO_FAN_LOW 16 >> -#define LSCHL_GPIO_FAN_HIGH 14 >> -#define LSCHL_GPIO_FAN_LOCK 6 >> - >> -static struct gpio_fan_alarm lschl_alarm = { >> - .gpio = LSCHL_GPIO_FAN_LOCK, >> -}; >> - >> -static struct gpio_fan_speed lschl_speeds[] = { >> - { >> - .rpm = 0, >> - .ctrl_val = 3, >> - }, { >> - .rpm = 1500, >> - .ctrl_val = 2, >> - }, { >> - .rpm = 3250, >> - .ctrl_val = 1, >> - }, { >> - .rpm = 5000, >> - .ctrl_val = 0, >> - }, >> -}; >> - >> -static int lschl_gpio_list[] = { >> - LSCHL_GPIO_FAN_HIGH, LSCHL_GPIO_FAN_LOW, >> -}; >> - >> -static struct gpio_fan_platform_data lschl_fan_data = { >> - .num_ctrl = ARRAY_SIZE(lschl_gpio_list), >> - .ctrl = lschl_gpio_list, >> - .alarm = &lschl_alarm, >> - .num_speed = ARRAY_SIZE(lschl_speeds), >> - .speed = lschl_speeds, >> -}; >> - >> -static struct platform_device lschl_fan_device = { >> - .name = "gpio-fan", >> - .id = -1, >> - .num_resources = 0, >> - .dev = { >> - .platform_data = &lschl_fan_data, >> - }, >> -}; >> - >> -/**************************************************************************** >> - * GPIO Data >> - ****************************************************************************/ >> - >> -static unsigned int lschl_mpp_modes[] __initdata = { >> - MPP0_GPIO, /* LED POWER */ >> - MPP1_GPIO, /* HDD POWER */ >> - MPP2_GPIO, /* LED ALARM */ >> - MPP3_GPIO, /* LED INFO */ >> - MPP4_UNUSED, >> - MPP5_UNUSED, >> - MPP6_GPIO, /* FAN LOCK */ >> - MPP7_GPIO, /* SW INIT */ >> - MPP8_GPIO, /* SW POWER */ >> - MPP9_GPIO, /* USB POWER */ >> - MPP10_GPIO, /* SW AUTO POWER */ >> - MPP11_UNUSED, >> - MPP12_UNUSED, >> - MPP13_UNUSED, >> - MPP14_GPIO, /* FAN HIGH */ >> - MPP15_GPIO, /* SW FUNC */ >> - MPP16_GPIO, /* FAN LOW */ >> - MPP17_GPIO, /* LED FUNC */ >> - MPP18_UNUSED, >> - MPP19_UNUSED, >> - 0, >> -}; >> - >> -static void __init lschl_init(void) >> -{ >> - /* >> - * Setup basic Orion functions. Needs to be called early. >> - */ >> - orion5x_init(); >> - >> - orion5x_mpp_conf(lschl_mpp_modes); >> - >> - /* >> - * Configure peripherals. >> - */ >> - orion5x_ehci0_init(); >> - orion5x_ehci1_init(); >> - orion5x_eth_init(&lschl_eth_data); >> - orion5x_i2c_init(); >> - orion5x_sata_init(&lschl_sata_data); >> - orion5x_uart0_init(); >> - orion5x_xor_init(); >> - >> - mvebu_mbus_add_window_by_id(ORION_MBUS_DEVBUS_BOOT_TARGET, >> - ORION_MBUS_DEVBUS_BOOT_ATTR, >> - LSCHL_NOR_BOOT_BASE, >> - LSCHL_NOR_BOOT_SIZE); >> - platform_device_register(&lschl_nor_flash); >> - >> - platform_device_register(&lschl_leds); >> - >> - platform_device_register(&lschl_button_device); >> - >> - platform_device_register(&lschl_fan_device); >> - >> - i2c_register_board_info(0, &lschl_i2c_rtc, 1); >> - >> - /* usb power on */ >> - gpio_set_value(LSCHL_GPIO_USB_POWER, 1); >> - >> - /* register power-off method */ >> - pm_power_off = lschl_power_off; >> - >> - pr_info("%s: finished\n", __func__); >> -} >> - >> -MACHINE_START(LINKSTATION_LSCHL, "Buffalo Linkstation LiveV3 (LS-CHL)") >> - /* Maintainer: Ash Hughes <ashley.hughes@blueyonder.co.uk> */ >> - .atag_offset = 0x100, >> - .nr_irqs = ORION5X_NR_IRQS, >> - .init_machine = lschl_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 >> -- 2.7.4 >> >> ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH] convert orion5x ls-chl to device tree 2016-11-05 23:02 ` Ash Hughes @ 2016-11-07 16:29 ` Gregory CLEMENT 0 siblings, 0 replies; 5+ messages in thread From: Gregory CLEMENT @ 2016-11-07 16:29 UTC (permalink / raw) To: linux-arm-kernel Hi Ash, On dim., nov. 06 2016, Ash Hughes <sehguh.hsa@gmail.com> wrote: > Sorry about that, formatting error with tabs being converted to spaces > in email. This should now apply. I applied it to mvebu/dt. Next time could you send it in a separate email? Also, for device tree the topic should start by "ARM: dts: orion5x:". And last point in your second version you forgot the commit log, I took care of it too by using the one from your first version. Thanks, Gregory > > Ash > --- > From 398d2c6e5c834e6887a5e6b5e898455977d0c00b Mon Sep 17 00:00:00 2001 > From: Ashley Hughes <ashley.hughes@blueyonder.co.uk> > Date: Sun, 9 Oct 2016 17:04:12 +0100 > Subject: [PATCH] convert ls-chl to FDT > > Signed-off-by: Ashley Hughes <ashley.hughes@blueyonder.co.uk> > --- > arch/arm/boot/dts/Makefile | 1 + > arch/arm/boot/dts/orion5x-lschl.dts | 171 ++++++++++++++++++ > arch/arm/mach-orion5x/Kconfig | 4 +- > arch/arm/mach-orion5x/Makefile | 1 - > arch/arm/mach-orion5x/ls-chl-setup.c | 331 ----------------------------------- > 5 files changed, 174 insertions(+), 334 deletions(-) > create mode 100644 arch/arm/boot/dts/orion5x-lschl.dts > delete mode 100644 arch/arm/mach-orion5x/ls-chl-setup.c > > diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile > index befcd26..4853049 100644 > --- a/arch/arm/boot/dts/Makefile > +++ b/arch/arm/boot/dts/Makefile > @@ -597,6 +597,7 @@ dtb-$(CONFIG_ARCH_ORION5X) += \ > orion5x-lacie-ethernet-disk-mini-v2.dtb \ > orion5x-linkstation-lsgl.dtb \ > orion5x-linkstation-lswtgl.dtb \ > + orion5x-lschl.dtb \ > orion5x-lswsgl.dtb \ > orion5x-maxtor-shared-storage-2.dtb \ > orion5x-netgear-wnr854t.dtb \ > diff --git a/arch/arm/boot/dts/orion5x-lschl.dts b/arch/arm/boot/dts/orion5x-lschl.dts > new file mode 100644 > index 0000000..9474092 > --- /dev/null > +++ b/arch/arm/boot/dts/orion5x-lschl.dts > @@ -0,0 +1,171 @@ > +/* > + * Device Tree file for Buffalo Linkstation LS-CHLv3 > + * > + * Copyright (C) 2016 Ash Hughes <ashley.hughes@blueyonder.co.uk> > + * Copyright (C) 2015, 2016 > + * Roger Shimizu <rogershimizu@gmail.com> > + * > + * This file is dual-licensed: you can use it either under the terms > + * of the GPL or the X11 license, at your option. Note that this dual > + * licensing only applies to this file, and not this project as a > + * whole. > + * > + * a) This file is free software; you can redistribute it and/or > + * modify it under the terms of the GNU General Public License as > + * published by the Free Software Foundation; either version 2 of the > + * License, or (at your option) any later version. > + * > + * This file is distributed in the hope that it will be useful > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > + * GNU General Public License for more details. > + * > + * Or, alternatively > + * > + * b) Permission is hereby granted, free of charge, to any person > + * obtaining a copy of this software and associated documentation > + * files (the "Software"), to deal in the Software without > + * restriction, including without limitation the rights to use > + * copy, modify, merge, publish, distribute, sublicense, and/or > + * sell copies of the Software, and to permit persons to whom the > + * Software is furnished to do so, subject to the following > + * conditions: > + * > + * The above copyright notice and this permission notice shall be > + * included in all copies or substantial portions of the Software. > + * > + * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND > + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES > + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND > + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT > + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY > + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING > + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR > + * OTHER DEALINGS IN THE SOFTWARE. > + */ > + > +/dts-v1/; > + > +#include "orion5x-linkstation.dtsi" > +#include "mvebu-linkstation-gpio-simple.dtsi" > +#include "mvebu-linkstation-fan.dtsi" > +#include <dt-bindings/gpio/gpio.h> > + > +/ { > + model = "Buffalo Linkstation Live v3 (LS-CHL)"; > + compatible = "buffalo,lschl", "marvell,orion5x-88f5182", "marvell,orion5x"; > + > + memory { /* 128 MB */ > + device_type = "memory"; > + reg = <0x00000000 0x8000000>; > + }; > + > + gpio_keys { > + func { > + label = "Function Button"; > + linux,code = <KEY_OPTION>; > + gpios = <&gpio0 15 GPIO_ACTIVE_LOW>; > + }; > + > + power-on-switch { > + gpios = <&gpio0 8 GPIO_ACTIVE_LOW>; > + }; > + > + power-auto-switch { > + gpios = <&gpio0 10 GPIO_ACTIVE_LOW>; > + }; > + }; > + > + gpio_leds { > + pinctrl-0 = <&pmx_led_power &pmx_led_alarm &pmx_led_info &pmx_led_func>; > + blue-power-led { > + gpios = <&gpio0 0 GPIO_ACTIVE_LOW>; > + }; > + > + red-alarm-led { > + gpios = <&gpio0 2 GPIO_ACTIVE_LOW>; > + }; > + > + amber-info-led { > + gpios = <&gpio0 3 GPIO_ACTIVE_LOW>; > + }; > + > + func { > + label = "lschl:func:blue:top"; > + gpios = <&gpio0 17 GPIO_ACTIVE_LOW>; > + }; > + }; > + > + gpio_fan { > + gpios = <&gpio0 14 GPIO_ACTIVE_LOW > + &gpio0 16 GPIO_ACTIVE_LOW>; > + > + alarm-gpios = <&gpio0 6 GPIO_ACTIVE_HIGH>; > + }; > +}; > + > +&pinctrl { > + pmx_led_power: pmx-leds { > + marvell,pins = "mpp0"; > + marvell,function = "gpio"; > + }; > + > + pmx_power_hdd: pmx-power-hdd { > + marvell,pins = "mpp1"; > + 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_fan_lock: pmx-fan-lock { > + marvell,pins = "mpp6"; > + marvell,function = "gpio"; > + }; > + > + pmx_power_switch: pmx-power-switch { > + marvell,pins = "mpp8", "mpp10", "mpp15"; > + marvell,function = "gpio"; > + }; > + > + pmx_power_usb: pmx-power-usb { > + marvell,pins = "mpp9"; > + marvell,function = "gpio"; > + }; > + > + pmx_fan_high: pmx-fan-high { > + marvell,pins = "mpp14"; > + marvell,function = "gpio"; > + }; > + > + pmx_fan_low: pmx-fan-low { > + marvell,pins = "mpp16"; > + marvell,function = "gpio"; > + }; > + > + pmx_led_func: pmx-leds { > + marvell,pins = "mpp17"; > + marvell,function = "gpio"; > + }; > + > + pmx_sw_init: pmx-sw-init { > + marvell,pins = "mpp7"; > + marvell,function = "gpio"; > + }; > +}; > + > +&hdd_power { > + gpios = <&gpio0 1 GPIO_ACTIVE_HIGH>; > +}; > + > +&usb_power { > + gpios = <&gpio0 9 GPIO_ACTIVE_HIGH>; > +}; > + > diff --git a/arch/arm/mach-orion5x/Kconfig b/arch/arm/mach-orion5x/Kconfig > index 89bb0fc..793efa9 100644 > --- a/arch/arm/mach-orion5x/Kconfig > +++ b/arch/arm/mach-orion5x/Kconfig > @@ -85,8 +85,8 @@ config MACH_LINKSTATION_PRO > v2 devices are supported. > > config MACH_LINKSTATION_LSCHL > - bool "Buffalo Linkstation Live v3 (LS-CHL)" > - select I2C_BOARDINFO if I2C > + bool "Buffalo Linkstation Live v3 (LS-CHL) (Flattened Device Tree)" > + select ARCH_ORION5X_DT > help > Say 'Y' here if you want your kernel to support the > Buffalo Linkstation Live v3 (LS-CHL) platform. > diff --git a/arch/arm/mach-orion5x/Makefile b/arch/arm/mach-orion5x/Makefile > index 4b2502b..ae91872 100644 > --- a/arch/arm/mach-orion5x/Makefile > +++ b/arch/arm/mach-orion5x/Makefile > @@ -18,7 +18,6 @@ obj-$(CONFIG_MACH_WNR854T) += wnr854t-setup.o > obj-$(CONFIG_MACH_RD88F5181L_GE) += rd88f5181l-ge-setup.o > obj-$(CONFIG_MACH_RD88F5181L_FXO) += rd88f5181l-fxo-setup.o > obj-$(CONFIG_MACH_RD88F6183AP_GE) += rd88f6183ap-ge-setup.o > -obj-$(CONFIG_MACH_LINKSTATION_LSCHL) += ls-chl-setup.o > > obj-$(CONFIG_ARCH_ORION5X_DT) += board-dt.o > obj-$(CONFIG_MACH_D2NET_DT) += board-d2net.o > diff --git a/arch/arm/mach-orion5x/ls-chl-setup.c b/arch/arm/mach-orion5x/ls-chl-setup.c > deleted file mode 100644 > index dfdaa8a..0000000 > --- a/arch/arm/mach-orion5x/ls-chl-setup.c > +++ /dev/null > @@ -1,331 +0,0 @@ > -/* > - * arch/arm/mach-orion5x/ls-chl-setup.c > - * > - * Maintainer: Ash Hughes <ashley.hughes@blueyonder.co.uk> > - * > - * 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/gpio-fan.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 "common.h" > -#include "mpp.h" > -#include "orion5x.h" > - > -/***************************************************************************** > - * Linkstation LS-CHL Info > - ****************************************************************************/ > - > -/* > - * 256K NOR flash Device bus boot chip select > - */ > - > -#define LSCHL_NOR_BOOT_BASE 0xf4000000 > -#define LSCHL_NOR_BOOT_SIZE SZ_256K > - > -/***************************************************************************** > - * 256KB NOR Flash on BOOT Device > - ****************************************************************************/ > - > -static struct physmap_flash_data lschl_nor_flash_data = { > - .width = 1, > -}; > - > -static struct resource lschl_nor_flash_resource = { > - .flags = IORESOURCE_MEM, > - .start = LSCHL_NOR_BOOT_BASE, > - .end = LSCHL_NOR_BOOT_BASE + LSCHL_NOR_BOOT_SIZE - 1, > -}; > - > -static struct platform_device lschl_nor_flash = { > - .name = "physmap-flash", > - .id = 0, > - .dev = { > - .platform_data = &lschl_nor_flash_data, > - }, > - .num_resources = 1, > - .resource = &lschl_nor_flash_resource, > -}; > - > -/***************************************************************************** > - * Ethernet > - ****************************************************************************/ > - > -static struct mv643xx_eth_platform_data lschl_eth_data = { > - .phy_addr = MV643XX_ETH_PHY_ADDR(8), > -}; > - > -/***************************************************************************** > - * RTC 5C372a on I2C bus > - ****************************************************************************/ > - > -static struct i2c_board_info __initdata lschl_i2c_rtc = { > - I2C_BOARD_INFO("rs5c372a", 0x32), > -}; > - > -/***************************************************************************** > - * LEDs attached to GPIO > - ****************************************************************************/ > - > -#define LSCHL_GPIO_LED_ALARM 2 > -#define LSCHL_GPIO_LED_INFO 3 > -#define LSCHL_GPIO_LED_FUNC 17 > -#define LSCHL_GPIO_LED_PWR 0 > - > -static struct gpio_led lschl_led_pins[] = { > - { > - .name = "alarm:red", > - .gpio = LSCHL_GPIO_LED_ALARM, > - .active_low = 1, > - }, { > - .name = "info:amber", > - .gpio = LSCHL_GPIO_LED_INFO, > - .active_low = 1, > - }, { > - .name = "func:blue:top", > - .gpio = LSCHL_GPIO_LED_FUNC, > - .active_low = 1, > - }, { > - .name = "power:blue:bottom", > - .gpio = LSCHL_GPIO_LED_PWR, > - }, > -}; > - > -static struct gpio_led_platform_data lschl_led_data = { > - .leds = lschl_led_pins, > - .num_leds = ARRAY_SIZE(lschl_led_pins), > -}; > - > -static struct platform_device lschl_leds = { > - .name = "leds-gpio", > - .id = -1, > - .dev = { > - .platform_data = &lschl_led_data, > - }, > -}; > - > -/***************************************************************************** > - * SATA > - ****************************************************************************/ > -static struct mv_sata_platform_data lschl_sata_data = { > - .n_ports = 2, > -}; > - > -/***************************************************************************** > - * LS-CHL specific power off method: reboot > - ****************************************************************************/ > -/* > - * On the LS-CHL, 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 lschl_power_off(void) > -{ > - orion5x_restart(REBOOT_HARD, NULL); > -} > - > -/***************************************************************************** > - * General Setup > - ****************************************************************************/ > -#define LSCHL_GPIO_USB_POWER 9 > -#define LSCHL_GPIO_AUTO_POWER 17 > -#define LSCHL_GPIO_POWER 18 > - > -/**************************************************************************** > - * GPIO Attached Keys > - ****************************************************************************/ > -#define LSCHL_GPIO_KEY_FUNC 15 > -#define LSCHL_GPIO_KEY_POWER 8 > -#define LSCHL_GPIO_KEY_AUTOPOWER 10 > -#define LSCHL_SW_POWER 0x00 > -#define LSCHL_SW_AUTOPOWER 0x01 > -#define LSCHL_SW_FUNC 0x02 > - > -static struct gpio_keys_button lschl_buttons[] = { > - { > - .type = EV_SW, > - .code = LSCHL_SW_POWER, > - .gpio = LSCHL_GPIO_KEY_POWER, > - .desc = "Power-on Switch", > - .active_low = 1, > - }, { > - .type = EV_SW, > - .code = LSCHL_SW_AUTOPOWER, > - .gpio = LSCHL_GPIO_KEY_AUTOPOWER, > - .desc = "Power-auto Switch", > - .active_low = 1, > - }, { > - .type = EV_SW, > - .code = LSCHL_SW_FUNC, > - .gpio = LSCHL_GPIO_KEY_FUNC, > - .desc = "Function Switch", > - .active_low = 1, > - }, > -}; > - > -static struct gpio_keys_platform_data lschl_button_data = { > - .buttons = lschl_buttons, > - .nbuttons = ARRAY_SIZE(lschl_buttons), > -}; > - > -static struct platform_device lschl_button_device = { > - .name = "gpio-keys", > - .id = -1, > - .num_resources = 0, > - .dev = { > - .platform_data = &lschl_button_data, > - }, > -}; > - > -#define LSCHL_GPIO_HDD_POWER 1 > - > -/**************************************************************************** > - * GPIO Fan > - ****************************************************************************/ > - > -#define LSCHL_GPIO_FAN_LOW 16 > -#define LSCHL_GPIO_FAN_HIGH 14 > -#define LSCHL_GPIO_FAN_LOCK 6 > - > -static struct gpio_fan_alarm lschl_alarm = { > - .gpio = LSCHL_GPIO_FAN_LOCK, > -}; > - > -static struct gpio_fan_speed lschl_speeds[] = { > - { > - .rpm = 0, > - .ctrl_val = 3, > - }, { > - .rpm = 1500, > - .ctrl_val = 2, > - }, { > - .rpm = 3250, > - .ctrl_val = 1, > - }, { > - .rpm = 5000, > - .ctrl_val = 0, > - }, > -}; > - > -static int lschl_gpio_list[] = { > - LSCHL_GPIO_FAN_HIGH, LSCHL_GPIO_FAN_LOW, > -}; > - > -static struct gpio_fan_platform_data lschl_fan_data = { > - .num_ctrl = ARRAY_SIZE(lschl_gpio_list), > - .ctrl = lschl_gpio_list, > - .alarm = &lschl_alarm, > - .num_speed = ARRAY_SIZE(lschl_speeds), > - .speed = lschl_speeds, > -}; > - > -static struct platform_device lschl_fan_device = { > - .name = "gpio-fan", > - .id = -1, > - .num_resources = 0, > - .dev = { > - .platform_data = &lschl_fan_data, > - }, > -}; > - > -/**************************************************************************** > - * GPIO Data > - ****************************************************************************/ > - > -static unsigned int lschl_mpp_modes[] __initdata = { > - MPP0_GPIO, /* LED POWER */ > - MPP1_GPIO, /* HDD POWER */ > - MPP2_GPIO, /* LED ALARM */ > - MPP3_GPIO, /* LED INFO */ > - MPP4_UNUSED, > - MPP5_UNUSED, > - MPP6_GPIO, /* FAN LOCK */ > - MPP7_GPIO, /* SW INIT */ > - MPP8_GPIO, /* SW POWER */ > - MPP9_GPIO, /* USB POWER */ > - MPP10_GPIO, /* SW AUTO POWER */ > - MPP11_UNUSED, > - MPP12_UNUSED, > - MPP13_UNUSED, > - MPP14_GPIO, /* FAN HIGH */ > - MPP15_GPIO, /* SW FUNC */ > - MPP16_GPIO, /* FAN LOW */ > - MPP17_GPIO, /* LED FUNC */ > - MPP18_UNUSED, > - MPP19_UNUSED, > - 0, > -}; > - > -static void __init lschl_init(void) > -{ > - /* > - * Setup basic Orion functions. Needs to be called early. > - */ > - orion5x_init(); > - > - orion5x_mpp_conf(lschl_mpp_modes); > - > - /* > - * Configure peripherals. > - */ > - orion5x_ehci0_init(); > - orion5x_ehci1_init(); > - orion5x_eth_init(&lschl_eth_data); > - orion5x_i2c_init(); > - orion5x_sata_init(&lschl_sata_data); > - orion5x_uart0_init(); > - orion5x_xor_init(); > - > - mvebu_mbus_add_window_by_id(ORION_MBUS_DEVBUS_BOOT_TARGET, > - ORION_MBUS_DEVBUS_BOOT_ATTR, > - LSCHL_NOR_BOOT_BASE, > - LSCHL_NOR_BOOT_SIZE); > - platform_device_register(&lschl_nor_flash); > - > - platform_device_register(&lschl_leds); > - > - platform_device_register(&lschl_button_device); > - > - platform_device_register(&lschl_fan_device); > - > - i2c_register_board_info(0, &lschl_i2c_rtc, 1); > - > - /* usb power on */ > - gpio_set_value(LSCHL_GPIO_USB_POWER, 1); > - > - /* register power-off method */ > - pm_power_off = lschl_power_off; > - > - pr_info("%s: finished\n", __func__); > -} > - > -MACHINE_START(LINKSTATION_LSCHL, "Buffalo Linkstation LiveV3 (LS-CHL)") > - /* Maintainer: Ash Hughes <ashley.hughes@blueyonder.co.uk> */ > - .atag_offset = 0x100, > - .nr_irqs = ORION5X_NR_IRQS, > - .init_machine = lschl_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 > -- > 2.7.4 > > > On 04/11/16 12:44, Gregory CLEMENT wrote: >> Hi Ash, >> >> On mar., oct. 25 2016, Ash Hughes <sehguh.hsa@gmail.com> wrote: >> >>> Hi all, >>> >>> This patch converts my orion5x ls-chl Linkstation device to device >>> tree. >> I was about to apply your patch but it does not apply on mvebu/dt or >> even on v4.9-rc1. >> >> Could you rebase it? >> >> Thanks, >> >> Gregory >> >>> Signed-off-by: Ashley Hughes <ashley.hughes@blueyonder.co.uk> >>> --- >>> arch/arm/boot/dts/Makefile | 1 + >>> arch/arm/boot/dts/orion5x-lschl.dts | 171 ++++++++++++++++++ >>> arch/arm/mach-orion5x/Kconfig | 4 +- >>> arch/arm/mach-orion5x/Makefile | 1 - >>> arch/arm/mach-orion5x/ls-chl-setup.c | 331 ----------------------------------- >>> 5 files changed, 174 insertions(+), 334 deletions(-) >>> create mode 100644 arch/arm/boot/dts/orion5x-lschl.dts >>> delete mode 100644 arch/arm/mach-orion5x/ls-chl-setup.c >>> >>> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile >>> index befcd26..4853049 100644 >>> --- a/arch/arm/boot/dts/Makefile >>> +++ b/arch/arm/boot/dts/Makefile >>> @@ -597,6 +597,7 @@ dtb-$(CONFIG_ARCH_ORION5X) += \ >>> orion5x-lacie-ethernet-disk-mini-v2.dtb \ >>> orion5x-linkstation-lsgl.dtb \ >>> orion5x-linkstation-lswtgl.dtb \ >>> + orion5x-lschl.dtb \ >>> orion5x-lswsgl.dtb \ >>> orion5x-maxtor-shared-storage-2.dtb \ >>> orion5x-netgear-wnr854t.dtb \ >>> diff --git a/arch/arm/boot/dts/orion5x-lschl.dts b/arch/arm/boot/dts/orion5x-lschl.dts >>> new file mode 100644 >>> index 0000000..9474092 >>> --- /dev/null >>> +++ b/arch/arm/boot/dts/orion5x-lschl.dts >>> @@ -0,0 +1,171 @@ >>> +/* >>> + * Device Tree file for Buffalo Linkstation LS-CHLv3 >>> + * >>> + * Copyright (C) 2016 Ash Hughes <ashley.hughes@blueyonder.co.uk> >>> + * Copyright (C) 2015, 2016 >>> + * Roger Shimizu <rogershimizu@gmail.com> >>> + * >>> + * This file is dual-licensed: you can use it either under the terms >>> + * of the GPL or the X11 license, at your option. Note that this dual >>> + * licensing only applies to this file, and not this project as a >>> + * whole. >>> + * >>> + * a) This file is free software; you can redistribute it and/or >>> + * modify it under the terms of the GNU General Public License as >>> + * published by the Free Software Foundation; either version 2 of the >>> + * License, or (at your option) any later version. >>> + * >>> + * This file is distributed in the hope that it will be useful >>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of >>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >>> + * GNU General Public License for more details. >>> + * >>> + * Or, alternatively >>> + * >>> + * b) Permission is hereby granted, free of charge, to any person >>> + * obtaining a copy of this software and associated documentation >>> + * files (the "Software"), to deal in the Software without >>> + * restriction, including without limitation the rights to use >>> + * copy, modify, merge, publish, distribute, sublicense, and/or >>> + * sell copies of the Software, and to permit persons to whom the >>> + * Software is furnished to do so, subject to the following >>> + * conditions: >>> + * >>> + * The above copyright notice and this permission notice shall be >>> + * included in all copies or substantial portions of the Software. >>> + * >>> + * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND >>> + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES >>> + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND >>> + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT >>> + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY >>> + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING >>> + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR >>> + * OTHER DEALINGS IN THE SOFTWARE. >>> + */ >>> + >>> +/dts-v1/; >>> + >>> +#include "orion5x-linkstation.dtsi" >>> +#include "mvebu-linkstation-gpio-simple.dtsi" >>> +#include "mvebu-linkstation-fan.dtsi" >>> +#include <dt-bindings/gpio/gpio.h> >>> + >>> +/ { >>> + model = "Buffalo Linkstation Live v3 (LS-CHL)"; >>> + compatible = "buffalo,lschl", "marvell,orion5x-88f5182", "marvell,orion5x"; >>> + >>> + memory { /* 128 MB */ >>> + device_type = "memory"; >>> + reg = <0x00000000 0x8000000>; >>> + }; >>> + >>> + gpio_keys { >>> + func { >>> + label = "Function Button"; >>> + linux,code = <KEY_OPTION>; >>> + gpios = <&gpio0 15 GPIO_ACTIVE_LOW>; >>> + }; >>> + >>> + power-on-switch { >>> + gpios = <&gpio0 8 GPIO_ACTIVE_LOW>; >>> + }; >>> + >>> + power-auto-switch { >>> + gpios = <&gpio0 10 GPIO_ACTIVE_LOW>; >>> + }; >>> + }; >>> + >>> + gpio_leds { >>> + pinctrl-0 = <&pmx_led_power &pmx_led_alarm &pmx_led_info &pmx_led_func>; >>> + blue-power-led { >>> + gpios = <&gpio0 0 GPIO_ACTIVE_LOW>; >>> + }; >>> + >>> + red-alarm-led { >>> + gpios = <&gpio0 2 GPIO_ACTIVE_LOW>; >>> + }; >>> + >>> + amber-info-led { >>> + gpios = <&gpio0 3 GPIO_ACTIVE_LOW>; >>> + }; >>> + >>> + func { >>> + label = "lschl:func:blue:top"; >>> + gpios = <&gpio0 17 GPIO_ACTIVE_LOW>; >>> + }; >>> + }; >>> + >>> + gpio_fan { >>> + gpios = <&gpio0 14 GPIO_ACTIVE_LOW >>> + &gpio0 16 GPIO_ACTIVE_LOW>; >>> + >>> + alarm-gpios = <&gpio0 6 GPIO_ACTIVE_HIGH>; >>> + }; >>> +}; >>> + >>> +&pinctrl { >>> + pmx_led_power: pmx-leds { >>> + marvell,pins = "mpp0"; >>> + marvell,function = "gpio"; >>> + }; >>> + >>> + pmx_power_hdd: pmx-power-hdd { >>> + marvell,pins = "mpp1"; >>> + 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_fan_lock: pmx-fan-lock { >>> + marvell,pins = "mpp6"; >>> + marvell,function = "gpio"; >>> + }; >>> + >>> + pmx_power_switch: pmx-power-switch { >>> + marvell,pins = "mpp8", "mpp10", "mpp15"; >>> + marvell,function = "gpio"; >>> + }; >>> + >>> + pmx_power_usb: pmx-power-usb { >>> + marvell,pins = "mpp9"; >>> + marvell,function = "gpio"; >>> + }; >>> + >>> + pmx_fan_high: pmx-fan-high { >>> + marvell,pins = "mpp14"; >>> + marvell,function = "gpio"; >>> + }; >>> + >>> + pmx_fan_low: pmx-fan-low { >>> + marvell,pins = "mpp16"; >>> + marvell,function = "gpio"; >>> + }; >>> + >>> + pmx_led_func: pmx-leds { >>> + marvell,pins = "mpp17"; >>> + marvell,function = "gpio"; >>> + }; >>> + >>> + pmx_sw_init: pmx-sw-init { >>> + marvell,pins = "mpp7"; >>> + marvell,function = "gpio"; >>> + }; >>> +}; >>> + >>> +&hdd_power { >>> + gpios = <&gpio0 1 GPIO_ACTIVE_HIGH>; >>> +}; >>> + >>> +&usb_power { >>> + gpios = <&gpio0 9 GPIO_ACTIVE_HIGH>; >>> +}; >>> + >>> diff --git a/arch/arm/mach-orion5x/Kconfig b/arch/arm/mach-orion5x/Kconfig >>> index 89bb0fc..793efa9 100644 >>> --- a/arch/arm/mach-orion5x/Kconfig >>> +++ b/arch/arm/mach-orion5x/Kconfig >>> @@ -85,8 +85,8 @@ config MACH_LINKSTATION_PRO >>> v2 devices are supported. >>> >>> config MACH_LINKSTATION_LSCHL >>> - bool "Buffalo Linkstation Live v3 (LS-CHL)" >>> - select I2C_BOARDINFO if I2C >>> + bool "Buffalo Linkstation Live v3 (LS-CHL) (Flattened Device Tree)" >>> + select ARCH_ORION5X_DT >>> help >>> Say 'Y' here if you want your kernel to support the >>> Buffalo Linkstation Live v3 (LS-CHL) platform. >>> diff --git a/arch/arm/mach-orion5x/Makefile b/arch/arm/mach-orion5x/Makefile >>> index 4b2502b..ae91872 100644 >>> --- a/arch/arm/mach-orion5x/Makefile >>> +++ b/arch/arm/mach-orion5x/Makefile >>> @@ -18,7 +18,6 @@ obj-$(CONFIG_MACH_WNR854T) += wnr854t-setup.o >>> obj-$(CONFIG_MACH_RD88F5181L_GE) += rd88f5181l-ge-setup.o >>> obj-$(CONFIG_MACH_RD88F5181L_FXO) += rd88f5181l-fxo-setup.o >>> obj-$(CONFIG_MACH_RD88F6183AP_GE) += rd88f6183ap-ge-setup.o >>> -obj-$(CONFIG_MACH_LINKSTATION_LSCHL) += ls-chl-setup.o >>> >>> obj-$(CONFIG_ARCH_ORION5X_DT) += board-dt.o >>> obj-$(CONFIG_MACH_D2NET_DT) += board-d2net.o >>> diff --git a/arch/arm/mach-orion5x/ls-chl-setup.c b/arch/arm/mach-orion5x/ls-chl-setup.c >>> deleted file mode 100644 >>> index dfdaa8a..0000000 >>> --- a/arch/arm/mach-orion5x/ls-chl-setup.c >>> +++ /dev/null >>> @@ -1,331 +0,0 @@ >>> -/* >>> - * arch/arm/mach-orion5x/ls-chl-setup.c >>> - * >>> - * Maintainer: Ash Hughes <ashley.hughes@blueyonder.co.uk> >>> - * >>> - * 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/gpio-fan.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 "common.h" >>> -#include "mpp.h" >>> -#include "orion5x.h" >>> - >>> -/***************************************************************************** >>> - * Linkstation LS-CHL Info >>> - ****************************************************************************/ >>> - >>> -/* >>> - * 256K NOR flash Device bus boot chip select >>> - */ >>> - >>> -#define LSCHL_NOR_BOOT_BASE 0xf4000000 >>> -#define LSCHL_NOR_BOOT_SIZE SZ_256K >>> - >>> -/***************************************************************************** >>> - * 256KB NOR Flash on BOOT Device >>> - ****************************************************************************/ >>> - >>> -static struct physmap_flash_data lschl_nor_flash_data = { >>> - .width = 1, >>> -}; >>> - >>> -static struct resource lschl_nor_flash_resource = { >>> - .flags = IORESOURCE_MEM, >>> - .start = LSCHL_NOR_BOOT_BASE, >>> - .end = LSCHL_NOR_BOOT_BASE + LSCHL_NOR_BOOT_SIZE - 1, >>> -}; >>> - >>> -static struct platform_device lschl_nor_flash = { >>> - .name = "physmap-flash", >>> - .id = 0, >>> - .dev = { >>> - .platform_data = &lschl_nor_flash_data, >>> - }, >>> - .num_resources = 1, >>> - .resource = &lschl_nor_flash_resource, >>> -}; >>> - >>> -/***************************************************************************** >>> - * Ethernet >>> - ****************************************************************************/ >>> - >>> -static struct mv643xx_eth_platform_data lschl_eth_data = { >>> - .phy_addr = MV643XX_ETH_PHY_ADDR(8), >>> -}; >>> - >>> -/***************************************************************************** >>> - * RTC 5C372a on I2C bus >>> - ****************************************************************************/ >>> - >>> -static struct i2c_board_info __initdata lschl_i2c_rtc = { >>> - I2C_BOARD_INFO("rs5c372a", 0x32), >>> -}; >>> - >>> -/***************************************************************************** >>> - * LEDs attached to GPIO >>> - ****************************************************************************/ >>> - >>> -#define LSCHL_GPIO_LED_ALARM 2 >>> -#define LSCHL_GPIO_LED_INFO 3 >>> -#define LSCHL_GPIO_LED_FUNC 17 >>> -#define LSCHL_GPIO_LED_PWR 0 >>> - >>> -static struct gpio_led lschl_led_pins[] = { >>> - { >>> - .name = "alarm:red", >>> - .gpio = LSCHL_GPIO_LED_ALARM, >>> - .active_low = 1, >>> - }, { >>> - .name = "info:amber", >>> - .gpio = LSCHL_GPIO_LED_INFO, >>> - .active_low = 1, >>> - }, { >>> - .name = "func:blue:top", >>> - .gpio = LSCHL_GPIO_LED_FUNC, >>> - .active_low = 1, >>> - }, { >>> - .name = "power:blue:bottom", >>> - .gpio = LSCHL_GPIO_LED_PWR, >>> - }, >>> -}; >>> - >>> -static struct gpio_led_platform_data lschl_led_data = { >>> - .leds = lschl_led_pins, >>> - .num_leds = ARRAY_SIZE(lschl_led_pins), >>> -}; >>> - >>> -static struct platform_device lschl_leds = { >>> - .name = "leds-gpio", >>> - .id = -1, >>> - .dev = { >>> - .platform_data = &lschl_led_data, >>> - }, >>> -}; >>> - >>> -/***************************************************************************** >>> - * SATA >>> - ****************************************************************************/ >>> -static struct mv_sata_platform_data lschl_sata_data = { >>> - .n_ports = 2, >>> -}; >>> - >>> -/***************************************************************************** >>> - * LS-CHL specific power off method: reboot >>> - ****************************************************************************/ >>> -/* >>> - * On the LS-CHL, 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 lschl_power_off(void) >>> -{ >>> - orion5x_restart(REBOOT_HARD, NULL); >>> -} >>> - >>> -/***************************************************************************** >>> - * General Setup >>> - ****************************************************************************/ >>> -#define LSCHL_GPIO_USB_POWER 9 >>> -#define LSCHL_GPIO_AUTO_POWER 17 >>> -#define LSCHL_GPIO_POWER 18 >>> - >>> -/**************************************************************************** >>> - * GPIO Attached Keys >>> - ****************************************************************************/ >>> -#define LSCHL_GPIO_KEY_FUNC 15 >>> -#define LSCHL_GPIO_KEY_POWER 8 >>> -#define LSCHL_GPIO_KEY_AUTOPOWER 10 >>> -#define LSCHL_SW_POWER 0x00 >>> -#define LSCHL_SW_AUTOPOWER 0x01 >>> -#define LSCHL_SW_FUNC 0x02 >>> - >>> -static struct gpio_keys_button lschl_buttons[] = { >>> - { >>> - .type = EV_SW, >>> - .code = LSCHL_SW_POWER, >>> - .gpio = LSCHL_GPIO_KEY_POWER, >>> - .desc = "Power-on Switch", >>> - .active_low = 1, >>> - }, { >>> - .type = EV_SW, >>> - .code = LSCHL_SW_AUTOPOWER, >>> - .gpio = LSCHL_GPIO_KEY_AUTOPOWER, >>> - .desc = "Power-auto Switch", >>> - .active_low = 1, >>> - }, { >>> - .type = EV_SW, >>> - .code = LSCHL_SW_FUNC, >>> - .gpio = LSCHL_GPIO_KEY_FUNC, >>> - .desc = "Function Switch", >>> - .active_low = 1, >>> - }, >>> -}; >>> - >>> -static struct gpio_keys_platform_data lschl_button_data = { >>> - .buttons = lschl_buttons, >>> - .nbuttons = ARRAY_SIZE(lschl_buttons), >>> -}; >>> - >>> -static struct platform_device lschl_button_device = { >>> - .name = "gpio-keys", >>> - .id = -1, >>> - .num_resources = 0, >>> - .dev = { >>> - .platform_data = &lschl_button_data, >>> - }, >>> -}; >>> - >>> -#define LSCHL_GPIO_HDD_POWER 1 >>> - >>> -/**************************************************************************** >>> - * GPIO Fan >>> - ****************************************************************************/ >>> - >>> -#define LSCHL_GPIO_FAN_LOW 16 >>> -#define LSCHL_GPIO_FAN_HIGH 14 >>> -#define LSCHL_GPIO_FAN_LOCK 6 >>> - >>> -static struct gpio_fan_alarm lschl_alarm = { >>> - .gpio = LSCHL_GPIO_FAN_LOCK, >>> -}; >>> - >>> -static struct gpio_fan_speed lschl_speeds[] = { >>> - { >>> - .rpm = 0, >>> - .ctrl_val = 3, >>> - }, { >>> - .rpm = 1500, >>> - .ctrl_val = 2, >>> - }, { >>> - .rpm = 3250, >>> - .ctrl_val = 1, >>> - }, { >>> - .rpm = 5000, >>> - .ctrl_val = 0, >>> - }, >>> -}; >>> - >>> -static int lschl_gpio_list[] = { >>> - LSCHL_GPIO_FAN_HIGH, LSCHL_GPIO_FAN_LOW, >>> -}; >>> - >>> -static struct gpio_fan_platform_data lschl_fan_data = { >>> - .num_ctrl = ARRAY_SIZE(lschl_gpio_list), >>> - .ctrl = lschl_gpio_list, >>> - .alarm = &lschl_alarm, >>> - .num_speed = ARRAY_SIZE(lschl_speeds), >>> - .speed = lschl_speeds, >>> -}; >>> - >>> -static struct platform_device lschl_fan_device = { >>> - .name = "gpio-fan", >>> - .id = -1, >>> - .num_resources = 0, >>> - .dev = { >>> - .platform_data = &lschl_fan_data, >>> - }, >>> -}; >>> - >>> -/**************************************************************************** >>> - * GPIO Data >>> - ****************************************************************************/ >>> - >>> -static unsigned int lschl_mpp_modes[] __initdata = { >>> - MPP0_GPIO, /* LED POWER */ >>> - MPP1_GPIO, /* HDD POWER */ >>> - MPP2_GPIO, /* LED ALARM */ >>> - MPP3_GPIO, /* LED INFO */ >>> - MPP4_UNUSED, >>> - MPP5_UNUSED, >>> - MPP6_GPIO, /* FAN LOCK */ >>> - MPP7_GPIO, /* SW INIT */ >>> - MPP8_GPIO, /* SW POWER */ >>> - MPP9_GPIO, /* USB POWER */ >>> - MPP10_GPIO, /* SW AUTO POWER */ >>> - MPP11_UNUSED, >>> - MPP12_UNUSED, >>> - MPP13_UNUSED, >>> - MPP14_GPIO, /* FAN HIGH */ >>> - MPP15_GPIO, /* SW FUNC */ >>> - MPP16_GPIO, /* FAN LOW */ >>> - MPP17_GPIO, /* LED FUNC */ >>> - MPP18_UNUSED, >>> - MPP19_UNUSED, >>> - 0, >>> -}; >>> - >>> -static void __init lschl_init(void) >>> -{ >>> - /* >>> - * Setup basic Orion functions. Needs to be called early. >>> - */ >>> - orion5x_init(); >>> - >>> - orion5x_mpp_conf(lschl_mpp_modes); >>> - >>> - /* >>> - * Configure peripherals. >>> - */ >>> - orion5x_ehci0_init(); >>> - orion5x_ehci1_init(); >>> - orion5x_eth_init(&lschl_eth_data); >>> - orion5x_i2c_init(); >>> - orion5x_sata_init(&lschl_sata_data); >>> - orion5x_uart0_init(); >>> - orion5x_xor_init(); >>> - >>> - mvebu_mbus_add_window_by_id(ORION_MBUS_DEVBUS_BOOT_TARGET, >>> - ORION_MBUS_DEVBUS_BOOT_ATTR, >>> - LSCHL_NOR_BOOT_BASE, >>> - LSCHL_NOR_BOOT_SIZE); >>> - platform_device_register(&lschl_nor_flash); >>> - >>> - platform_device_register(&lschl_leds); >>> - >>> - platform_device_register(&lschl_button_device); >>> - >>> - platform_device_register(&lschl_fan_device); >>> - >>> - i2c_register_board_info(0, &lschl_i2c_rtc, 1); >>> - >>> - /* usb power on */ >>> - gpio_set_value(LSCHL_GPIO_USB_POWER, 1); >>> - >>> - /* register power-off method */ >>> - pm_power_off = lschl_power_off; >>> - >>> - pr_info("%s: finished\n", __func__); >>> -} >>> - >>> -MACHINE_START(LINKSTATION_LSCHL, "Buffalo Linkstation LiveV3 (LS-CHL)") >>> - /* Maintainer: Ash Hughes <ashley.hughes@blueyonder.co.uk> */ >>> - .atag_offset = 0x100, >>> - .nr_irqs = ORION5X_NR_IRQS, >>> - .init_machine = lschl_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 >>> -- 2.7.4 >>> >>> > -- Gregory Clement, Free Electrons Kernel, drivers, real-time and embedded Linux development, consulting, training and support. http://free-electrons.com ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2016-11-07 16:29 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2016-10-24 23:04 [PATCH] convert orion5x ls-chl to device tree Ash Hughes 2016-10-25 11:14 ` Andrew Lunn 2016-11-04 12:44 ` Gregory CLEMENT 2016-11-05 23:02 ` Ash Hughes 2016-11-07 16:29 ` Gregory CLEMENT
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).