// 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";

		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";
};

&mac {
	status = "okay";
};

&phy_sel {
	rmii-clock-ext;
};

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

&cpsw_emac1 {
	phy_id = <&davinci_mdio>, <3>;
	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";
};
