Hello,
I am writing to the CoreBoot mailing list concerning the PCI bus mastering issue that prevents Windows CE drivers from functioning. Artec DBE62 board has a VIA Velocity NIC, that requires bus mastering in order to perform DMA and function correctly. I noticed that nearly all Linux drivers set the bus mastering flag manually during init stage.
Unfortunately, this is not the case with Windows CE drivers. I would be more than happy to do the same thing there, but the problem is, drivers for modern NICs are often supplied as pre-compiled binaries. And it is not always feasible to init the mastering flag in a CE board support packages.
Provided that we want CoreBoot to set PCI bus mastering for a NIC, what is the most adequate way of doing it?
1. With DBE61, we had a dummy RTL8139 PCI driver under src/drivers/pci/rtl8139 that did some chip initialization. I believe that is not suitable for the mainline.
2. Another option would be to globally force the PCI_COMMAND_MASTER in pci_probe_dev(), if the base class is PCI_BASE_CLASS_NETWORK.
3. It must be also possible to find the PCI device during the mainboard-specific init and issue the mastering command from there.
We have already implemented it as (2), please let me know if you want the patch.
Regards, Andrei