Commit 7b5bb55d authored by Jeff LaBundy's avatar Jeff LaBundy Committed by Dmitry Torokhov
Browse files

Input: add support for Azoteq IQS550/572/525

This patch adds support for the Azoteq IQS550/572/525 family of
trackpad/touchscreen controllers.

The driver has been tested with an IQS550EV02 evaluation board. A
demonstration of the driver's capabilities is available here:

https://youtu.be/sRNNx4XZBts



Signed-off-by: default avatarJeff LaBundy <jeff@labundy.com>
Reviewed-by: default avatarRob Herring <robh@kernel.org>
Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
parent 13bda2d0
Loading
Loading
Loading
Loading
+80 −0
Original line number Original line Diff line number Diff line
Azoteq IQS550/572/525 Trackpad/Touchscreen Controller

Required properties:

- compatible			: Must be equal to one of the following:
				  "azoteq,iqs550"
				  "azoteq,iqs572"
				  "azoteq,iqs525"

- reg				: I2C slave address for the device.

- interrupts			: GPIO to which the device's active-high RDY
				  output is connected (see [0]).

- reset-gpios			: GPIO to which the device's active-low NRST
				  input is connected (see [1]).

Optional properties:

- touchscreen-min-x		: See [2].

- touchscreen-min-y		: See [2].

- touchscreen-size-x		: See [2]. If this property is omitted, the
				  maximum x-coordinate is specified by the
				  device's "X Resolution" register.

- touchscreen-size-y		: See [2]. If this property is omitted, the
				  maximum y-coordinate is specified by the
				  device's "Y Resolution" register.

- touchscreen-max-pressure	: See [2]. Pressure is expressed as the sum of
				  the deltas across all channels impacted by a
				  touch event. A channel's delta is calculated
				  as its count value minus a reference, where
				  the count value is inversely proportional to
				  the channel's capacitance.

- touchscreen-fuzz-x		: See [2].

- touchscreen-fuzz-y		: See [2].

- touchscreen-fuzz-pressure	: See [2].

- touchscreen-inverted-x	: See [2]. Inversion is applied relative to that
				  which may already be specified by the device's
				  FLIP_X and FLIP_Y register fields.

- touchscreen-inverted-y	: See [2]. Inversion is applied relative to that
				  which may already be specified by the device's
				  FLIP_X and FLIP_Y register fields.

- touchscreen-swapped-x-y	: See [2]. Swapping is applied relative to that
				  which may already be specified by the device's
				  SWITCH_XY_AXIS register field.

[0]: Documentation/devicetree/bindings/interrupt-controller/interrupts.txt
[1]: Documentation/devicetree/bindings/gpio/gpio.txt
[2]: Documentation/devicetree/bindings/input/touchscreen/touchscreen.txt

Example:

	&i2c1 {
		/* ... */

		touchscreen@74 {
			compatible = "azoteq,iqs550";
			reg = <0x74>;
			interrupt-parent = <&gpio>;
			interrupts = <17 4>;
			reset-gpios = <&gpio 27 1>;

			touchscreen-size-x = <640>;
			touchscreen-size-y = <480>;

			touchscreen-max-pressure = <16000>;
		};

		/* ... */
	};
+1 −0
Original line number Original line Diff line number Diff line
@@ -53,6 +53,7 @@ avic Shanghai AVIC Optoelectronics Co., Ltd.
avnet	Avnet, Inc.
avnet	Avnet, Inc.
axentia	Axentia Technologies AB
axentia	Axentia Technologies AB
axis	Axis Communications AB
axis	Axis Communications AB
azoteq	Azoteq (Pty) Ltd
bananapi BIPAI KEJI LIMITED
bananapi BIPAI KEJI LIMITED
bhf	Beckhoff Automation GmbH & Co. KG
bhf	Beckhoff Automation GmbH & Co. KG
bitmain	Bitmain Technologies
bitmain	Bitmain Technologies
+10 −0
Original line number Original line Diff line number Diff line
@@ -1311,4 +1311,14 @@ config TOUCHSCREEN_ROHM_BU21023
	  To compile this driver as a module, choose M here: the
	  To compile this driver as a module, choose M here: the
	  module will be called bu21023_ts.
	  module will be called bu21023_ts.


config TOUCHSCREEN_IQS5XX
	tristate "Azoteq IQS550/572/525 trackpad/touchscreen controller"
	depends on I2C
	help
	  Say Y to enable support for the Azoteq IQS550/572/525
	  family of trackpad/touchscreen controllers.

	  To compile this driver as a module, choose M here: the
	  module will be called iqs5xx.

endif
endif
+1 −0
Original line number Original line Diff line number Diff line
@@ -110,3 +110,4 @@ obj-$(CONFIG_TOUCHSCREEN_ZFORCE) += zforce_ts.o
obj-$(CONFIG_TOUCHSCREEN_COLIBRI_VF50)	+= colibri-vf50-ts.o
obj-$(CONFIG_TOUCHSCREEN_COLIBRI_VF50)	+= colibri-vf50-ts.o
obj-$(CONFIG_TOUCHSCREEN_ROHM_BU21023)	+= rohm_bu21023.o
obj-$(CONFIG_TOUCHSCREEN_ROHM_BU21023)	+= rohm_bu21023.o
obj-$(CONFIG_TOUCHSCREEN_RASPBERRYPI_FW)	+= raspberrypi-ts.o
obj-$(CONFIG_TOUCHSCREEN_RASPBERRYPI_FW)	+= raspberrypi-ts.o
obj-$(CONFIG_TOUCHSCREEN_IQS5XX)	+= iqs5xx.o
+1133 −0

File added.

Preview size limit exceeded, changes collapsed.