From patchwork Wed Mar 23 19:55:09 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexis Green X-Patchwork-Id: 601351 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from arrakis.dune.hu (caladan.dune.hu [78.24.191.180]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3qVgLC6pH4z9sBf for ; Thu, 24 Mar 2016 06:56:19 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=cococorp.com header.i=@cococorp.com header.b=1nr/pmkV; dkim-atps=neutral Received: from arrakis.dune.hu (localhost [127.0.0.1]) by arrakis.dune.hu (Postfix) with ESMTP id AEC1AB919C3; Wed, 23 Mar 2016 20:55:29 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on arrakis.dune.hu X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.1 Received: from arrakis.dune.hu (localhost [127.0.0.1]) by arrakis.dune.hu (Postfix) with ESMTP; Wed, 23 Mar 2016 20:55:29 +0100 (CET) Received: from arrakis.dune.hu (localhost [127.0.0.1]) by arrakis.dune.hu (Postfix) with ESMTP id 58A63B919BB for ; Wed, 23 Mar 2016 20:55:26 +0100 (CET) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 CL_IP_EQ_HELO_IP=-2 (check from: .cococorp. - helo: .mail-io0-f177.google. - helo-domain: .google.) FROM/MX_MATCHES_NOT_HELO(DOMAIN)=1; rate: -4 Received: from mail-io0-f177.google.com (mail-io0-f177.google.com [209.85.223.177]) by arrakis.dune.hu (Postfix) with ESMTPS for ; Wed, 23 Mar 2016 20:55:24 +0100 (CET) Received: by mail-io0-f177.google.com with SMTP id c63so64673503iof.0 for ; Wed, 23 Mar 2016 12:55:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cococorp.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=QUEIzl8jFIcacuQzHFhDlhPcBtMhOneGcFy0xRD4n08=; b=1nr/pmkVOnszyMxnOmUS5O5YfpWcQqLFAo8xPq261wgsCLc3FOb1gsylFGNl+mXe2D rWgcmQT/2bYEW8lfQDKR3iXP+SRLlOMYxjhvT6wsbPvhH3rGPqtsDBk8ET7wMvkDbEJt gxx7ioFIGK6SLCHiXjvEPDucjHX37F1THmMn8= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=QUEIzl8jFIcacuQzHFhDlhPcBtMhOneGcFy0xRD4n08=; b=QdIMja37DSJ/VwWsChcspPkcsLkevkfJO9j2TrwEAYRGUDdz0En2UWj6rpiRVIRJ4i o84Qatp5TVMulG4MzJXjOBSkWAlVOj++hdQZ5Kkfj3le1XmJW/02EtBiFSO3b/gp69fz O0zkavnrJanY4sNPKV+7aZskSrbOdzNlOKt3qEaRDLY1oQm3LEFhcoGzuz77grHk8Jlx 1rt1SDl2Et6N4yUTKIvzLdSVDJobuH+1vfceWc1aU2dZ634f0vytgGtG+g7agRvyA3hn kjKrjoocE0+GNY3l2WKDev02VJrQgxctF4ZoNHZXXUx4Cd386EeyUAz7GYZ+VUJ3ENrm cSjQ== X-Gm-Message-State: AD7BkJJV9eFisIrPtdha71KEVBrODMxSZ/wdHtUFvXeyYW3ypKNhKORIaCJRYpA3Hq9zRKOh X-Received: by 10.50.110.99 with SMTP id hz3mr25342219igb.16.1458762923316; Wed, 23 Mar 2016 12:55:23 -0700 (PDT) Received: from grudge2.coco.sea ([67.137.71.162]) by smtp.gmail.com with ESMTPSA id k10sm1705189igm.22.2016.03.23.12.55.22 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 23 Mar 2016 12:55:22 -0700 (PDT) From: Alexis Green To: openwrt-devel@lists.openwrt.org Date: Wed, 23 Mar 2016 12:55:09 -0700 Message-Id: <1458762910-18919-2-git-send-email-agreen@cococorp.com> X-Mailer: git-send-email 2.1.0 In-Reply-To: <1458762910-18919-1-git-send-email-agreen@cococorp.com> References: <1458762910-18919-1-git-send-email-agreen@cococorp.com> Subject: [OpenWrt-Devel] [PATCH 1/2] ipq806x: Add support for Netgear R7500v2 X-BeenThere: openwrt-devel@lists.openwrt.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: OpenWrt Development List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Alexis Green MIME-Version: 1.0 Errors-To: openwrt-devel-bounces@lists.openwrt.org Sender: "openwrt-devel" --- .../linux/ipq806x/base-files/etc/board.d/01_leds | 19 +- .../ipq806x/base-files/etc/board.d/02_network | 3 +- .../etc/hotplug.d/firmware/11-ath10k-caldata | 50 +++ target/linux/ipq806x/base-files/lib/ipq806x.sh | 3 + .../ipq806x/base-files/lib/upgrade/platform.sh | 6 +- target/linux/ipq806x/image/Makefile | 14 +- ...-Netgear-Nighthawk-X4-D7500v2-device-tree.patch | 363 +++++++++++++++++++++ target/linux/ipq806x/profiles/netgear.mk | 13 + 8 files changed, 460 insertions(+), 11 deletions(-) create mode 100755 target/linux/ipq806x/base-files/etc/hotplug.d/firmware/11-ath10k-caldata create mode 100644 target/linux/ipq806x/patches-3.18/802-ARM-qcom-add-Netgear-Nighthawk-X4-D7500v2-device-tree.patch diff --git a/target/linux/ipq806x/base-files/etc/board.d/01_leds b/target/linux/ipq806x/base-files/etc/board.d/01_leds index b32c1cc..2e86118 100755 --- a/target/linux/ipq806x/base-files/etc/board.d/01_leds +++ b/target/linux/ipq806x/base-files/etc/board.d/01_leds @@ -10,15 +10,20 @@ board_config_update board=$(ipq806x_board_name) +netgear_leds() { + ucidef_set_led_usbdev "usb1" "USB 1" "${board}:white:usb1" "1-1" + ucidef_set_led_usbdev "usb2" "USB 2" "${board}:white:usb3" "3-1" + ucidef_set_led_netdev "wan" "WAN" "${board}:white:wan" "eth0" + ucidef_set_led_ide "esata" "eSATA" "${board}:amber:esata" + ucidef_set_led_default "wps" "WPS" "${board}:white:wps" "0" + ucidef_set_led_default "rfkill" "rfkill" "${board}:white:rfkill" "0" +} + case "$board" in d7800 |\ -r7500) - 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" - ucidef_set_led_ide "esata" "eSATA" "r7500:amber:esata" - ucidef_set_led_default "wps" "WPS" "r7500:white:wps" "0" - ucidef_set_led_default "rfkill" "rfkill" "r7500:white:rfkill" "0" +r7500 |\ +r7500v2) + netgear_leds ;; *) ;; diff --git a/target/linux/ipq806x/base-files/etc/board.d/02_network b/target/linux/ipq806x/base-files/etc/board.d/02_network index 6e18297..0ee6b3e 100755 --- a/target/linux/ipq806x/base-files/etc/board.d/02_network +++ b/target/linux/ipq806x/base-files/etc/board.d/02_network @@ -14,7 +14,8 @@ board=$(ipq806x_board_name) case "$board" in ap148 |\ d7800 |\ -r7500) +r7500 |\ +r7500v2) ucidef_add_switch "switch0" \ "1:lan" "2:lan" "3:lan" "4:lan" "6@eth1" "5:wan" "0@eth0" ;; diff --git a/target/linux/ipq806x/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ipq806x/base-files/etc/hotplug.d/firmware/11-ath10k-caldata new file mode 100755 index 0000000..0f5b32c --- /dev/null +++ b/target/linux/ipq806x/base-files/etc/hotplug.d/firmware/11-ath10k-caldata @@ -0,0 +1,50 @@ +#!/bin/sh + +ath10kcal_die() { + echo "ath10cal: " "$*" + exit 1 +} + +ath10kcal_extract() { + local part=$1 + local offset=$2 + local count=$3 + local mtd + + mtd=$(find_mtd_chardev $part) + [ -n "$mtd" ] || \ + ath10kcal_die "no mtd device found for partition $part" + + dd if=$mtd of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \ + ath10kcal_die "failed to extract calibration data from $mtd" +} + +[ -e /lib/firmware/$FIRMWARE ] && exit 0 + +. /lib/ipq806x.sh +. /lib/functions.sh +. /lib/functions/system.sh + +board=$(ipq806x_board_name) + +case "$FIRMWARE" in +"ath10k/cal-pci-0000:01:00.0.bin") + case $board in + d7800 |\ + r7500v2 ) + ath10kcal_extract "art" 4096 12064 + ;; + esac + ;; +"ath10k/cal-pci-0001:01:00.0.bin") + case $board in + d7800 |\ + r7500v2 ) + ath10kcal_extract "art" 20480 12064 + ;; + esac + ;; +*) + exit 1 + ;; +esac diff --git a/target/linux/ipq806x/base-files/lib/ipq806x.sh b/target/linux/ipq806x/base-files/lib/ipq806x.sh index db22708..68cffd5 100644 --- a/target/linux/ipq806x/base-files/lib/ipq806x.sh +++ b/target/linux/ipq806x/base-files/lib/ipq806x.sh @@ -26,6 +26,9 @@ ipq806x_board_detect() { *"R7500") name="r7500" ;; + *"R7500v2") + name="r7500v2" + ;; esac [ -z "$name" ] && name="unknown" diff --git a/target/linux/ipq806x/base-files/lib/upgrade/platform.sh b/target/linux/ipq806x/base-files/lib/upgrade/platform.sh index 542b5ce..1acdfe4 100644 --- a/target/linux/ipq806x/base-files/lib/upgrade/platform.sh +++ b/target/linux/ipq806x/base-files/lib/upgrade/platform.sh @@ -8,7 +8,8 @@ platform_check_image() { case "$board" in ap148 |\ d7800 |\ - r7500) + r7500 |\ + r7500v2) nand_do_platform_check $board $1 return $?; ;; @@ -23,7 +24,8 @@ platform_pre_upgrade() { case "$board" in ap148 |\ d7800 |\ - r7500) + r7500 |\ + r7500v2) nand_do_upgrade "$1" ;; esac diff --git a/target/linux/ipq806x/image/Makefile b/target/linux/ipq806x/image/Makefile index ff8b2c7..4040955 100644 --- a/target/linux/ipq806x/image/Makefile +++ b/target/linux/ipq806x/image/Makefile @@ -133,6 +133,18 @@ define Device/R7500 BOARD_NAME := r7500 endef -TARGET_DEVICES += AP148 AP148-legacy D7800 DB149 R7500 +define Device/R7500v2 + $(call Device/DniImage) + DEVICE_DTS := qcom-ipq8064-r7500v2 + KERNEL_SIZE := 2097152 + NETGEAR_BOARD_ID := R7500v2 + NETGEAR_HW_ID := 29764958+0+128+512+3x3+4x4 + BLOCKSIZE := 128KiB + PAGESIZE := 2048 + BOARD_NAME := r7500v2 +endef + + +TARGET_DEVICES += AP148 AP148-legacy D7800 DB149 R7500 R7500v2 $(eval $(call BuildImage)) diff --git a/target/linux/ipq806x/patches-3.18/802-ARM-qcom-add-Netgear-Nighthawk-X4-D7500v2-device-tree.patch b/target/linux/ipq806x/patches-3.18/802-ARM-qcom-add-Netgear-Nighthawk-X4-D7500v2-device-tree.patch new file mode 100644 index 0000000..5eff49a --- /dev/null +++ b/target/linux/ipq806x/patches-3.18/802-ARM-qcom-add-Netgear-Nighthawk-X4-D7500v2-device-tree.patch @@ -0,0 +1,363 @@ +--- a/arch/arm/boot/dts/Makefile ++++ b/arch/arm/boot/dts/Makefile +@@ -362,6 +362,7 @@ dtb-$(CONFIG_ARCH_QCOM) += \ + qcom-ipq8064-ap148.dtb \ + qcom-ipq8064-db149.dtb \ + qcom-ipq8064-r7500.dtb \ ++ qcom-ipq8064-r7500v2.dtb \ + qcom-ipq8064-d7800.dtb \ + qcom-msm8660-surf.dtb \ + qcom-msm8960-cdp.dtb \ +--- /dev/null ++++ b/arch/arm/boot/dts/qcom-ipq8064-r7500v2.dts +@@ -0,0 +1,350 @@ ++#include "qcom-ipq8064-v1.0.dtsi" ++ ++#include ++ ++/ { ++ model = "Netgear Nighthawk X4 R7500v2"; ++ compatible = "netgear,r7500v2", "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; ++ }; ++ ++ 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 = ; ++ 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 GPIO_ACTIVE_LOW>; ++ pinctrl-0 = <&pcie0_pins>; ++ pinctrl-names = "default"; ++ }; ++ ++ pcie1: pci@1b700000 { ++ status = "ok"; ++ reset-gpio = <&qcom_pinmux 48 GPIO_ACTIVE_LOW>; ++ 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"; ++ qcom,id = <1>; ++ ++ pinctrl-0 = <&rgmii2_pins>; ++ pinctrl-names = "default"; ++ ++ mtd-mac-address = <&art 6>; ++ ++ fixed-link { ++ speed = <1000>; ++ full-duplex; ++ }; ++ }; ++ ++ 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 = ; ++ }; ++ ++ reset { ++ label = "reset"; ++ gpios = <&qcom_pinmux 54 1>; ++ linux,code = ; ++ }; ++ ++ wps { ++ label = "wps"; ++ gpios = <&qcom_pinmux 65 1>; ++ linux,code = ; ++ }; ++ }; ++ ++ gpio-leds { ++ compatible = "gpio-leds"; ++ ++ usb1 { ++ label = "r7500v2:amber:usb1"; ++ gpios = <&qcom_pinmux 7 0>; ++ }; ++ ++ usb3 { ++ label = "r7500v2:amber:usb3"; ++ gpios = <&qcom_pinmux 8 0>; ++ }; ++ ++ status { ++ label = "r7500v2:amber:status"; ++ gpios = <&qcom_pinmux 9 0>; ++ }; ++ ++ internet { ++ label = "r7500v2:white:internet"; ++ gpios = <&qcom_pinmux 22 0>; ++ }; ++ ++ wan { ++ label = "r7500v2:white:wan"; ++ gpios = <&qcom_pinmux 23 0>; ++ }; ++ ++ wps { ++ label = "r7500v2:white:wps"; ++ gpios = <&qcom_pinmux 24 0>; ++ }; ++ ++ esata { ++ label = "r7500v2:white:esata"; ++ gpios = <&qcom_pinmux 26 0>; ++ }; ++ ++ power { ++ label = "r7500v2:white:power"; ++ gpios = <&qcom_pinmux 53 0>; ++ default-state = "on"; ++ }; ++ ++ rfkill { ++ label = "r7500v2:white:rfkill"; ++ gpios = <&qcom_pinmux 64 0>; ++ }; ++ ++ }; ++}; ++ ++&adm_dma { ++ status = "ok"; ++}; diff --git a/target/linux/ipq806x/profiles/netgear.mk b/target/linux/ipq806x/profiles/netgear.mk index 25258cd..e64831b 100644 --- a/target/linux/ipq806x/profiles/netgear.mk +++ b/target/linux/ipq806x/profiles/netgear.mk @@ -29,5 +29,18 @@ endef define Profile/R7500/Description Package set for the Netgear Nighthawk X4 R7500. endef + +define Profile/R7500v2 + NAME:=Netgear Nighthawk X4 R7500v2 + 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/R7500v2/Description + Package set for the Netgear Nighthawk X4 R7500v2. +endef $(eval $(call Profile,D7800)) $(eval $(call Profile,R7500)) +$(eval $(call Profile,R7500v2))