Wrote code to initialize the UHCI controller registers and initialize the frame list and create skeleton queue heads. The next step is to write methods to create control Transfer descriptors and queue them in the schedule. This can be used to fetch the device descriptor of the device, and hence identify its vendor, etc. No testable code yet. So no commits beyond the first one!
mcb30 did a quick review of my code today and pointed out some minor mistakes. Now my PCI driver recognizes its device and claims it.It also obtains the number of ports on the root hub. The next step is to talk to the root hub to initialize it. After this, we talk to the devices and initialize them.
The problem is, even to talk to the root hub, we need all our TD, QHs, Framelist and other parts of the UHCI schedule to be up. This is because, the root hub is nothing but a special USB device which comes first on the bus. So, I'm afraid I wont be able to do any testing for some days now.
Coding began. Talked to mcb30 on how to get started. According to my initial roadmap, I wouldn't be able to test anything till week 4. He suggested that I have something to test right on week 1. He told me to wrote a PCI driver for the USB host controller that'll claim its device.