1. For the C6748, the max PCLK out of the LCDC is 37.5MHz. Is this correct?
Yes. Verified by Mukul.
2. This Wiki: http://processors.wiki.ti.com/index.php/OMAP-L1x/C674x/AM1x_LCD_Controller_(LCDC)_Throughput_and_Optimization_Techniques has an entry in one of the tables that has PCLK set to 50MHz. I've looked at all the devices this Wiki references, and I don't think ANY of the devices can support a PCLK of 50MHz. I realize there is a note on the Wiki to verify the max PCLK for your device, but having the 50MHz in the table is mis-leading. Is 50MHz a typo?
Max PCLK is indeed 37.5MHz. Verified by Mukul. I don't believe there is any device in the OMAP-L1x/C674x/AM1x family that supports a 50MHz PCLK, and thus it should be removed from the Wiki above to avoid confusion.
3. What are the ramifications of running PCLK beyond 37.5MHz? I realize at this point we are overclocking this peripheral, however is the 37.5MHz overly cautious? Most of the 10.1" LCD panels we have looked at, require a PCLK in the 45MHz range.
As expected, overclock at your own risk. TI guarantees nothing if you over stress the device. Confirmed by Mukul.
4. In the C6748 Tech Manual, when setting CLKDIV in the LCD_CTRL register, it states that using an odd CLKDIV value distorts the duty cycle. Is this a recommendation to NOT use an odd value? How bad is the distortion?
Never got a straight answer to this, other than "the duty cycle gets worse with odd dividers". Would have been nice to know if it is something like 55% high / 45% low ..or.. 70% high / 30% low. At this point, I'm going to play it safe and stick with even dividers.
5. What is the size of the LCD FIFO? I believe it is 512 dwords or 2048 bytes.
Mukul confirmed the FIFO has a maximum of 512 "elements". Scroll down if you care to see how the "elements" are stored. I believe Mukul's math is wrong, and the LCD FIFO is 2k bytes. Not that it matters much.
6. Once the LCD raster starts drawing down data out of the FIFO, what is the logic for the LCD DMA to keep it filled? I understand that TH_FIFO_READY in the LCDDMA_CTRL register controls how many dwords must be in the FIFO before the raster engine can start consuming them, but what happens after the raster engine starts? Basically I want to understand how often the LCD DMA will grab bytes out of DDR2 and place them in the FIFO.
This question was never really answered, other to say that the DMA will keep the FIFO full. How it actually does that: wait until FIFO half empty??, wait until FIFO has room for BURST_SIZE bytes??, is it a function of TH_FIFO_READY??, etc. I'm concerned with FIFO underflow, as we have a ton of code / data in DDR2, plus our LCD panel is 1024 x 600, with 16bit color. Lots of bytes to move and keep the FIFO happy.
7. When the LCD DMA grabs bytes out of DDR2, it uses the BURST_SIZE setting in the LCDDMA_CTRL register. A BURST_SIZE of 16 will equal 64 bytes. Is this correct?
Yes. Confirmed by Mukul.
8. Once the raster engine outputs the last pixel, in the last line, it is done with that frame and done grabbing data out of the FIFO. During the VFP + VSW + VBP time, is the LCD DMA filling the FIFO for the next frame? If so, does it need to satisfy TH_FIFO_READY again before the next frame can start?
Yes, TH_FIFO_READY needs to be satisfied for each frame. Confirmed by Sunil. I assume this means that if you are getting FIFO underflow errors, you may need to increase VFP + VSW + VBP so the FIFO has a chance to fill for the next frame.
9. Observation made by Sunil. Make sure the size of the frame buffer is divisible by the BURST_SIZE. If you don't do this, the words that are left over are transferred one at a time until complete, which increases the chance of a FIFO underflow.