/*
 * at91-kizbox2.dts - Device Tree file for Overkiz Kizbox 2 board
 *
 * Copyright (C) 2014 Gaël PORTAY <g.portay@overkiz.com>
 *
 * Licensed under GPLv2 or later.
 */
/dts-v1/;
#include "sama5d31.dtsi"
#include <dt-bindings/pwm/pwm.h>

/ {
	model = "Overkiz Kizbox 2";
	compatible = "overkiz,kizbox2", "atmel,sama5d31", "atmel,sama5d3", "atmel,sama5";

	chosen {
		bootargs = "ubi.mtd=ubi";
		stdout-path = &dbgu;
	};

	memory {
		reg = <0x20000000 0x10000000>;
	};

	clocks {
		slow_xtal {
			clock-frequency = <32768>;
		};

		main_xtal {
			clock-frequency = <12000000>;
		};
	};

	ahb {
		apb {
			i2c1: i2c@f0018000 {
				status = "okay";

				pmic: act8865@5b {
					compatible = "active-semi,act8865";
					reg = <0x5b>;
					status = "okay";

					regulators {
						vcc_1v8_reg: DCDC_REG1 {
							regulator-name = "VCC_1V8";
							regulator-min-microvolt = <1800000>;
							regulator-max-microvolt = <1800000>;
							regulator-always-on;
						};

						vcc_1v2_reg: DCDC_REG2 {
							regulator-name = "VCC_1V2";
							regulator-min-microvolt = <1200000>;
							regulator-max-microvolt = <1200000>;
							regulator-always-on;
						};

						vcc_3v3_reg: DCDC_REG3 {
							regulator-name = "VCC_3V3";
							regulator-min-microvolt = <3300000>;
							regulator-max-microvolt = <3300000>;
							regulator-always-on;
						};

						vddfuse_reg: LDO_REG1 {
							regulator-name = "FUSE_2V5";
							regulator-min-microvolt = <2500000>;
							regulator-max-microvolt = <2500000>;
						};

						vddana_reg: LDO_REG2 {
							regulator-name = "VDDANA";
							regulator-min-microvolt = <3300000>;
							regulator-max-microvolt = <3300000>;
							regulator-always-on;
						};

						vled_reg: LDO_REG3 {
							regulator-name = "VLED";
							regulator-min-microvolt = <3300000>;
							regulator-max-microvolt = <3300000>;
							regulator-always-on;
						};

						v3v8_rf_reg: LDO_REG4 {
							regulator-name = "V3V8_RF";
							regulator-min-microvolt = <3800000>;
							regulator-max-microvolt = <3800000>;
							regulator-always-on;
						};
					};
				};
			};

			tcb0: timer@f0010000 {
				timer@0 {
					compatible = "atmel,tcb-timer";
					reg = <0>;
				};

				timer@1 {
					compatible = "atmel,tcb-timer";
					reg = <1>;
				};
			};

			usart0: serial@f001c000 {
				status = "okay";
			};

			usart1: serial@f0020000 {
				status = "okay";
			};

			pwm0: pwm@f002c000 {
				pinctrl-names = "default";
				pinctrl-0 = <&pinctrl_pwm0_pwmh0_1
					     &pinctrl_pwm0_pwmh1_1
					     &pinctrl_pwm0_pwmh2_0>;
				status = "okay";
			};

			adc0: adc@f8018000 {
				atmel,adc-vref = <3333>;
				status = "okay";
			};

			usart2: serial@f8020000 {
				status = "okay";
			};

			macb1: ethernet@f802c000 {
				phy-mode = "rmii";
				status = "okay";
			};

			dbgu: serial@ffffee00 {
				status = "okay";
			};

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

		usb1: ohci@600000 {
			status = "okay";
		};

		usb2: ehci@700000 {
			status = "okay";
		};

		ebi: ebi@10000000 {
			pinctrl-0 = <&pinctrl_ebi_nand_addr>;
			pinctrl-names = "default";
			status = "okay";

			nand_controller: nand-controller {
				status = "okay";

				nand@3 {
					reg = <0x3 0x0 0x2>;
					atmel,rb = <0>;
					nand-bus-width = <8>;
					nand-ecc-mode = "hw";
					nand-ecc-strength = <4>;
					nand-ecc-step-size = <512>;
					nand-on-flash-bbt;
					label = "atmel_nand";

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

						bootstrap@0 {
							label = "bootstrap";
							reg = <0x0 0x20000>;
						};

						ubi@20000 {
							label = "ubi";
							reg = <0x20000 0x7fe0000>;
						};
					};
				};
			};
		};
	};

	gpio_keys {
		compatible = "gpio-keys";
		#address-cells = <1>;
		#size-cells = <0>;

		prog {
			label = "PB_PROG";
			gpios = <&pioE 27 GPIO_ACTIVE_LOW>;
			linux,code = <0x102>;
			wakeup-source;
		};

		reset {
			label = "PB_RST";
			gpios = <&pioE 29 GPIO_ACTIVE_LOW>;
			linux,code = <0x100>;
			wakeup-source;
		};

		user {
			label = "PB_USER";
			gpios = <&pioE 31 GPIO_ACTIVE_HIGH>;
			linux,code = <0x101>;
			wakeup-source;
		};
	};

	pwm_leds {
		compatible = "pwm-leds";

		blue {
			label = "pwm:blue:user";
			pwms = <&pwm0 2 10000000 0>;
			max-brightness = <255>;
			linux,default-trigger = "default-on";
		};

		green {
			label = "pwm:green:user";
			pwms = <&pwm0 1 10000000 0>;
			max-brightness = <255>;
			linux,default-trigger = "default-on";
		};

		red {
			label = "pwm:red:user";
			pwms = <&pwm0 0 10000000 0>;
			max-brightness = <255>;
			linux,default-trigger = "default-on";
		};
	};
};
