A major research issue was finding out how to output on the UART. I was hoping my IO port based serial port code would work. That was not the case! Since I was unable to find any documentation on the SoC I had to do some digging...
I booted the Linux image that came with Edison and took a look at /proc/tty/drivers and /proc/tty/driver/* for the current tty. Tells me its a MFD serial port. A look in lspci gave me the clue. Its a PCI serial port.
I added the vendor/device to my PCI serial driver and rebooted since that should work.....
Nothing!
I tried to write directly to the address I found in
lspci from u-boot...
Code:
boot>mw.b 0xff010180 0x21 1
!boot>
That works.. So since u-boot initialized the UART to 115200 and mapped the BAR i was good..
So I created a dumb driver in my kernel to handle that. So now it boots with messages.
Problem is that kernel does not find the PCI devices except host bridge and graphics adapter... Why???
So I did some more digging with
dmesg and
lspciLooks like the PCI config space is not IO mapped but MMIO mapped. That was new to me.... So now I'm writing a new PCI enumerator supporting memory mapped config space..
That took some time figuring out