gpio_sch.c configures for interrupts but does not inspect the trigger type (GPIO_INT_LEVEL vs GPIO_INT_EDGE). It should do so and should diagnose if one of those triggers is not supported.
As implemented the driver will behave correctly only for level-triggered interrupts (GPIO_INT_EDGE is the non-default configuration).