/*
 * DTS file for CSR SiRFatlas7 Evaluation Board
 *
 * Copyright (c) 2014 Cambridge Silicon Radio Limited, a CSR plc group company.
 *
 * Licensed under GPLv2 or later.
 */

/dts-v1/;

/include/ "atlas7.dtsi"

#include <dt-bindings/input/input.h>
#include <dt-bindings/gpio/gpio.h>

/ {
	model = "CSR SiRFatlas7 Evaluation Board";
	compatible = "sirf,atlas7-cb", "sirf,atlas7";

	chosen {
		bootargs = "console=ttySiRF1,115200 earlyprintk";
	};

	memory {
		device_type = "memory";
		reg = <0x40000000 0x20000000>;
	};

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

		vpp_reserved: vpp_mem@5e800000 {
			compatible = "sirf,reserved-memory";
			reg = <0x5e800000 0x800000>;
		};

		nanddisk_reserved: nanddisk@46000000 {
			reg = <0x46000000 0x200000>;
			no-map;
		};
	};


	noc {
		mediam {
			nand@17050000 {
				memory-region = <&nanddisk_reserved>;
			};
		};

		gnssm {
			spi1: spi@18200000 {
				status = "okay";
				spiflash: macronix@0{
					status = "okay";
					compatible = "macronix,mx25l6405d";
					reg = <0>;
					spi-max-frequency = <37500000>;
					spi-cpha;
					spi-cpol;
					#address-cells = <1>;
					#size-cells = <1>;
					partitions@0 {
						label = "myspiboot";
						reg = <0x0 0x800000>;
					};
				};
			};
		};

		btm {
			uart6: uart@11000000 {
				status = "okay";
				uart-has-rtscts;
			};
		};

		disp-iobg {
			vpp@13110000 {
				memory-region = <&vpp_reserved>;
			};
		};

		display0: display@0 {
			compatible = "lvds-panel";
			source = "lvds.0";

			bl-gpios = <&gpio_1 63 0>;
			data-lines  = <24>;

			display-timings {
				native-mode = <&timing0>;
				timing0: timing0 {
					clock-frequency = <60000000>;
					hactive = <1024>;
					vactive = <600>;
					hfront-porch = <220>;
					hback-porch = <100>;
					hsync-len = <1>;
					vback-porch = <10>;
					vfront-porch = <25>;
					vsync-len = <1>;
					hsync-active = <0>;
					vsync-active = <0>;
					de-active = <1>;
					pixelclk-active = <1>;
				};
			};
		};

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

			rearview_key {
				label = "rearview key";
				linux,code = <KEY_CAMERA>;
				gpios = <&gpio_1 3 GPIO_ACTIVE_LOW>;
				debounce_interval = <100>;
			};
		};

	};
};
