Korona wrote:
Well, good luck with non-x86 or more complicated x86 devices then, because in many situations, the Linux driver is the only documentation. Which does not mean that you should re-use it's code (that'd also be illegal if your project is not GPL, like in the case that qookie posted above -- TianoCore is permissively licensed), but you will have to read Linux code to write your own driver. Devices like Intel iGPUs have undocumented registers and quirks that make it impossible to use the hardware if you don't know about them.
I suppose using quirks from Linux drivers would be ok (I use the RTL network chip quirks in my OS). However, I would not even dream about implementing a network interface that matches that of Linux in order to be able to reuse the code. For one, I find this interface very poor, so I wouldn't want to have it anyway.
Besides, many chips without documentation don't have open-source drivers, and so Linux doesn't help much there. WiFi chips come to mind.
As for GPUs, I currently use LFB, either through VBE or UEFI, which also means I try to avoid Intel as they have extremely poor LFB performance. Their BIOSes (and UEFIs too) won't give you the right resolutions either, and so if you use 16:9 or other non-standard VGA modes, then you cannot use Intel. Asking the BIOS manufacturer to fix it won't work either since Intel will not fix it for them either.