Interrupt differences between 3.8 and 4.1 kernels

I have an application that uses the QCA7000 driver that works well under the 3.8 kernel but I’m trying to upgrade to Debian 10 and the 4.x kernel (4.19.94-ti-r42).

The problem I’m having has to do with the interrupt line required by the QCA7000. For my setup this is on P9.27 (GPIO3_19). For the most part my 4.x overly is the same as the 3.8 overlay except the references to the gpios which changed from <&gpio4> (3.8) to <&gpio3>. (4.x) eg
interrupt-parent = <&gpio4>; changed to interrupt-parent = <&gpio3>;

The interrupts statement in 3.8 was
interrupts = <19>;

With this, when I boot the 4.x kernel I get the following message during startup:
qcaspi spi0.0 qca0: qcaspi: unable to get IRQ 0 (irqval=-22).

I’ve tried changing the interrupts line in the overlay to:
interrupts = <19 IRQ_TYPE_LEVEL_HIGH>;
but this results in the system hanging on boot with the last message usually being ‘OpenBSD Secure Shell server’ or sometimes as far as ‘Getty on tty1’. (Both occur before the qcaspi message above). I’ve also tried
interrupts = <19 4>;
with the same result. The only way I can get it to boot is with:
interrupts = <19 0>;
which I understand is essentially disabling the interrupt.

When I boot with interrupts=<19> pin P9.27 is low when I finally get the login on the debug serial port. However, when the interrupt is enabled with <19 4> and the system hangs, P9.27 is high which obviously indicates the interrupt isn’t getting serviced.

I’m looking for any suggestions. Have there been other changes to the overlays or the way interrupts are handled? I haven’t changed the driver source at all.

Here are the pertinent sections of the overlay.

fragment@3 {
    target = <&am33xx_pinmux>;
    __overlay__ {
        bb_spi0_pins: pinmux_bb_spi0_pins {
            pinctrl-single,pins = <
                BONE_P9_17 (PIN_OUTPUT_PULLUP | MUX_MODE0) /* P9_17: spi0_cs0, OUTPUT_PULLUP | MODE0 */
                BONE_P9_18 (PIN_OUTPUT_PULLUP | MUX_MODE0) /* P9_18: spi0_d1, OUTPUT_PULLUP | MODE0 */
                BONE_P9_21 (PIN_INPUT_PULLUP | MUX_MODE0) /* P9_21: spi0_d0, INPUT_PULLUP | MODE0 */
                BONE_P9_22 (PIN_INPUT_PULLUP | MUX_MODE0) /* P9_22: spi0_sclk, INPUT_PULLUP | MODE0 */
            >;
        };
        qca_gpio_pins: pinmux_qca_gpio_pins {
            pinctrl-single,pins = <
                BONE_P8_11 (PIN_OUTPUT_PULLUP | MUX_MODE7) /* P8.11 gpio1_13(13) : QCA_nRESET : GPIO OUTPUT PULLUP (0x17) */
                BONE_P8_12 (PIN_OUTPUT_PULLUP | MUX_MODE7) /* P8.12 gpio1_12(12) : QCA_nBOOT : GPIO OUTPUT PULLUP (0x17) */
                BONE_P9_27 (PIN_INPUT_PULLDOWN | MUX_MODE7) /* P9.27 gpio3_19(105) : QCA_INT : INPUT_PULLDOWN  | MODE7 (0x27) */
            >;
        };
    };
};

fragment@4 {
    target = <&spi0>;
    __overlay__ {
        #address-cells = <1>;
        #size-cells = <0>;

        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&bb_spi0_pins>;

        qca7000@0{
            compatible = "qca,qca7000";
            status = "okay";

            reg = <0>;
            spi-max-frequency = <10000000>;
            spi-cpha;        /* SPI mode: CPHA=1 */
            spi-cpol;        /* SPI mode: CPOL=1 */

            pinctrl-names = "default";
            pinctrl-0 = <&qca_gpio_pins>;
            interrupt-parent = <&gpio3>;    /* GPIO Bank 3 */
            interrupts = <19 4>;        /* Index: 19, high level */
            mac-address = [ 00 01 87 05 00 5B ];
            /* qca,irq-gpio = <&gpio3 19 0>; */
            qca,reset-gpio = <&gpio1 13 0>;
            qca,gpio0-gpio = <&gpio1 12 0>;
        };
    };

-- Mike
    mikef@valentpower.com