mouse and keyboard are created as children of a phantom node:
children
node 0xfe0600c8
children
node 0xfe060620
name mouse
device_type mouse
reg [0, 0, 0, 1]
status okay
interrupts [12, 0, 0, 0]
#buttons [0, 0, 0, 3]
node 0xfe0604f0
name kbd
device_type keyboard
reg [0, 0, 0, 0]
status okay
interrupts [1, 0, 0, 0]
language [69, 78, 0]
which then gets its attributes pointer assigned later:
node 0xfe0600c8
name fdc
device_type [98, 108, 111, 99, 107, 0, 0]
#address-cells [0, 0, 0, 1]
status okay
reg [0, 0, 3, 240, 0, 0, 0, 2]
interrupts [0, 0, 0, 6]
children
node 0xfe060620
name mouse
device_type mouse
my hypothesis seeing this is that a procedure for creating the 8042 tree node failed and the node was freed, but the current node pointer was left at that position. kbd and mouse were meant to be created as children of that node. once the node was re-allocated as fdc, the children came with it.