Crane Merchandising System - EL15203000 LED driver
--------------------------------------------------

This LED Board (aka RED LEDs board) is widely used in
coffee vending machines produced by Crane Merchandising Systems.
The board manages 3 LEDs and supports predefined blinking patterns
for specific leds.

Vending area LED encoded with symbol 'V' (hex code 0x56).
Doesn't have any hardware blinking pattern.

Screen light tube LED which surrounds vending machine screen and
encoded with symbol 'S' (hex code 0x53). Supports blinking breathing pattern.

Water Pipe LED encoded with symbol 'P' (hex code 0x50) and
actually consists of 5 LEDs that exposed by protocol like one LED.
Supports next patterns:
- cascade pattern
- inversed cascade pattern
- bounce pattern
- inversed bounce pattern

Required properties:
- compatible : "crane,el15203000"
- #address-cells : must be 1
- #size-cells : must be 0

Property rules described in Documentation/devicetree/bindings/spi/spi-bus.txt
apply. In particular, "reg" and "spi-max-frequency" properties must be given.

Optional LED sub-node properties:
- function:
	see Documentation/devicetree/bindings/leds/common.txt
- color:
	see Documentation/devicetree/bindings/leds/common.txt

Example
-------

#include <dt-bindings/leds/common.h>

led-controller@0 {
	compatible = "crane,el15203000";
	reg = <0>;
	spi-max-frequency = <50000>;
	#address-cells = <1>;
	#size-cells = <0>;

	/* water pipe */
	led@50 {
		reg = <0x50>;
		function = "pipe";
		color = <LED_COLOR_ID_RED>;
	};

	/* screen frame */
	led@53 {
		reg = <0x53>;
		function = "screen";
		color = <LED_COLOR_ID_RED>;
	};

	/* vending area */
	led@56 {
		reg = <0x56>;
		function = "vend";
		color = <LED_COLOR_ID_RED>;
	};
};
