(mode < 0) ? "unknown" : modes[mode]);
        } else {
                int irq = chip->to_irq(chip, offset);
-               struct irq_desc *desc = irq_to_desc(irq);
                const int pullidx = pull ? 1 : 0;
+               bool wake;
                int val;
                static const char * const pulls[] = {
                        "none        ",
                 * This races with request_irq(), set_irq_type(),
                 * and set_irq_wake() ... but those are "rare".
                 */
-               if (irq > 0 && desc && desc->action) {
+               if (irq > 0 && irq_has_action(irq)) {
                        char *trigger;
+                       bool wake;
 
                        if (nmk_chip->edge_rising & BIT(offset))
                                trigger = "edge-rising";
                        else
                                trigger = "edge-undefined";
 
+                       wake = !!(nmk_chip->real_wake & BIT(offset));
+
                        seq_printf(s, " irq-%d %s%s",
-                                  irq, trigger,
-                                  irqd_is_wakeup_set(&desc->irq_data)
-                                  ? " wakeup" : "");
+                                  irq, trigger, wake ? " wakeup" : "");
                }
        }
        clk_disable(nmk_chip->clk);