/*
 * Copyright (c) 2019, PHYTEC Messtechnik GmbH
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include "waveshare_epaper_common.dtsi"

/ {
	chosen {
		zephyr,display = &ssd16xx;
	};
};

&arduino_spi {
	ssd16xx: ssd16xxfb@0 {
		compatible = "gooddisplay,gdeh0213b72", "solomon,ssd1675a", "solomon,ssd16xxfb";
		spi-max-frequency = <4000000>;
		reg = <0>;
		width = <250>;
		height = <120>;
		pp-width-bits = <8>;
		pp-height-bits = <16>;
		dc-gpios = <&arduino_header 15 GPIO_ACTIVE_LOW>;	/* D9 */
		reset-gpios = <&arduino_header 14 GPIO_ACTIVE_LOW>;	/* D8 */
		busy-gpios = <&arduino_header 13 GPIO_ACTIVE_HIGH>;	/* D7 */
		gdv = [15];
		sdv = [41 a8 32];
		vcom = <0x26>;
		border-waveform = <0x03>;
		dummy-line = <0x30>;
		gate-line-width = <0x0a>;
		lut-initial = [
			80 60 40 00 00 00 00
			10 60 20 00 00 00 00
			80 60 40 00 00 00 00
			10 60 20 00 00 00 00
			00 00 00 00 00 00 00
			03 03 00 00 02
			09 09 00 00 02
			03 03 00 00 02
			00 00 00 00 00
			00 00 00 00 00
			00 00 00 00 00
			00 00 00 00 00
		];

		lut-default = [
			00 00 00 00 00 00 00
			80 00 00 00 00 00 00
			40 00 00 00 00 00 00
			80 00 00 00 00 00 00
			00 00 00 00 00 00 00
			0A 00 00 00 04
			00 00 00 00 00
			00 00 00 00 00
			00 00 00 00 00
			00 00 00 00 00
			00 00 00 00 00
			00 00 00 00 00
		];
	};
};
