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 condition
 - 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:

	accelerometer@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: accelerometer@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>;
	};

