// SPDX-License-Identifier: GPL-2.0-only
/*
 * Copyright (C) 2014 Florian Vaussard, EPFL Mobots group
 */
/dts-v1/;

#include "omap4-duovero.dtsi"

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

/ {
	model = "OMAP4430 Gumstix Duovero on Parlor";
	compatible = "gumstix,omap4-duovero-parlor", "gumstix,omap4-duovero", "ti,omap4430", "ti,omap4";

	aliases {
		display0 = &hdmi0;
	};

	leds {
		compatible = "gpio-leds";
		led0 {
			label = "duovero:blue:led0";
			gpios = <&gpio4 26 GPIO_ACTIVE_HIGH>;	/* gpio_122 */
			linux,default-trigger = "heartbeat";
		};
	};

	gpio_keys {
		compatible = "gpio-keys";
		#address-cells = <1>;
		#size-cells = <0>;
		button0 {
			label = "button0";
			linux,code = <BTN_0>;
			gpios = <&gpio4 25 GPIO_ACTIVE_LOW>;	/* gpio_121 */
			/* Value above 7.95ms for no GPIO hardware debounce */
			debounce-interval = <10>;
			wakeup-source;
		};
	};

	hdmi0: connector {
		compatible = "hdmi-connector";
		label = "hdmi";

		type = "d";

		hpd-gpios = <&gpio2 31 GPIO_ACTIVE_HIGH>;	/* gpio_63 */

		port {
			hdmi_connector_in: endpoint {
				remote-endpoint = <&hdmi_out>;
			};
		};
	};
};

&omap4_pmx_core {
	pinctrl-0 = <
			&led_pins
			&button_pins
			&smsc_pins
	>;

	led_pins: led-pins {
		pinctrl-single,pins = <
			OMAP4_IOPAD(0x116, PIN_OUTPUT | MUX_MODE3)		/* abe_dmic_din3.gpio_122 */
		>;
	};

	button_pins: button-pins {
		pinctrl-single,pins = <
			OMAP4_IOPAD(0x114, PIN_INPUT_PULLUP | MUX_MODE3)	/* abe_dmic_din2.gpio_121 */
		>;
	};

	i2c2_pins: i2c2-pins {
		pinctrl-single,pins = <
			OMAP4_IOPAD(0x126, PIN_INPUT_PULLUP | MUX_MODE0)	/* i2c2_scl */
			OMAP4_IOPAD(0x128, PIN_INPUT_PULLUP | MUX_MODE0)	/* i2c2_sda */
		>;
	};

	i2c3_pins: i2c3-pins {
		pinctrl-single,pins = <
			OMAP4_IOPAD(0x12a, PIN_INPUT_PULLUP | MUX_MODE0)	/* i2c3_scl */
			OMAP4_IOPAD(0x12c, PIN_INPUT_PULLUP | MUX_MODE0)	/* i2c3_sda */
		>;
	};

	smsc_pins: smsc-pins {
		pinctrl-single,pins = <
			OMAP4_IOPAD(0x068, PIN_INPUT | MUX_MODE3)		/* gpmc_a20.gpio_44: IRQ */
			OMAP4_IOPAD(0x06a, PIN_INPUT_PULLUP | MUX_MODE3)	/* gpmc_a21.gpio_45: nReset */
			OMAP4_IOPAD(0x070, PIN_INPUT_PULLUP | MUX_MODE3)	/* gpmc_a24.gpio_48: amdix enabled */
		>;
	};

	dss_hdmi_pins: dss-hdmi-pins {
		pinctrl-single,pins = <
			OMAP4_IOPAD(0x098, PIN_INPUT | MUX_MODE3)		/* hdmi_hpd.gpio_63 */
			OMAP4_IOPAD(0x09a, PIN_INPUT | MUX_MODE0)		/* hdmi_cec.hdmi_cec */
			OMAP4_IOPAD(0x09c, PIN_INPUT_PULLUP | MUX_MODE0)	/* hdmi_ddc_scl.hdmi_ddc_scl */
			OMAP4_IOPAD(0x09e, PIN_INPUT_PULLUP | MUX_MODE0)	/* hdmi_ddc_sda.hdmi_ddc_sda */
		>;
	};
};

&i2c2 {
	pinctrl-names = "default";
	pinctrl-0 = <&i2c2_pins>;

	clock-frequency = <400000>;
};

&i2c3 {
	pinctrl-names = "default";
	pinctrl-0 = <&i2c3_pins>;

	clock-frequency = <100000>;

	/* optional 1K EEPROM with revision information */
	eeprom@51 {
		compatible = "atmel,24c01";
		reg = <0x51>;
		pagesize = <8>;
	};
};

&mmc3 {
	status = "disabled";
};

#include "omap-gpmc-smsc911x.dtsi"

&gpmc {
	ranges = <5 0 0x2c000000 0x1000000>;			/* CS5 */

	ethernet@gpmc {
		reg = <5 0 0xff>;
		interrupt-parent = <&gpio2>;
		interrupts = <12 IRQ_TYPE_LEVEL_LOW>;		/* gpio_44 */

		phy-mode = "mii";

		gpmc,cs-on-ns = <10>;
		gpmc,cs-rd-off-ns = <50>;
		gpmc,cs-wr-off-ns = <50>;
		gpmc,adv-on-ns = <0>;
		gpmc,adv-rd-off-ns = <10>;
		gpmc,adv-wr-off-ns = <10>;
		gpmc,oe-on-ns = <15>;
		gpmc,oe-off-ns = <50>;
		gpmc,we-on-ns = <15>;
		gpmc,we-off-ns = <50>;
		gpmc,rd-cycle-ns = <50>;
		gpmc,wr-cycle-ns = <50>;
		gpmc,access-ns = <50>;
		gpmc,page-burst-access-ns = <0>;
		gpmc,bus-turnaround-ns = <35>;
		gpmc,cycle2cycle-delay-ns = <35>;
		gpmc,wr-data-mux-bus-ns = <35>;
		gpmc,wr-access-ns = <50>;

		gpmc,mux-add-data = <2>;
		gpmc,sync-read;
		gpmc,sync-write;
		gpmc,clk-activation-ns = <5>;
		gpmc,sync-clk-ps = <20000>;
	};
};

&dss {
	status = "okay";
};

&hdmi {
	status = "okay";
	vdda-supply = <&vdac>;

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

	port {
		hdmi_out: endpoint {
			remote-endpoint = <&hdmi_connector_in>;
		};
	};
};

&uart3 {
	interrupts-extended = <&wakeupgen GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH
			       &omap4_pmx_core OMAP4_UART3_RX>;
};