Is there a kernel driver that can reflash firmware that exists on the motherboard of a Personal Computer? How do kernel programmers get the information they need to interact with the hardware from user space?