Another issue of the current API is the confusion caused by 'gpio_port_enable_callback()' and 'gpio_pin_enable_callback()'.
With the changes proposed later in this thread, you could have a unified call: 'gpio_enable_callback(struct device *port, uint32_t pinmask)' (or something like it)
gpio_port_callback() make the callback called, whatever pins is triggering the interrupt and enabled or not (callback wise). So they are different (documentation could be better though)
I am just wondering that in the "old" API '_port_enable_callback()' was a way to have the callback called with the pins expressed in a bitmask, now the same behaviour can be achieved by running '_pin_enable_callback(port, 0xffffffff)'. Just saying that, with the new API, '_port_enable_callback()' adds little value.
Rethinking about that, while doing the proper patch-set. You've got good point. I am making it useless if the user has not set a callback through gpio_set_callback() (old way of doing, for a unique callback on the whole port)