// SPDX-License-Identifier: GPL-2.0
/*
 * Device Tree Source for the Wheat board
 *
 * Copyright (C) 2016 Renesas Electronics Corporation
 * Copyright (C) 2016 Cogent  Embedded, Inc.
 */

/dts-v1/;
#include "r8a7792.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>

/ {
	model = "Wheat";
	compatible = "renesas,wheat", "renesas,r8a7792";

	aliases {
		serial0 = &scif0;
	};

	chosen {
		bootargs = "ignore_loglevel rw root=/dev/nfs ip=on";
		stdout-path = "serial0:115200n8";
	};

	memory@40000000 {
		device_type = "memory";
		reg = <0 0x40000000 0 0x40000000>;
	};

	d3_3v: regulator-3v3 {
		compatible = "regulator-fixed";
		regulator-name = "D3.3V";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		regulator-boot-on;
		regulator-always-on;
	};

	ethernet@18000000 {
		compatible = "smsc,lan89218", "smsc,lan9115";
		reg = <0 0x18000000 0 0x100>;
		phy-mode = "mii";
		interrupt-parent = <&irqc>;
		interrupts = <0 IRQ_TYPE_EDGE_FALLING>;
		smsc,irq-push-pull;
		smsc,save-mac-address;
		reg-io-width = <4>;
		vddvario-supply = <&d3_3v>;
		vdd33a-supply = <&d3_3v>;

		pinctrl-0 = <&lan89218_pins>;
		pinctrl-names = "default";
	};

	keyboard {
		compatible = "gpio-keys";

		key-a {
			linux,code = <KEY_A>;
			label = "SW2";
			wakeup-source;
			debounce-interval = <20>;
			gpios = <&gpio3 20 GPIO_ACTIVE_LOW>;
		};
		key-b {
			linux,code = <KEY_B>;
			label = "SW3";
			wakeup-source;
			debounce-interval = <20>;
			gpios = <&gpio11 2 GPIO_ACTIVE_LOW>;
		};
	};

	vcc_sdhi0: regulator-vcc-sdhi0 {
		compatible = "regulator-fixed";

		regulator-name = "SDHI0 Vcc";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;

		gpio = <&gpio11 12 GPIO_ACTIVE_HIGH>;
		enable-active-high;
	};

	hdmi-out0 {
		compatible = "hdmi-connector";
		type = "a";

		port {
			hdmi_con0: endpoint {
				remote-endpoint = <&adv7513_0_out>;
			};
		};
	};

	hdmi-out1 {
		compatible = "hdmi-connector";
		type = "a";

		port {
			hdmi_con1: endpoint {
				remote-endpoint = <&adv7513_1_out>;
			};
		};
	};

	osc2_clk: osc2 {
		compatible = "fixed-clock";
		#clock-cells = <0>;
		clock-frequency = <74250000>;
	};
};

&extal_clk {
	clock-frequency = <20000000>;
};

&pfc {
	scif0_pins: scif0 {
		groups = "scif0_data";
		function = "scif0";
	};

	lan89218_pins: lan89218 {
		intc {
			groups = "intc_irq0";
			function = "intc";
		};
		lbsc {
			groups = "lbsc_ex_cs0";
			function = "lbsc";
		};
	};

	can0_pins: can0 {
		groups = "can0_data";
		function = "can0";
	};

	can1_pins: can1 {
		groups = "can1_data";
		function = "can1";
	};

	sdhi0_pins: sdhi0 {
		groups = "sdhi0_data4", "sdhi0_ctrl";
		function = "sdhi0";
	};

	qspi_pins: qspi {
		groups = "qspi_ctrl", "qspi_data4";
		function = "qspi";
	};

	du0_pins: du0 {
		groups = "du0_rgb888", "du0_sync", "du0_disp";
		function = "du0";
	};

	du1_pins: du1 {
		groups = "du1_rgb666", "du1_sync", "du1_disp";
		function = "du1";
	};
};

&rwdt {
	timeout-sec = <60>;
	status = "okay";
};

&scif0 {
	pinctrl-0 = <&scif0_pins>;
	pinctrl-names = "default";

	status = "okay";
};

&can0 {
	pinctrl-0 = <&can0_pins>;
	pinctrl-names = "default";

	status = "okay";
};

&can1 {
	pinctrl-0 = <&can1_pins>;
	pinctrl-names = "default";

	status = "okay";
};

&sdhi0 {
	pinctrl-0 = <&sdhi0_pins>;
	pinctrl-names = "default";

	vmmc-supply = <&vcc_sdhi0>;
	cd-gpios = <&gpio11 11 GPIO_ACTIVE_LOW>;
	status = "okay";
};

&qspi {
	pinctrl-0 = <&qspi_pins>;
	pinctrl-names = "default";
	status = "okay";

	flash@0 {
		compatible = "spansion,s25fl512s", "jedec,spi-nor";
		reg = <0>;
		spi-max-frequency = <30000000>;
		spi-tx-bus-width = <4>;
		spi-rx-bus-width = <4>;
		spi-cpol;
		spi-cpha;
		m25p,fast-read;

		partitions {
			compatible = "fixed-partitions";
			#address-cells = <1>;
			#size-cells = <1>;

			partition@0 {
				label = "loader";
				reg = <0x00000000 0x00040000>;
				read-only;
			};
			partition@40000 {
				label = "user";
				reg = <0x00040000 0x00400000>;
				read-only;
			};
			partition@440000 {
				label = "flash";
				reg = <0x00440000 0x03bc0000>;
			};
		};
	};
};

&i2c4 {
	status = "okay";
	clock-frequency = <400000>;

	/*
	 * The adv75xx resets its addresses to defaults during low power mode.
	 * Because we have two ADV7513 devices on the same bus, we must change
	 * both of them away from the defaults so that they do not conflict.
	 */
	hdmi@3d {
		compatible = "adi,adv7513";
		reg = <0x3d>, <0x4d>, <0x2d>, <0x5d>;
		reg-names = "main", "edid", "cec", "packet";

		adi,input-depth = <8>;
		adi,input-colorspace = "rgb";
		adi,input-clock = "1x";

		ports {
			#address-cells = <1>;
			#size-cells = <0>;

			port@0 {
				reg = <0>;
				adv7513_0_in: endpoint {
					remote-endpoint = <&du_out_rgb0>;
				};
			};

			port@1 {
				reg = <1>;
				adv7513_0_out: endpoint {
					remote-endpoint = <&hdmi_con0>;
				};
			};
		};
	};

	hdmi@39 {
		compatible = "adi,adv7513";
		reg = <0x39>, <0x49>, <0x29>, <0x59>;
		reg-names = "main", "edid", "cec", "packet";

		adi,input-depth = <8>;
		adi,input-colorspace = "rgb";
		adi,input-clock = "1x";

		ports {
			#address-cells = <1>;
			#size-cells = <0>;

			port@0 {
				reg = <0>;
				adv7513_1_in: endpoint {
					remote-endpoint = <&du_out_rgb1>;
				};
			};

			port@1 {
				reg = <1>;
				adv7513_1_out: endpoint {
					remote-endpoint = <&hdmi_con1>;
				};
			};
		};
	};
};

&du {
	pinctrl-0 = <&du0_pins>, <&du1_pins>;
	pinctrl-names = "default";

	clocks = <&cpg CPG_MOD 724>, <&cpg CPG_MOD 723>, <&osc2_clk>;
	clock-names = "du.0", "du.1", "dclkin.0";
	status = "okay";

	ports {
		port@0 {
			endpoint {
				remote-endpoint = <&adv7513_0_in>;
			};
		};
		port@1 {
			endpoint {
				remote-endpoint = <&adv7513_1_in>;
			};
		};
	};
};
