162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 262306a36Sopenharmony_ci# Copyright 2022 Unisoc Inc. 362306a36Sopenharmony_ci%YAML 1.2 462306a36Sopenharmony_ci--- 562306a36Sopenharmony_ci$id: http://devicetree.org/schemas/gpio/sprd,gpio-eic.yaml# 662306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml# 762306a36Sopenharmony_ci 862306a36Sopenharmony_cititle: Unisoc EIC controller 962306a36Sopenharmony_ci 1062306a36Sopenharmony_cimaintainers: 1162306a36Sopenharmony_ci - Orson Zhai <orsonzhai@gmail.com> 1262306a36Sopenharmony_ci - Baolin Wang <baolin.wang7@gmail.com> 1362306a36Sopenharmony_ci - Chunyan Zhang <zhang.lyra@gmail.com> 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_cidescription: | 1662306a36Sopenharmony_ci The EIC is the abbreviation of external interrupt controller, which can 1762306a36Sopenharmony_ci be used only in input mode. The Spreadtrum platform has 2 EIC controllers, 1862306a36Sopenharmony_ci one is in digital chip, and another one is in PMIC. The digital chip EIC 1962306a36Sopenharmony_ci controller contains 4 sub-modules, i.e. EIC-debounce, EIC-latch, EIC-async and 2062306a36Sopenharmony_ci EIC-sync. But the PMIC EIC controller contains only one EIC-debounce sub- 2162306a36Sopenharmony_ci module. 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_ci The EIC-debounce sub-module provides up to 8 source input signal 2462306a36Sopenharmony_ci connections. A debounce mechanism is used to capture the input signals' 2562306a36Sopenharmony_ci stable status (millisecond resolution) and a single-trigger mechanism 2662306a36Sopenharmony_ci is introduced into this sub-module to enhance the input event detection 2762306a36Sopenharmony_ci reliability. In addition, this sub-module's clock can be shut off 2862306a36Sopenharmony_ci automatically to reduce power dissipation. Moreover the debounce range 2962306a36Sopenharmony_ci is from 1ms to 4s with a step size of 1ms. The input signal will be 3062306a36Sopenharmony_ci ignored if it is asserted for less than 1 ms. 3162306a36Sopenharmony_ci 3262306a36Sopenharmony_ci The EIC-latch sub-module is used to latch some special power down signals 3362306a36Sopenharmony_ci and generate interrupts, since the EIC-latch does not depend on the APB 3462306a36Sopenharmony_ci clock to capture signals. 3562306a36Sopenharmony_ci 3662306a36Sopenharmony_ci The EIC-async sub-module uses a 32kHz clock to capture the short signals 3762306a36Sopenharmony_ci (microsecond resolution) to generate interrupts by level or edge trigger. 3862306a36Sopenharmony_ci 3962306a36Sopenharmony_ci The EIC-sync is similar with GPIO's input function, which is a synchronized 4062306a36Sopenharmony_ci signal input register. It can generate interrupts by level or edge trigger 4162306a36Sopenharmony_ci when detecting input signals. 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_ciproperties: 4462306a36Sopenharmony_ci compatible: 4562306a36Sopenharmony_ci oneOf: 4662306a36Sopenharmony_ci - enum: 4762306a36Sopenharmony_ci - sprd,sc9860-eic-debounce 4862306a36Sopenharmony_ci - sprd,sc9860-eic-latch 4962306a36Sopenharmony_ci - sprd,sc9860-eic-async 5062306a36Sopenharmony_ci - sprd,sc9860-eic-sync 5162306a36Sopenharmony_ci - sprd,sc2731-eic 5262306a36Sopenharmony_ci - items: 5362306a36Sopenharmony_ci - enum: 5462306a36Sopenharmony_ci - sprd,ums512-eic-debounce 5562306a36Sopenharmony_ci - const: sprd,sc9860-eic-debounce 5662306a36Sopenharmony_ci - items: 5762306a36Sopenharmony_ci - enum: 5862306a36Sopenharmony_ci - sprd,ums512-eic-latch 5962306a36Sopenharmony_ci - const: sprd,sc9860-eic-latch 6062306a36Sopenharmony_ci - items: 6162306a36Sopenharmony_ci - enum: 6262306a36Sopenharmony_ci - sprd,ums512-eic-async 6362306a36Sopenharmony_ci - const: sprd,sc9860-eic-async 6462306a36Sopenharmony_ci - items: 6562306a36Sopenharmony_ci - enum: 6662306a36Sopenharmony_ci - sprd,ums512-eic-sync 6762306a36Sopenharmony_ci - const: sprd,sc9860-eic-sync 6862306a36Sopenharmony_ci - items: 6962306a36Sopenharmony_ci - enum: 7062306a36Sopenharmony_ci - sprd,sc2730-eic 7162306a36Sopenharmony_ci - const: sprd,sc2731-eic 7262306a36Sopenharmony_ci 7362306a36Sopenharmony_ci reg: 7462306a36Sopenharmony_ci minItems: 1 7562306a36Sopenharmony_ci maxItems: 3 7662306a36Sopenharmony_ci description: 7762306a36Sopenharmony_ci EIC controller can support maximum 3 banks which has its own 7862306a36Sopenharmony_ci address base. 7962306a36Sopenharmony_ci 8062306a36Sopenharmony_ci gpio-controller: true 8162306a36Sopenharmony_ci 8262306a36Sopenharmony_ci "#gpio-cells": 8362306a36Sopenharmony_ci const: 2 8462306a36Sopenharmony_ci 8562306a36Sopenharmony_ci interrupt-controller: true 8662306a36Sopenharmony_ci 8762306a36Sopenharmony_ci "#interrupt-cells": 8862306a36Sopenharmony_ci const: 2 8962306a36Sopenharmony_ci 9062306a36Sopenharmony_ci interrupts: 9162306a36Sopenharmony_ci maxItems: 1 9262306a36Sopenharmony_ci description: 9362306a36Sopenharmony_ci The interrupt shared by all GPIO lines for this controller. 9462306a36Sopenharmony_ci 9562306a36Sopenharmony_cirequired: 9662306a36Sopenharmony_ci - compatible 9762306a36Sopenharmony_ci - reg 9862306a36Sopenharmony_ci - gpio-controller 9962306a36Sopenharmony_ci - "#gpio-cells" 10062306a36Sopenharmony_ci - interrupt-controller 10162306a36Sopenharmony_ci - "#interrupt-cells" 10262306a36Sopenharmony_ci - interrupts 10362306a36Sopenharmony_ci 10462306a36Sopenharmony_ciadditionalProperties: false 10562306a36Sopenharmony_ci 10662306a36Sopenharmony_ciexamples: 10762306a36Sopenharmony_ci - | 10862306a36Sopenharmony_ci #include <dt-bindings/interrupt-controller/arm-gic.h> 10962306a36Sopenharmony_ci 11062306a36Sopenharmony_ci soc { 11162306a36Sopenharmony_ci #address-cells = <2>; 11262306a36Sopenharmony_ci #size-cells = <2>; 11362306a36Sopenharmony_ci 11462306a36Sopenharmony_ci eic_debounce: gpio@40210000 { 11562306a36Sopenharmony_ci compatible = "sprd,sc9860-eic-debounce"; 11662306a36Sopenharmony_ci reg = <0 0x40210000 0 0x80>; 11762306a36Sopenharmony_ci gpio-controller; 11862306a36Sopenharmony_ci #gpio-cells = <2>; 11962306a36Sopenharmony_ci interrupt-controller; 12062306a36Sopenharmony_ci #interrupt-cells = <2>; 12162306a36Sopenharmony_ci interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>; 12262306a36Sopenharmony_ci }; 12362306a36Sopenharmony_ci }; 12462306a36Sopenharmony_ci... 125