From 813a7c3827afe71f49f2985c607585900a7db4fb Mon Sep 17 00:00:00 2001
From: John Crispin <john@openwrt.org>
Date: Mon, 2 Jun 2014 12:42:52 +0000
Subject: ralink: Add support for samsung cy-swr1100 wireless router

It is base on rt3662 soc with dual band 802.11n
wireless router. Use rtl8367R switch chip.
This patch adds a profile for this board.
It use seama image header. so i also enable it
on kernel config.

Signed-off-by: michael lee <igvtee@gmail.com>

SVN-Revision: 40908
---
 target/linux/ramips/base-files/etc/diag.sh         |   3 +
 .../etc/hotplug.d/firmware/10-rt2x00-eeprom        |   4 +
 .../ramips/base-files/etc/uci-defaults/01_leds     |   4 +
 .../ramips/base-files/etc/uci-defaults/02_network  |   8 ++
 .../etc/uci-defaults/09_fix-seama-header           |   1 +
 .../ramips/base-files/lib/preinit/06_set_iface_mac |   1 +
 target/linux/ramips/base-files/lib/ramips.sh       |   3 +
 .../ramips/base-files/lib/upgrade/platform.sh      |   1 +
 target/linux/ramips/dts/CY-SWR1100.dts             | 135 +++++++++++++++++++++
 target/linux/ramips/image/Makefile                 |   3 +
 target/linux/ramips/rt3883/config-3.10             |   1 +
 target/linux/ramips/rt3883/profiles/samsung.mk     |  16 +++
 12 files changed, 180 insertions(+)
 create mode 100644 target/linux/ramips/dts/CY-SWR1100.dts
 create mode 100644 target/linux/ramips/rt3883/profiles/samsung.mk

diff --git a/target/linux/ramips/base-files/etc/diag.sh b/target/linux/ramips/base-files/etc/diag.sh
index 66a0aaae47..f9b4168245 100755
--- a/target/linux/ramips/base-files/etc/diag.sh
+++ b/target/linux/ramips/base-files/etc/diag.sh
@@ -27,6 +27,9 @@ get_status_led() {
 	br6425 | br-6475nd)
 		status_led="edimax:green:power"
 		;;
+	cy-swr1100)
+		status_led="samsung:blue:wps"
+		;;
 	d105)
 		status_led="d105:red:power"
 		;;
diff --git a/target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom b/target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom
index 1a39bb6035..b57bfd82ae 100644
--- a/target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom
+++ b/target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom
@@ -70,6 +70,7 @@ case "$FIRMWARE" in
 	broadway | \
 	br6524n | \
 	carambola | \
+	cy-swr1100 | \
 	d105 | \
 	dcs-930 | \
 	dir-300-b7 | \
@@ -136,6 +137,9 @@ case "$FIRMWARE" in
 
 "rt2x00pci_1_0.eeprom")
 	case $board in
+	cy-swr1100)
+		rt2x00_eeprom_extract "factory" 8192 512
+		;;
 	rt-n56u | whr-600d)
 		rt2x00_eeprom_extract "factory" 32768 512
 		;;
diff --git a/target/linux/ramips/base-files/etc/uci-defaults/01_leds b/target/linux/ramips/base-files/etc/uci-defaults/01_leds
index 74ba0ba63e..23c24515e2 100755
--- a/target/linux/ramips/base-files/etc/uci-defaults/01_leds
+++ b/target/linux/ramips/base-files/etc/uci-defaults/01_leds
@@ -60,6 +60,10 @@ case $board in
 	br6524n)
 		set_wifi_led "edimax:blue:wlan"
 		;;
+	cy-swr1100)
+		ucidef_set_led_default "wps" "WPS" "samsung:blue:wps" "0"
+		set_usb_led "samsung:blue:usb"
+		;;
 	d105)
 		ucidef_set_led_default "power" "POWER" "d105:red:power" "1"
 		set_usb_led "d105:green:usb"
diff --git a/target/linux/ramips/base-files/etc/uci-defaults/02_network b/target/linux/ramips/base-files/etc/uci-defaults/02_network
index b66d176ec0..b9524f6d2c 100755
--- a/target/linux/ramips/base-files/etc/uci-defaults/02_network
+++ b/target/linux/ramips/base-files/etc/uci-defaults/02_network
@@ -78,6 +78,13 @@ ramips_setup_interfaces()
 		ucidef_add_switch_vlan "switch0" "1" "1 2 3 4 6t"
 		;;
 
+	cy-swr1100)
+		ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2"
+		ucidef_add_switch "switch0" "1" "1"
+		ucidef_add_switch_vlan "switch0" "1" "0 1 2 3 9t"
+		ucidef_add_switch_vlan "switch0" "2" "4 9t"
+		;;
+
 	dir-610-a1 | \
 	dir-300-b7 | \
 	dir-320-b1 | \
@@ -205,6 +212,7 @@ ramips_setup_macs()
 		wan_mac=$(macaddr_add "$lan_mac" 1)
 		;;
 
+	cy-swr1100 | \
 	dir-645)
 		lan_mac=$(mtd_get_mac_ascii nvram lanmac)
 		wan_mac=$(mtd_get_mac_ascii nvram wanmac)
diff --git a/target/linux/ramips/base-files/etc/uci-defaults/09_fix-seama-header b/target/linux/ramips/base-files/etc/uci-defaults/09_fix-seama-header
index d8bed79514..a6c392c6ba 100755
--- a/target/linux/ramips/base-files/etc/uci-defaults/09_fix-seama-header
+++ b/target/linux/ramips/base-files/etc/uci-defaults/09_fix-seama-header
@@ -14,6 +14,7 @@ fix_seama_header() {
 board=$(ramips_board_name)
 
 case "$board" in
+cy-swr1100 | \
 dir-645)
 	fix_seama_header kernel
 	;;
diff --git a/target/linux/ramips/base-files/lib/preinit/06_set_iface_mac b/target/linux/ramips/base-files/lib/preinit/06_set_iface_mac
index 7ff6e3d5e6..8538c136ab 100644
--- a/target/linux/ramips/base-files/lib/preinit/06_set_iface_mac
+++ b/target/linux/ramips/base-files/lib/preinit/06_set_iface_mac
@@ -51,6 +51,7 @@ preinit_set_mac_address() {
                 mac=$(mtd_get_mac_binary devdata 16388)
                 ifconfig eth0 hw ether $mac 2>/dev/null
                 ;;
+	cy-swr1100 |\
 	dir-645)
 		mac=$(mtd_get_mac_ascii nvram lanmac)
 		mac=$(macaddr_setbit_la "$mac")
diff --git a/target/linux/ramips/base-files/lib/ramips.sh b/target/linux/ramips/base-files/lib/ramips.sh
index 4619befb29..f9732f8eeb 100755
--- a/target/linux/ramips/base-files/lib/ramips.sh
+++ b/target/linux/ramips/base-files/lib/ramips.sh
@@ -70,6 +70,9 @@ ramips_board_detect() {
 	*"Aztech HW550-3G")
 		name="hw550-3g"
 		;;
+	*"CY-SWR1100")
+		name="cy-swr1100"
+		;;
 	*"DCS-930")
 		name="dcs-930"
 		;;
diff --git a/target/linux/ramips/base-files/lib/upgrade/platform.sh b/target/linux/ramips/base-files/lib/upgrade/platform.sh
index c85ee0f703..3fdf625282 100755
--- a/target/linux/ramips/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ramips/base-files/lib/upgrade/platform.sh
@@ -97,6 +97,7 @@ platform_check_image() {
 		}
 		return 0
 		;;
+	cy-swr1100 |\
 	dir-610-a1 |\
 	dir-645)
 		[ "$magic" != "5ea3a417" ] && {
diff --git a/target/linux/ramips/dts/CY-SWR1100.dts b/target/linux/ramips/dts/CY-SWR1100.dts
new file mode 100644
index 0000000000..d0cc0e5fc5
--- /dev/null
+++ b/target/linux/ramips/dts/CY-SWR1100.dts
@@ -0,0 +1,135 @@
+/dts-v1/;
+
+/include/ "rt3883.dtsi"
+
+/ {
+	compatible = "CY-SWR1100", "ralink,rt3883-soc";
+	model = "Samsung CY-SWR1100";
+
+	palmbus@10000000 {
+		gpio1: gpio@638 {
+			status = "okay";
+		};
+	};
+
+	pinctrl {
+		state_default: pinctrl0 {
+			gpio {
+				ralink,group = "i2c", "spi";
+				ralink,function = "gpio";
+			};
+		};
+	};
+
+	ethernet@10100000 {
+		mtd-mac-address = <&factory 0x66>;
+		port@0 {
+			ralink,fixed-link = <1000 1 1 1>;
+		};
+	};
+
+	pci@10140000 {
+		status = "okay";
+
+		pinctrl-names = "default";
+		pinctrl-0 = <&pci_pins>;
+		pci_pins: pci {
+			pci {
+				ralink,group = "pci";
+				ralink,function = "pci-fnc";
+			};
+		};
+
+		host-bridge {
+			pci-bridge@1 {
+				status = "okay";
+			};
+		};
+	};
+
+	wmac@10180000 {
+		status = "okay";
+	};
+
+	ehci@101c0000 {
+		status = "okay";
+	};
+
+	ohci@101c1000 {
+		status = "okay";
+	};
+
+	nor-flash@1c000000 {
+		compatible = "cfi-flash";
+		reg = <0x1c000000 0x800000>;
+
+		bank-width = <2>;
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		partition@0 {
+			label = "uboot";
+			reg = <0x0 0x30000>;
+			read-only;
+		};
+		partition@30000 {
+			label = "uboot-env";
+			reg = <0x30000 0x4000>;
+			read-only;
+		};
+		factory: partition@34000 {
+			label = "factory";
+			reg = <0x34000 0x4000>;
+			read-only;
+		};
+		partition@38000 {
+			label = "nvram";
+			reg = <0x38000 0x8000>;
+			read-only;
+		};
+		partition@40000 {
+			label = "devdata";
+			reg = <0x40000 0x10000>;
+		};
+		partition@50000 {
+			label = "firmware";
+			reg = <0x50000 0x7b0000>;
+		};
+	};
+
+	rtl8367 {
+		compatible = "realtek,rtl8367";
+		gpio-sda = <&gpio0 1 0>;
+		gpio-sck = <&gpio0 2 0>;
+		realtek,extif0 = <1 0 1 1 1 1 1 1 2>;
+	};
+
+	gpio-keys-polled {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <100>;
+		reset {
+			label = "reset";
+			gpios = <&gpio0 6 1>;
+			linux,code = <0x198>;
+		};
+		wps {
+			label = "wps";
+			gpios = <&gpio0 3 1>;
+			linux,code = <0x211>;
+		};
+	};
+
+	gpio-leds {
+		compatible = "gpio-leds";
+		wps {
+			label = "samsung:blue:wps";
+			gpios = <&gpio0 0 1>;
+		};
+		usb {
+			label = "samsung:blue:usb";
+			gpios = <&gpio1 1 1>;
+		};
+	};
+};
diff --git a/target/linux/ramips/image/Makefile b/target/linux/ramips/image/Makefile
index 345b85003f..7d3e826b4a 100644
--- a/target/linux/ramips/image/Makefile
+++ b/target/linux/ramips/image/Makefile
@@ -647,6 +647,8 @@ define BuildFirmware/EdimaxCombined/squashfs
 		-s $(6) -m $(7) -f $(8) -S $(9)
 endef
 
+Image/Build/Profile/CYSWR1100=$(call BuildFirmware/Seama/$(1),$(1),cy-swr1100,CY-SWR1100,wrgnd10_samsung_ss815,$(ralink_default_fw_size_8M))
+
 Image/Build/Profile/DIR645=$(call BuildFirmware/Seama/$(1),$(1),dir-645,DIR-645,wrgn39_dlob.hans_dir645,$(ralink_default_fw_size_8M))
 
 omniembhpm_mtd_size=16449536
@@ -664,6 +666,7 @@ Image/Build/Profile/BR6475ND=$(call BuildFirmware/EdimaxCombined/$(1),$(1),br-64
 
 ifeq ($(SUBTARGET),rt3883)
 define Image/Build/Profile/Default
+	$(call Image/Build/Profile/CYSWR1100,$(1))
 	$(call Image/Build/Profile/DIR645,$(1))
 	$(call Image/Build/Profile/OMNIEMBHPM,$(1))
 	$(call Image/Build/Profile/RTN56U,$(1))
diff --git a/target/linux/ramips/rt3883/config-3.10 b/target/linux/ramips/rt3883/config-3.10
index 911d7033b7..6f56d5bb7c 100644
--- a/target/linux/ramips/rt3883/config-3.10
+++ b/target/linux/ramips/rt3883/config-3.10
@@ -101,6 +101,7 @@ CONFIG_MTD_OF_PARTS=y
 CONFIG_MTD_PHYSMAP=y
 CONFIG_MTD_PHYSMAP_OF=y
 CONFIG_MTD_SPLIT_FIRMWARE=y
+CONFIG_MTD_SPLIT_SEAMA_FW=y
 CONFIG_MTD_UIMAGE_SPLIT=y
 CONFIG_NEED_DMA_MAP_STATE=y
 CONFIG_NEED_PER_CPU_KM=y
diff --git a/target/linux/ramips/rt3883/profiles/samsung.mk b/target/linux/ramips/rt3883/profiles/samsung.mk
new file mode 100644
index 0000000000..18f60d4a3c
--- /dev/null
+++ b/target/linux/ramips/rt3883/profiles/samsung.mk
@@ -0,0 +1,16 @@
+#
+# Copyright (C) 2012 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Profile/CYSWR1100
+	NAME:=Samsung CY-SWR1100
+	PACKAGES:=kmod-usb-core kmod-usb-ohci kmod-usb2 swconfig
+endef
+
+define Profile/CYSWR1100/Description
+	Package set compatible with the Samsung CY-SWR1100 board.
+endef
+$(eval $(call Profile,CYSWR1100))
-- 
cgit v1.2.3