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

/ {
	model = "Overkiz Kizbox";
	compatible = "overkiz,kizbox", "atmel,at91sam9g20", "atmel,at91sam9";

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

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

	clocks {
		#address-cells = <1>;
		#size-cells = <1>;
		ranges;

		main_clock: clock@0 {
			compatible = "atmel,osc", "fixed-clock";
			clock-frequency = <18432000>;
		};

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

	ahb {
		apb {
			macb0: ethernet@fffc4000 {
				phy-mode = "mii";
				pinctrl-0 = <&pinctrl_macb_rmii
				             &pinctrl_macb_rmii_mii_alt>;
				status = "okay";
			};

			usart3: serial@fffd0000 {
				status = "okay";
			};

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

			watchdog@fffffd40 {
				timeout-sec = <15>;
				atmel,max-heartbeat-sec = <16>;
				atmel,min-heartbeat-sec = <0>;
				status = "okay";
			};
		};

		usb0: ohci@00500000 {
			num-ports = <1>;
			status = "okay";
		};

		nand0: nand@40000000 {
			nand-bus-width = <8>;
			nand-ecc-mode = "soft";
			status = "okay";

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

		reset {
			label = "PB_RST";
			gpios = <&pioB 30 GPIO_ACTIVE_HIGH>;
			linux,code = <0x100>;
			gpio-key,wakeup;
		};

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

	i2c@0 {
		status = "okay";

		rtc: pcf8563@51 {
			compatible = "nxp,pcf8563";
			reg = <0x51>;
		};
	};

	pwm_leds {
		compatible = "pwm-leds";

		network_green {
			label = "pwm:green:network";
			pwms = <&tcb_pwm 2 10000000 PWM_POLARITY_INVERTED>;
			max-brightness = <255>;
			linux,default-trigger = "default-on";
		};

		network_red {
			label = "pwm:red:network";
			pwms = <&tcb_pwm 4 10000000 PWM_POLARITY_INVERTED>;
			max-brightness = <255>;
			linux,default-trigger = "default-on";
		};

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

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

	tcb_pwm: pwm {
		compatible = "atmel,tcb-pwm";
		#pwm-cells = <3>;
		tc-block = <1>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_tcb1_tioa0
			     &pinctrl_tcb1_tioa1
			     &pinctrl_tcb1_tioa2
			     &pinctrl_tcb1_tiob0>;
	};
};
