1*5f3575ccSConor Dooley# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2*5f3575ccSConor Dooley%YAML 1.2 3*5f3575ccSConor Dooley--- 4*5f3575ccSConor Dooley$id: http://devicetree.org/schemas/soc/microchip/microchip,mpfs-irqmux.yaml# 5*5f3575ccSConor Dooley$schema: http://devicetree.org/meta-schemas/core.yaml# 6*5f3575ccSConor Dooley 7*5f3575ccSConor Dooleytitle: Microchip Polarfire SoC GPIO Interrupt Mux 8*5f3575ccSConor Dooley 9*5f3575ccSConor Dooleymaintainers: 10*5f3575ccSConor Dooley - Conor Dooley <conor.dooley@microchip.com> 11*5f3575ccSConor Dooley 12*5f3575ccSConor Dooleydescription: | 13*5f3575ccSConor Dooley There are 3 GPIO controllers on this SoC, of which: 14*5f3575ccSConor Dooley - GPIO controller 0 has 14 GPIOs 15*5f3575ccSConor Dooley - GPIO controller 1 has 24 GPIOs 16*5f3575ccSConor Dooley - GPIO controller 2 has 32 GPIOs 17*5f3575ccSConor Dooley 18*5f3575ccSConor Dooley All GPIOs are capable of generating interrupts, for a total of 70. 19*5f3575ccSConor Dooley There are only 41 IRQs available however, so a configurable mux is used to 20*5f3575ccSConor Dooley ensure all GPIOs can be used for interrupt generation. 21*5f3575ccSConor Dooley 38 of the 41 interrupts are in what the documentation calls "direct mode", 22*5f3575ccSConor Dooley as they provide an exclusive connection from a GPIO to the PLIC. 23*5f3575ccSConor Dooley Lines 18 to 23 on GPIO controller 1 are always in "direct mode". 24*5f3575ccSConor Dooley The 3 remaining interrupts are used to mux the interrupts which do not have 25*5f3575ccSConor Dooley a exclusive connection, one for each GPIO controller. 26*5f3575ccSConor Dooley 27*5f3575ccSConor Dooleyproperties: 28*5f3575ccSConor Dooley compatible: 29*5f3575ccSConor Dooley const: microchip,mpfs-irqmux 30*5f3575ccSConor Dooley 31*5f3575ccSConor Dooley reg: 32*5f3575ccSConor Dooley maxItems: 1 33*5f3575ccSConor Dooley 34*5f3575ccSConor Dooley "#address-cells": 35*5f3575ccSConor Dooley const: 0 36*5f3575ccSConor Dooley 37*5f3575ccSConor Dooley "#interrupt-cells": 38*5f3575ccSConor Dooley const: 1 39*5f3575ccSConor Dooley 40*5f3575ccSConor Dooley interrupt-map-mask: 41*5f3575ccSConor Dooley items: 42*5f3575ccSConor Dooley - const: 0x7f 43*5f3575ccSConor Dooley 44*5f3575ccSConor Dooley interrupt-map: 45*5f3575ccSConor Dooley description: | 46*5f3575ccSConor Dooley Specifies the mapping from GPIO interrupt lines to plic interrupts. 47*5f3575ccSConor Dooley 48*5f3575ccSConor Dooley The child interrupt number set in arrays items is computed using the 49*5f3575ccSConor Dooley following formula: 50*5f3575ccSConor Dooley gpio_bank * 32 + gpio_number 51*5f3575ccSConor Dooley with: 52*5f3575ccSConor Dooley - gpio_bank: The GPIO bank number 53*5f3575ccSConor Dooley - 0 for GPIO0, 54*5f3575ccSConor Dooley - 1 for GPIO1, 55*5f3575ccSConor Dooley - 2 for GPIO2 56*5f3575ccSConor Dooley - gpio_number: Number of the gpio in the bank (0..31) 57*5f3575ccSConor Dooley maxItems: 70 58*5f3575ccSConor Dooley 59*5f3575ccSConor Dooleyrequired: 60*5f3575ccSConor Dooley - compatible 61*5f3575ccSConor Dooley - reg 62*5f3575ccSConor Dooley - "#address-cells" 63*5f3575ccSConor Dooley - "#interrupt-cells" 64*5f3575ccSConor Dooley - interrupt-map-mask 65*5f3575ccSConor Dooley - interrupt-map 66*5f3575ccSConor Dooley 67*5f3575ccSConor DooleyadditionalProperties: false 68*5f3575ccSConor Dooley 69*5f3575ccSConor Dooleyexamples: 70*5f3575ccSConor Dooley - | 71*5f3575ccSConor Dooley interrupt-controller@54 { 72*5f3575ccSConor Dooley compatible = "microchip,mpfs-irqmux"; 73*5f3575ccSConor Dooley reg = <0x54 0x4>; 74*5f3575ccSConor Dooley #address-cells = <0>; 75*5f3575ccSConor Dooley #interrupt-cells = <1>; 76*5f3575ccSConor Dooley interrupt-map-mask = <0x7f>; 77*5f3575ccSConor Dooley interrupt-map = <0 &plic 13>, <1 &plic 14>, <2 &plic 15>, 78*5f3575ccSConor Dooley <3 &plic 16>, <4 &plic 17>, <5 &plic 18>, 79*5f3575ccSConor Dooley <6 &plic 19>, <7 &plic 20>, <8 &plic 21>, 80*5f3575ccSConor Dooley <9 &plic 22>, <10 &plic 23>, <11 &plic 24>, 81*5f3575ccSConor Dooley <12 &plic 25>, <13 &plic 26>, 82*5f3575ccSConor Dooley 83*5f3575ccSConor Dooley <32 &plic 27>, <33 &plic 28>, <34 &plic 29>, 84*5f3575ccSConor Dooley <35 &plic 30>, <36 &plic 31>, <37 &plic 32>, 85*5f3575ccSConor Dooley <38 &plic 33>, <39 &plic 34>, <40 &plic 35>, 86*5f3575ccSConor Dooley <41 &plic 36>, <42 &plic 37>, <43 &plic 38>, 87*5f3575ccSConor Dooley <44 &plic 39>, <45 &plic 40>, <46 &plic 41>, 88*5f3575ccSConor Dooley <47 &plic 42>, <48 &plic 43>, <49 &plic 44>, 89*5f3575ccSConor Dooley <50 &plic 45>, <51 &plic 46>, <52 &plic 47>, 90*5f3575ccSConor Dooley <53 &plic 48>, <54 &plic 49>, <55 &plic 50>, 91*5f3575ccSConor Dooley 92*5f3575ccSConor Dooley <64 &plic 53>, <65 &plic 53>, <66 &plic 53>, 93*5f3575ccSConor Dooley <67 &plic 53>, <68 &plic 53>, <69 &plic 53>, 94*5f3575ccSConor Dooley <70 &plic 53>, <71 &plic 53>, <72 &plic 53>, 95*5f3575ccSConor Dooley <73 &plic 53>, <74 &plic 53>, <75 &plic 53>, 96*5f3575ccSConor Dooley <76 &plic 53>, <77 &plic 53>, <78 &plic 53>, 97*5f3575ccSConor Dooley <79 &plic 53>, <80 &plic 53>, <81 &plic 53>, 98*5f3575ccSConor Dooley <82 &plic 53>, <83 &plic 53>, <84 &plic 53>, 99*5f3575ccSConor Dooley <85 &plic 53>, <86 &plic 53>, <87 &plic 53>, 100*5f3575ccSConor Dooley <88 &plic 53>, <89 &plic 53>, <90 &plic 53>, 101*5f3575ccSConor Dooley <91 &plic 53>, <92 &plic 53>, <93 &plic 53>, 102*5f3575ccSConor Dooley <94 &plic 53>, <95 &plic 53>; 103*5f3575ccSConor Dooley }; 104