Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9d71941d authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull input updates from Dmitry Torokhov:

 - a new GPIO bit-banging driver implementing PS/2 protocol

 - a new power key driver for Rockchip RK805 PMIC

 - bunch of patches constifying various device ID structures

 - Elan I2C touchpad driver now supports devices with 2 buttons

 - other assorted fixes

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input: (76 commits)
  Input: byd - make array seq static, reduces object code size
  Input: xilinx_ps2 - fix multiline comment style
  Input: pxa27x_keypad - handle return value of clk_prepare_enable
  Input: tegra-kbc - handle return value of clk_prepare_enable
  Input: PS/2 gpio bit banging driver for serio bus
  Input: xen-kbdfront - enable auto repeat for xen keyboard frontend driver
  Input: ambakmi - constify amba_id
  Input: atmel_mxt_ts - add support for reset line
  Input: atmel_mxt_ts - use more managed resources
  Input: wacom_w8001 - constify serio_device_id
  Input: tsc40 - constify serio_device_id
  Input: touchwin - constify serio_device_id
  Input: touchright - constify serio_device_id
  Input: touchit213 - constify serio_device_id
  Input: penmount - constify serio_device_id
  Input: mtouch - constify serio_device_id
  Input: inexio - constify serio_device_id
  Input: hampshire - constify serio_device_id
  Input: gunze - constify serio_device_id
  Input: fujitsu_ts - constify serio_device_id
  ...
parents dfd9e6d2 a6cbfa1e
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -22,6 +22,8 @@ Optional properties for main touchpad device:
    experiment to determine which bit corresponds to which input. Use
    KEY_RESERVED for unused padding values.

- reset-gpios: GPIO specifier for the touchscreen's reset pin (active low)

Example:

	touch@4b {
+23 −0
Original line number Diff line number Diff line
Device-Tree binding for ps/2 gpio device

Required properties:
	- compatible = "ps2-gpio"
	- data-gpios: the data pin
	- clk-gpios: the clock pin
	- interrupts: Should trigger on the falling edge of the clock line.

Optional properties:
	- write-enable: Indicates whether write function is provided
	to serio device. Possibly providing the write fn will not work, because
	of the tough timing requirements.

Example nodes:

ps2@0 {
	compatible = "ps2-gpio";
	interrupt-parent = <&gpio>;
	interrupts = <23 IRQ_TYPE_EDGE_FALLING>;
	data-gpios = <&gpio 24 GPIO_ACTIVE_HIGH>;
	clk-gpios = <&gpio 23 GPIO_ACTIVE_HIGH>;
	write-enable;
};
+5 −0
Original line number Diff line number Diff line
@@ -84,6 +84,11 @@ hardware descriptions such as device tree or ACPI:
  NAND flash MTD subsystem and provides chip access and partition parsing like
  any other NAND driving hardware.

- ps2-gpio: drivers/input/serio/ps2-gpio.c is used to drive a PS/2 (IBM) serio
  bus, data and clock line, by bit banging two GPIO lines. It will appear as
  any other serio bus to the system and makes it possible to connect drivers
  for e.g. keyboards and other PS/2 protocol based devices.

Apart from this there are special GPIO drivers in subsystems like MMC/SD to
read card detect and write protect GPIO lines, and in the TTY serial subsystem
to emulate MCTRL (modem control) signals CTS/RTS by using two GPIO lines. The
+1 −1
Original line number Diff line number Diff line
@@ -377,7 +377,7 @@ static struct gpiod_lookup_table raumfeld_rotary_gpios_table = {
	},
};

static struct property_entry raumfeld_rotary_properties[] = {
static const struct property_entry raumfeld_rotary_properties[] __initconst = {
	PROPERTY_ENTRY_INTEGER("rotary-encoder,steps-per-period", u32, 24),
	PROPERTY_ENTRY_INTEGER("linux,axis",			  u32, REL_X),
	PROPERTY_ENTRY_INTEGER("rotary-encoder,relative_axis",	  u32, 1),
+3 −3
Original line number Diff line number Diff line
@@ -1398,7 +1398,7 @@ static struct attribute *input_dev_attrs[] = {
	NULL
};

static struct attribute_group input_dev_attr_group = {
static const struct attribute_group input_dev_attr_group = {
	.attrs	= input_dev_attrs,
};

@@ -1425,7 +1425,7 @@ static struct attribute *input_dev_id_attrs[] = {
	NULL
};

static struct attribute_group input_dev_id_attr_group = {
static const struct attribute_group input_dev_id_attr_group = {
	.name	= "id",
	.attrs	= input_dev_id_attrs,
};
@@ -1495,7 +1495,7 @@ static struct attribute *input_dev_caps_attrs[] = {
	NULL
};

static struct attribute_group input_dev_caps_attr_group = {
static const struct attribute_group input_dev_caps_attr_group = {
	.name	= "capabilities",
	.attrs	= input_dev_caps_attrs,
};
Loading