all kinds of interesting watching it build the tree in real time:
*** PC = fe01ca4c T = 705
node 0xfe058050
children
node 0xfe058160
name PowerPC,604
device_type cpu
cpu-version [0, 4, 1, 1]
clock-frequency [3, 130, 5, 254]
*** PC = fe019bec T = 704
node 0xfe058050
children
node 0xfe058160
name PowerPC,604
device_type cpu
cpu-version [0, 4, 1, 1]
clock-frequency [56, 130, 5, 254]
*** PC = fe0125d8 T = 703
node 0xfe058050
children
node 0xfe058160
name PowerPC,604
device_type cpu
cpu-version [0, 4, 1, 1]
clock-frequency [0, 0, 0, 0]
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.
*** PC = fe01ca4c T = 3426 ADDR fe060450 BYTES = 69 38 30 34
"i804"
it definitely was making an i8042 port node, but it never appeared in the tree.
ok so hypothesis: i fixed the mouse detection but something else it doesn't like about the 8042 emulation causes it to abort building the tree node part way through with improper error handling.
gonna try fixing it tomorrow.