| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
- # Copyright 2022 Unisoc Inc.
- %YAML 1.2
- ---
- $id: http://devicetree.org/schemas/gpio/sprd,gpio-eic.yaml#
- $schema: http://devicetree.org/meta-schemas/core.yaml#
- title: Unisoc EIC controller
- maintainers:
- - Orson Zhai <orsonzhai@gmail.com>
- - Baolin Wang <baolin.wang7@gmail.com>
- - Chunyan Zhang <zhang.lyra@gmail.com>
- description: |
- The EIC is the abbreviation of external interrupt controller, which can
- be used only in input mode. The Spreadtrum platform has 2 EIC controllers,
- one is in digital chip, and another one is in PMIC. The digital chip EIC
- controller contains 4 sub-modules, i.e. EIC-debounce, EIC-latch, EIC-async and
- EIC-sync. But the PMIC EIC controller contains only one EIC-debounce sub-
- module.
- The EIC-debounce sub-module provides up to 8 source input signal
- connections. A debounce mechanism is used to capture the input signals'
- stable status (millisecond resolution) and a single-trigger mechanism
- is introduced into this sub-module to enhance the input event detection
- reliability. In addition, this sub-module's clock can be shut off
- automatically to reduce power dissipation. Moreover the debounce range
- is from 1ms to 4s with a step size of 1ms. The input signal will be
- ignored if it is asserted for less than 1 ms.
- The EIC-latch sub-module is used to latch some special power down signals
- and generate interrupts, since the EIC-latch does not depend on the APB
- clock to capture signals.
- The EIC-async sub-module uses a 32kHz clock to capture the short signals
- (microsecond resolution) to generate interrupts by level or edge trigger.
- The EIC-sync is similar with GPIO's input function, which is a synchronized
- signal input register. It can generate interrupts by level or edge trigger
- when detecting input signals.
- properties:
- compatible:
- oneOf:
- - enum:
- - sprd,sc9860-eic-debounce
- - sprd,sc9860-eic-latch
- - sprd,sc9860-eic-async
- - sprd,sc9860-eic-sync
- - sprd,sc2731-eic
- - items:
- - enum:
- - sprd,ums512-eic-debounce
- - const: sprd,sc9860-eic-debounce
- - items:
- - enum:
- - sprd,ums512-eic-latch
- - const: sprd,sc9860-eic-latch
- - items:
- - enum:
- - sprd,ums512-eic-async
- - const: sprd,sc9860-eic-async
- - items:
- - enum:
- - sprd,ums512-eic-sync
- - const: sprd,sc9860-eic-sync
- - items:
- - enum:
- - sprd,sc2730-eic
- - const: sprd,sc2731-eic
- reg:
- minItems: 1
- maxItems: 3
- description:
- EIC controller can support maximum 3 banks which has its own
- address base.
- gpio-controller: true
- "#gpio-cells":
- const: 2
- interrupt-controller: true
- "#interrupt-cells":
- const: 2
- interrupts:
- maxItems: 1
- description:
- The interrupt shared by all GPIO lines for this controller.
- required:
- - compatible
- - reg
- - gpio-controller
- - "#gpio-cells"
- - interrupt-controller
- - "#interrupt-cells"
- - interrupts
- additionalProperties: false
- examples:
- - |
- #include <dt-bindings/interrupt-controller/arm-gic.h>
- soc {
- #address-cells = <2>;
- #size-cells = <2>;
- eic_debounce: gpio@40210000 {
- compatible = "sprd,sc9860-eic-debounce";
- reg = <0 0x40210000 0 0x80>;
- gpio-controller;
- #gpio-cells = <2>;
- interrupt-controller;
- #interrupt-cells = <2>;
- interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
- };
- };
- ...
|