Realize Interrupt Functions

You can use the gpiod_to_irq interface to load the virtual interrupt signal, and then call the interrupt function.

The following code block provides an example.
        if (!(host->caps & MMC_CAP_NEEDS_POLL))
                irq = gpiod_to_irq(ctx->cd_gpio);

        if (irq >= 0) {
                if (!ctx->cd_gpio_isr)
                        ctx->cd_gpio_isr = mmc_gpio_cd_irqt;
                ret = devm_request_threaded_irq(host->parent, irq,
                        NULL, ctx->cd_gpio_isr,
                        IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING | IRQF_ONESHOT,
                        ctx->cd_label, host);
                if (ret < 0)
                        irq = ret;
        }