Kernel-4.18.0-80.el8_tc3589x

  • Toshiba TC3589x multi-purpose expander

The Toshiba TC3589x series are I2C-based MFD devices which may expose the
following built-in devices: gpio, keypad, rotator (vibrator), PWM (for
e.g. LEDs or vibrators) The included models are:

  • TC35890
  • TC35892
  • TC35893
  • TC35894
  • TC35895
  • TC35896

Required properties:

  • compatible : must be “toshiba,tc35890”, “toshiba,tc35892”, “toshiba,tc35893”,
    “toshiba,tc35894”, “toshiba,tc35895” or “toshiba,tc35896”
  • reg : I2C address of the device
  • interrupt-parent : specifies which IRQ controller we’re connected to
  • interrupts : the interrupt on the parent the controller is connected to
  • interrupt-controller : marks the device node as an interrupt controller
  • #interrupt-cells : should be <1>, the first cell is the IRQ offset on this
    TC3589x interrupt controller.

Optional nodes:

  • GPIO
    This GPIO module inside the TC3589x has 24 (TC35890, TC35892) or 20
    (other models) GPIO lines.

  • compatible : must be “toshiba,tc3589x-gpio”

  • interrupts : interrupt on the parent, which must be the tc3589x MFD device

  • interrupt-controller : marks the device node as an interrupt controller

  • #interrupt-cells : should be <2>, the first cell is the IRQ offset on this
    TC3589x GPIO interrupt controller, the second cell is the interrupt flags
    in accordance with <dt-bindings/interrupt-controller/irq.h>. The following
    flags are valid:

    • IRQ_TYPE_LEVEL_LOW
    • IRQ_TYPE_LEVEL_HIGH
    • IRQ_TYPE_EDGE_RISING
    • IRQ_TYPE_EDGE_FALLING
    • IRQ_TYPE_EDGE_BOTH
  • gpio-controller : marks the device node as a GPIO controller

  • #gpio-cells : should be <2>, the first cell is the GPIO offset on this
    GPIO controller, the second cell is the flags.

  • Keypad
    This keypad is the same on all variants, supporting up to 96 different
    keys. The linux-specific properties are modeled on those already existing
    in other input drivers.

  • compatible : must be “toshiba,tc3589x-keypad”

  • debounce-delay-ms : debounce interval in milliseconds

  • keypad,num-rows : number of rows in the matrix, see
    bindings/input/matrix-keymap.txt

  • keypad,num-columns : number of columns in the matrix, see
    bindings/input/matrix-keymap.txt

  • linux,keymap: the definition can be found in
    bindings/input/matrix-keymap.txt

  • linux,no-autorepeat: do no enable autorepeat feature.

  • wakeup-source: use any event on keypad as wakeup event.

       (Legacy property supported: "linux,wakeup")
    

Example:

tc35893@44 {
compatible = “toshiba,tc35893”;
reg = <0x44>;
interrupt-parent = <&gpio6>;
interrupts = <26 IRQ_TYPE_EDGE_RISING>;

interrupt-controller;
#interrupt-cells = <1>;

tc3589x_gpio {
    compatible = "toshiba,tc3589x-gpio";
    interrupts = <0>;

    interrupt-controller;
    #interrupt-cells = <2>;
    gpio-controller;
    #gpio-cells = <2>;
};
tc3589x_keypad {
    compatible = "toshiba,tc3589x-keypad";
    interrupts = <6>;
    debounce-delay-ms = <4>;
    keypad,num-columns = <8>;
    keypad,num-rows = <8>;
    linux,no-autorepeat;
    linux,keymap = <0x0301006b
            0x04010066
            0x06040072
            0x040200d7
            0x0303006a
            0x0205000e
            0x0607008b
            0x0500001c
            0x0403000b
            0x03040034
            0x05020067
            0x0305006c
            0x040500e7
            0x0005009e
            0x06020073
            0x01030039
            0x07060069
            0x050500d9>;
    wakeup-source;
};

};