^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) * Marvell PXA Keypad controller
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) Required Properties
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) - compatible : should be "marvell,pxa27x-keypad"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) - reg : Address and length of the register set for the device
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) - interrupts : The interrupt for the keypad controller
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) - marvell,debounce-interval : How long time the key will be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) recognized when it is pressed. It is a u32 value, and bit[31:16]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) is debounce interval for direct key and bit[15:0] is debounce
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) interval for matrix key. The value is in binary number of 2ms
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) Optional Properties For Matrix Keyes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) Please refer to matrix-keymap.txt
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) Optional Properties for Direct Keyes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) - marvell,direct-key-count : How many direct keyes are used.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) - marvell,direct-key-mask : The mask indicates which keyes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) are used. If bit[X] of the mask is set, the direct key X
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) is used.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) - marvell,direct-key-low-active : Direct key status register
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) tells the level of pins that connects to the direct keyes.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) When this property is set, it means that when the pin level
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) is low, the key is pressed(active).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) - marvell,direct-key-map : It is a u16 array. Each item indicates
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) the linux key-code for the direct key.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) Optional Properties For Rotary
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) - marvell,rotary0 : It is a u32 value. Bit[31:16] is the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) linux key-code for rotary up. Bit[15:0] is the linux key-code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) for rotary down. It is for rotary 0.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) - marvell,rotary1 : Same as marvell,rotary0. It is for rotary 1.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) - marvell,rotary-rel-key : When rotary is used for relative axes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) in the device, the value indicates the key-code for relative
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) axes measurement in the device. It is a u32 value. Bit[31:16]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) is for rotary 1, and Bit[15:0] is for rotary 0.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) Examples:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) keypad: keypad@d4012000 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) keypad,num-rows = <3>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) keypad,num-columns = <5>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) linux,keymap = <0x0000000e /* KEY_BACKSPACE */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) 0x0001006b /* KEY_END */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) 0x00020061 /* KEY_RIGHTCTRL */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) 0x0003000b /* KEY_0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) 0x00040002 /* KEY_1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) 0x0100008b /* KEY_MENU */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) 0x01010066 /* KEY_HOME */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) 0x010200e7 /* KEY_SEND */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) 0x01030009 /* KEY_8 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) 0x0104000a /* KEY_9 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) 0x02000160 /* KEY_OK */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) 0x02010003 /* KEY_2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) 0x02020004 /* KEY_3 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) 0x02030005 /* KEY_4 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) 0x02040006>; /* KEY_5 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) marvell,rotary0 = <0x006c0067>; /* KEY_UP & KEY_DOWN */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) marvell,direct-key-count = <1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) marvell,direct-key-map = <0x001c>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) marvell,debounce-interval = <0x001e001e>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) };