But GPIO pins are everywhere Microcontroller ports are only part of the game You have GPIO extenders over I2C Most peripheral chips offer some GPIO pin You can have a remote controller, behind pci/usb/whatever We need a flexible API that can be extended over time Really, you are expected to think about it, and we may see it later Vendors solutions are not "usually" up to the task They only offer register names "IOSET1 = n" Or they offer structures "GPIOC->IDR" I'm ready to apologize if you show me good vendor code The Linux approach grew too complex over time If features dynamic allocation of GPIO numbers: it can't work with microcontrollers