// SPDX-License-Identifier: GPL-2.0+
/*
 * Copyright (C) 2017 B&R Industrial Automation GmbH
 * http://www.br-automation.com
 *
 */
/dts-v1/;

#include "am33xx.dtsi"
#include "dt-bindings/thermal/thermal.h"

/ {
	model = "BRSMARC1 SoM";
	compatible = "ti,am33xx";

	fset: factory-settings {
		bl-version	= "                                ";
		order-no	= "                                ";
		cpu-order-no	= "                                ";
		hw-revision	= "                                ";
		serial-no	= <0>;
		device-id	= <0x0>;
		parent-id	= <0x0>;
		hw-variant	= <0x0>;
		hw-platform	= <0x7>;
		fram-offset	= <0x100>;
		fram-size	= <0x1F00>;
		cache-disable	= <0x0>;
		cpu-clock	= <0x0>;
	};

	chosen {
		bootargs = "console=ttyO0,115200 earlyprintk";
		stdout-path = &uart0;
	};

	aliases {
		fset = &fset;
		mmc = &mmc2;
		spi0 = &spi0;
		spi1 = &spi1;
		touch0 = &burtouch0;
		screen0 = &lcdscreen0;
	};

	memory {
		device_type = "memory";
		reg = <0x80000000 0x10000000>; /* 256 MB */
	};

	vmmcsd_fixed: fixedregulator@0 {
		compatible = "regulator-fixed";
		regulator-name = "vmmcsd_fixed";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
	};

	lcdscreen0: lcdscreen@0 {
		/*backlight = <&tps_bl>; */
		compatible = "ti,tilcdc,panel";
		status = "okay";
		u-boot,dm-pre-reloc;

		panel-info {
			ac-bias		= <255>;
			ac-bias-intrpt	= <0>;
			dma-burst-sz	= <16>;
			bpp		= <32>;
			fdd		= <0x80>;
			sync-edge	= <0>;
			sync-ctrl	= <1>;
			raster-order	= <0>;
			fifo-th		= <0>;
			rotation	= <0>;
			pupdelay	= <0>;
			pondelay	= <0>;
			pwrpin		= <0x000000B1>;
			brightdrv	= <0>;
			brightfdim	= <100>;
			brightdef	= <50>;
		};

		display-timings {
			default {
				clock-frequency	= <0>;
				hactive		= <0>;
				vactive		= <0>;
				hfront-porch	= <0>;
				hback-porch	= <0>;
				hsync-len	= <0>;
				vfront-porch	= <0>;
				vback-porch	= <0>;
				vsync-len	= <0>;
				hsync-active	= <0>;
				vsync-active	= <0>;
				pupdelay	= <10>;
				pondelay	= <10>;
			};
		};
	};

	board_thermal: board-thermal {
		polling-delay-passive = <1000>; /* milliseconds */
		polling-delay = <2500>; /* milliseconds */

		thermal-sensors = <&cputemp>;

		trips {
			crit_trip: crit-trip {
				temperature = <95000>; /* millicelsius */
				hysteresis = <5000>; /* millicelsius */
				type = "critical";
			};
		};
		cooling-maps {
			map0 {
				trip = <&crit_trip>;
				cooling-device =
				<&resetc THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
			};
		};
	};
};

&uart0 {		/* console uart */
	u-boot,dm-spl;
	status = "okay";
};

&uart2 {		/* X2X - P2P */
	status = "okay";
};

&uart3 {		/* RS485 */
	status = "okay";
};

&uart4 {		/* RS232 */
	status = "okay";
};

&i2c0 {
	u-boot,dm-spl;
	status = "okay";
	clock-frequency = <100000>;

	tps: tps@24 {		/* PMIC controller */
		u-boot,dm-spl;
		reg = <0x24>;
		compatible = "ti,tps65217";
	};

	cputemp: temperature-sensor@48 {	/* cpu temperature */
		#thermal-sensor-cells = <0>;
		compatible = "nxp,pct2075";
		reg = <0x48>;
	};

	basetemp: temperature-sensor@49 {	/* baseboard temperature */
		#thermal-sensor-cells = <0>;
		compatible = "nxp,pct2075";
		reg = <0x49>;
	};
	extrtc: rtc@51 {	/* realtime clock */
		compatible = "epson,rx8571";
		reg = <0x51>;
	};

	resetc: reset-controller@60 {
		compatible = "bur,rststm";
		reg = <0x60>;

		cooling-min-state = <0>;
		cooling-max-state = <1>;	/* reset gets fired */
		#cooling-cells = <2>;		/* min followed by max */
	};
};

&i2c1 {
	u-boot,dm-spl;
	status = "okay";
};

&spi0 {
	u-boot,dm-spl;
	status = "okay";

	cs-gpios = <&gpio0 5 GPIO_ACTIVE_HIGH>,
		   <&gpio0 6 GPIO_ACTIVE_HIGH>,
		   <0>,
		   <0>;

	spi-max-frequency = <24000000>;

	spi_flash: spiflash@0 {
		u-boot,dm-spl;
		u-boot,dm-pre-reloc;
		compatible = "spidev", "spi-flash";
		spi-max-frequency = <24000000>;
		reg = <0>;
	};
};

&spi1 {
	u-boot,dm-spl;
	status = "okay";
	cs-gpios = <&gpio3 17 GPIO_ACTIVE_HIGH>,
		   <&gpio0 19 GPIO_ACTIVE_HIGH>,
		   <0>,
		   <0>;

	spi-max-frequency = <24000000>;
};

&edma {
	status = "okay";
};

&cppi41dma  {
	status = "okay";
};

&usb {
	status = "okay";
};

&usb_ctrl_mod {
	status = "okay";
};

&usb0_phy {
	status = "okay";
};

&usb1_phy {
	status = "okay";
};

&usb0 {
	status = "okay";
	dr_mode = "host";
};

&usb1 {
	status = "okay";
	dr_mode = "host";
};

&davinci_mdio {
	status = "okay";

	ethphy0: ethernet-phy@1 {
		reg = <1>;
	};

	ethphy1: ethernet-phy@3 {
		reg = <3>;
	};
};

&mac {
	status = "okay";
};

&phy_sel {
	rmii-clock-ext;
};

&cpsw_emac0 {
	phy_id = <&davinci_mdio>, <1>;
	phy-handle = <&ethphy0>;
	phy-mode = "rmii";
	ti,ledcr = <0x0480>;
};

&cpsw_emac1 {
	phy_id = <&davinci_mdio>, <3>;
	phy-handle = <&ethphy1>;
	phy-mode = "rmii";
	ti,ledcr = <0x0480>;
};

&mmc1 {
	vmmc-supply = <&vmmcsd_fixed>;
	bus-width = <0x4>;
	ti,non-removable;
	ti,needs-special-hs-handling;
	ti,vcc-aux-disable-is-sleep;
	status = "okay";
};

&mmc2 {
	vmmc-supply = <&vmmcsd_fixed>;
	bus-width = <0x8>;
	ti,non-removable;
	ti,needs-special-hs-handling;
	ti,vcc-aux-disable-is-sleep;
	status = "okay";
};

&lcdc {
	status = "okay";
	ti,no-reset-on-init;
	ti,no-idle-on-init;
};

&elm {
	status = "okay";
};

&sham {
	status = "okay";
};

&aes {
	status = "okay";
};

&gpio0 {
	u-boot,dm-spl;
	ti,no-reset-on-init;
};

&gpio1 {
	u-boot,dm-spl;
	ti,no-reset-on-init;
};

&gpio2 {
	u-boot,dm-spl;
	ti,no-reset-on-init;
};

&gpio3 {
	u-boot,dm-spl;
	ti,no-reset-on-init;
};

&timer1 {		/* today unused */
	status = "okay";
	ti,no-reset-on-init;
	ti,no-idle-on-init;
};

&timer2 {		/* used for vxworks primary timer device */
	status = "okay";
	ti,no-reset-on-init;
	ti,no-idle-on-init;
};

&timer3 {		/* used sysdelay and hal tsc counter*/
	status = "okay";
	ti,no-reset-on-init;
	ti,no-idle-on-init;
};

&timer4 {		/* used for PWM beeper */
	status = "okay";
	ti,no-reset-on-init;
	ti,no-idle-on-init;
};

&timer5 {		/* used for PWM backlight */
	status = "okay";
	ti,no-reset-on-init;
	ti,no-idle-on-init;
};

&timer6 {		/* used for cpsw end device */
	status = "okay";
	ti,no-reset-on-init;
	ti,no-idle-on-init;
};

&timer7 {		/* used for cpsw end device */
	status = "okay";
	ti,no-reset-on-init;
	ti,no-idle-on-init;
};

&wdt2 {
	status = "okay";
	ti,no-reset-on-init;
	ti,no-idle-on-init;
};

&epwmss0 {
	status = "okay";
};

&tscadc {
	status = "okay";

	tsc {
		burtouch0: burtouch@0 {
			status = "okay";
			compatible = "bur,DdVxSfTouchXXX";
			bur,hwtree = "IF7";
			bur,KX0 = <0x0>;
			bur,KX1 = <0x0>;
			bur,KX2 = <0x0>;
			bur,KY0 = <0x0>;
			bur,KY1 = <0x0>;
			bur,KY2 = <0x0>;
		};
	};
};

&dcan0 {
	status = "okay";
};

&dcan1 {
	status = "okay";
};

&sham {
	status = "disabled";
};

&aes {
	status = "disabled";
};

&rng {
	status = "disabled";
};
