On 10/20/06, Patrick McNamara <[EMAIL PROTECTED]> wrote:
I've seen a number of people at various times note that the register interface is not well defined and that some of the functional interface is still up in the air as to how it will work. That shouldn't stop people from starting on the drivers. Registers are easily abstracted and readily changeable if the code is properly written. Changing a register location should be as simple as changing a single #define.
Fair enough. There will be one PCI BAR dedicated to all configuration registers. This includes peripherals, the drawing engine, video controller, memory controller, etc. We don't need to be very "efficient" with how we assign addresses into that space. So let's break up the address space and leave lots of extra room. For instance, the programmable things (video and DMA controllers) will have 512-word instruction memories. The DMA controller may have more than that. Fine. Give these 4096-word ranges. Next, there's the drawing engine. Just for fun, give it 32768 words (the first 8 "blocks"). Upon examination of the engine pipeline, we'll divide it up into power-of-two sized subregions such that there is at least one for each major pipeline stage. If the engine needs more space (unlikely), we'll just push the other blocks around a bit (or start assigning them addresses from the top). Dividing things up this way is nice because as addresses are being processed, each level of the hierarchy only needs to test some part of the address. _______________________________________________ Open-graphics mailing list [email protected] http://lists.duskglow.com/mailman/listinfo/open-graphics List service provided by Duskglow Consulting, LLC (www.duskglow.com)
