frame buffer驱动问题
目前正在改写一个spi的lcd驱动,但是碰到个问题,dma在linux video驱动是在哪里实现的?因为spi本身就带了dma,所以在frame buffer就不需要初始化dma了,我暂时还没有看明白 fb的框架里面是如何把数据送出去的,请知道的大虾指导一下,谢谢! 是在fb driver的probe里面分配的dma的,数据是通过fb_info与应用层通信的。 dma的设置一般都显示芯片中的一些寄存器,这个你要在spec上找。一般就是设置取数据的大小,物理地址首地址什么的。然后就是把dma的地址map一下,返回到上层去用325
326 static int __init lcdc_fuck_probe(struct platform_device *pdev)
327 {
328 if (pdev->id == 0)
329 platform_data = pdev->dev.platform_data;
330 if (pdev->id == 1) {
331 lcdc_fuck_config_gpios();
332 msm_fb_add_device(pdev);
333 }
334 return 0;
335 }
一般是pdev和他联系起来的
具体的就看msm_fb_add_device里面 probe里面用dma_alloc_writecombie等等函数,单调双返回,返回的虚拟地址给CPU,物理地址给DMA……
页:
[1]