xref: /linux/Documentation/devicetree/bindings/gpio/sprd,gpio-eic.yaml (revision 9a87ffc99ec8eb8d35eed7c4f816d75f5cc9662e)
1bf26a472SChunyan Zhang# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2bf26a472SChunyan Zhang# Copyright 2022 Unisoc Inc.
3bf26a472SChunyan Zhang%YAML 1.2
4bf26a472SChunyan Zhang---
5bf26a472SChunyan Zhang$id: http://devicetree.org/schemas/gpio/sprd,gpio-eic.yaml#
6bf26a472SChunyan Zhang$schema: http://devicetree.org/meta-schemas/core.yaml#
7bf26a472SChunyan Zhang
8bf26a472SChunyan Zhangtitle: Unisoc EIC controller
9bf26a472SChunyan Zhang
10bf26a472SChunyan Zhangmaintainers:
11bf26a472SChunyan Zhang  - Orson Zhai <orsonzhai@gmail.com>
12bf26a472SChunyan Zhang  - Baolin Wang <baolin.wang7@gmail.com>
13bf26a472SChunyan Zhang  - Chunyan Zhang <zhang.lyra@gmail.com>
14bf26a472SChunyan Zhang
15bf26a472SChunyan Zhangdescription: |
16bf26a472SChunyan Zhang  The EIC is the abbreviation of external interrupt controller, which can
17bf26a472SChunyan Zhang  be used only in input mode. The Spreadtrum platform has 2 EIC controllers,
18bf26a472SChunyan Zhang  one is in digital chip, and another one is in PMIC. The digital chip EIC
19bf26a472SChunyan Zhang  controller contains 4 sub-modules, i.e. EIC-debounce, EIC-latch, EIC-async and
20bf26a472SChunyan Zhang  EIC-sync. But the PMIC EIC controller contains only one EIC-debounce sub-
21bf26a472SChunyan Zhang  module.
22bf26a472SChunyan Zhang
23bf26a472SChunyan Zhang  The EIC-debounce sub-module provides up to 8 source input signal
24bf26a472SChunyan Zhang  connections. A debounce mechanism is used to capture the input signals'
25bf26a472SChunyan Zhang  stable status (millisecond resolution) and a single-trigger mechanism
26bf26a472SChunyan Zhang  is introduced into this sub-module to enhance the input event detection
27bf26a472SChunyan Zhang  reliability. In addition, this sub-module's clock can be shut off
28bf26a472SChunyan Zhang  automatically to reduce power dissipation. Moreover the debounce range
29bf26a472SChunyan Zhang  is from 1ms to 4s with a step size of 1ms. The input signal will be
30bf26a472SChunyan Zhang  ignored if it is asserted for less than 1 ms.
31bf26a472SChunyan Zhang
32bf26a472SChunyan Zhang  The EIC-latch sub-module is used to latch some special power down signals
33bf26a472SChunyan Zhang  and generate interrupts, since the EIC-latch does not depend on the APB
34bf26a472SChunyan Zhang  clock to capture signals.
35bf26a472SChunyan Zhang
36bf26a472SChunyan Zhang  The EIC-async sub-module uses a 32kHz clock to capture the short signals
37bf26a472SChunyan Zhang  (microsecond resolution) to generate interrupts by level or edge trigger.
38bf26a472SChunyan Zhang
39bf26a472SChunyan Zhang  The EIC-sync is similar with GPIO's input function, which is a synchronized
40bf26a472SChunyan Zhang  signal input register. It can generate interrupts by level or edge trigger
41bf26a472SChunyan Zhang  when detecting input signals.
42bf26a472SChunyan Zhang
43bf26a472SChunyan Zhangproperties:
44bf26a472SChunyan Zhang  compatible:
45*3c0c7b1dSChunyan Zhang    oneOf:
46*3c0c7b1dSChunyan Zhang      - enum:
47bf26a472SChunyan Zhang          - sprd,sc9860-eic-debounce
48bf26a472SChunyan Zhang          - sprd,sc9860-eic-latch
49bf26a472SChunyan Zhang          - sprd,sc9860-eic-async
50bf26a472SChunyan Zhang          - sprd,sc9860-eic-sync
51bf26a472SChunyan Zhang          - sprd,sc2731-eic
52*3c0c7b1dSChunyan Zhang      - items:
53*3c0c7b1dSChunyan Zhang          - enum:
54*3c0c7b1dSChunyan Zhang              - sprd,ums512-eic-debounce
55*3c0c7b1dSChunyan Zhang          - const: sprd,sc9860-eic-debounce
56*3c0c7b1dSChunyan Zhang      - items:
57*3c0c7b1dSChunyan Zhang          - enum:
58*3c0c7b1dSChunyan Zhang              - sprd,ums512-eic-latch
59*3c0c7b1dSChunyan Zhang          - const: sprd,sc9860-eic-latch
60*3c0c7b1dSChunyan Zhang      - items:
61*3c0c7b1dSChunyan Zhang          - enum:
62*3c0c7b1dSChunyan Zhang              - sprd,ums512-eic-async
63*3c0c7b1dSChunyan Zhang          - const: sprd,sc9860-eic-async
64*3c0c7b1dSChunyan Zhang      - items:
65*3c0c7b1dSChunyan Zhang          - enum:
66*3c0c7b1dSChunyan Zhang              - sprd,ums512-eic-sync
67*3c0c7b1dSChunyan Zhang          - const: sprd,sc9860-eic-sync
68*3c0c7b1dSChunyan Zhang      - items:
69*3c0c7b1dSChunyan Zhang          - enum:
70*3c0c7b1dSChunyan Zhang              - sprd,sc2730-eic
71*3c0c7b1dSChunyan Zhang          - const: sprd,sc2731-eic
72bf26a472SChunyan Zhang
73bf26a472SChunyan Zhang  reg:
74bf26a472SChunyan Zhang    minItems: 1
75bf26a472SChunyan Zhang    maxItems: 3
76bf26a472SChunyan Zhang    description:
77bf26a472SChunyan Zhang      EIC controller can support maximum 3 banks which has its own
78bf26a472SChunyan Zhang      address base.
79bf26a472SChunyan Zhang
80bf26a472SChunyan Zhang  gpio-controller: true
81bf26a472SChunyan Zhang
82bf26a472SChunyan Zhang  "#gpio-cells":
83bf26a472SChunyan Zhang    const: 2
84bf26a472SChunyan Zhang
85bf26a472SChunyan Zhang  interrupt-controller: true
86bf26a472SChunyan Zhang
87bf26a472SChunyan Zhang  "#interrupt-cells":
88bf26a472SChunyan Zhang    const: 2
89bf26a472SChunyan Zhang
90bf26a472SChunyan Zhang  interrupts:
91bf26a472SChunyan Zhang    maxItems: 1
92bf26a472SChunyan Zhang    description:
93bf26a472SChunyan Zhang      The interrupt shared by all GPIO lines for this controller.
94bf26a472SChunyan Zhang
95bf26a472SChunyan Zhangrequired:
96bf26a472SChunyan Zhang  - compatible
97bf26a472SChunyan Zhang  - reg
98bf26a472SChunyan Zhang  - gpio-controller
99bf26a472SChunyan Zhang  - "#gpio-cells"
100bf26a472SChunyan Zhang  - interrupt-controller
101bf26a472SChunyan Zhang  - "#interrupt-cells"
102bf26a472SChunyan Zhang  - interrupts
103bf26a472SChunyan Zhang
104bf26a472SChunyan ZhangadditionalProperties: false
105bf26a472SChunyan Zhang
106bf26a472SChunyan Zhangexamples:
107bf26a472SChunyan Zhang  - |
108bf26a472SChunyan Zhang    #include <dt-bindings/interrupt-controller/arm-gic.h>
109bf26a472SChunyan Zhang
110bf26a472SChunyan Zhang    soc {
111bf26a472SChunyan Zhang        #address-cells = <2>;
112bf26a472SChunyan Zhang        #size-cells = <2>;
113bf26a472SChunyan Zhang
114bf26a472SChunyan Zhang        eic_debounce: gpio@40210000 {
115bf26a472SChunyan Zhang            compatible = "sprd,sc9860-eic-debounce";
116bf26a472SChunyan Zhang            reg = <0 0x40210000 0 0x80>;
117bf26a472SChunyan Zhang            gpio-controller;
118bf26a472SChunyan Zhang            #gpio-cells = <2>;
119bf26a472SChunyan Zhang            interrupt-controller;
120bf26a472SChunyan Zhang            #interrupt-cells = <2>;
121bf26a472SChunyan Zhang            interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
122bf26a472SChunyan Zhang        };
123bf26a472SChunyan Zhang    };
124bf26a472SChunyan Zhang...
125