aboutsummaryrefslogtreecommitdiffstats
path: root/include/kernel-build.mk
blob: 477c9eeddf4cd11763c795e6a10b74aaeb132091 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#
# Copyright (C) 2006-2007 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(INCLUDE_DIR)/host.mk
include $(INCLUDE_DIR)/prereq.mk

ifneq ($(DUMP),1)
  all: compile
endif

export QUILT=1
STAMP_PREPARED:=$(LINUX_DIR)/.prepared
STAMP_CONFIGURED:=$(LINUX_DIR)/.configured
include $(INCLUDE_DIR)/download.mk
include $(INCLUDE_DIR)/quilt.mk
include $(INCLUDE_DIR)/kernel-defaults.mk

define Kernel/Prepare
	$(call Kernel/Prepare/Default)
endef

define Kernel/Configure
	$(call Kernel/Configure/Default)
endef

define Kernel/CompileModules
	$(call Kernel/CompileModules/Default)
endef

define Kernel/CompileImage
	$(call Kernel/CompileImage/Default)
endef

define Kernel/Clean
	$(call Kernel/Clean/Default)
endef

define Download/kernel
  URL:=$(LINUX_SITE)
  FILE:=$(LINUX_SOURCE)
  MD5SUM:=$(LINUX_KERNEL_MD5SUM)
endef

define BuildKernel
  $(if $(QUILT),$(Build/Quilt))
  $(if $(LINUX_SITE),$(call Download,kernel))

  $(STAMP_PREPARED): $(DL_DIR)/$(LINUX_SOURCE)
	-rm -rf $(KERNEL_BUILD_DIR)
	-mkdir -p $(KERNEL_BUILD_DIR)
	$(Kernel/Prepare)
	touch $$@

  $(STAMP_CONFIGURED): $(STAMP_PREPARED) $(LINUX_CONFIG) $(GENERIC_LINUX_CONFIG) $(TOPDIR)/.config
	$(Kernel/Configure)
	touch $$@

  $(LINUX_DIR)/.modules: $(STAMP_CONFIGURED) $(LINUX_DIR)/.config FORCE
	$(Kernel/CompileModules)
	touch $$@

  $(LINUX_DIR)/.image: $(STAMP_CONFIGURED) FORCE
	$(Kernel/CompileImage)
	touch $$@
	
  mostlyclean: FORCE
	$(Kernel/Clean)

  define BuildKernel
  endef

  download: $(DL_DIR)/$(LINUX_SOURCE)
  prepare: $(STAMP_CONFIGURED)
  compile: $(LINUX_DIR)/.modules
	$(MAKE) -C image compile TARGET_BUILD=

  oldconfig menuconfig: $(STAMP_PREPARED) FORCE
	[ -e "$(LINUX_CONFIG)" ] || touch "$(LINUX_CONFIG)"
	$(LINUX_CONFCMD) > $(LINUX_DIR)/.config
	touch $(LINUX_CONFIG)
	$(_SINGLE)$(MAKE) -C $(LINUX_DIR) $(KERNEL_MAKEOPTS) $$@
	$(SCRIPT_DIR)/kconfig.pl '>' $(GENERIC_LINUX_CONFIG) $(LINUX_DIR)/.config > $(if $(LINUX_SUBCONFIG),$(LINUX_SUBCONFIG),$(LINUX_CONFIG))
	$(Kernel/Configure)

  install: $(LINUX_DIR)/.image
	+$(MAKE) -C image compile install TARGET_BUILD=

  clean: FORCE
	rm -rf $(KERNEL_BUILD_DIR)

  image-prereq:
	@+$(NO_TRACE_MAKE) -s -C image prereq TARGET_BUILD=

  prereq: image-prereq

endef
n404' href='#n404'>404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545
#include "qcom-ipq8065-v1.0.dtsi"

#include <dt-bindings/input/input.h>

/ {
	model = "Netgear Nighthawk X4S R7800";
	compatible = "netgear,r7800", "qcom,ipq8065", "qcom,ipq8064";

	memory@0 {
		reg = <0x42000000 0x1e000000>;
		device_type = "memory";
	};

	reserved-memory {
		#address-cells = <1>;
		#size-cells = <1>;
		ranges;
		rsvd@41200000 {
			reg = <0x41200000 0x300000>;
			no-map;
		};

		rsvd@5fe00000 {
			reg = <0x5fe00000 0x200000>;
			reusable;
		};
	};

	aliases {
		serial0 = &uart4;
		mdio-gpio0 = &mdio0;

		led-boot = &power_white;
		led-failsafe = &power_white;
		led-running = &power_white;
		led-upgrade = &power_amber;
	};

	chosen {
		linux,stdout-path = "serial0:115200n8";
	};

	soc {
		pinmux@800000 {
			pinctrl-0 = <&mdio0_pins &rgmii2_pins>;
			pinctrl-names = "default";

			i2c4_pins: i2c4_pinmux {
				mux {
					pins = "gpio12", "gpio13";
					function = "gsbi4";
					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;
				};

				clk {
					pins = "gpio1";
					input-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;
				};

				tx {
					pins = "gpio27", "gpio28", "gpio29", "gpio30", "gpio31", "gpio32" ;
					input-disable;
				};
			};

			spi_pins: spi_pins {
				mux {
					pins = "gpio18", "gpio19", "gpio21";
					function = "gsbi5";
					bias-pull-down;
				};

				data {
					pins = "gpio18", "gpio19";
					drive-strength = <10>;
				};

				cs {
					pins = "gpio20";
					drive-strength = <10>;
					bias-pull-up;
				};

				clk {
					pins = "gpio21";
					drive-strength = <12>;
				};
			};

			spi6_pins: spi6_pins {
				mux {
					pins = "gpio55", "gpio56", "gpio58";
					function = "gsbi6";
					bias-pull-down;
				};

				mosi {
					pins = "gpio55";
					drive-strength = <12>;
				};

				miso {
					pins = "gpio56";
					drive-strength = <14>;
				};

				cs {
					pins = "gpio57";
					drive-strength = <12>;
					bias-pull-up;
				};

				clk {
					pins = "gpio58";
					drive-strength = <12>;
				};

				reset {
					pins = "gpio33";
					drive-strength = <10>;
					bias-pull-down;
					output-high;
				};
			};
		};

		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.
			 */
		};

		gsbi5: gsbi@1a200000 {
			qcom,mode = <GSBI_PROT_SPI>;
			status = "ok";

			spi5: spi@1a280000 {
				status = "ok";
				spi-max-frequency = <50000000>;
				pinctrl-0 = <&spi_pins>;
				pinctrl-names = "default";

				cs-gpios = <&qcom_pinmux 20 0>;

				flash: m25p80@0 {
					compatible = "jedec,spi-nor";
					#address-cells = <1>;
					#size-cells = <1>;
					spi-max-frequency = <50000000>;
					reg = <0>;

					linux,part-probe = "qcom-smem";
				};
			};
		};

		gsbi6: gsbi@16500000 {
			qcom,mode = <GSBI_PROT_SPI>;
			status = "ok";
			spi6: spi@16580000 {
				status = "ok";
				spi-max-frequency = <6000000>;
				pinctrl-0 = <&spi6_pins>;
				pinctrl-names = "default";

				cs-gpios = <&qcom_pinmux 57 0>;

				spi-nor@0 {
					compatible = "spi-nor";
					reg = <0>;
					spi-max-frequency = <6000000>;
				};
			};
		};

		sata-phy@1b400000 {
			status = "ok";
		};

		sata@29000000 {
			ports-implemented = <0x1>;
			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";
			phy-tx0-term-offset = <7>;
		};

		pcie1: pci@1b700000 {
			status = "ok";
			phy-tx0-term-offset = <7>;
		};

		nand@1ac00000 {
			status = "ok";

			pinctrl-0 = <&nand_pins>;
			pinctrl-names = "default";

			nand-ecc-strength = <4>;
			nand-ecc-step-size = <512>;
			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>;

			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 */
					0x00970 0x1e864443  /* QM_PORT0_CTRL0 */
					0x00974 0x000001c6  /* QM_PORT0_CTRL1 */
					0x00978 0x19008643  /* QM_PORT1_CTRL0 */
					0x0097c 0x000001c6  /* QM_PORT1_CTRL1 */
					0x00980 0x19008643  /* QM_PORT2_CTRL0 */
					0x00984 0x000001c6  /* QM_PORT2_CTRL1 */
					0x00988 0x19008643  /* QM_PORT3_CTRL0 */
					0x0098c 0x000001c6  /* QM_PORT3_CTRL1 */
					0x00990 0x19008643  /* QM_PORT4_CTRL0 */
					0x00994 0x000001c6  /* QM_PORT4_CTRL1 */
					0x00998 0x1e864443  /* QM_PORT5_CTRL0 */
					0x0099c 0x000001c6  /* QM_PORT5_CTRL1 */
					0x009a0 0x1e864443  /* QM_PORT6_CTRL0 */
					0x009a4 0x000001c6  /* QM_PORT6_CTRL1 */
					>;
				qca,ar8327-vlans = <
					0x1	0x5e	    /* VLAN1 Ports 1/2/3/4/6 */
					0x2	0x21	    /* VLAN2 Ports 0/5 */
				>;
			};

			phy4: ethernet-phy@4 {
				device_type = "ethernet-phy";
				reg = <4>;
				qca,ar8327-initvals = <
					0x000e4 0x6a545     /* MAC_POWER_SEL */
					0x0000c 0x80        /* PAD6_MODE */
					>;
			};
		};

		gmac1: ethernet@37200000 {
			status = "ok";
			phy-mode = "rgmii";
			qcom,id = <1>;
			qcom,phy_mdio_addr = <4>;
			qcom,poll_required = <0>;
			qcom,rgmii_delay = <1>;
			qcom,phy_mii_type = <0>;
			qcom,emulation = <0>;
			qcom,irq = <255>;
			mdiobus = <&mdio0>;

			mtd-mac-address = <&art 6>;

			fixed-link {
				speed = <1000>;
				full-duplex;
			};
		};

		gmac2: ethernet@37400000 {
			status = "ok";
			phy-mode = "sgmii";
			qcom,id = <2>;
			qcom,phy_mdio_addr = <0>;	/* none */
			qcom,poll_required = <0>;	/* no polling */
			qcom,rgmii_delay = <0>;
			qcom,phy_mii_type = <1>;
			qcom,emulation = <0>;
			qcom,irq = <258>;
			mdiobus = <&mdio0>;

			mtd-mac-address = <&art 0>;

			fixed-link {
				speed = <1000>;
				full-duplex;
			};
		};

		rpm@108000 {
			pinctrl-0 = <&i2c4_pins>;
			pinctrl-names = "default";
		};
	};

	gpio-keys {
		compatible = "gpio-keys";

		wifi {
			label = "wifi";
			gpios = <&qcom_pinmux 6 1>;
			linux,code = <KEY_RFKILL>;
			debounce-interval = <60>;
			wakeup-source;
		};

		reset {
			label = "reset";
			gpios = <&qcom_pinmux 54 1>;
			linux,code = <KEY_RESTART>;
			debounce-interval = <60>;
			wakeup-source;
		};

		wps {
			label = "wps";
			gpios = <&qcom_pinmux 65 1>;
			linux,code = <KEY_WPS_BUTTON>;
			debounce-interval = <60>;
			wakeup-source;
		};
	};

	gpio-leds {
		compatible = "gpio-leds";

		power_white: power_white {
			label = "r7800:white:power";
			gpios = <&qcom_pinmux 53 0>;
			default-state = "on";
		};

		power_amber: power_amber {
			label = "r7800:amber:power";
			gpios = <&qcom_pinmux 9 0>;
		};

		wan_white {
			label = "r7800:white:wan";
			gpios = <&qcom_pinmux 22 0>;
		};

		wan_amber {
			label = "r7800:amber:wan";
			gpios = <&qcom_pinmux 23 0>;
		};

		usb1 {
			label = "r7800:white:usb1";
			gpios = <&qcom_pinmux 7 0>;
		};

		usb2 {
			label = "r7800:white:usb2";
			gpios = <&qcom_pinmux 8 0>;
		};

		esata {
			label = "r7800:white:esata";
			gpios = <&qcom_pinmux 26 0>;
		};

		rfkill {
			label = "r7800:white:rfkill";
			gpios = <&qcom_pinmux 64 0>;
		};

		wps {
			label = "r7800:white:wps";
			gpios = <&qcom_pinmux 24 0>;
		};

		wifi {
			label = "r7800:white:wifi";
			gpios = <&qcom_pinmux 67 0>;
		};
	};

	gpio_export {
		compatible = "gpio-export";
		#size-cells = <0>;

		usb1-power {
			gpio-export,name = "usb1";
			gpio-export,output = <1>;
			gpios = <&qcom_pinmux 15 0>;
		};

		usb2-power {
			gpio-export,name = "usb2";
			gpio-export,output = <1>;
			gpios = <&qcom_pinmux 16 0>;
		};

		usb-power {
			gpio-export,name = "usb_p";
			gpio-export,output = <1>;
			gpios = <&qcom_pinmux 68 0>;
		};
	};
};

&adm_dma {
	status = "ok";
};