/*
 * at91-tse850-3.dts - Device Tree file for the Axentia TSE-850 3.0 board
 *
 * Copyright (C) 2017 Axentia Technologies AB
 *
 * Author: Peter Rosin <peda@axentia.se>
 *
 * Licensed under GPLv2 or later.
 */
/dts-v1/;
#include <dt-bindings/pwm/pwm.h>
#include "at91-linea.dtsi"

/ {
	model = "Axentia TSE-850 3.0";
	compatible = "axentia,tse850v3", "axentia,linea",
		     "atmel,sama5d31", "atmel,sama5d3", "atmel,sama5";

	ahb {
		apb {
			pinctrl@fffff200 {
				tse850 {
					pinctrl_usba_vbus: usba-vbus {
						atmel,pins =
							<AT91_PIOC 31
							 AT91_PERIPH_GPIO
							 AT91_PINCTRL_DEGLITCH>;
					};
				};
			};

			watchdog@fffffe40 {
				status = "okay";
			};
		};
	};

	sck: oscillator {
		compatible = "fixed-clock";

		#clock-cells = <0>;
		clock-frequency = <16000000>;
		clock-output-names = "sck";
	};

	reg_3v3: regulator {
		compatible = "regulator-fixed";

		regulator-name = "3v3-supply";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
	};

	ana: reg-ana {
		compatible = "pwm-regulator";

		regulator-name = "ANA";

		pwms = <&pwm0 2 1000 PWM_POLARITY_INVERTED>;
		pwm-dutycycle-unit = <1000>;
		pwm-dutycycle-range = <100 1000>;

		regulator-min-microvolt = <2000000>;
		regulator-max-microvolt = <20000000>;
		regulator-ramp-delay = <1000>;
	};

	sound {
		compatible = "axentia,tse850-pcm5142";

		axentia,cpu-dai = <&ssc0>;
		axentia,audio-codec = <&pcm5142>;

		axentia,add-gpios = <&pioA 8 GPIO_ACTIVE_LOW>;
		axentia,loop1-gpios = <&pioA 10 GPIO_ACTIVE_LOW>;
		axentia,loop2-gpios = <&pioA 11 GPIO_ACTIVE_LOW>;

		axentia,ana-supply = <&ana>;
	};

	dac: dpot-dac {
		compatible = "dpot-dac";
		vref-supply = <&reg_3v3>;
		io-channels = <&dpot 0>;
		io-channel-names = "dpot";
		#io-channel-cells = <1>;
	};

	envelope-detector {
		compatible = "axentia,tse850-envelope-detector";
		io-channels = <&dac 0>;
		io-channel-names = "dac";

		interrupt-parent = <&pioA>;
		interrupts = <3 IRQ_TYPE_EDGE_RISING>;
		interrupt-names = "comp";
	};

	leds {
		compatible = "gpio-leds";

		ch1-red {
			label = "ch-1:red";
			gpios = <&pioA 23 GPIO_ACTIVE_LOW>;
		};
		ch1-green {
			label = "ch-1:green";
			gpios = <&pioA 22 GPIO_ACTIVE_LOW>;
		};
		ch2-red {
			label = "ch-2:red";
			gpios = <&pioA 21 GPIO_ACTIVE_LOW>;
		};
		ch2-green {
			label = "ch-2:green";
			gpios = <&pioA 20 GPIO_ACTIVE_LOW>;
		};
		data-red {
			label = "data:red";
			gpios = <&pioA 19 GPIO_ACTIVE_LOW>;
		};
		data-green {
			label = "data:green";
			gpios = <&pioA 18 GPIO_ACTIVE_LOW>;
		};
		alarm-red {
			label = "alarm:red";
			gpios = <&pioA 17 GPIO_ACTIVE_LOW>;
		};
		alarm-green {
			label = "alarm:green";
			gpios = <&pioA 16 GPIO_ACTIVE_LOW>;
		};
	};
};

&nand0 {
	at91bootstrap@0 {
		label = "at91bootstrap";
		reg = <0x0 0x40000>;
	};

	barebox@40000 {
		label = "bootloader";
		reg = <0x40000 0x60000>;
	};

	bareboxenv@c0000 {
		label = "bareboxenv";
		reg = <0xc0000 0x40000>;
	};

	bareboxenv2@100000 {
		label = "bareboxenv2";
		reg = <0x100000 0x40000>;
	};

	oftree@180000 {
		label = "oftree";
		reg = <0x180000 0x20000>;
	};

	kernel@200000 {
		label = "kernel";
		reg = <0x200000 0x500000>;
	};

	rootfs@800000 {
		label = "rootfs";
		reg = <0x800000 0x0f800000>;
	};

	ovlfs@10000000 {
		label = "ovlfs";
		reg = <0x10000000 0x10000000>;
	};
};

&ssc0 {
	#sound-dai-cells = <0>;

	status = "okay";
};

&i2c0 {
	status = "okay";

	jc42@18 {
		compatible = "nxp,se97b", "jedec,jc-42.4-temp";
		reg = <0x18>;
	};

	dpot: mcp4651-104@28 {
		compatible = "microchip,mcp4651-104";
		reg = <0x28>;
		#io-channel-cells = <1>;
	};

	pcm5142: pcm5142@4c {
		compatible = "ti,pcm5142";

		reg = <0x4c>;

		AVDD-supply = <&reg_3v3>;
		DVDD-supply = <&reg_3v3>;
		CPVDD-supply = <&reg_3v3>;

		clocks = <&sck>;

		pll-in = <3>;
		pll-out = <6>;
	};

	eeprom@50 {
		compatible = "nxp,24c02";
		reg = <0x50>;
		pagesize = <16>;
	};
};

&usart0 {
	status = "okay";

	atmel,use-dma-rx;
};

&pwm0 {
	status = "okay";

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

&macb1 {
	status = "okay";

	phy-mode = "rgmii";

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

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

		interrupt-parent = <&pioE>;
		interrupts = <31 IRQ_TYPE_EDGE_FALLING>;
	};
};

&usb0 {
	status = "okay";

	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_usba_vbus>;
	atmel,vbus-gpio = <&pioC 31 GPIO_ACTIVE_HIGH>;
};

&usb1 {
	status = "okay";

	num-ports = <1>;
	atmel,vbus-gpio = <&pioD 29 GPIO_ACTIVE_HIGH>;
	atmel,oc-gpio = <&pioC 15 GPIO_ACTIVE_LOW>;
};

&usb2 {
	status = "okay";
};

&dbgu {
	status = "okay";

	dmas = <0>, <0>;	/*  Do not use DMA for dbgu */
};
