Tom Rini | 53633a8 | 2024-02-29 12:33:36 -0500 | [diff] [blame] | 1 | * Toshiba TC3589x multi-purpose expander |
| 2 | |
| 3 | The Toshiba TC3589x series are I2C-based MFD devices which may expose the |
| 4 | following built-in devices: gpio, keypad, rotator (vibrator), PWM (for |
| 5 | e.g. LEDs or vibrators) The included models are: |
| 6 | |
| 7 | - TC35890 |
| 8 | - TC35892 |
| 9 | - TC35893 |
| 10 | - TC35894 |
| 11 | - TC35895 |
| 12 | - TC35896 |
| 13 | |
| 14 | Required properties: |
| 15 | - compatible : must be "toshiba,tc35890", "toshiba,tc35892", "toshiba,tc35893", |
| 16 | "toshiba,tc35894", "toshiba,tc35895" or "toshiba,tc35896" |
| 17 | - reg : I2C address of the device |
| 18 | - interrupts : the interrupt on the parent the controller is connected to |
| 19 | - interrupt-controller : marks the device node as an interrupt controller |
| 20 | - #interrupt-cells : should be <1>, the first cell is the IRQ offset on this |
| 21 | TC3589x interrupt controller. |
| 22 | |
| 23 | Optional nodes: |
| 24 | |
| 25 | - GPIO |
| 26 | This GPIO module inside the TC3589x has 24 (TC35890, TC35892) or 20 |
| 27 | (other models) GPIO lines. |
| 28 | - compatible : must be "toshiba,tc3589x-gpio" |
| 29 | - interrupts : interrupt on the parent, which must be the tc3589x MFD device |
| 30 | - interrupt-controller : marks the device node as an interrupt controller |
| 31 | - #interrupt-cells : should be <2>, the first cell is the IRQ offset on this |
| 32 | TC3589x GPIO interrupt controller, the second cell is the interrupt flags |
| 33 | in accordance with <dt-bindings/interrupt-controller/irq.h>. The following |
| 34 | flags are valid: |
| 35 | - IRQ_TYPE_LEVEL_LOW |
| 36 | - IRQ_TYPE_LEVEL_HIGH |
| 37 | - IRQ_TYPE_EDGE_RISING |
| 38 | - IRQ_TYPE_EDGE_FALLING |
| 39 | - IRQ_TYPE_EDGE_BOTH |
| 40 | - gpio-controller : marks the device node as a GPIO controller |
| 41 | - #gpio-cells : should be <2>, the first cell is the GPIO offset on this |
| 42 | GPIO controller, the second cell is the flags. |
| 43 | |
| 44 | - Keypad |
| 45 | This keypad is the same on all variants, supporting up to 96 different |
| 46 | keys. The linux-specific properties are modeled on those already existing |
| 47 | in other input drivers. |
| 48 | - compatible : must be "toshiba,tc3589x-keypad" |
| 49 | - debounce-delay-ms : debounce interval in milliseconds |
| 50 | - keypad,num-rows : number of rows in the matrix, see |
| 51 | bindings/input/matrix-keymap.txt |
| 52 | - keypad,num-columns : number of columns in the matrix, see |
| 53 | bindings/input/matrix-keymap.txt |
| 54 | - linux,keymap: the definition can be found in |
| 55 | bindings/input/matrix-keymap.txt |
| 56 | - linux,no-autorepeat: do no enable autorepeat feature. |
| 57 | - wakeup-source: use any event on keypad as wakeup event. |
| 58 | (Legacy property supported: "linux,wakeup") |
| 59 | |
| 60 | Example: |
| 61 | |
| 62 | tc35893@44 { |
| 63 | compatible = "toshiba,tc35893"; |
| 64 | reg = <0x44>; |
| 65 | interrupt-parent = <&gpio6>; |
| 66 | interrupts = <26 IRQ_TYPE_EDGE_RISING>; |
| 67 | |
| 68 | interrupt-controller; |
| 69 | #interrupt-cells = <1>; |
| 70 | |
| 71 | tc3589x_gpio { |
| 72 | compatible = "toshiba,tc3589x-gpio"; |
| 73 | interrupts = <0>; |
| 74 | |
| 75 | interrupt-controller; |
| 76 | #interrupt-cells = <2>; |
| 77 | gpio-controller; |
| 78 | #gpio-cells = <2>; |
| 79 | }; |
| 80 | tc3589x_keypad { |
| 81 | compatible = "toshiba,tc3589x-keypad"; |
| 82 | interrupts = <6>; |
| 83 | debounce-delay-ms = <4>; |
| 84 | keypad,num-columns = <8>; |
| 85 | keypad,num-rows = <8>; |
| 86 | linux,no-autorepeat; |
| 87 | linux,keymap = <0x0301006b |
| 88 | 0x04010066 |
| 89 | 0x06040072 |
| 90 | 0x040200d7 |
| 91 | 0x0303006a |
| 92 | 0x0205000e |
| 93 | 0x0607008b |
| 94 | 0x0500001c |
| 95 | 0x0403000b |
| 96 | 0x03040034 |
| 97 | 0x05020067 |
| 98 | 0x0305006c |
| 99 | 0x040500e7 |
| 100 | 0x0005009e |
| 101 | 0x06020073 |
| 102 | 0x01030039 |
| 103 | 0x07060069 |
| 104 | 0x050500d9>; |
| 105 | wakeup-source; |
| 106 | }; |
| 107 | }; |