1 Reply Latest reply on Nov 12, 2019 11:20 AM by drozwood90

    UltraZed-EV (zynqmp) not generating interrupts for GPIOs

    jlindquist74

      I'm testing software I'm writing for a custom target, using the UltraZedEV on the Avnet carrier card.  Particularly, I'm using the SW5 DIP switches to stand in for switches on the target which should trigger interrupts on the rising transition.  However, no interrupts are ever generated.  I have the GPIO pins exported in sysfs as gpio504-511, the edge set to "rising", and open file descriptors on their "value" nodes, watched by poll() for POLLPRI.  But poll() never returns events on those fd's revents fields.  Further, /proc/interrupts shows no interrupts have been generated for them:

       

      root@avnetuz:~# cat /proc/interrupts

                 CPU0       CPU1       CPU2       CPU3

        3:      10390     311753       2886      73304     GICv2  30 Level     arch_timer

        6:          0          0          0          0     GICv2  67 Level     ff9905c0.mailbox

        7:          0          0          0          0     GICv2 175 Level     arm-pmu

        8:          0          0          0          0     GICv2 176 Level     arm-pmu

        9:          0          0          0          0     GICv2 177 Level     arm-pmu

      10:          0          0          0          0     GICv2 178 Level     arm-pmu

      12:          0          0          0          0     GICv2 156 Level     zynqmp-dma

      13:          0          0          0          0     GICv2 157 Level     zynqmp-dma

      14:          0          0          0          0     GICv2 158 Level     zynqmp-dma

      15:          0          0          0          0     GICv2 159 Level     zynqmp-dma

      16:          0          0          0          0     GICv2 160 Level     zynqmp-dma

      17:          0          0          0          0     GICv2 161 Level     zynqmp-dma

      18:          0          0          0          0     GICv2 162 Level     zynqmp-dma

      19:          0          0          0          0     GICv2 163 Level     zynqmp-dma

      21:          0          0          0          0     GICv2 109 Level     zynqmp-dma

      22:          0          0          0          0     GICv2 110 Level     zynqmp-dma

      23:          0          0          0          0     GICv2 111 Level     zynqmp-dma

      24:          0          0          0          0     GICv2 112 Level     zynqmp-dma

      25:          0          0          0          0     GICv2 113 Level     zynqmp-dma

      26:          0          0          0          0     GICv2 114 Level     zynqmp-dma

      27:          0          0          0          0     GICv2 115 Level     zynqmp-dma

      28:          0          0          0          0     GICv2 116 Level     zynqmp-dma

      30:          0          0          0          0     GICv2  95 Level     eth0, eth0

      32:         49          0          0          0     GICv2  50 Level     cdns-i2c

      33:          0          0          0          0     GICv2  42 Level     ff960000.memory-controller

      34:          0          0          0          0     GICv2  57 Level     axi-pmon

      35:          0          0          0          0     GICv2 150 Level     nwl_pcie:misc

      40:         23          0          0          0     GICv2  47 Level     ff0f0000.spi

      41:          0          0          0          0     GICv2  58 Level     ffa60000.rtc

      42:          0          0          0          0     GICv2  59 Level     ffa60000.rtc

      43:          0          0          0          0     GICv2 165 Level     ahci-ceva[fd0c0000.ahci]

      44:        441          0          0          0     GICv2  80 Level     mmc0

      45:       2054          0          0          0     GICv2  81 Level     mmc1

      46:       7348          0          0          0     GICv2  53 Level     xuartps

      48:          0          0          0          0     GICv2 145 Edge      fd4d0000.watchdog

      49:          0          0          0          0     GICv2  88 Level     ams-irq

      50:          0          0          0          0     GICv2 154 Level     fd4c0000.dma

      51:         64          0          0          0     GICv2 151 Level     fd4a0000.zynqmp-display

      52:          0          0          0          0     xgpio   0 Edge      gpiolib

      53:          0          0          0          0     xgpio   1 Edge      gpiolib

      54:          0          0          0          0     xgpio   2 Edge      gpiolib

      55:          0          0          0          0     xgpio   3 Edge      gpiolib

      56:          0          0          0          0     xgpio   4 Edge      gpiolib

      57:          0          0          0          0     xgpio   5 Edge      gpiolib

      58:          0          0          0          0     xgpio   6 Edge      gpiolib

      59:          0          0          0          0     xgpio   7 Edge      gpiolib

      IPI0:      2421       2110       1330       2071       Rescheduling interrupts

      IPI1:         8          6         11          5       Function call interrupts

      IPI2:         0          0

       

      Interrupts 52-59 are my GPIOs, but flipping the switches back and forth does nothing.

      Is there something I'm missing from my device tree (attached) or something else I need to do to make these interrupts active?