/*
 * The code contained herein is licensed under the GNU General Public
 * License. You may obtain a copy of the GNU General Public License
 * Version 2 or later at the following locations:
 */

#include "ep7211.dtsi"
#include <dt-bindings/gpio/gpio.h>

/ {
	model = "Cirrus Logic EP7211 Development Board";
	compatible = "cirrus,edb7211", "cirrus,ep7211", "cirrus,ep7209";

	memory {
		reg = <0xc0000000 0x02000000>;
	};

	backlight: backlight {
		compatible = "pwm-backlight";
		pwms = <&pwm 0>;
		brightness-levels = <
			0x0 0x1 0x2 0x3 0x4 0x5 0x6 0x7
			0x8 0x9 0xa 0xb 0xc 0xd 0xe 0xf
		>;
		default-brightness-level = <0x0>;
		power-supply = <&blen>;
	};

	display: display {
		model = "320x240x4";
		native-mode = <&timing0>;
		bits-per-pixel = <4>;
		ac-prescale = <17>;

		display-timings {
			timing0: 320x240 {
				hactive = <320>;
				hback-porch = <0>;
				hfront-porch = <0>;
				hsync-len = <0>;
				vactive = <240>;
				vback-porch = <0>;
				vfront-porch = <0>;
				vsync-len = <0>;
				clock-frequency = <6500000>;
			};
		};
	};

	i2c: i2c {
		compatible = "i2c-gpio";
		gpios = <&portd 4 GPIO_ACTIVE_HIGH>,
			<&portd 5 GPIO_ACTIVE_HIGH>;
		i2c-gpio,delay-us = <2>;
		i2c-gpio,scl-output-only;
		#address-cells = <1>;
		#size-cells = <0>;
	};

	lcddc: lcddc {
		compatible = "regulator-fixed";
		regulator-name = "BACKLIGHT ENABLE";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		gpio = <&portd 1 GPIO_ACTIVE_HIGH>;
	};

	blen: blen {
		compatible = "regulator-fixed";
		regulator-name = "BACKLIGHT ENABLE";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		gpio = <&portd 3 GPIO_ACTIVE_HIGH>;
	};
};

&bus {
	flash: nor@00000000 {
		compatible = "cfi-flash";
		reg = <0 0x00000000 0x02000000>;
		bank-width = <2>;
		#address-cells = <1>;
		#size-cells = <1>;
	};
};

&fb {
	display = <&display>;
	lcd-supply = <&lcddc>;
	status = "okay";
};

&portd {
	lcden {
		gpio-hog;
		gpios = <2 GPIO_ACTIVE_HIGH>;
		output-high;
		line-name = "LCD ENABLE";
	};
};
