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 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 It can't be replicated in the microcontroller world