convert orion5x ls-chl to device tree
Subsystems (5)
PATCH 1/1 convert orion5x ls-chl to device tree
Hi all,
This patch converts my orion5x ls-chl Linkstation device to device tree.
--- 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
arch/arm/boot/dts/Makefile +1 -0
@@ -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 \
arch/arm/boot/dts/orion5x-lschl.dts new file +171 -0
171 lines not on this page · raw message
arch/arm/mach-orion5x/Kconfig +2 -2
@@ -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.
arch/arm/mach-orion5x/Makefile +0 -1
@@ -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
arch/arm/mach-orion5x/ls-chl-setup.c deleted +0 -331
331 lines not on this page · raw message
-- 2.7.4
Andrew Lunn
maintainerPATCH 1/1 convert orion5x ls-chl to device tree
Quoted 5 lines · Ash Hughes
Hi all,
This patch converts my orion5x ls-chl Linkstation device to device tree.
Signed-off-by Ashley Hughes <[email protected]>
Hi Ash
Nicely done.
Andrew
PATCH 1/1 convert orion5x ls-chl to device tree
In reply to Ash HughesHi Ash,
Quoted 4 lines · Ash Hughes
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
Quoted 568 lines
Signed-off-by Ashley Hughes <[email protected]>--- 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.carch/arm/boot/dts/Makefile +1
-0@@ -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 \arch/arm/boot/dts/orion5x-lschl.dts new file +171
-0@@ -0,0 +1,171 @@ +/* + * Device Tree file for Buffalo Linkstation LS-CHLv3 + * + * Copyright (C) 2016 Ash Hughes <[email protected]> + * Copyright (C) 2015, 2016 + * Roger Shimizu <[email protected]> + * + * 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>; +}; +arch/arm/mach-orion5x/Kconfig +2
-2@@ -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.arch/arm/mach-orion5x/Makefile +0
-1@@ -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.oarch/arm/mach-orion5x/ls-chl-setup.c deleted +0
-332@@ -1,331 +0,0 @@ -/* -* arch/arm/mach-orion5x/ls-chl-setup.c -* -* Maintainer: Ash Hughes <[email protected]> -* -* This file is licensed under the terms of the GNU General Public -* License version 2. This program is licensed "as is" without any -* warranty of any kind, whether express or implied. -*/ - -#include <linux/kernel.h> -#include <linux/init.h> -#include <linux/platform_device.h> -#include <linux/mtd/physmap.h> -#include <linux/mv643xx_eth.h> -#include <linux/leds.h> -#include <linux/gpio_keys.h> -#include <linux/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 <[email protected]> */ - .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
Signature · 4 lines
Gregory Clement, Free Electrons Kernel, drivers, real-time and embedded Linux development, consulting, training and support. http://free-electrons.com
PATCH 1/1 convert orion5x ls-chl to device tree
Sorry about that, formatting error with tabs being converted to spaces in email. This should now apply.
Ash
---
Quoted 1 line
From
398d2c6e5c834e6887a5e6b5e898455977d0c00bMon Sep 17 00:00:00 2001
From: Ashley Hughes <[email protected]>
Date: Sun, 9 Oct 2016 17:04:12 +0100
Subject: [PATCH] convert ls-chl to FDT
--- 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
arch/arm/boot/dts/Makefile +1 -0
@@ -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 \
arch/arm/boot/dts/orion5x-lschl.dts new file +171 -0
171 lines not on this page · raw message
arch/arm/mach-orion5x/Kconfig +2 -2
@@ -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.
arch/arm/mach-orion5x/Makefile +0 -1
@@ -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
arch/arm/mach-orion5x/ls-chl-setup.c deleted +0 -331
331 lines not on this page · raw message
Signature · 1 line
2.7.4
Quoted 584 lines · Gregory CLEMENT
Hi Ash,
Quoted 4 lines · Ash Hughes
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
Quoted 567 lines
Signed-off-by Ashley Hughes <[email protected]>--- 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.carch/arm/boot/dts/Makefile +1
-0@@ -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 \arch/arm/boot/dts/orion5x-lschl.dts new file +171
-0@@ -0,0 +1,171 @@ +/* + * Device Tree file for Buffalo Linkstation LS-CHLv3 + * + * Copyright (C) 2016 Ash Hughes <[email protected]> + * Copyright (C) 2015, 2016 + * Roger Shimizu <[email protected]> + * + * 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>; +}; +arch/arm/mach-orion5x/Kconfig +2
-2@@ -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.arch/arm/mach-orion5x/Makefile +0
-1@@ -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.oarch/arm/mach-orion5x/ls-chl-setup.c deleted +0
-332@@ -1,331 +0,0 @@ -/* -* arch/arm/mach-orion5x/ls-chl-setup.c -* -* Maintainer: Ash Hughes <[email protected]> -* -* This file is licensed under the terms of the GNU General Public -* License version 2. This program is licensed "as is" without any -* warranty of any kind, whether express or implied. -*/ - -#include <linux/kernel.h> -#include <linux/init.h> -#include <linux/platform_device.h> -#include <linux/mtd/physmap.h> -#include <linux/mv643xx_eth.h> -#include <linux/leds.h> -#include <linux/gpio_keys.h> -#include <linux/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 <[email protected]> */ - .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
AppliedPATCH 1/1 convert orion5x ls-chl to device tree
Hi Ash,
Quoted 2 lines · Ash Hughes
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
Quoted 1,162 lines
Ash
---
From398d2c6e5c834e6887a5e6b5e898455977d0c00bMon Sep 17 00:00:00 2001
From: Ashley Hughes <[email protected]>
Date: Sun, 9 Oct 2016 17:04:12 +0100
Subject: [PATCH] convert ls-chl to FDTSigned-off-by Ashley Hughes <[email protected]>--- 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.carch/arm/boot/dts/Makefile +1
-0@@ -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 \arch/arm/boot/dts/orion5x-lschl.dts new file +171
-0@@ -0,0 +1,171 @@ +/* + * Device Tree file for Buffalo Linkstation LS-CHLv3 + * + * Copyright (C) 2016 Ash Hughes <[email protected]> + * Copyright (C) 2015, 2016 + * Roger Shimizu <[email protected]> + * + * 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>; +}; +arch/arm/mach-orion5x/Kconfig +2
-2@@ -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.arch/arm/mach-orion5x/Makefile +0
-1@@ -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.oarch/arm/mach-orion5x/ls-chl-setup.c deleted +0
-331@@ -1,331 +0,0 @@ -/* -* arch/arm/mach-orion5x/ls-chl-setup.c -* -* Maintainer: Ash Hughes <[email protected]> -* -* This file is licensed under the terms of the GNU General Public -* License version 2. This program is licensed "as is" without any -* warranty of any kind, whether express or implied. -*/ - -#include <linux/kernel.h> -#include <linux/init.h> -#include <linux/platform_device.h> -#include <linux/mtd/physmap.h> -#include <linux/mv643xx_eth.h> -#include <linux/leds.h> -#include <linux/gpio_keys.h> -#include <linux/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 <[email protected]> */ - .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 Signature · 1 line
2.7.4Quoted 584 lines · Gregory CLEMENT
Hi Ash,
Quoted 4 lines · Ash Hughes
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
Quoted 567 lines
Signed-off-by Ashley Hughes <[email protected]>--- 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.carch/arm/boot/dts/Makefile +1
-0@@ -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 \arch/arm/boot/dts/orion5x-lschl.dts new file +171
-0@@ -0,0 +1,171 @@ +/* + * Device Tree file for Buffalo Linkstation LS-CHLv3 + * + * Copyright (C) 2016 Ash Hughes <[email protected]> + * Copyright (C) 2015, 2016 + * Roger Shimizu <[email protected]> + * + * 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>; +}; +arch/arm/mach-orion5x/Kconfig +2
-2@@ -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.arch/arm/mach-orion5x/Makefile +0
-1@@ -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.oarch/arm/mach-orion5x/ls-chl-setup.c deleted +0
-332@@ -1,331 +0,0 @@ -/* -* arch/arm/mach-orion5x/ls-chl-setup.c -* -* Maintainer: Ash Hughes <[email protected]> -* -* This file is licensed under the terms of the GNU General Public -* License version 2. This program is licensed "as is" without any -* warranty of any kind, whether express or implied. -*/ - -#include <linux/kernel.h> -#include <linux/init.h> -#include <linux/platform_device.h> -#include <linux/mtd/physmap.h> -#include <linux/mv643xx_eth.h> -#include <linux/leds.h> -#include <linux/gpio_keys.h> -#include <linux/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 <[email protected]> */ - .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
Signature · 4 lines
Gregory Clement, Free Electrons Kernel, drivers, real-time and embedded Linux development, consulting, training and support. http://free-electrons.com