// SPDX-License-Identifier: (GPL-2.0-or-later OR MIT)
/*
 * Copyright 2020-2021 TQ-Systems GmbH
 */

#include <dt-bindings/net/ti-dp83867.h>

/* TQ-Systems GmbH MBa8Mx baseboard */

/ {
	backlight_lvds: backlight {
		compatible = "pwm-backlight";
		pwms = <&pwm3 0 5000000 0>;
		brightness-levels = <0 4 8 16 32 64 128 255>;
		default-brightness-level = <7>;
		power-supply = <&reg_12v>;
		enable-gpios = <&expander2 2 GPIO_ACTIVE_HIGH>;
		status = "disabled";
	};

	beeper {
		compatible = "pwm-beeper";
		pwms = <&pwm4 0 250000 0>;
		beeper-hz = <4000>;
		amp-supply = <&reg_vcc_3v3>;
	};

	chosen {
		stdout-path = &uart3;
	};

	clk_xtal25: clk-xtal25 {
		compatible = "fixed-clock";
		#clock-cells = <0>;
		clock-frequency = <25000000>;
	};

	gpio-keys {
		compatible = "gpio-keys";
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_gpiobutton>;
		autorepeat;

		switch-1 {
			label = "switch1";
			linux,code = <BTN_0>;
			gpios = <&gpio1 5 GPIO_ACTIVE_LOW>;
			wakeup-source;
		};

		btn2: switch-2 {
			label = "switch2";
			linux,code = <BTN_1>;
			gpios = <&gpio2 0 GPIO_ACTIVE_LOW>;
			wakeup-source;
		};

		switch-3 {
			label = "switch3";
			linux,code = <BTN_2>;
			gpios = <&gpio1 7 GPIO_ACTIVE_LOW>;
			wakeup-source;
		};
	};

	gpio_leds: gpio-leds {
		compatible = "gpio-leds";
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_gpioled>;

		led1 {
			label = "led1";
			gpios = <&gpio1 0 GPIO_ACTIVE_HIGH>;
			linux,default-trigger = "default-on";
		};

		led2: led2 {
			label = "led2";
			gpios = <&gpio3 14 GPIO_ACTIVE_HIGH>;
			linux,default-trigger = "heartbeat";
		};
	};

	gpio_delays: gpio-delays {
		compatible = "gpio-delay";
		#gpio-cells = <3>;
		gpio-controller;
		gpios = <&expander0 6 GPIO_ACTIVE_HIGH>;
		gpio-line-names = "LVDS_BRIDGE_EN_1V8";
	};

	panel: panel-lvds {
		/*
		 * Display is not fixed, so compatible has to be added from
		 * DT overlay
		 */
		backlight = <&backlight_lvds>;
		power-supply = <&reg_vcc_3v3>;
		status = "disabled";

		port {
			panel_in_lvds: endpoint {
				data-lanes = <1 2 3 4>;
				remote-endpoint = <&lvds_bridge_out>;
			};
		};
	};

	reg_12v: regulator-12v {
		compatible = "regulator-fixed";
		regulator-name = "MBA8MX_12V";
		regulator-min-microvolt = <12000000>;
		regulator-max-microvolt = <12000000>;
		regulator-always-on;
	};

	reg_hub_vbus: regulator-hub-vbus {
		compatible = "regulator-fixed";
		regulator-name = "MBA8MX_HUB_VBUS";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
	};

	reg_sn65dsi83_1v8: regulator-sn65dsi83-1v8 {
		compatible = "regulator-fixed";
		regulator-name = "SN65DSI83_1V8";
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <1800000>;
		gpio = <&expander0 5 GPIO_ACTIVE_HIGH>;
		enable-active-high;
	};

	reg_vcc_3v3: regulator-3v3 {
		compatible = "regulator-fixed";
		regulator-name = "MBA8MX_3V3";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
	};

	sound {
		compatible = "fsl,imx-audio-tlv320aic32x4";
		model = "imx-audio-tlv320aic32x4";
		ssi-controller = <&sai3>;
		audio-codec = <&tlv320aic3x04>;
	};
};

&ecspi1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_ecspi1>;
	cs-gpios = <&gpio5 9 GPIO_ACTIVE_LOW>;
	status = "okay";
};

&ecspi2 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_ecspi2>;
	cs-gpios = <&gpio5 13 GPIO_ACTIVE_LOW>;
	status = "okay";
};

&fec1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_fec1>;
	phy-mode = "rgmii-id";
	phy-handle = <&ethphy0>;
	phy-supply = <&reg_vcc_3v3>;
	fsl,magic-packet;
	mac-address = [ 00 00 00 00 00 00 ];
	status = "okay";

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

		ethphy0: ethernet-phy@e {
			compatible = "ethernet-phy-ieee802.3-c22";
			reg = <0xe>;
			ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_50_NS>;
			ti,tx-internal-delay = <DP83867_RGMIIDCTL_2_50_NS>;
			ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
			ti,dp83867-rxctrl-strap-quirk;
			ti,clk-output-sel = <DP83867_CLK_O_SEL_OFF>;
			enet-phy-lane-no-swap;
			reset-gpios = <&expander2 7 GPIO_ACTIVE_LOW>;
			reset-assert-us = <500000>;
			reset-deassert-us = <500>;
			interrupt-parent = <&expander2>;
			interrupts = <6 IRQ_TYPE_EDGE_FALLING>;
		};
	};
};

&i2c1 {
	expander0: gpio@23 {
		compatible = "nxp,pca9555";
		reg = <0x23>;
		gpio-controller;
		#gpio-cells = <2>;
		vcc-supply = <&reg_vcc_3v3>;
		interrupt-parent = <&gpio1>;
		interrupts = <9 IRQ_TYPE_EDGE_FALLING>;
		interrupt-controller;
		#interrupt-cells = <2>;
		gpio-line-names = "", "", "", "",
				  "", "", "LVDS_BRIDGE_EN", "",
				  "", "", "", "",
				  "", "", "", "";

		sd-mux-oe-hog {
			gpio-hog;
			gpios = <8 0>;
			output-low;
			line-name = "SD_MUX_EN#";
		};

		boot-cfg-oe-hog {
			gpio-hog;
			gpios = <12 0>;
			output-high;
			line-name = "BOOT_CFG_OE#";
		};

		rst_usb_hub_hog: rst-usb-hub-hog {
			gpio-hog;
			gpios = <13 0>;
			output-high;
			line-name = "RST_USB_HUB#";
		};
	};

	expander1: gpio@24 {
		compatible = "nxp,pca9555";
		reg = <0x24>;
		gpio-controller;
		#gpio-cells = <2>;
		vcc-supply = <&reg_vcc_3v3>;
	};
};

&i2c2 {
	pinctrl-names = "default", "gpio";
	pinctrl-0 = <&pinctrl_i2c2>;
	pinctrl-1 = <&pinctrl_i2c2_gpio>;
	scl-gpios = <&gpio5 16 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
	sda-gpios = <&gpio5 17 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
	status = "okay";

	tlv320aic3x04: audio-codec@18 {
		compatible = "ti,tlv320aic32x4";
		reg = <0x18>;
		reset-gpios = <&expander2 0 GPIO_ACTIVE_LOW>;
		iov-supply = <&reg_vcc_3v3>;
		ldoin-supply = <&reg_vcc_3v3>;
	};

	sensor1: temperator-sensor@1f {
		compatible = "nxp,se97b", "jedec,jc-42.4-temp";
		reg = <0x1f>;
	};

	/*
	 * TUSB8041 is at 0x41, but not connected by default
	 * Note: TUSB8041 only supports 100 kHz!
	 */

	eeprom3: eeprom@57 {
		compatible = "nxp,se97b", "atmel,24c02";
		reg = <0x57>;
		pagesize = <16>;
		vcc-supply = <&reg_vcc_3v3>;
	};

	pcieclk: clk@68 {
		compatible = "renesas,9fgv0441";
		reg = <0x68>;
		clocks = <&clk_xtal25>;
		#clock-cells = <1>;
	};
};

&i2c3 {
	pinctrl-names = "default", "gpio";
	pinctrl-0 = <&pinctrl_i2c3>;
	pinctrl-1 = <&pinctrl_i2c3_gpio>;
	scl-gpios = <&gpio5 18 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
	sda-gpios = <&gpio5 19 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
	status = "okay";

	dsi_lvds_bridge: bridge@2d {
		compatible = "ti,sn65dsi84";
		reg = <0x2d>;
		enable-gpios = <&gpio_delays 0 130000 0>;
		vcc-supply = <&reg_sn65dsi83_1v8>;
		status = "disabled";

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

			port@0 {
				reg = <0>;

				lvds_bridge_in: endpoint {
					data-lanes = <1 2 3 4>;
					remote-endpoint = <&mipi_dsi_out>;
				};
			};

			port@2 {
				reg = <2>;

				lvds_bridge_out: endpoint {
					remote-endpoint = <&panel_in_lvds>;
				};
			};
		};
	};
};

&mipi_dsi {
	samsung,burst-clock-frequency = <891000000>;
	samsung,esc-clock-frequency = <20000000>;
};

&mipi_dsi_out {
	data-lanes = <1 2 3 4>;
	remote-endpoint = <&lvds_bridge_in>;
};

&pwm3 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_pwm3>;
	status = "okay";
};

&pwm4 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_pwm4>;
	status = "okay";
};

&sai3 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_sai3>;
	#sound-dai-cells = <0>;
	assigned-clock-rates = <49152000>;
	status = "okay";
};

&snvs_pwrkey {
	status = "okay";
};

&uart1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_uart1>;
	status = "okay";
};

&uart2 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_uart2>;
	status = "okay";
};

/* console */
&uart3 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_uart3>;
	status = "okay";
};

&usdhc2 {
	pinctrl-names = "default", "state_100mhz", "state_200mhz";
	pinctrl-0 = <&pinctrl_usdhc2>, <&pinctrl_usdhc2_gpio>;
	pinctrl-1 = <&pinctrl_usdhc2_100mhz>, <&pinctrl_usdhc2_gpio>;
	pinctrl-2 = <&pinctrl_usdhc2_200mhz>, <&pinctrl_usdhc2_gpio>;
	bus-width = <4>;
	cd-gpios = <&gpio2 12 GPIO_ACTIVE_LOW>;
	disable-wp;
	no-mmc;
	no-sdio;
	vmmc-supply = <&reg_usdhc2_vmmc>;
	status = "okay";
};
