Atmel touch controller

Required properties:

 - compatible	: should be "atmel,mxt-ts"
 - reg			: i2c slave address of the device
 - interrupt-parent	: parent of interrupt
 - interrupts		: touch sample interrupt to indicate presense or release
				of fingers on the panel.
 - atmel,panel-coords	: touch panel minimum x, minimum y, maximum x and
				maximum y resolution
 - atmel,display-coords : LCD display minimum x, minimum y, maximum x and
				maximum y resolution
 - vdd_ana-supply	: Analog power supply needed to power device
 - atmel,irq-gpio	: irq gpio
 - atmel,reset-gpio	: reset gpio
 - atmel,family-id	: family identification of the controller
 - atmel,variant-id	: variant identification of the controller
 - atmel,version	: firmware version of the controller
 - atmel,build		: firmware build number of the controller

Required for firmware update only:
 - atmel,fw-name		: firmware name to use for flashing firmware
 - atmel,bootldr-id		: bootloader identification of the controller

Optional property:
 - atmel,bl-addr		: bootloader address, by default is looked up
					in mxt_slave_addresses structure
 - atmel,config			: configuration parameter for the controller
 - atmel,i2c-pull-up		: specify to indicate pull up is needed
 - vcc_i2c-supply		: Power source required to pull up i2c bus
 - atmel,dig-reg-support	: specify to indicate digital regulator is
					needed
 - atmel,need-calibration	: specify to indicate whether calibration is
					needed during wakeup.
 - atmel,no-force-update	: flag that signifies whether force configuration
					update is applicable or not

Example:
	i2c@f9966000 {
		cell-index = <3>;
		compatible = "qcom,i2c-qup";
		reg = <0xf9966000 0x1000>;
		#address-cells = <1>;
		#size-cells = <0>;
		reg-names = "qup_phys_addr";
		interrupts = <0 104 0>;
		interrupt-names = "qup_err_intr";
		qcom,i2c-bus-freq = <100000>;
		qcom,i2c-src-freq = <24000000>;

		atmel_mxt_ts@4a {
			compatible = "atmel,mxt-ts";
			reg = <0x4a>
			interrupt-parent = <&msmgpio>
			interrupts = <48 0x0>;
			vdd_ana-supply = <&pm8941_l18>;
			vcc_i2c-supply = <&pm8941_lvs1>;
			atmel,panel-coords = <0 0 479 799>;
			atmel,display-coords = <0 0 479 799>;
			atmel,i2c-pull-up;
			atmel,no-force-update;
			atmel,dig-reg-support;
			atmel,key-codes = <
				102 139 0 0 0 0 0 0
				0 158 217 0 0 0 0 0
				0 0 0 0 0 0 0 0
				0 0 0 0 0 0 0 0 >;
			atmel,irq-gpio = <&msmgpio 48 0>;
			atmel,reset-gpio = <&msmgpio 26 0>;
			atmel,cfg_1 {
				atmel,family-id = <0x81>;
				atmel,variant-id = <0x01>;
				atmel,version = <0x10>;
				atmel,build = <0xaa>;
				atmel,config = [
					/* Object 6, Instance = 0 */
					00 00 00 00 00 00
					/* Object 38, Instance = 0 */
					15 00 02 10 08 0C 00 00
					/* Object 7, Instance = 0 */
					FF FF 32 03
					/* Object 8, Instance = 0 */
					0F 00 0A 0A 00 00 0A 00 00 00
					/* Object 9, Instance = 0 */
					83 00 00 18 0E 00 70 32 02 01
					00 03 01 01 05 0A 0A 0A 90 05
					F8 02 00 00 0F 0F 00 00 48 2D
					07 0C 00 00 00 00
					/* Object 15, Instance = 0 */
					00 00 00 00 00 00 00 00 00 00
					00
					/* Object 18, Instance = 0 */
					00 00
					/* Object 19, Instance = 0 */
					00 00 00 00 00 00
					/* Object 23, Instance = 0 */
					00 00 00 00 00 00 00 00 00 00
					00 00 00 00 00
					/* Object 25, Instance = 0 */
					00 00 00 00 00 00 00 00 00 00
					00 00 00 00 00
					/* Object 40, Instance = 0 */
					00 00 00 00 00
					/* Object 42, Instance = 0 */
					00 00 00 00 00 00 00 00 00 00
					/* Object 46, Instance = 0 */
					00 00 10 10 00 00 03 00 00 01
					/* Object 47, Instance = 0 */
					08 0A 28 0A 02 0A 00 8C 00 20
					00 00 00
					/* Object 55, Instance = 0 */
					00 00 00 00 00 00
					/* Object 56, Instance = 0 */
					03 00 01 18 05 05 05 05 05 05
					05 05 05 05 05 05 05 05 05 05
					05 05 05 05 05 05 05 05 00 00
					00 00 00 00 00 00 00 00 00 00
					00 00
					/* Object 57, Instance = 0 */
					00 00 00
					/* Object 61, Instance = 0 */
					00 00 00 00 00
					/* Object 61, Instance = 1 */
					00 00 00 00 00
					/* Object 62, Instance = 0 */
					7F 03 00 16 00 00 00 00 00 00
					04 08 10 18 05 00 0A 05 05 50
					14 19 34 1A 64 00 00 04 40 00
					00 00 00 00 30 32 02 00 01 00
					05 00 00 00 00 00 00 00 00 00
					00 00 0C 00
					];
			}

		}
	};
