273 lines
6.3 KiB
Diff
273 lines
6.3 KiB
Diff
From 2f08de94f207a4347053e1faa22c9a310c9c61b0 Mon Sep 17 00:00:00 2001
|
|
From: Linus Walleij <linus.walleij@linaro.org>
|
|
Date: Fri, 17 Nov 2017 16:36:32 +0100
|
|
Subject: [PATCH 13/31] ARM: dts: Add basic devicetree for D-Link DNS-313
|
|
|
|
This adds a basic device tree for the D-Link DNS-313
|
|
NAS enclosure. This device has a thermal sensor and a
|
|
fan so we add a thermal zone for the chassis in the
|
|
device tree based on information from the product.
|
|
|
|
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
|
|
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
|
---
|
|
arch/arm/boot/dts/Makefile | 1 +
|
|
arch/arm/boot/dts/gemini-dlink-dns-313.dts | 241 +++++++++++++++++++++++++++++
|
|
2 files changed, 242 insertions(+)
|
|
create mode 100644 arch/arm/boot/dts/gemini-dlink-dns-313.dts
|
|
|
|
--- a/arch/arm/boot/dts/Makefile
|
|
+++ b/arch/arm/boot/dts/Makefile
|
|
@@ -185,6 +185,7 @@ dtb-$(CONFIG_ARCH_EXYNOS5) += \
|
|
exynos5800-peach-pi.dtb
|
|
dtb-$(CONFIG_ARCH_GEMINI) += \
|
|
gemini-dlink-dir-685.dtb \
|
|
+ gemini-dlink-dns-313.dtb \
|
|
gemini-nas4220b.dtb \
|
|
gemini-rut1xx.dtb \
|
|
gemini-sq201.dtb \
|
|
--- /dev/null
|
|
+++ b/arch/arm/boot/dts/gemini-dlink-dns-313.dts
|
|
@@ -0,0 +1,241 @@
|
|
+// SPDX-License-Identifier: GPL-2.0
|
|
+/*
|
|
+ * Device Tree file for D-Link DNS-313 1-Bay Network Storage Enclosure
|
|
+ */
|
|
+
|
|
+/dts-v1/;
|
|
+
|
|
+#include "gemini.dtsi"
|
|
+#include <dt-bindings/input/input.h>
|
|
+#include <dt-bindings/thermal/thermal.h>
|
|
+
|
|
+/ {
|
|
+ model = "D-Link DNS-313 1-Bay Network Storage Enclosure";
|
|
+ compatible = "dlink,dir-313", "cortina,gemini";
|
|
+ #address-cells = <1>;
|
|
+ #size-cells = <1>;
|
|
+
|
|
+ memory {
|
|
+ /* 64 MB SDRAM in a Nanya NT5DS32M16BS-6K package */
|
|
+ device_type = "memory";
|
|
+ reg = <0x00000000 0x4000000>;
|
|
+ };
|
|
+
|
|
+ aliases {
|
|
+ mdio-gpio0 = &mdio0;
|
|
+ };
|
|
+
|
|
+ chosen {
|
|
+ stdout-path = "uart0:19200n8";
|
|
+ };
|
|
+
|
|
+ gpio_keys {
|
|
+ compatible = "gpio-keys";
|
|
+ #address-cells = <1>;
|
|
+ #size-cells = <0>;
|
|
+ button-esc {
|
|
+ debounce_interval = <50>;
|
|
+ wakeup-source;
|
|
+ linux,code = <KEY_ESC>;
|
|
+ label = "reset";
|
|
+ gpios = <&gpio1 31 GPIO_ACTIVE_LOW>;
|
|
+ };
|
|
+ };
|
|
+
|
|
+ leds {
|
|
+ compatible = "gpio-leds";
|
|
+ led-power {
|
|
+ label = "dns313:blue:power";
|
|
+ gpios = <&gpio0 1 GPIO_ACTIVE_HIGH>;
|
|
+ default-state = "on";
|
|
+ linux,default-trigger = "heartbeat";
|
|
+ };
|
|
+ led-disk-blue {
|
|
+ label = "dns313:blue:disk";
|
|
+ gpios = <&gpio0 2 GPIO_ACTIVE_HIGH>;
|
|
+ default-state = "off";
|
|
+ };
|
|
+ led-disk-green {
|
|
+ label = "dns313:green:disk";
|
|
+ gpios = <&gpio0 3 GPIO_ACTIVE_HIGH>;
|
|
+ default-state = "off";
|
|
+ linux,default-trigger = "ide-disk";
|
|
+ /* Ideally should activate while reading */
|
|
+ };
|
|
+ led-disk-red {
|
|
+ label = "dns313:red:disk";
|
|
+ gpios = <&gpio0 4 GPIO_ACTIVE_HIGH>;
|
|
+ default-state = "off";
|
|
+ /* Ideally should activate while writing */
|
|
+ };
|
|
+ };
|
|
+
|
|
+ /*
|
|
+ * This is a ADDA AD0405GB-G73 fan @3000 and 6000 RPM.
|
|
+ */
|
|
+ fan0: gpio-fan {
|
|
+ compatible = "gpio-fan";
|
|
+ gpios = <&gpio0 11 GPIO_ACTIVE_HIGH>,
|
|
+ <&gpio0 12 GPIO_ACTIVE_HIGH>;
|
|
+ gpio-fan,speed-map = <0 0>, <3000 1>, <6000 2>;
|
|
+ cooling-min-level = <0>;
|
|
+ cooling-max-level = <2>;
|
|
+ #cooling-cells = <2>;
|
|
+ };
|
|
+
|
|
+
|
|
+ /* Global Mixed-Mode Technology G751 mounted on GPIO I2C */
|
|
+ gpio-i2c {
|
|
+ compatible = "i2c-gpio";
|
|
+ sda-gpios = <&gpio0 15 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
|
|
+ scl-gpios = <&gpio0 16 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
|
|
+ #address-cells = <1>;
|
|
+ #size-cells = <0>;
|
|
+
|
|
+ g751: temperature-sensor@48 {
|
|
+ compatible = "gmt,g751";
|
|
+ reg = <0x48>;
|
|
+ #thermal-sensor-cells = <0>;
|
|
+ };
|
|
+ };
|
|
+
|
|
+ thermal-zones {
|
|
+ chassis-thermal {
|
|
+ /* Poll every 20 seconds */
|
|
+ polling-delay = <20000>;
|
|
+ /* Poll every 2nd second when cooling */
|
|
+ polling-delay-passive = <2000>;
|
|
+
|
|
+ thermal-sensors = <&g751>;
|
|
+
|
|
+ /* Tripping points from the fan.script in the rootfs */
|
|
+ trips {
|
|
+ chassis_alert0: chassis-alert0 {
|
|
+ /* At 43 degrees turn on low speed */
|
|
+ temperature = <43000>;
|
|
+ hysteresis = <3000>;
|
|
+ type = "active";
|
|
+ };
|
|
+ chassis_alert1: chassis-alert1 {
|
|
+ /* At 47 degrees turn on high speed */
|
|
+ temperature = <47000>;
|
|
+ hysteresis = <3000>;
|
|
+ type = "active";
|
|
+ };
|
|
+ chassis_crit: chassis-crit {
|
|
+ /* Just shut down at 60 degrees */
|
|
+ temperature = <60000>;
|
|
+ hysteresis = <2000>;
|
|
+ type = "critical";
|
|
+ };
|
|
+ };
|
|
+
|
|
+ cooling-maps {
|
|
+ map0 {
|
|
+ trip = <&chassis_alert0>;
|
|
+ cooling-device = <&fan0 1 1>;
|
|
+ };
|
|
+ map1 {
|
|
+ trip = <&chassis_alert1>;
|
|
+ cooling-device = <&fan0 2 2>;
|
|
+ };
|
|
+ };
|
|
+ };
|
|
+ };
|
|
+
|
|
+ mdio0: ethernet-phy {
|
|
+ compatible = "virtual,mdio-gpio";
|
|
+ /* Uses MDC and MDIO */
|
|
+ gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>, /* MDC */
|
|
+ <&gpio0 21 GPIO_ACTIVE_HIGH>; /* MDIO */
|
|
+ #address-cells = <1>;
|
|
+ #size-cells = <0>;
|
|
+
|
|
+ /* This is a Realtek RTL8211B Gigabit ethernet transceiver */
|
|
+ phy0: ethernet-phy@1 {
|
|
+ reg = <1>;
|
|
+ device_type = "ethernet-phy";
|
|
+ };
|
|
+ };
|
|
+
|
|
+ soc {
|
|
+ flash@30000000 {
|
|
+ status = "okay";
|
|
+ /* 512KB of flash */
|
|
+ reg = <0x30000000 0x00080000>;
|
|
+
|
|
+ /*
|
|
+ * This "RedBoot" is the Storlink derivative.
|
|
+ */
|
|
+ partition@0 {
|
|
+ label = "RedBoot";
|
|
+ reg = <0x00000000 0x00040000>;
|
|
+ read-only;
|
|
+ };
|
|
+ partition@40000 {
|
|
+ label = "MTD1";
|
|
+ reg = <0x00040000 0x00020000>;
|
|
+ read-only;
|
|
+ };
|
|
+ partition@60000 {
|
|
+ label = "MTD2";
|
|
+ reg = <0x00060000 0x00020000>;
|
|
+ read-only;
|
|
+ };
|
|
+ };
|
|
+
|
|
+ syscon: syscon@40000000 {
|
|
+ pinctrl {
|
|
+ /*
|
|
+ */
|
|
+ gpio0_default_pins: pinctrl-gpio0 {
|
|
+ mux {
|
|
+ function = "gpio0";
|
|
+ groups =
|
|
+ /* Used by LEDs conflicts ICE */
|
|
+ "gpio0bgrp",
|
|
+ /* Used by ? conflicts ICE */
|
|
+ "gpio0cgrp",
|
|
+ /*
|
|
+ * Used by fan & G751, conflicts LPC,
|
|
+ * UART modem lines, SSP
|
|
+ */
|
|
+ "gpio0egrp",
|
|
+ /* Used by G751 */
|
|
+ "gpio0fgrp",
|
|
+ /* Used by MDIO */
|
|
+ "gpio0igrp";
|
|
+ };
|
|
+ };
|
|
+ gpio1_default_pins: pinctrl-gpio1 {
|
|
+ mux {
|
|
+ function = "gpio1";
|
|
+ /* Used by "reset" button */
|
|
+ groups = "gpio1dgrp";
|
|
+ };
|
|
+ };
|
|
+ };
|
|
+ };
|
|
+
|
|
+ sata: sata@46000000 {
|
|
+ /* The ROM uses this muxmode */
|
|
+ cortina,gemini-ata-muxmode = <3>;
|
|
+ cortina,gemini-enable-sata-bridge;
|
|
+ status = "okay";
|
|
+ };
|
|
+
|
|
+ gpio0: gpio@4d000000 {
|
|
+ pinctrl-names = "default";
|
|
+ pinctrl-0 = <&gpio0_default_pins>;
|
|
+ };
|
|
+
|
|
+ gpio1: gpio@4e000000 {
|
|
+ pinctrl-names = "default";
|
|
+ pinctrl-0 = <&gpio1_default_pins>;
|
|
+ };
|
|
+
|
|
+ ata@63000000 {
|
|
+ status = "okay";
|
|
+ };
|
|
+ };
|
|
+};
|