diff mbox

[OpenWrt-Devel] ipq806x: add support for Netgear D7800

Message ID 014501d13d83$823bc3e0$86b34ba0$@alumnux.com
State Changes Requested
Headers show

Commit Message

Tathagata Das Dec. 23, 2015, 1:12 p.m. UTC
Hi John,

Please check the content of the patch below.


----------------------------------------------
Index: trunk/target/linux/ipq806x/base-files/lib/upgrade/platform.sh
===================================================================
--- trunk/target/linux/ipq806x/base-files/lib/upgrade/platform.sh
(revision 47890)
+++ trunk/target/linux/ipq806x/base-files/lib/upgrade/platform.sh
(working copy)
@@ -7,7 +7,8 @@
 
 	case "$board" in
 	AP148 |\
-	r7500)
+	r7500 |\
+	d7800)
 		nand_do_platform_check $board $1
 		return $?;
 		;;
@@ -21,7 +22,8 @@
 
 	case "$board" in
 	AP148 |\
-	r7500)
+	r7500 |\
+	d7800)
 		nand_do_upgrade "$1"
 		;;
 	esac
Index: trunk/target/linux/ipq806x/base-files/lib/ipq806x.sh
===================================================================
--- trunk/target/linux/ipq806x/base-files/lib/ipq806x.sh	(revision
47890)
+++ trunk/target/linux/ipq806x/base-files/lib/ipq806x.sh	(working
copy)
@@ -23,6 +23,9 @@
 	*"R7500")
 		name="r7500"
 		;;
+	*"D7800")
+		name="d7800"
+		;;
 	esac
 
 	[ -z "$name" ] && name="unknown"
Index: trunk/target/linux/ipq806x/base-files/etc/board.d/01_leds
===================================================================
--- trunk/target/linux/ipq806x/base-files/etc/board.d/01_leds	(revision
47890)
+++ trunk/target/linux/ipq806x/base-files/etc/board.d/01_leds	(working
copy)
@@ -11,7 +11,8 @@
 board=$(ipq806x_board_name)
 
 case "$board" in
-r7500)
+r7500 |\
+d7800)
 	ucidef_set_led_usbdev "usb1" "USB 1" "r7500:white:usb1" "1-1"
 	ucidef_set_led_usbdev "usb2" "USB 2" "r7500:white:usb3" "3-1"
 	ucidef_set_led_netdev "wan" "WAN" "r7500:white:wan" "eth0"
Index: trunk/target/linux/ipq806x/base-files/etc/board.d/02_network
===================================================================
--- trunk/target/linux/ipq806x/base-files/etc/board.d/02_network
(revision 47890)
+++ trunk/target/linux/ipq806x/base-files/etc/board.d/02_network
(working copy)
@@ -13,7 +13,8 @@
 
 case "$board" in
 ap148 |\
-r7500)
+r7500 |\
+d7800)
 	ucidef_add_switch "switch0" \
 		"1:lan" "2:lan" "3:lan" "4:lan" "6@eth1" "5:wan" "0@eth0"
 	;;
Index:
trunk/target/linux/ipq806x/patches-3.18/801-ARM-qcom-add-Netgear-Nighthawk-X
4-D7800-device-tree.patch
===================================================================
---
trunk/target/linux/ipq806x/patches-3.18/801-ARM-qcom-add-Netgear-Nighthawk-X
4-D7800-device-tree.patch	(revision 0)
+++
trunk/target/linux/ipq806x/patches-3.18/801-ARM-qcom-add-Netgear-Nighthawk-X
4-D7800-device-tree.patch	(revision 0)
@@ -0,0 +1,381 @@
+--- a/arch/arm/boot/dts/Makefile	2015-09-22 18:30:09.033530282 +0530
++++ b/arch/arm/boot/dts/Makefile	2015-09-23 17:06:44.892947581 +0530
+@@ -362,6 +362,7 @@
+ 	qcom-ipq8064-ap148.dtb \
+ 	qcom-ipq8064-db149.dtb \
+ 	qcom-ipq8064-r7500.dtb \
++	qcom-ipq8064-d7800.dtb \
+ 	qcom-msm8660-surf.dtb \
+ 	qcom-msm8960-cdp.dtb \
+ 	qcom-msm8974-sony-xperia-honami.dtb
+--- a/arch/arm/boot/dts/qcom-ipq8064-d7800.dts	1970-01-01
05:30:00.000000000 +0530
++++ b/arch/arm/boot/dts/qcom-ipq8064-d7800.dts	2015-09-23
17:06:45.336947567 +0530
+@@ -0,0 +1,368 @@
++#include "qcom-ipq8064-v1.0.dtsi"
++
++#include <dt-bindings/input/input.h>
++
++/ {
++	model = "Netgear Nighthawk X4 D7800";
++	compatible = "netgear,d7800", "qcom,ipq8064";
++
++	memory@0 {
++		reg = <0x42000000 0xe000000>;
++		device_type = "memory";
++	};
++
++	reserved-memory {
++		#address-cells = <1>;
++		#size-cells = <1>;
++		ranges;
++		rsvd@41200000 {
++			reg = <0x41200000 0x300000>;
++			no-map;
++		};
++	};
++
++	aliases {
++		serial0 = &uart4;
++		mdio-gpio0 = &mdio0;
++	};
++
++	chosen {
++		bootargs = "rootfstype=squashfs noinitrd";
++		linux,stdout-path = "serial0:115200n8";
++	};
++
++	soc {
++		pinmux@800000 {
++			i2c4_pins: i2c4_pinmux {
++				pins = "gpio12", "gpio13";
++				function = "gsbi4";
++				bias-disable;
++			};
++
++			pcie0_pins: pcie0_pinmux {
++				mux {
++					pins = "gpio3";
++					function = "pcie1_rst";
++					drive-strength = <12>;
++					bias-disable;
++				};
++			};
++
++			pcie1_pins: pcie1_pinmux {
++				mux {
++					pins = "gpio48";
++					function = "pcie2_rst";
++					drive-strength = <12>;
++					bias-disable;
++				};
++			};
++
++			nand_pins: nand_pins {
++				mux {
++					pins = "gpio34", "gpio35", "gpio36",
++					       "gpio37", "gpio38", "gpio39",
++					       "gpio40", "gpio41", "gpio42",
++					       "gpio43", "gpio44", "gpio45",
++					       "gpio46", "gpio47";
++					function = "nand";
++					drive-strength = <10>;
++					bias-disable;
++				};
++				pullups {
++					pins = "gpio39";
++					bias-pull-up;
++				};
++				hold {
++					pins = "gpio40", "gpio41", "gpio42",
++					       "gpio43", "gpio44", "gpio45",
++					       "gpio46", "gpio47";
++					bias-bus-hold;
++				};
++			};
++
++			mdio0_pins: mdio0_pins {
++				mux {
++					pins = "gpio0", "gpio1";
++					function = "gpio";
++					drive-strength = <8>;
++					bias-disable;
++				};
++			};
++
++			rgmii2_pins: rgmii2_pins {
++				mux {
++					pins = "gpio27", "gpio28", "gpio29",
"gpio30", "gpio31", "gpio32",
++					       "gpio51", "gpio52", "gpio59",
"gpio60", "gpio61", "gpio62" ;
++					function = "rgmii2";
++					drive-strength = <8>;
++					bias-disable;
++				};
++			};
++		};
++
++		gsbi@16300000 {
++			qcom,mode = <GSBI_PROT_I2C_UART>;
++			status = "ok";
++			serial@16340000 {
++				status = "ok";
++			};
++			/*
++			 * The i2c device on gsbi4 should not be enabled.
++			 * On ipq806x designs gsbi4 i2c is meant for
exclusive
++			 * RPM usage. Turning this on in kernel manifests as
++			 * i2c failure for the RPM.
++			 */
++		};
++
++		sata-phy@1b400000 {
++			status = "ok";
++		};
++
++		sata@29000000 {
++			status = "ok";
++		};
++
++		phy@100f8800 {		/* USB3 port 1 HS phy */
++			status = "ok";
++		};
++
++		phy@100f8830 {		/* USB3 port 1 SS phy */
++			status = "ok";
++		};
++
++		phy@110f8800 {		/* USB3 port 0 HS phy */
++			status = "ok";
++		};
++
++		phy@110f8830 {		/* USB3 port 0 SS phy */
++			status = "ok";
++		};
++
++		usb30@0 {
++			status = "ok";
++		};
++
++		usb30@1 {
++			status = "ok";
++		};
++
++		pcie0: pci@1b500000 {
++			status = "ok";
++			reset-gpio = <&qcom_pinmux 3 0>;
++			pinctrl-0 = <&pcie0_pins>;
++			pinctrl-names = "default";
++		};
++
++		pcie1: pci@1b700000 {
++			status = "ok";
++			reset-gpio = <&qcom_pinmux 48 0>;
++			pinctrl-0 = <&pcie1_pins>;
++			pinctrl-names = "default";
++		};
++
++		nand@1ac00000 {
++			status = "ok";
++
++			pinctrl-0 = <&nand_pins>;
++			pinctrl-names = "default";
++
++			nand-ecc-strength = <4>;
++			nand-bus-width = <8>;
++
++			#address-cells = <1>;
++			#size-cells = <1>;
++
++			qcadata@0 {
++				label = "qcadata";
++				reg = <0x0000000 0x0c80000>;
++				read-only;
++			};
++
++			APPSBL@c80000 {
++				label = "APPSBL";
++				reg = <0x0c80000 0x0500000>;
++				read-only;
++			};
++
++			APPSBLENV@1180000 {
++				label = "APPSBLENV";
++				reg = <0x1180000 0x0080000>;
++				read-only;
++			};
++
++			art: art@1200000 {
++				label = "art";
++				reg = <0x1200000 0x0140000>;
++				read-only;
++			};
++
++			artbak: art@1340000 {
++				label = "artbak";
++				reg = <0x1340000 0x0140000>;
++				read-only;
++			};
++
++			kernel@1480000 {
++				label = "kernel";
++				reg = <0x1480000 0x0200000>;
++			};
++
++			ubi@1680000 {
++				label = "ubi";
++				reg = <0x1680000 0x1E00000>;
++			};
++
++			netgear@3480000 {
++				label = "netgear";
++				reg = <0x3480000 0x4480000>;
++				read-only;
++			};
++
++			reserve@7900000 {
++				label = "reserve";
++				reg = <0x7900000 0x0700000>;
++				read-only;
++			};
++
++			firmware@1480000 {
++				label = "firmware";
++				reg = <0x1480000 0x2000000>;
++			};
++
++		};
++
++		mdio0: mdio {
++			compatible = "virtual,mdio-gpio";
++			#address-cells = <1>;
++			#size-cells = <0>;
++			gpios = <&qcom_pinmux 1 0 &qcom_pinmux 0 0>;
++			pinctrl-0 = <&mdio0_pins>;
++			pinctrl-names = "default";
++
++			phy0: ethernet-phy@0 {
++				device_type = "ethernet-phy";
++				reg = <0>;
++				qca,ar8327-initvals = <
++					0x00004 0x7600000   /* PAD0_MODE */
++					0x00008 0x1000000   /* PAD5_MODE */
++					0x0000c 0x80        /* PAD6_MODE */
++					0x000e4 0xaa545     /* MAC_POWER_SEL
*/
++					0x000e0 0xc74164de  /* SGMII_CTRL */
++					0x0007c 0x4e        /* PORT0_STATUS
*/
++					0x00094 0x4e        /* PORT6_STATUS
*/
++					>;
++			};
++
++			phy4: ethernet-phy@4 {
++				device_type = "ethernet-phy";
++				reg = <4>;
++			};
++		};
++
++		gmac1: ethernet@37200000 {
++			status = "ok";
++			phy-mode = "rgmii";
++			phy-handle = <&phy4>;
++			qcom,id = <1>;
++
++			pinctrl-0 = <&rgmii2_pins>;
++			pinctrl-names = "default";
++
++			mtd-mac-address = <&art 6>;
++		};
++
++		gmac2: ethernet@37400000 {
++			status = "ok";
++			phy-mode = "sgmii";
++			qcom,id = <2>;
++
++			mtd-mac-address = <&art 0>;
++
++			fixed-link {
++				speed = <1000>;
++				full-duplex;
++			};
++		};
++	};
++
++	gpio-keys {
++		compatible = "gpio-keys";
++
++		wifi {
++			label = "wifi";
++			gpios = <&qcom_pinmux 6 1>;
++			linux,code = <KEY_WLAN>;
++		};
++
++		reset {
++			label = "reset";
++			gpios = <&qcom_pinmux 54 1>;
++			linux,code = <KEY_RESTART>;
++		};
++
++		wps {
++			label = "wps";
++			gpios = <&qcom_pinmux 65 1>;
++			linux,code = <KEY_WPS_BUTTON>;
++		};
++	};
++
++	gpio-leds {
++		compatible = "gpio-leds";
++
++		usb1 {
++			label = "d7800:amber:usb1";
++			gpios = <&qcom_pinmux 7 0>;
++		};
++
++		usb3 {
++			label = "d7800:amber:usb3";
++			gpios = <&qcom_pinmux 8 0>;
++		};
++
++		status {
++			label = "d7800:amber:status";
++			gpios = <&qcom_pinmux 9 0>;
++		};
++
++		internet {
++			label = "d7800:white:internet";
++			gpios = <&qcom_pinmux 22 0>;
++		};
++
++		wan {
++			label = "d7800:white:wan";
++			gpios = <&qcom_pinmux 23 0>;
++		};
++
++		wps {
++			label = "d7800:white:wps";
++			gpios = <&qcom_pinmux 24 0>;
++		};
++
++		esata {
++			label = "d7800:white:esata";
++			gpios = <&qcom_pinmux 26 0>;
++		};
++
++		power {
++			label = "d7800:white:power";
++			gpios = <&qcom_pinmux 53 0>;
++			default-state = "on";
++		};
++
++		rfkill {
++			label = "d7800:white:rfkill";
++			gpios = <&qcom_pinmux 64 0>;
++		};
++
++		wifi5g {
++			label = "d7800:white:wifi5g";
++			gpios = <&qcom_pinmux 67 0>;
++		};
++	};
++};
++
++&adm_dma {
++	status = "ok";
++};

Regards,
Tathagata


-----Original Message-----
From: John Crispin [mailto:blogic@openwrt.org] 
Sent: 23 December 2015 18:34
To: openwrt-devel@lists.openwrt.org; Tathagata Das
Subject: Re: [OpenWrt-Devel] [Patch] ipq806x: add support for Netgear D7800

Hi,

you sent the patch as an attachment. because of this patchwork did not pick
it up. could you please resend with the patch inline rather than attached.

	John

On 14/12/2015 10:37, Tathagata Das wrote:
> Add support for the Netgear D7800 and build appropariate sysupgrade 
> and factory images.
> 
> Known issues:
> . USB ports are not working
> . DSL is not added
> 
> Signed-off-by: Tathagata Das <tathagata@alumnux.com>
> 
> 
> 
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel@lists.openwrt.org
> https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
>

Comments

Imre Kaloz Dec. 23, 2015, 1:17 p.m. UTC | #1
On Wed, 23 Dec 2015 14:12:00 +0100, Tathagata Das <tathagata@alumnux.com>  
wrote:

<snip>

> -	r7500)
> +	r7500 |\
> +	d7800)
>  		nand_do_platform_check $board $1
>  		return $?;
>  		;;
> @@ -21,7 +22,8 @@
> 	case "$board" in
>  	AP148 |\
> -	r7500)
> +	r7500 |\
> +	d7800)
>  		nand_do_upgrade "$1"
>  		;;
>  	esac

Please follow the abc, please ;)

> Index: trunk/target/linux/ipq806x/base-files/lib/ipq806x.sh
> ===================================================================
> --- trunk/target/linux/ipq806x/base-files/lib/ipq806x.sh	(revision
> 47890)
> +++ trunk/target/linux/ipq806x/base-files/lib/ipq806x.sh	(working
> copy)
> @@ -23,6 +23,9 @@
>  	*"R7500")
>  		name="r7500"
>  		;;
> +	*"D7800")
> +		name="d7800"
> +		;;
>  	esac
> 	[ -z "$name" ] && name="unknown"

ditto

> Index: trunk/target/linux/ipq806x/base-files/etc/board.d/01_leds
> ===================================================================
> --- trunk/target/linux/ipq806x/base-files/etc/board.d/01_leds	(revision
> 47890)
> +++ trunk/target/linux/ipq806x/base-files/etc/board.d/01_leds	(working
> copy)
> @@ -11,7 +11,8 @@
>  board=$(ipq806x_board_name)
> case "$board" in
> -r7500)
> +r7500 |\
> +d7800)
>  	ucidef_set_led_usbdev "usb1" "USB 1" "r7500:white:usb1" "1-1"
>  	ucidef_set_led_usbdev "usb2" "USB 2" "r7500:white:usb3" "3-1"
>  	ucidef_set_led_netdev "wan" "WAN" "r7500:white:wan" "eth0"
> Index: trunk/target/linux/ipq806x/base-files/etc/board.d/02_network
> ===================================================================
> --- trunk/target/linux/ipq806x/base-files/etc/board.d/02_network
> (revision 47890)
> +++ trunk/target/linux/ipq806x/base-files/etc/board.d/02_network
> (working copy)
> @@ -13,7 +13,8 @@
> case "$board" in
>  ap148 |\
> -r7500)
> +r7500 |\
> +d7800)
>  	ucidef_add_switch "switch0" \
>  		"1:lan" "2:lan" "3:lan" "4:lan" "6@eth1" "5:wan" "0@eth0"
>  	;;

ditto

> Index:
> trunk/target/linux/ipq806x/patches-3.18/801-ARM-qcom-add-Netgear-Nighthawk-X
> 4-D7800-device-tree.patch
> ===================================================================
> ---
> trunk/target/linux/ipq806x/patches-3.18/801-ARM-qcom-add-Netgear-Nighthawk-X
> 4-D7800-device-tree.patch	(revision 0)
> +++
> trunk/target/linux/ipq806x/patches-3.18/801-ARM-qcom-add-Netgear-Nighthawk-X
> 4-D7800-device-tree.patch	(revision 0)
> @@ -0,0 +1,381 @@
> +--- a/arch/arm/boot/dts/Makefile	2015-09-22 18:30:09.033530282 +0530
> ++++ b/arch/arm/boot/dts/Makefile	2015-09-23 17:06:44.892947581 +0530
> +@@ -362,6 +362,7 @@
> + 	qcom-ipq8064-ap148.dtb \
> + 	qcom-ipq8064-db149.dtb \
> + 	qcom-ipq8064-r7500.dtb \
> ++	qcom-ipq8064-d7800.dtb \
> + 	qcom-msm8660-surf.dtb \
> + 	qcom-msm8960-cdp.dtb \
> + 	qcom-msm8974-sony-xperia-honami.dtb

ditto

> +--- a/arch/arm/boot/dts/qcom-ipq8064-d7800.dts	1970-01-01
> 05:30:00.000000000 +0530
> ++++ b/arch/arm/boot/dts/qcom-ipq8064-d7800.dts	2015-09-23
> 17:06:45.336947567 +0530
> +@@ -0,0 +1,368 @@

This should be qcom-ipq8064-netgear-d7800.dts

<snip>

> ++	chosen {
> ++		bootargs = "rootfstype=squashfs noinitrd";

I doubt this is needed.



Imre
John Crispin Dec. 23, 2015, 1:17 p.m. UTC | #2
nope that did not work properly. please consider using git to send the patch

--> https://patchwork.ozlabs.org/patch/560543/

On 23/12/2015 14:12, Tathagata Das wrote:
> Hi John,
> 
> Please check the content of the patch below.
> 
> 
> ----------------------------------------------
> Index: trunk/target/linux/ipq806x/image/Makefile
> ===================================================================
> --- trunk/target/linux/ipq806x/image/Makefile	(revision 47890)
> +++ trunk/target/linux/ipq806x/image/Makefile	(working copy)
> @@ -121,6 +121,17 @@y. 
>  	BOARD_NAME := r7500
>  endef
>  
> -TARGET_DEVICES += AP148 AP148-legacy DB149 R7500
> +define Device/D7800
> +	$(call Device/DniImage)
> +	DEVICE_DTS := qcom-ipq8064-d7800
> +	KERNEL_SIZE := 2097152 
> +	NETGEAR_BOARD_ID := D7800
> +	NETGEAR_HW_ID := 29764958+0+128+512+4x4+4x4 
> +	BLOCKSIZE := 128KiB
> +	PAGESIZE := 2048
> +	BOARD_NAME := d7800
> +endef
>  
> +TARGET_DEVICES += AP148 AP148-legacy DB149 R7500 D7800
> +
>  $(eval $(call BuildImage))
> Index: trunk/target/linux/ipq806x/profiles/netgear.mk
> ===================================================================
> --- trunk/target/linux/ipq806x/profiles/netgear.mk	(revision 47890)
> +++ trunk/target/linux/ipq806x/profiles/netgear.mk	(working copy)
> @@ -17,4 +17,18 @@
>  define Profile/R7500/Description
>  	Package set for the Netgear Nighthawk X4 R7500.
>  endef
> +
> +define Profile/D7800
> +	NAME:=Netgear Nighthawk X4 D7800
> +	PACKAGES:= \
> +		kmod-usb-core kmod-usb-ohci kmod-usb2 kmod-ledtrig-usbdev \
> +		kmod-usb3 kmod-usb-dwc3-qcom kmod-usb-phy-qcom-dwc3 \
> +		kmod-ath10k wpad-mini ath10k-firmware-qca99x0
> +endef
> +
> +define Profile/D7800/Description
> +	Package set for the Netgear Nighthawk X4 D7800.
> +endef
> +
>  $(eval $(call Profile,R7500))
> +$(eval $(call Profile,D7800))
> Index: trunk/target/linux/ipq806x/base-files/lib/upgrade/platform.sh
> ===================================================================
> --- trunk/target/linux/ipq806x/base-files/lib/upgrade/platform.sh
> (revision 47890)
> +++ trunk/target/linux/ipq806x/base-files/lib/upgrade/platform.sh
> (working copy)
> @@ -7,7 +7,8 @@
>  
>  	case "$board" in
>  	AP148 |\
> -	r7500)
> +	r7500 |\
> +	d7800)
>  		nand_do_platform_check $board $1
>  		return $?;
>  		;;
> @@ -21,7 +22,8 @@
>  
>  	case "$board" in
>  	AP148 |\
> -	r7500)
> +	r7500 |\
> +	d7800)
>  		nand_do_upgrade "$1"
>  		;;
>  	esac
> Index: trunk/target/linux/ipq806x/base-files/lib/ipq806x.sh
> ===================================================================
> --- trunk/target/linux/ipq806x/base-files/lib/ipq806x.sh	(revision
> 47890)
> +++ trunk/target/linux/ipq806x/base-files/lib/ipq806x.sh	(working
> copy)
> @@ -23,6 +23,9 @@
>  	*"R7500")
>  		name="r7500"
>  		;;
> +	*"D7800")
> +		name="d7800"
> +		;;
>  	esac
>  
>  	[ -z "$name" ] && name="unknown"
> Index: trunk/target/linux/ipq806x/base-files/etc/board.d/01_leds
> ===================================================================
> --- trunk/target/linux/ipq806x/base-files/etc/board.d/01_leds	(revision
> 47890)
> +++ trunk/target/linux/ipq806x/base-files/etc/board.d/01_leds	(working
> copy)
> @@ -11,7 +11,8 @@
>  board=$(ipq806x_board_name)
>  
>  case "$board" in
> -r7500)
> +r7500 |\
> +d7800)
>  	ucidef_set_led_usbdev "usb1" "USB 1" "r7500:white:usb1" "1-1"
>  	ucidef_set_led_usbdev "usb2" "USB 2" "r7500:white:usb3" "3-1"
>  	ucidef_set_led_netdev "wan" "WAN" "r7500:white:wan" "eth0"
> Index: trunk/target/linux/ipq806x/base-files/etc/board.d/02_network
> ===================================================================
> --- trunk/target/linux/ipq806x/base-files/etc/board.d/02_network
> (revision 47890)
> +++ trunk/target/linux/ipq806x/base-files/etc/board.d/02_network
> (working copy)
> @@ -13,7 +13,8 @@
>  
>  case "$board" in
>  ap148 |\
> -r7500)
> +r7500 |\
> +d7800)
>  	ucidef_add_switch "switch0" \
>  		"1:lan" "2:lan" "3:lan" "4:lan" "6@eth1" "5:wan" "0@eth0"
>  	;;
> Index:
> trunk/target/linux/ipq806x/patches-3.18/801-ARM-qcom-add-Netgear-Nighthawk-X
> 4-D7800-device-tree.patch
> ===================================================================
> ---
> trunk/target/linux/ipq806x/patches-3.18/801-ARM-qcom-add-Netgear-Nighthawk-X
> 4-D7800-device-tree.patch	(revision 0)
> +++
> trunk/target/linux/ipq806x/patches-3.18/801-ARM-qcom-add-Netgear-Nighthawk-X
> 4-D7800-device-tree.patch	(revision 0)
> @@ -0,0 +1,381 @@
> +--- a/arch/arm/boot/dts/Makefile	2015-09-22 18:30:09.033530282 +0530
> ++++ b/arch/arm/boot/dts/Makefile	2015-09-23 17:06:44.892947581 +0530
> +@@ -362,6 +362,7 @@
> + 	qcom-ipq8064-ap148.dtb \
> + 	qcom-ipq8064-db149.dtb \
> + 	qcom-ipq8064-r7500.dtb \
> ++	qcom-ipq8064-d7800.dtb \
> + 	qcom-msm8660-surf.dtb \
> + 	qcom-msm8960-cdp.dtb \
> + 	qcom-msm8974-sony-xperia-honami.dtb
> +--- a/arch/arm/boot/dts/qcom-ipq8064-d7800.dts	1970-01-01
> 05:30:00.000000000 +0530
> ++++ b/arch/arm/boot/dts/qcom-ipq8064-d7800.dts	2015-09-23
> 17:06:45.336947567 +0530
> +@@ -0,0 +1,368 @@
> ++#include "qcom-ipq8064-v1.0.dtsi"
> ++
> ++#include <dt-bindings/input/input.h>
> ++
> ++/ {
> ++	model = "Netgear Nighthawk X4 D7800";
> ++	compatible = "netgear,d7800", "qcom,ipq8064";
> ++
> ++	memory@0 {
> ++		reg = <0x42000000 0xe000000>;
> ++		device_type = "memory";
> ++	};
> ++
> ++	reserved-memory {
> ++		#address-cells = <1>;
> ++		#size-cells = <1>;
> ++		ranges;
> ++		rsvd@41200000 {
> ++			reg = <0x41200000 0x300000>;
> ++			no-map;
> ++		};
> ++	};
> ++
> ++	aliases {
> ++		serial0 = &uart4;
> ++		mdio-gpio0 = &mdio0;
> ++	};
> ++
> ++	chosen {
> ++		bootargs = "rootfstype=squashfs noinitrd";
> ++		linux,stdout-path = "serial0:115200n8";
> ++	};
> ++
> ++	soc {
> ++		pinmux@800000 {
> ++			i2c4_pins: i2c4_pinmux {
> ++				pins = "gpio12", "gpio13";
> ++				function = "gsbi4";
> ++				bias-disable;
> ++			};
> ++
> ++			pcie0_pins: pcie0_pinmux {
> ++				mux {
> ++					pins = "gpio3";
> ++					function = "pcie1_rst";
> ++					drive-strength = <12>;
> ++					bias-disable;
> ++				};
> ++			};
> ++
> ++			pcie1_pins: pcie1_pinmux {
> ++				mux {
> ++					pins = "gpio48";
> ++					function = "pcie2_rst";
> ++					drive-strength = <12>;
> ++					bias-disable;
> ++				};
> ++			};
> ++
> ++			nand_pins: nand_pins {
> ++				mux {
> ++					pins = "gpio34", "gpio35", "gpio36",
> ++					       "gpio37", "gpio38", "gpio39",
> ++					       "gpio40", "gpio41", "gpio42",
> ++					       "gpio43", "gpio44", "gpio45",
> ++					       "gpio46", "gpio47";
> ++					function = "nand";
> ++					drive-strength = <10>;
> ++					bias-disable;
> ++				};
> ++				pullups {
> ++					pins = "gpio39";
> ++					bias-pull-up;
> ++				};
> ++				hold {
> ++					pins = "gpio40", "gpio41", "gpio42",
> ++					       "gpio43", "gpio44", "gpio45",
> ++					       "gpio46", "gpio47";
> ++					bias-bus-hold;
> ++				};
> ++			};
> ++
> ++			mdio0_pins: mdio0_pins {
> ++				mux {
> ++					pins = "gpio0", "gpio1";
> ++					function = "gpio";
> ++					drive-strength = <8>;
> ++					bias-disable;
> ++				};
> ++			};
> ++
> ++			rgmii2_pins: rgmii2_pins {
> ++				mux {
> ++					pins = "gpio27", "gpio28", "gpio29",
> "gpio30", "gpio31", "gpio32",
> ++					       "gpio51", "gpio52", "gpio59",
> "gpio60", "gpio61", "gpio62" ;
> ++					function = "rgmii2";
> ++					drive-strength = <8>;
> ++					bias-disable;
> ++				};
> ++			};
> ++		};
> ++
> ++		gsbi@16300000 {
> ++			qcom,mode = <GSBI_PROT_I2C_UART>;
> ++			status = "ok";
> ++			serial@16340000 {
> ++				status = "ok";
> ++			};
> ++			/*
> ++			 * The i2c device on gsbi4 should not be enabled.
> ++			 * On ipq806x designs gsbi4 i2c is meant for
> exclusive
> ++			 * RPM usage. Turning this on in kernel manifests as
> ++			 * i2c failure for the RPM.
> ++			 */
> ++		};
> ++
> ++		sata-phy@1b400000 {
> ++			status = "ok";
> ++		};
> ++
> ++		sata@29000000 {
> ++			status = "ok";
> ++		};
> ++
> ++		phy@100f8800 {		/* USB3 port 1 HS phy */
> ++			status = "ok";
> ++		};
> ++
> ++		phy@100f8830 {		/* USB3 port 1 SS phy */
> ++			status = "ok";
> ++		};
> ++
> ++		phy@110f8800 {		/* USB3 port 0 HS phy */
> ++			status = "ok";
> ++		};
> ++
> ++		phy@110f8830 {		/* USB3 port 0 SS phy */
> ++			status = "ok";
> ++		};
> ++
> ++		usb30@0 {
> ++			status = "ok";
> ++		};
> ++
> ++		usb30@1 {
> ++			status = "ok";
> ++		};
> ++
> ++		pcie0: pci@1b500000 {
> ++			status = "ok";
> ++			reset-gpio = <&qcom_pinmux 3 0>;
> ++			pinctrl-0 = <&pcie0_pins>;
> ++			pinctrl-names = "default";
> ++		};
> ++
> ++		pcie1: pci@1b700000 {
> ++			status = "ok";
> ++			reset-gpio = <&qcom_pinmux 48 0>;
> ++			pinctrl-0 = <&pcie1_pins>;
> ++			pinctrl-names = "default";
> ++		};
> ++
> ++		nand@1ac00000 {
> ++			status = "ok";
> ++
> ++			pinctrl-0 = <&nand_pins>;
> ++			pinctrl-names = "default";
> ++
> ++			nand-ecc-strength = <4>;
> ++			nand-bus-width = <8>;
> ++
> ++			#address-cells = <1>;
> ++			#size-cells = <1>;
> ++
> ++			qcadata@0 {
> ++				label = "qcadata";
> ++				reg = <0x0000000 0x0c80000>;
> ++				read-only;
> ++			};
> ++
> ++			APPSBL@c80000 {
> ++				label = "APPSBL";
> ++				reg = <0x0c80000 0x0500000>;
> ++				read-only;
> ++			};
> ++
> ++			APPSBLENV@1180000 {
> ++				label = "APPSBLENV";
> ++				reg = <0x1180000 0x0080000>;
> ++				read-only;
> ++			};
> ++
> ++			art: art@1200000 {
> ++				label = "art";
> ++				reg = <0x1200000 0x0140000>;
> ++				read-only;
> ++			};
> ++
> ++			artbak: art@1340000 {
> ++				label = "artbak";
> ++				reg = <0x1340000 0x0140000>;
> ++				read-only;
> ++			};
> ++
> ++			kernel@1480000 {
> ++				label = "kernel";
> ++				reg = <0x1480000 0x0200000>;
> ++			};
> ++
> ++			ubi@1680000 {
> ++				label = "ubi";
> ++				reg = <0x1680000 0x1E00000>;
> ++			};
> ++
> ++			netgear@3480000 {
> ++				label = "netgear";
> ++				reg = <0x3480000 0x4480000>;
> ++				read-only;
> ++			};
> ++
> ++			reserve@7900000 {
> ++				label = "reserve";
> ++				reg = <0x7900000 0x0700000>;
> ++				read-only;
> ++			};
> ++
> ++			firmware@1480000 {
> ++				label = "firmware";
> ++				reg = <0x1480000 0x2000000>;
> ++			};
> ++
> ++		};
> ++
> ++		mdio0: mdio {
> ++			compatible = "virtual,mdio-gpio";
> ++			#address-cells = <1>;
> ++			#size-cells = <0>;
> ++			gpios = <&qcom_pinmux 1 0 &qcom_pinmux 0 0>;
> ++			pinctrl-0 = <&mdio0_pins>;
> ++			pinctrl-names = "default";
> ++
> ++			phy0: ethernet-phy@0 {
> ++				device_type = "ethernet-phy";
> ++				reg = <0>;
> ++				qca,ar8327-initvals = <
> ++					0x00004 0x7600000   /* PAD0_MODE */
> ++					0x00008 0x1000000   /* PAD5_MODE */
> ++					0x0000c 0x80        /* PAD6_MODE */
> ++					0x000e4 0xaa545     /* MAC_POWER_SEL
> */
> ++					0x000e0 0xc74164de  /* SGMII_CTRL */
> ++					0x0007c 0x4e        /* PORT0_STATUS
> */
> ++					0x00094 0x4e        /* PORT6_STATUS
> */
> ++					>;
> ++			};
> ++
> ++			phy4: ethernet-phy@4 {
> ++				device_type = "ethernet-phy";
> ++				reg = <4>;
> ++			};
> ++		};
> ++
> ++		gmac1: ethernet@37200000 {
> ++			status = "ok";
> ++			phy-mode = "rgmii";
> ++			phy-handle = <&phy4>;
> ++			qcom,id = <1>;
> ++
> ++			pinctrl-0 = <&rgmii2_pins>;
> ++			pinctrl-names = "default";
> ++
> ++			mtd-mac-address = <&art 6>;
> ++		};
> ++
> ++		gmac2: ethernet@37400000 {
> ++			status = "ok";
> ++			phy-mode = "sgmii";
> ++			qcom,id = <2>;
> ++
> ++			mtd-mac-address = <&art 0>;
> ++
> ++			fixed-link {
> ++				speed = <1000>;
> ++				full-duplex;
> ++			};
> ++		};
> ++	};
> ++
> ++	gpio-keys {
> ++		compatible = "gpio-keys";
> ++
> ++		wifi {
> ++			label = "wifi";
> ++			gpios = <&qcom_pinmux 6 1>;
> ++			linux,code = <KEY_WLAN>;
> ++		};
> ++
> ++		reset {
> ++			label = "reset";
> ++			gpios = <&qcom_pinmux 54 1>;
> ++			linux,code = <KEY_RESTART>;
> ++		};
> ++
> ++		wps {
> ++			label = "wps";
> ++			gpios = <&qcom_pinmux 65 1>;
> ++			linux,code = <KEY_WPS_BUTTON>;
> ++		};
> ++	};
> ++
> ++	gpio-leds {
> ++		compatible = "gpio-leds";
> ++
> ++		usb1 {
> ++			label = "d7800:amber:usb1";
> ++			gpios = <&qcom_pinmux 7 0>;
> ++		};
> ++
> ++		usb3 {
> ++			label = "d7800:amber:usb3";
> ++			gpios = <&qcom_pinmux 8 0>;
> ++		};
> ++
> ++		status {
> ++			label = "d7800:amber:status";
> ++			gpios = <&qcom_pinmux 9 0>;
> ++		};
> ++
> ++		internet {
> ++			label = "d7800:white:internet";
> ++			gpios = <&qcom_pinmux 22 0>;
> ++		};
> ++
> ++		wan {
> ++			label = "d7800:white:wan";
> ++			gpios = <&qcom_pinmux 23 0>;
> ++		};
> ++
> ++		wps {
> ++			label = "d7800:white:wps";
> ++			gpios = <&qcom_pinmux 24 0>;
> ++		};
> ++
> ++		esata {
> ++			label = "d7800:white:esata";
> ++			gpios = <&qcom_pinmux 26 0>;
> ++		};
> ++
> ++		power {
> ++			label = "d7800:white:power";
> ++			gpios = <&qcom_pinmux 53 0>;
> ++			default-state = "on";
> ++		};
> ++
> ++		rfkill {
> ++			label = "d7800:white:rfkill";
> ++			gpios = <&qcom_pinmux 64 0>;
> ++		};
> ++
> ++		wifi5g {
> ++			label = "d7800:white:wifi5g";
> ++			gpios = <&qcom_pinmux 67 0>;
> ++		};
> ++	};
> ++};
> ++
> ++&adm_dma {
> ++	status = "ok";
> ++};
> 
> Regards,
> Tathagata
> 
> 
> -----Original Message-----
> From: John Crispin [mailto:blogic@openwrt.org] 
> Sent: 23 December 2015 18:34
> To: openwrt-devel@lists.openwrt.org; Tathagata Das
> Subject: Re: [OpenWrt-Devel] [Patch] ipq806x: add support for Netgear D7800
> 
> Hi,
> 
> you sent the patch as an attachment. because of this patchwork did not pick
> it up. could you please resend with the patch inline rather than attached.
> 
> 	John
> 
> On 14/12/2015 10:37, Tathagata Das wrote:
>> Add support for the Netgear D7800 and build appropariate sysupgrade 
>> and factory images.
>>
>> Known issues:
>> . USB ports are not working
>> . DSL is not added
>>
>> Signed-off-by: Tathagata Das <tathagata@alumnux.com>
>>
>>
>>
>> _______________________________________________
>> openwrt-devel mailing list
>> openwrt-devel@lists.openwrt.org
>> https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
>>
diff mbox

Patch

Index: trunk/target/linux/ipq806x/image/Makefile
===================================================================
--- trunk/target/linux/ipq806x/image/Makefile	(revision 47890)
+++ trunk/target/linux/ipq806x/image/Makefile	(working copy)
@@ -121,6 +121,17 @@ 
 	BOARD_NAME := r7500
 endef
 
-TARGET_DEVICES += AP148 AP148-legacy DB149 R7500
+define Device/D7800
+	$(call Device/DniImage)
+	DEVICE_DTS := qcom-ipq8064-d7800
+	KERNEL_SIZE := 2097152 
+	NETGEAR_BOARD_ID := D7800
+	NETGEAR_HW_ID := 29764958+0+128+512+4x4+4x4 
+	BLOCKSIZE := 128KiB
+	PAGESIZE := 2048
+	BOARD_NAME := d7800
+endef
 
+TARGET_DEVICES += AP148 AP148-legacy DB149 R7500 D7800
+
 $(eval $(call BuildImage))
Index: trunk/target/linux/ipq806x/profiles/netgear.mk
===================================================================
--- trunk/target/linux/ipq806x/profiles/netgear.mk	(revision 47890)
+++ trunk/target/linux/ipq806x/profiles/netgear.mk	(working copy)
@@ -17,4 +17,18 @@ 
 define Profile/R7500/Description
 	Package set for the Netgear Nighthawk X4 R7500.
 endef
+
+define Profile/D7800
+	NAME:=Netgear Nighthawk X4 D7800
+	PACKAGES:= \
+		kmod-usb-core kmod-usb-ohci kmod-usb2 kmod-ledtrig-usbdev \
+		kmod-usb3 kmod-usb-dwc3-qcom kmod-usb-phy-qcom-dwc3 \
+		kmod-ath10k wpad-mini ath10k-firmware-qca99x0
+endef
+
+define Profile/D7800/Description
+	Package set for the Netgear Nighthawk X4 D7800.
+endef
+
 $(eval $(call Profile,R7500))
+$(eval $(call Profile,D7800))