From 012da658a4565b60d2cae8d888fcd487c8ecfac9 Mon Sep 17 00:00:00 2001
From: Hauke Mehrtens <hauke@hauke-m.de>
Date: Tue, 19 Apr 2016 20:12:41 +0000
Subject: oxnas: add support for Akitio MyCloud mini

Signed-off-by: Daniel Golle <daniel@makrotopia.org>

SVN-Revision: 49197
---
 package/boot/uboot-envtools/files/oxnas            |   1 +
 package/network/utils/curl/Config.in.orig          | 162 +++++++++++++++++++++
 target/linux/oxnas/base-files/etc/board.d/01_leds  |   3 +
 target/linux/oxnas/base-files/etc/diag.sh          |   3 +
 target/linux/oxnas/base-files/lib/oxnas.sh         |   3 +
 .../oxnas/files/arch/arm/boot/dts/ox820-akitio.dts | 132 +++++++++++++++++
 target/linux/oxnas/image/Makefile                  |   6 +-
 .../linux/oxnas/patches-4.4/900-more-boards.patch  |   5 +-
 target/linux/oxnas/profiles/akitio.mk              |  17 +++
 9 files changed, 329 insertions(+), 3 deletions(-)
 create mode 100644 package/network/utils/curl/Config.in.orig
 create mode 100644 target/linux/oxnas/files/arch/arm/boot/dts/ox820-akitio.dts
 create mode 100644 target/linux/oxnas/profiles/akitio.mk

diff --git a/package/boot/uboot-envtools/files/oxnas b/package/boot/uboot-envtools/files/oxnas
index 063ffa0b92..e560e22fab 100644
--- a/package/boot/uboot-envtools/files/oxnas
+++ b/package/boot/uboot-envtools/files/oxnas
@@ -14,6 +14,7 @@ touch /etc/config/ubootenv
 board=$(oxnas_board_name)
 
 case "$board" in
+akitio | \
 stg212 | \
 kd20)
 	ubootenv_add_uci_config "/dev/ubi0_0" "0x0" "0x4000" "0x1F000" "1"
diff --git a/package/network/utils/curl/Config.in.orig b/package/network/utils/curl/Config.in.orig
new file mode 100644
index 0000000000..7a46e4e25a
--- /dev/null
+++ b/package/network/utils/curl/Config.in.orig
@@ -0,0 +1,162 @@
+if PACKAGE_libcurl
+
+comment "SSL support"
+
+choice
+	prompt "Selected SSL library"
+	default LIBCURL_POLARSSL
+
+	config LIBCURL_POLARSSL
+		bool "PolarSSL"
+
+	config LIBCURL_MBEDTLS
+		bool "mbed TLS"
+
+	config LIBCURL_CYASSL
+		bool "CyaSSL"
+
+	config LIBCURL_AXTLS
+		bool "axTLS"
+
+	config LIBCURL_OPENSSL
+		bool "OpenSSL"
+
+	config LIBCURL_GNUTLS
+		bool "GNUTLS"
+
+	config LIBCURL_NOSSL
+		bool "No SSL support"
+
+endchoice
+
+comment "Supported protocols"
+
+config LIBCURL_DICT
+	bool "DICT protocol"
+	default n
+
+config LIBCURL_FILE
+	bool "FILE protocol"
+	default y
+
+config LIBCURL_FTP
+	bool "FTP / FTPS protocol"
+	default y
+
+config LIBCURL_GOPHER
+	bool "Gopher protocol"
+	default n
+
+config LIBCURL_HTTP
+	bool "HTTP / HTTPS protocol"
+	default y
+
+config LIBCURL_COOKIES
+	bool "Enable Cookies support"
+	depends on LIBCURL_HTTP
+	default y
+
+config LIBCURL_IMAP
+	bool "IMAP / IMAPS protocol"
+	default n
+
+config LIBCURL_LDAP
+	bool "LDAP protocol"
+	default n
+
+config LIBCURL_LDAPS
+	bool "Enable LDAPS support"
+	depends on LIBCURL_LDAP && !LIBCURL_NOSSL
+	default y
+
+config LIBCURL_POP3
+	bool "POP3 / POP3S protocol"
+	default n
+
+config LIBCURL_RTSP
+	bool "RTSP protocol"
+	depends on LIBCURL_HTTP
+	default n
+config LIBCURL_NO_RTSP
+	string "RTSP require HTTP protocol"
+	depends on !LIBCURL_HTTP
+	default "!"
+
+config LIBCURL_SSH2
+	bool "SCP / SFTP protocol"
+	default n
+
+config LIBCURL_SMB
+	bool "SMB protocol (CIFS)"
+	depends on LIBCURL_CRYPTO_AUTH && (LIBCURL_GNUTLS || LIBCURL_OPENSSL)
+	default n
+config LIBCURL_NO_SMB
+	string "SMB require 'cryptographic authentication' and either 'GnuTLS' or 'OpenSSL'"
+	depends on !LIBCURL_CRYPTO_AUTH || (!LIBCURL_GNUTLS && !LIBCURL_OPENSSL)
+	default "!"
+
+config LIBCURL_SMTP
+	bool "SMTP / SMTPS protocol"
+	default n
+
+config LIBCURL_TELNET
+	bool "TELNET protocol"
+	default n
+
+config LIBCURL_TFTP
+	bool "TFTP protocol"
+	default n
+
+comment "Miscellaneous"
+
+config LIBCURL_PROXY
+	bool "Enable proxy support"
+	default y
+
+config LIBCURL_CRYPTO_AUTH
+	bool "Enable cryptographic authentication"
+	default n
+
+config LIBCURL_TLS_SRP
+	bool "Enable TLS-SRP authentication"
+	default n
+
+config LIBCURL_LIBIDN
+	bool "Enable IDN support"
+	default n
+
+config LIBCURL_THREADED_RESOLVER
+	bool "Enable threaded DNS resolver"
+	default n
+	help
+		Enable POSIX threaded asynchronous DNS resolution
+
+config LIBCURL_ZLIB
+	bool "Enable zlib support"
+	default n
+
+config LIBCURL_UNIX_SOCKETS
+	bool "Enable unix domain socket support"
+	default n
+	help
+		Enable HTTP over unix domain sockets.
+		To use this with the curl command line, you specify the socket path to the new --unix-domain option.
+		This feature is actually not limited to HTTP, you can do all the TCP-based protocols 
+		except FTP over the unix domain socket, but it is only HTTP that is regularly used this way. 
+		The reason FTP isn't supported is of course its use of two connections 
+		which would be even weirder to do like this.
+
+config LIBCURL_LIBCURL_OPTION
+	bool "Enable generation of C code"
+	default n
+
+config LIBCURL_VERBOSE
+	bool "Enable verbose error strings"
+	default n
+
+config LIBCURL_NTLM
+	bool "Enable NTLM support"
+	depends on LIBCURL_CRYPTO_AUTH && !LIBCURL_NOSSL
+	default n
+
+endif
diff --git a/target/linux/oxnas/base-files/etc/board.d/01_leds b/target/linux/oxnas/base-files/etc/board.d/01_leds
index af565d7031..b4b598cc40 100755
--- a/target/linux/oxnas/base-files/etc/board.d/01_leds
+++ b/target/linux/oxnas/base-files/etc/board.d/01_leds
@@ -7,6 +7,9 @@ board=$(oxnas_board_name)
 board_config_update
 
 case $board in
+	akitio)
+		ucidef_set_led_default "status" "status" "akitio:red:status" "0"
+		;;
 	stg212)
 		ucidef_set_led_default "power" "power" "zyxel:blue:status" "1"
 		ucidef_set_led_usbdev "usb" "USB" "zyxel:orange:copy" "1-1"
diff --git a/target/linux/oxnas/base-files/etc/diag.sh b/target/linux/oxnas/base-files/etc/diag.sh
index 5aec796cb2..51771f3ea6 100644
--- a/target/linux/oxnas/base-files/etc/diag.sh
+++ b/target/linux/oxnas/base-files/etc/diag.sh
@@ -6,6 +6,9 @@
 
 get_status_led() {
 	case $(oxnas_board_name) in
+	akitio)
+		status_led="akitio:red:status"
+		;;
 	stg212)
 		status_led="zyxel:blue:status"
 		;;
diff --git a/target/linux/oxnas/base-files/lib/oxnas.sh b/target/linux/oxnas/base-files/lib/oxnas.sh
index 8ae5fbbeee..991f92720d 100755
--- a/target/linux/oxnas/base-files/lib/oxnas.sh
+++ b/target/linux/oxnas/base-files/lib/oxnas.sh
@@ -13,6 +13,9 @@ oxnas_board_detect() {
 	machine=$(cat /proc/device-tree/model)
 
 	case "$machine" in
+	*"Akitio MyCloud mini"*)
+		name="akitio"
+		;;
 	*"MitraStar Technology Corp. STG-212"*)
 		name="stg212"
 		;;
diff --git a/target/linux/oxnas/files/arch/arm/boot/dts/ox820-akitio.dts b/target/linux/oxnas/files/arch/arm/boot/dts/ox820-akitio.dts
new file mode 100644
index 0000000000..5da4fa4419
--- /dev/null
+++ b/target/linux/oxnas/files/arch/arm/boot/dts/ox820-akitio.dts
@@ -0,0 +1,132 @@
+/*
+ * Copyright (C) 2016 Daniel Golle <daniel@makrotopia.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+/dts-v1/;
+#include "ox820.dtsi"
+
+/ {
+	model = "Akitio MyCloud mini";
+
+	chosen {
+		bootargs = "console=ttyS0,115200n8 earlyprintk=serial";
+	};
+
+	pcie-controller@47C00000 {
+		status = "disabled";
+	};
+
+	uart@44200000 {
+		status = "okay";
+	};
+
+	sata@45900000 {
+		status = "okay";
+		nr-ports = <2>;
+	};
+
+	nand@41000000 {
+		status = "okay";
+
+		partition@0 {
+			label = "boot";
+			reg = <0x0 0x26c0000>;
+		};
+
+		partition@26c0000 {
+			label = "ubi";
+			reg = <0x26c0000 0xd940000>;
+		};
+	};
+
+	ethernet@40400000 {
+		status = "okay";
+	};
+
+	ehci@40200100 {
+		status = "okay";
+	};
+
+	i2c-gpio {
+		compatible = "i2c-gpio";
+		gpios = <&GPIOB 9 0 &GPIOB 10 0>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_i2c>;
+		i2c-gpio,delay-us = <10>;
+		#address-cells = <1>;
+		#size-cells = <0>;
+		ds1307: rtc@68 {
+			compatible = "dallas,ds1307";
+			reg = <0x68>;
+		};
+	};
+
+	gpio-keys-polled {
+		compatible = "gpio-keys-polled";
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_buttons>;
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <100>;
+		power {
+			label = "power";
+			gpios = <&GPIOA 11 1>;
+			linux,code = <116>;
+		}
+		reset {
+			label = "reset";
+			gpios = <&GPIOB 6 1>;
+			linux,code = <0x198>;
+		};
+	};
+
+	gpio-leds {
+		compatible = "gpio-leds";
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_leds>;
+		status {
+			label = "akitio:red:status";
+			gpios = <&GPIOA 29 0>;
+		};
+	};
+
+	gpio-poweroff {
+		compatible = "gpio-poweroff";
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_poweroff>;
+		gpios = <&GPIOB 13 2>;
+	};
+
+	pinctrl {
+		i2c {
+			pinctrl_i2c: i2c-0 {
+				plxtech,pins =
+					<1  9 0 4	/* MF_B9 GPIO debounce */
+					 1 10 0 4>;	/* MF_B10 GPIO debounce */
+			};
+		};
+		buttons {
+			pinctrl_buttons: buttons-0 {
+				plxtech,pins =
+					<0 11 0 0	/* MF_A11 GPIO */
+					 1  6 0 0>;	/* MF_B6 GPIO */
+			};
+		};
+		leds {
+			pinctrl_leds: leds-0 {
+				plxtech,pins =
+					<0 29 0 0>;	/* MF_A29 GPIO */
+			};
+		};
+		poweroff {
+			pinctrl_poweroff: poweroff-0 {
+				plxtech,pins =
+					<1 13 0 0>;	/* MF_B13 GPIO */
+			};
+		};
+	};
+};
diff --git a/target/linux/oxnas/image/Makefile b/target/linux/oxnas/image/Makefile
index ae1050e9a1..27da2da27c 100644
--- a/target/linux/oxnas/image/Makefile
+++ b/target/linux/oxnas/image/Makefile
@@ -18,7 +18,7 @@ DEVICE_VARS += DEVICE_DTS KERNEL_SIZE PAGESIZE BLOCKSIZE SUBPAGESIZE
 DEVICE_VARS += KERNEL_IN_UBI UBOOTENV_IN_UBI UBIFS_OPTS
 
 KERNEL_LOADADDR := 0x60008000
-TARGET_DEVICES = kd20 pogoplug-pro pogoplug-v3 stg212
+TARGET_DEVICES = akitio kd20 pogoplug-pro pogoplug-v3 stg212
 
 define Device/Default
   KERNEL_DEPENDS = $$(wildcard $(DTS_DIR)/$$(DEVICE_DTS).dts)
@@ -38,6 +38,10 @@ define Device/Default
   UBOOTENV_IN_UBI := 1
 endef
 
+define Device/akitio
+  PROFILES := Default AKITIO
+  DEVICE_DTS := ox820-akitio
+endef
 
 define Device/kd20
   PROFILES := Default KD20
diff --git a/target/linux/oxnas/patches-4.4/900-more-boards.patch b/target/linux/oxnas/patches-4.4/900-more-boards.patch
index 19e1e8275b..f41fa8648e 100644
--- a/target/linux/oxnas/patches-4.4/900-more-boards.patch
+++ b/target/linux/oxnas/patches-4.4/900-more-boards.patch
@@ -1,11 +1,12 @@
 --- a/arch/arm/boot/dts/Makefile
 +++ b/arch/arm/boot/dts/Makefile
-@@ -497,7 +497,10 @@ dtb-$(CONFIG_ARCH_ORION5X) += \
+@@ -497,7 +497,11 @@ dtb-$(CONFIG_ARCH_ORION5X) += \
  	orion5x-lswsgl.dtb \
  	orion5x-maxtor-shared-storage-2.dtb \
  	orion5x-rd88f5182-nas.dtb
 -dtb-$(CONFIG_ARCH_OXNAS) += ox820-pogoplug-pro.dtb
-+dtb-$(CONFIG_ARCH_OXNAS) += ox820-pogoplug-pro.dtb \
++dtb-$(CONFIG_ARCH_OXNAS) += ox820-akitio.dtb \
++	ox820-pogoplug-pro.dtb \
 +	ox820-pogoplug-v3.dtb \
 +	ox820-stg212.dtb \
 +	ox820-kd20.dtb
diff --git a/target/linux/oxnas/profiles/akitio.mk b/target/linux/oxnas/profiles/akitio.mk
new file mode 100644
index 0000000000..a10860101a
--- /dev/null
+++ b/target/linux/oxnas/profiles/akitio.mk
@@ -0,0 +1,17 @@
+# Copyright (C) 2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Profile/AKITIO
+  NAME:=Akitio MyCloud mini / Silverstone DC01
+  PACKAGES:= \
+	kmod-usb-storage kmod-i2c-gpio kmod-rtc-ds1307
+endef
+
+define Profile/AKITIO/Description
+ Profile for the Akitio MyCloud mini aka. Silverstone DC01
+endef
+
+$(eval $(call Profile,AKITIO))
-- 
cgit v1.2.3