/*
 * 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@0 {
		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";
	};
};
