Kernel  |  3.4

下载     查看原文件
文本文件  |  89行  |  2.58 KB
* Samsung's Keypad Controller device tree bindings

Samsung's Keypad controller is used to interface a SoC with a matrix-type
keypad device. The keypad controller supports multiple row and column lines.
A key can be placed at each intersection of a unique row and a unique column.
The keypad controller can sense a key-press and key-release and report the
event using a interrupt to the cpu.

Required SoC Specific Properties:
- compatible: should be one of the following
  - "samsung,s3c6410-keypad": For controllers compatible with s3c6410 keypad
    controller.
  - "samsung,s5pv210-keypad": For controllers compatible with s5pv210 keypad
    controller.

- reg: physical base address of the controller and length of memory mapped
  region.

- interrupts: The interrupt number to the cpu.

Required Board Specific Properties:
- samsung,keypad-num-rows: Number of row lines connected to the keypad
  controller.

- samsung,keypad-num-columns: Number of column lines connected to the
  keypad controller.

- row-gpios: List of gpios used as row lines. The gpio specifier for
  this property depends on the gpio controller to which these row lines
  are connected.

- col-gpios: List of gpios used as column lines. The gpio specifier for
  this property depends on the gpio controller to which these column
  lines are connected.

- Keys represented as child nodes: Each key connected to the keypad
  controller is represented as a child node to the keypad controller
  device node and should include the following properties.
  - keypad,row: the row number to which the key is connected.
  - keypad,column: the column number to which the key is connected.
  - linux,code: the key-code to be reported when the key is pressed
    and released.

Optional Properties specific to linux:
- linux,keypad-no-autorepeat: do no enable autorepeat feature.
- linux,keypad-wakeup: use any event on keypad as wakeup event.


Example:
	keypad@100A0000 {
		compatible = "samsung,s5pv210-keypad";
		reg = <0x100A0000 0x100>;
		interrupts = <173>;
		samsung,keypad-num-rows = <2>;
		samsung,keypad-num-columns = <8>;
		linux,input-no-autorepeat;
		linux,input-wakeup;

		row-gpios = <&gpx2 0 3 3 0
			     &gpx2 1 3 3 0>;

		col-gpios = <&gpx1 0 3 0 0
			     &gpx1 1 3 0 0
			     &gpx1 2 3 0 0
			     &gpx1 3 3 0 0
			     &gpx1 4 3 0 0
			     &gpx1 5 3 0 0
			     &gpx1 6 3 0 0
			     &gpx1 7 3 0 0>;

		key_1 {
			keypad,row = <0>;
			keypad,column = <3>;
			linux,code = <2>;
		};

		key_2 {
			keypad,row = <0>;
			keypad,column = <4>;
			linux,code = <3>;
		};

		key_3 {
			keypad,row = <0>;
			keypad,column = <5>;
			linux,code = <4>;
		};
	};