新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > S5PV210(TQ210)學習筆記——LCD驅動編寫

        S5PV210(TQ210)學習筆記——LCD驅動編寫

        作者: 時間:2016-11-28 來源:網絡 收藏
      1. lcd_info->screen_size=800*480*4;
      2. lcd_info->pseudo_palette=pseudo_palette;
      3. lcd_info->fbops=&lcd_fbops;
      4. /*配置硬件資源*/
      5. /*映射內存*/
      6. display_control=ioremap(0xe0107008,4);
      7. gpf0con=ioremap(0xE0200120,4);
      8. gpf1con=ioremap(0xE0200140,4);
      9. gpf2con=ioremap(0xE0200160,4);
      10. gpf3con=ioremap(0xE0200180,4);
      11. gpd0con=ioremap(0xE02000A0,4);
      12. gpd0dat=ioremap(0xE02000A4,4);
      13. vidcon0=ioremap(0xF8000000,4);
      14. vidcon1=ioremap(0xF8000004,4);
      15. vidtcon0=ioremap(0xF8000010,4);
      16. vidtcon1=ioremap(0xF8000014,4);
      17. vidtcon2=ioremap(0xF8000018,4);
      18. wincon0=ioremap(0xF8000020,4);
      19. vidosd0a=ioremap(0xF8000040,4);
      20. vidosd0b=ioremap(0xF8000044,4);
      21. vidosd0c=ioremap(0xF8000048,4);
      22. vidw00add0b0=ioremap(0xF80000A0,4);
      23. vidw00add1b0=ioremap(0xF80000D0,4);
      24. shodowcon=ioremap(0xF8000034,4);
      25. /*配置GPIO*/
      26. *gpf0con=0x22222222;
      27. *gpf1con=0x22222222;
      28. *gpf2con=0x22222222;
      29. *gpf3con=0x22222222;
      30. *gpd0con&=~0xf;
      31. *gpd0con|=0x1;
      32. *gpd0dat|=1<<0;
      33. *display_control=2<<0;
      34. /*使能時鐘*/
      35. lcd_clk=clk_get(NULL,"lcd");
      36. if(!lcd_clk||IS_ERR(lcd_clk)){
      37. printk(KERN_INFO"failedtogetlcdclocksource");
      38. }
      39. clk_enable(lcd_clk);
      40. /*配置LCD控制器*/
      41. *vidcon0=(4<<6)|(1<<4);
      42. *vidcon1=(1<<6)|(1<<5)|(1<<4);
      43. *vidtcon0=(17<<16)|(26<<8)|(4<<0);
      44. *vidtcon1=(40<<16)|(214<<8)|(4<<0);
      45. *vidtcon2=(479<<11)|(799<<0);
      46. *wincon0&=~(0xf<<2);
      47. *wincon0|=(0xb<<2);
      48. *vidosd0a=(0<<11)|(0<<0);
      49. *vidosd0b=(799<<11)|(479<<0);
      50. *vidosd0c=480*800;
      51. //物理地址
      52. lcd_info->screen_base=dma_alloc_writecombine(NULL,
      53. lcd_info->fix.smem_len,(dma_addr_t*)&(lcd_info->fix.smem_start),GFP_KERNEL);
      54. *vidw00add0b0=lcd_info->fix.smem_start;
      55. *vidw00add1b0=lcd_info->fix.smem_start+lcd_info->fix.smem_len;
      56. *shodowcon=0x1;
      57. //開啟狀態
      58. *wincon0|=1;
      59. *vidcon0|=3;
      60. /*注冊fb_info*/
      61. ret=register_framebuffer(lcd_info);
      62. returnret;
      63. }
      64. staticvoidlcd_exit(void){
      65. unregister_framebuffer(lcd_info);
      66. dma_free_writecombine(NULL,lcd_info->fix.smem_len,
      67. (void*)lcd_info->screen_base,(dma_addr_t)lcd_info->fix.smem_start);
      68. iounmap(shodowcon);
      69. iounmap(vidw00add1b0);
      70. iounmap(vidw00add0b0);
      71. iounmap(vidosd0c);
      72. iounmap(vidosd0b);
      73. iounmap(vidosd0a);
      74. iounmap(wincon0);
      75. iounmap(vidtcon2);
      76. iounmap(vidtcon1);
      77. iounmap(vidtcon0);
      78. iounmap(vidcon1);
      79. iounmap(vidcon0);
      80. iounmap(gpd0dat);
      81. iounmap(gpd0con);
      82. iounmap(gpf3con);
      83. iounmap(gpf2con);
      84. iounmap(gpf1con);
      85. iounmap(gpf0con);
      86. framebuffer_release(lcd_info);
      87. }
      88. module_init(lcd_init);
      89. module_exit(lcd_exit);
      90. MODULE_LICENSE("GPL");
      91. 將上面的代碼在自己的內核環境下編譯,然后下載到開發板上試運行即可。

        本文引用地址:http://www.104case.com/article/201611/322809.htm

        在安裝驅動程序前執行指令:

        1. ls/dev/fb*
        如果有fb0或者其他fb*存在,應該修改內和配置,取消其他fb的配置,如果看不到fb*設備,則可以按照如下步驟進行測試。
        測試前還需要修改下內核配置,有兩個原因:

        (1) 內核默認配置下不支持Frame buffer

        (2) 我們的驅動程序中用到了三個函數:

        1. .fb_fillrect=cfb_fillrect,
        2. .fb_copyarea=cfb_copyarea,
        3. .fb_imageblit=cfb_imageblit,
        這三個函數是引用的內核中的函數,不是我們自行實現的。



        關鍵詞: S5PV210LCD驅動編

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 资溪县| 龙海市| 达州市| 台北县| 郧西县| 神池县| 开江县| 西乌珠穆沁旗| 白沙| 邢台市| 兴化市| 崇明县| 宾阳县| 台湾省| 阿克| 麻阳| 余干县| 延庆县| 琼中| 贵州省| 加查县| 崇阳县| 太仆寺旗| 瓦房店市| 昭觉县| 莱西市| 鄂伦春自治旗| 阿尔山市| 河间市| 仁寿县| 黑山县| 洱源县| 佛教| 新邵县| 察隅县| 关岭| 伊宁县| 横山县| 普洱| 留坝县| 永靖县|