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

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

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

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

	mux: mux-controller {
		compatible = "gpio-mux";
		#mux-control-cells = <0>;

		mux-gpios = <&pioA 0 GPIO_ACTIVE_HIGH>,
			    <&pioA 1 GPIO_ACTIVE_HIGH>,
			    <&pioA 2 GPIO_ACTIVE_HIGH>;
		idle-state = <0>;
	};

	envelope-detector-mux {
		compatible = "io-channel-mux";
		io-channels = <&env_det 0>;
		io-channel-names = "parent";

		mux-controls = <&mux>;

		channels = "", "",
			 "sync-1",
			 "in",
			 "out",
			 "sync-2",
			 "sys-reg",
			 "ana-reg";
	};

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

&nand {
	partitions {
		compatible = "fixed-partitions";
		#address-cells = <1>;
		#size-cells = <1>;

		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>;
		smbus-timeout-disable;
	};

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

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

		reg = <0x4c>;
		#sound-dai-cells = <0>;

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

		clocks = <&sck>;

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

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

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

&watchdog {
	status = "okay";
};

&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 */
};
