LIS302 accelerometer devicetree bindings

This device is matched via its bus drivers, and has a number of properties
that apply in on the generic device (independent from the bus).


Required properties for the SPI bindings:
 - compatible: 		should be set to "st,lis3lv02d_spi"
 - reg:			the chipselect index
 - spi-max-frequency:	maximal bus speed, should be set to 1000000 unless
			constrained by external circuitry
 - interrupts:		the interrupt generated by the device

Required properties for the I2C bindings:
 - compatible:		should be set to "st,lis3lv02d"
 - reg:			i2c slave address
 - Vdd-supply:		The input supply for Vdd
 - Vdd_IO-supply:	The input supply for Vdd_IO


Optional properties for all bus drivers:

 - st,click-single-{x,y,z}:	if present, tells the device to issue an
				interrupt on single click events on the
				x/y/z axis.
 - st,click-double-{x,y,z}:	if present, tells the device to issue an
				interrupt on double click events on the
				x/y/z axis.
 - st,click-thresh-{x,y,z}:	set the x/y/z axis threshold
 - st,click-click-time-limit:	click time limit, from 0 to 127.5msec
				with step of 0.5 msec
 - st,click-latency:		click latency, from 0 to 255 msec with
				step of 1 msec.
 - st,click-window:		click window, from 0 to 255 msec with
				step of 1 msec.
 - st,irq{1,2}-disable:		disable IRQ 1/2
 - st,irq{1,2}-ff-wu-1:		raise IRQ 1/2 on FF_WU_1 condition
 - st,irq{1,2}-ff-wu-2:		raise IRQ 1/2 on FF_WU_2 condition
 - st,irq{1,2}-data-ready:	raise IRQ 1/2 on data ready contition
 - st,irq{1,2}-click:		raise IRQ 1/2 on click condition
 - st,irq-open-drain:		consider IRQ lines open-drain
 - st,irq-active-low:		make IRQ lines active low
 - st,wu-duration-1:		duration register for Free-Fall/Wake-Up
				interrupt 1
 - st,wu-duration-2:		duration register for Free-Fall/Wake-Up
				interrupt 2
 - st,wakeup-{x,y,z}-{lo,hi}:	set wakeup condition on x/y/z axis for
				upper/lower limit
 - st,wakeup-threshold:		set wakeup threshold
 - st,wakeup2-{x,y,z}-{lo,hi}:	set wakeup condition on x/y/z axis for
				upper/lower limit for second wakeup
				engine.
 - st,wakeup2-threshold:	set wakeup threshold for second wakeup
				engine.
 - st,highpass-cutoff-hz=:	1, 2, 4 or 8 for 1Hz, 2Hz, 4Hz or 8Hz of
				highpass cut-off frequency
 - st,hipass{1,2}-disable:	disable highpass 1/2.
 - st,default-rate=:		set the default rate
 - st,axis-{x,y,z}=:		set the axis to map to the three coordinates.
				Negative values can be used for inverted axis.
 - st,{min,max}-limit-{x,y,z}	set the min/max limits for x/y/z axis
				(used by self-test)


Example for a SPI device node:

	lis302@0 {
		compatible = "st,lis302dl-spi";
		reg = <0>;
		spi-max-frequency = <1000000>;
		interrupt-parent = <&gpio>;
		interrupts = <104 0>;

		st,click-single-x;
		st,click-single-y;
		st,click-single-z;
		st,click-thresh-x = <10>;
		st,click-thresh-y = <10>;
		st,click-thresh-z = <10>;
		st,irq1-click;
		st,irq2-click;
		st,wakeup-x-lo;
		st,wakeup-x-hi;
		st,wakeup-y-lo;
		st,wakeup-y-hi;
		st,wakeup-z-lo;
		st,wakeup-z-hi;
	};

Example for a I2C device node:

	lis331dlh: lis331dlh@18 {
		compatible = "st,lis331dlh", "st,lis3lv02d";
		reg = <0x18>;
		Vdd-supply = <&lis3_reg>;
		Vdd_IO-supply = <&lis3_reg>;

		st,click-single-x;
		st,click-single-y;
		st,click-single-z;
		st,click-thresh-x = <10>;
		st,click-thresh-y = <10>;
		st,click-thresh-z = <10>;
		st,irq1-click;
		st,irq2-click;
		st,wakeup-x-lo;
		st,wakeup-x-hi;
		st,wakeup-y-lo;
		st,wakeup-y-hi;
		st,wakeup-z-lo;
		st,wakeup-z-hi;
		st,min-limit-x = <120>;
		st,min-limit-y = <120>;
		st,min-limit-z = <140>;
		st,max-limit-x = <550>;
		st,max-limit-y = <550>;
		st,max-limit-z = <750>;
	};

