On Tue, Sep 21, 2010 at 07:51:37PM +0000, Jonathan A. Kollasch wrote:
Hi,
http://www.seabios.org/pipermail/seabios/2010-March/000396.html
Could anyone explain what the difficulty with OHCI bulk in 16-bit mode is before I spend a few hours discovering for myself?
In order to start a bulk or control transmission on ohci, one must write to the cmdstatus register. You'll see this in the code as:
writel(&cntl->regs->cmdstatus, OHCI_CLF);
This register is a memory mapped register in one of the PCI bars.
When in 16bit mode, one can only reliably access the first 1Meg of ram. Unfortunately, the PCI bar is going to be in high memory.
I couldn't think of any reliable way to toggle the cmdstatus bit to start a bulk transfer while in 16bit mode. I thought of a few different hacks - but they all seemed to fragile.
-Kevin