On Oct 17, 2016, at 6:28 AM, BALATON Zoltan wrote:
On Sun, 16 Oct 2016, Programmingkid wrote:
make USB work. This patch is an attempt to make USB work. It looks like changes were made to the original code to make it compile in OpenBIOS.
Apart from integrating in OpenBIOS changes were needed to make it work on a big endian CPU as well.
These changes may have disabled the OHCI code.
Not likely but I don't know what are you trying to do.
I'm trying to make the USB keyboard work. Using a simple command-line like this "qemu-system-ppc -usb -usb-kbd" does not appear to work. Nothing typed appears on the screen.
I noticed many of these kind of changes: Original coreboot version: ed_t *const periodic_ed = dma_memalign(sizeof(ed_t), sizeof(ed_t));
OpenBIOS version: ed_t *const periodic_ed;
All of the dma_memalign() calls were removed. How did this code work with so many uninitialized pointers?
https://chromium.googlesource.com/chromiumos/third_party/coreboot/+/ecec80e0... This page has very similar code to usbohci.c has.
The usb driver in OpenBIOS was ported from the libpayload library of the coreboot project. Your link says third_party so this is not the official repo. Maybe a better source would be the upstream repository at coreboot.org rather than Google's copy of it although that seems to be a bit hard to browse without cloning because it's behind a patch management system. I've found this link now (not sure if it has any relevant differences to the above but this should be the upstream source):
Thank you for this link.
Using this page I filled in what I thought were the missing function calls. My changes no longer allow OpenBIOS to boot, so consider this a work in progress for now.
If this breaks it then it's likely not the correct fix. What was the problem in the first place this is trying to correct?
When compiling OpenBIOS with gcc 4.2.3, a lot of warnings were issued by the compiler:
CC target/drivers/usbohci.o cc1: warnings being treated as errors /Users/john/desktop/openbios/drivers/usbohci.c: In function ‘ohci_init’: /Users/john/desktop/openbios/drivers/usbohci.c:230: warning: dereferencing type-punned pointer will break strict-aliasing rules /Users/john/desktop/openbios/drivers/usbohci.c:237: warning: dereferencing type-punned pointer will break strict-aliasing rules /Users/john/desktop/openbios/drivers/usbohci.c: In function ‘ohci_control’: /Users/john/desktop/openbios/drivers/usbohci.c:382: warning: dereferencing type-punned pointer will break strict-aliasing rules /Users/john/desktop/openbios/drivers/usbohci.c:397: warning: dereferencing type-punned pointer will break strict-aliasing rules /Users/john/desktop/openbios/drivers/usbohci.c:432: warning: dereferencing type-punned pointer will break strict-aliasing rules /Users/john/desktop/openbios/drivers/usbohci.c:448: warning: dereferencing type-punned pointer will break strict-aliasing rules /Users/john/desktop/openbios/drivers/usbohci.c:455: warning: dereferencing type-punned pointer will break strict-aliasing rules /Users/john/desktop/openbios/drivers/usbohci.c: In function ‘ohci_bulk’: /Users/john/desktop/openbios/drivers/usbohci.c:511: warning: dereferencing type-punned pointer will break strict-aliasing rules /Users/john/desktop/openbios/drivers/usbohci.c:549: warning: dereferencing type-punned pointer will break strict-aliasing rules /Users/john/desktop/openbios/drivers/usbohci.c:562: warning: dereferencing type-punned pointer will break strict-aliasing rules /Users/john/desktop/openbios/drivers/usbohci.c: In function ‘ohci_create_intr_queue’: /Users/john/desktop/openbios/drivers/usbohci.c:656: warning: dereferencing type-punned pointer will break strict-aliasing rules /Users/john/desktop/openbios/drivers/usbohci.c:666: warning: dereferencing type-punned pointer will break strict-aliasing rules /Users/john/desktop/openbios/drivers/usbohci.c:679: warning: dereferencing type-punned pointer will break strict-aliasing rules make[1]: *** [target/drivers/usbohci.o] Error 1 make: *** [subdir-ppc] Error 2