This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Linux/AM5728: Linux/AM5728: Clearing WiLink8 GPIO interrupt event

Part Number: AM5728

Tool/software: Linux

In our last project we integrated a Wilink 8 with a Renesas ARM processor and had to modify the wlcore_irq() function in the wlcore Linux Kernel driver to clear the interrupt ( WLAN_IRQ ) in order for the radio to work properly. If we did not clear it, the scope showed that the line remained high and the radio did not function.

 To clear it we did this:

         // OUR CUSTOMIZATION

        void __iomem *irc1 = IOMEM(0xfcfef804);

        u16 value;

        value = __raw_readw(irc1);

        value = 0x0000;

        __raw_writew(value, irc1);

 

On the AM5728, I am seeing the same behavior with the GPIO IRQ remaining high and so I believe I need to clear it. I did not find anything in the forum as an example of how to do this.

When I searched the TRM, page 6875 ( and the previous few pages ) show the GPIO_IRQSTATUS_CLR_X registers. The description says “Writing 1 to a bit disables the corresponding interrupt event.”. Does that mean clearing it?

 My GPIO is muxed as GPIO 1_25:

1
2
3
4
5
6
7
8
        wlan_pins_default: wlan_pins_default {
                pinctrl-single,pins = <
-                       0x234 (PIN_OUTPUT_PULLDOWN | MUX_MODE14) /* mmc3_dat6.gpio1_24 */
-                       0x1c8 (PIN_INPUT_PULLDOWN | MUX_MODE14)  /* mmc3_dat7.gpio1_25 */
+                       0x39c (PIN_OUTPUT_PULLDOWN | MUX_MODE14) /* mmc3_dat6.gpio1_24 */
+                       0x3a0 (PIN_INPUT_PULLDOWN | MUX_MODE14)  /* mmc3_dat7.gpio1_25 */
                >;
        };

 How might I clear this IRQ Event? Thanks.

  • Hi,

    Yes it does. See the register description:
    "Description Per-event interrupt-enable clear vector (corresponding to first line of interrupt)"
    "Status clear for interrupt line
    Writing 1 to a bit disables the corresponding interrupt event. Writing 0 has no effect."

    Best Regards,
    Yordan