天嵌 ARM开发社区

 找回密码
 注册
查看: 4752|回复: 1

I.MX6Q学习笔记——新版BSP之LCD移植

[复制链接]
freewing 发表于 2015-5-21 16:33:08 | 显示全部楼层 |阅读模式
  本文由博主girlkoo编写,关于E9与TQIMX6Q开发平台LCD移植的文章。
  经过前面的移植,eMMC已经可以在tqimx6q上正常运行了,本文将来移植LCD驱动。

  DTS编写
  imx6的LCD控制器与之前的芯片略有不同,详细的信息可以阅读芯片手册。参考sabrelite开发板的DTS,我们可以添加如下内容:
  1. / {  
  2.     ...  
  3.   
  4.     aliases {  
  5.         mxcfb0 = &mxcfb1;  
  6.     };  
  7.   
  8.     ...  
  9.       
  10.     regulators {  
  11.         ...  
  12.   
  13.         reg_mipi_dsi_pwr_on: mipi_dsi_pwr_on {  
  14.             compatible = "regulator-fixed";  
  15.             regulator-name = "mipi_dsi_pwr_on";  
  16.             gpio = <&gpio6 14 0>;  
  17.             enable-active-high;  
  18.         };   
  19.     };  
  20.       
  21.     ...  
  22.       
  23.     backlight {  
  24.         compatible = "pwm-backlight";  
  25.         pwms = <&pwm1 0 5000000>;  
  26.         brightness-levels = <0 4 8 16 32 64 128 255>;  
  27.         default-brightness-level = <7>;  
  28.     };  
  29.   
  30.     mipi_dsi_reset: mipi-dsi-reset {  
  31.         compatible = "gpio-reset";  
  32.         reset-gpios = <&gpio6 11 GPIO_ACTIVE_LOW>;  
  33.         reset-delay-us = <50>;  
  34.         #reset-cells = <0>;  
  35.     };  
  36.   
  37.     mxcfb1: fb@0 {  
  38.         compatible = "fsl,mxc_sdc_fb";  
  39.         disp_dev = "lcd";  
  40.         interface_pix_fmt = "RGB24";  
  41.         mode_str ="CLAA-WVGA";  
  42.         default_bpp = <24>;  
  43.         int_clk = <0>;  
  44.         late_init = <0>;  
  45.         status = "okay";  
  46.     };  
  47. };  
  48.   
  49. ...  
  50.   
  51. &mipi_dsi {  
  52.     dev_id = <0>;  
  53.     disp_id = <1>;  
  54.     lcd_panel = "TRULY-WVGA";  
  55.     disp-power-on-supply = <&#174;_mipi_dsi_pwr_on>;  
  56.     resets = <&mipi_dsi_reset>;  
  57.     status = "okay";  
  58. };  
  59.   
  60. ...
复制代码



  添加以上内容后重新编译并烧写DTB。

  测试方法

  用新的DTB启动内核会发现屏幕上出现了四只可爱的小企鹅,我这里就不发图片了,只附上完整的内核启动Log,详细如下:
  1. U-Boot 2013.04-04987-g98fdbdc-dirty (May 03 2015 - 11:46:24)  
  2.   
  3. CPU:   Freescale i.MX6Q rev1.2 at 792 MHz  
  4. CPU:   Temperature 23 C, calibration data: 0x54e4bb69  
  5. Reset cause: POR  
  6. Board: MX6Q/SDL-SabreSD  
  7. I2C:   ready  
  8. DRAM:  1 GiB  
  9. MMC:   FSL_SDHC: 0, FSL_SDHC: 1, FSL_SDHC: 2  
  10. No panel detected: default to Hannstar-XGA  
  11. Display: Hannstar-XGA (1024x768)  
  12. In:    serial  
  13. Out:   serial  
  14. Err:   serial  
  15. mmc0 is current device  
  16. Net:   Phy not found  
  17. PHY reset timed out  
  18. FEC [PRIME]  
  19. Warning: failed to set MAC address  
  20.   
  21. Normal Boot  
  22. Hit any key to stop autoboot:  0   
  23. mmc0 is current device  
  24.   
  25. MMC read: dev # 0, block # 2048, count 12288 ... 12288 blocks read: OK  
  26.   
  27. MMC read: dev # 0, block # 20480, count 2048 ... 2048 blocks read: OK  
  28. ## Booting kernel from Legacy Image at 11ffffc0 ...  
  29.    Image Name:   Linux-3.10.17-80739-g33597e3-dir  
  30.    Image Type:   ARM Linux Kernel Image (uncompressed)  
  31.    Data Size:    5289360 Bytes = 5 MiB  
  32.    Load Address: 12000000  
  33.    Entry Point:  12000000  
  34.    Verifying Checksum ... OK  
  35. ## Flattened Device Tree blob at 18000000  
  36.    Booting using the fdt blob at 0x18000000  
  37.    XIP Kernel Image ... OK  
  38. OK  
  39.    Using Device Tree in place at 18000000, end 1800cb83  
  40.   
  41. Starting kernel ...  
  42.   
  43. Booting Linux on physical CPU 0x0  
  44. Linux version 3.10.17-80739-g33597e3-dirty (lilianrong@lenovo) (gcc version 4.7.3 (Ubuntu/Linaro 4.7.3-12ubuntu1) ) #3 SMP PREEMPT Wed May 13 00:16:49 CST 2015  
  45. CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=10c53c7d  
  46. CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache  
  47. Machine: Freescale i.MX6 Quad/DualLite (Device Tree), model: Freescale i.MX6 Quad TQIMX6Q Smart Device Board  
  48. cma: CMA: reserved 320 MiB at 3c000000  
  49. Memory policy: ECC disabled, Data cache writealloc  
  50. PERCPU: Embedded 8 pages/cpu @814fa000 s8896 r8192 d15680 u32768  
  51. Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 260096  
  52. Kernel command line: noinitrd console=ttymxc0,115200 root=/dev/mmcblk0p1 rw rootfstype=ext4 init=/linuxrc  
  53. PID hash table entries: 4096 (order: 2, 16384 bytes)  
  54. Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)  
  55. Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)  
  56. Memory: 1024MB = 1024MB total  
  57. Memory: 697788k/697788k available, 350788k reserved, 0K highmem  
  58. Virtual kernel memory layout:  
  59.     vector  : 0xffff0000 - 0xffff1000   (   4 kB)  
  60.     fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)  
  61.     vmalloc : 0xc0800000 - 0xff000000   (1000 MB)  
  62.     lowmem  : 0x80000000 - 0xc0000000   (1024 MB)  
  63.     pkmap   : 0x7fe00000 - 0x80000000   (   2 MB)  
  64.     modules : 0x7f000000 - 0x7fe00000   (  14 MB)  
  65.       .text : 0x80008000 - 0x80be704c   (12157 kB)  
  66.       .init : 0x80be8000 - 0x80c2a2c0   ( 265 kB)  
  67.       .data : 0x80c2c000 - 0x80c7c260   ( 321 kB)  
  68.        .bss : 0x80c7c260 - 0x80ce5434   ( 421 kB)  
  69. SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1  
  70. Preemptible hierarchical RCU implementation.  
  71. NR_IRQS:16 nr_irqs:16 16  
  72. L310 cache controller enabled  
  73. l2x0: 16 ways, CACHE_ID 0x410000c7, AUX_CTRL 0x32070000, Cache size: 1048576 B  
  74. sched_clock: 32 bits at 3000kHz, resolution 333ns, wraps every 1431655ms  
  75. CPU identified as i.MX6Q, silicon rev 1.2  
  76. Console: colour dummy device 80x30  
  77. Calibrating delay loop... 1581.05 BogoMIPS (lpj=7905280)  
  78. pid_max: default: 32768 minimum: 301  
  79. Mount-cache hash table entries: 512  
  80. CPU: Testing write buffer coherency: ok  
  81. CPU0: thread -1, cpu 0, socket 0, mpidr 80000000  
  82. Setting up static identity map for 0x806106a8 - 0x80610700  
  83. CPU1: Booted secondary processor  
  84. CPU1: thread -1, cpu 1, socket 0, mpidr 80000001  
  85. CPU2: Booted secondary processor  
  86. CPU2: thread -1, cpu 2, socket 0, mpidr 80000002  
  87. CPU3: Booted secondary processor  
  88. CPU3: thread -1, cpu 3, socket 0, mpidr 80000003  
  89. Brought up 4 CPUs  
  90. SMP: Total of 4 processors activated (6324.22 BogoMIPS).  
  91. CPU: All CPU(s) started in SVC mode.  
  92. devtmpfs: initialized  
  93. pinctrl core: initialized pinctrl subsystem  
  94. regulator-dummy: no parameters  
  95. NET: Registered protocol family 16  
  96. DMA: preallocated 256 KiB pool for atomic coherent allocations  
  97. Use WDOG1 as reset source  
  98. syscon 20c8000.anatop: regmap [mem 0x020c8000-0x020c8fff] registered  
  99. vdd1p1: 800 <--> 1375 mV at 1125 mV   
  100. vdd3p0: 2800 <--> 3150 mV at 3000 mV   
  101. vdd2p5: 2000 <--> 2750 mV at 2425 mV   
  102. cpu: 725 <--> 1450 mV at 1150 mV   
  103. vddpu: 725 <--> 1450 mV   
  104. vddsoc: 725 <--> 1450 mV at 1200 mV   
  105. syscon 20e0000.iomuxc-gpr: regmap [mem 0x020e0000-0x020e0037] registered  
  106. syscon 21bc000.ocotp-ctrl: regmap [mem 0x021bc000-0x021bffff] registered  
  107. hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers.  
  108. hw-breakpoint: maximum watchpoint size is 4 bytes.  
  109. imx6q-pinctrl 20e0000.iomuxc: initialized IMX pinctrl driver  
  110. bio: create slab <bio-0> at 0  
  111. mxs-dma 110000.dma-apbh: initialized  
  112. usb_otg_vbus: 5000 mV   
  113. mipi_dsi_pwr_on: no parameters  
  114. i2c-core: driver [max17135] using legacy suspend method  
  115. i2c-core: driver [max17135] using legacy resume method  
  116. SCSI subsystem initialized  
  117. usbcore: registered new interface driver usbfs  
  118. usbcore: registered new interface driver hub  
  119. usbcore: registered new device driver usb  
  120. Linux video capture interface: v2.00  
  121. pps_core: LinuxPPS API ver. 1 registered  
  122. pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>  
  123. PTP clock support registered  
  124. imx-ipuv3 2400000.ipu: IPU DMFC NORMAL mode: 1(0~1), 5B(4,5), 5F(6,7)  
  125. imx-ipuv3 2800000.ipu: IPU DMFC NORMAL mode: 1(0~1), 5B(4,5), 5F(6,7)  
  126. MIPI CSI2 driver module loaded  
  127. Advanced Linux Sound Architecture Driver Initialized.  
  128. cfg80211: Calling CRDA to update world regulatory domain  
  129. Switching to clocksource mxc_timer1  
  130. NET: Registered protocol family 2  
  131. TCP established hash table entries: 8192 (order: 4, 65536 bytes)  
  132. TCP bind hash table entries: 8192 (order: 4, 65536 bytes)  
  133. TCP: Hash tables configured (established 8192 bind 8192)  
  134. TCP: reno registered  
  135. UDP hash table entries: 512 (order: 2, 16384 bytes)  
  136. UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)  
  137. NET: Registered protocol family 1  
  138. RPC: Registered named UNIX socket transport module.  
  139. RPC: Registered udp transport module.  
  140. RPC: Registered tcp transport module.  
  141. RPC: Registered tcp NFSv4.1 backchannel transport module.  
  142. hw perfevents: enabled with ARMv7 Cortex-A9 PMU driver, 7 counters available  
  143. pureg-dummy: no parameters  
  144. imx6_busfreq busfreq.15: DDR medium rate not supported.  
  145. Bus freq driver module loaded  
  146. VFS: Disk quotas dquot_6.5.2  
  147. Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)  
  148. NFS: Registering the id_resolver key type  
  149. Key type id_resolver registered  
  150. Key type id_legacy registered  
  151. jffs2: version 2.2. (NAND) 漏 2001-2006 Red Hat, Inc.  
  152. fuse init (API version 7.22)  
  153. msgmni has been set to 2002  
  154. io scheduler noop registered  
  155. io scheduler deadline registered  
  156. io scheduler cfq registered (default)  
  157. imx-weim 21b8000.weim: WEIM driver registered.  
  158. mxc_mipi_dsi 21e0000.mipi: i.MX MIPI DSI driver probed  
  159. MIPI DSI driver module loaded  
  160. mxc_sdc_fb fb.23: register mxc display driver lcd  
  161. Console: switching to colour frame buffer device 100x30  
  162. imx-sdma 20ec000.sdma: no iram assigned, using external mem  
  163. imx-sdma 20ec000.sdma: loaded firmware 1.1  
  164. imx-sdma 20ec000.sdma: initialized  
  165. Serial: IMX driver  
  166. 2020000.serial: ttymxc0 at MMIO 0x2020000 (irq = 58) is a IMX  
  167. console [ttymxc0] enabled  
  168. 21e8000.serial: ttymxc1 at MMIO 0x21e8000 (irq = 59) is a IMX  
  169. 21ec000.serial: ttymxc2 at MMIO 0x21ec000 (irq = 60) is a IMX  
  170. 21f0000.serial: ttymxc3 at MMIO 0x21f0000 (irq = 61) is a IMX  
  171. 21f4000.serial: ttymxc4 at MMIO 0x21f4000 (irq = 62) is a IMX  
  172. serial: Freescale lpuart driver  
  173. [drm] Initialized drm 1.1.0 20060810  
  174. [drm] Initialized vivante 1.0.0 20120216 on minor 0  
  175. brd: module loaded  
  176. loop: module loaded  
  177. CAN device driver interface  
  178. flexcan 2090000.can: device registered (reg_base=c0a28000, irq=142)  
  179. fec 2188000.ethernet (unregistered net_device): Invalid MAC address: 00:00:00:00:00:00  
  180. fec 2188000.ethernet (unregistered net_device): Using random MAC address: 3a:bb:80:a1:c6:b2  
  181. libphy: fec_enet_mii_bus: probed  
  182. fec 2188000.ethernet eth0: registered PHC device 0  
  183. ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver  
  184. usbcore: registered new interface driver usb-storage  
  185. ci_hdrc ci_hdrc.1: doesn't support gadget  
  186. ci_hdrc ci_hdrc.1: EHCI Host Controller  
  187. ci_hdrc ci_hdrc.1: new USB bus registered, assigned bus number 1  
  188. ci_hdrc ci_hdrc.1: USB 2.0 started, EHCI 1.00  
  189. hub 1-0:1.0: USB hub found  
  190. hub 1-0:1.0: 1 port detected  
  191. mousedev: PS/2 mouse device common for all mice  
  192. i2c-core: driver [isl29023] using legacy suspend method  
  193. i2c-core: driver [isl29023] using legacy resume method  
  194. snvs_rtc 20cc034.snvs-rtc-lp: rtc core: registered 20cc034.snvs-rtc-lp as rtc0  
  195. i2c /dev entries driver  
  196. i2c-core: driver [mag3110] using legacy suspend method  
  197. i2c-core: driver [mag3110] using legacy resume method  
  198. imx2-wdt 20bc000.wdog: IMX2+ Watchdog Timer enabled. timeout=60s (nowayout=0)  
  199. cpuidle: using governor ladder  
  200. cpuidle: using governor menu  
  201. sdhci: Secure Digital Host Controller Interface driver  
  202. sdhci: Copyright(c) Pierre Ossman  
  203. sdhci-pltfm: SDHCI platform and OF driver helper  
  204. mmc0: no vqmmc regulator found  
  205. mmc0: no vmmc regulator found  
  206. mmc0: SDHCI controller on 2194000.usdhc [2194000.usdhc] using ADMA  
  207. mmc1: no vqmmc regulator found  
  208. mmc1: no vmmc regulator found  
  209. mmc1: SDHCI controller on 219c000.usdhc [219c000.usdhc] using ADMA  
  210. mmc0: new high speed SDHC card at address e624  
  211. mmcblk0: mmc0:e624 SS08G 7.40 GiB   
  212. mmcblk0: p1  
  213. mmc1: BKOPS_EN bit is not set  
  214. usb 1-1: new high-speed USB device number 2 using ci_hdrc  
  215. mmc1: new high speed DDR MMC card at address 0001  
  216. mmcblk1: mmc1:0001 008G92 7.28 GiB   
  217. mmcblk1boot0: mmc1:0001 008G92 partition 1 4.00 MiB  
  218. mmcblk1boot1: mmc1:0001 008G92 partition 2 4.00 MiB  
  219. mmcblk1rpmb: mmc1:0001 008G92 partition 3 512 KiB  
  220. mmcblk1: p1  
  221. mmcblk1boot1: unknown partition table  
  222. mmcblk1boot0: unknown partition table  
  223. hub 1-1:1.0: USB hub found  
  224. hub 1-1:1.0: 4 ports detected  
  225. Galcore version 4.6.9.9754  
  226. mxc_vdoa 21e4000.vdoa: i.MX Video Data Order Adapter(VDOA) driver probed  
  227. mxc_asrc 2034000.asrc: mxc_asrc registered  
  228. mxc_vpu 2040000.vpu: VPU initialized  
  229. leds-gpio gpio-leds.20: pins are not configured from the driver  
  230. caam 2100000.caam: device ID = 0x0a16010000000000 (Era -524)  
  231. caam 2100000.caam: job rings = 2, qi = 0  
  232. caam 2100000.caam: authenc-hmac-md5-cbc-aes-caam  
  233. caam 2100000.caam: authencesn-hmac-md5-cbc-aes-caam  
  234. caam 2100000.caam: authenc-hmac-sha1-cbc-aes-caam  
  235. caam 2100000.caam: authencesn-hmac-sha1-cbc-aes-caam  
  236. caam 2100000.caam: authenc-hmac-sha224-cbc-aes-caam  
  237. caam 2100000.caam: authencesn-hmac-sha224-cbc-aes-caam  
  238. caam 2100000.caam: authenc-hmac-sha256-cbc-aes-caam  
  239. caam 2100000.caam: authencesn-hmac-sha256-cbc-aes-caam  
  240. caam 2100000.caam: authenc-hmac-md5-cbc-des3_ede-caam  
  241. caam 2100000.caam: authencesn-hmac-md5-cbc-des3_ede-caam  
  242. caam 2100000.caam: authenc-hmac-sha1-cbc-des3_ede-caam  
  243. caam 2100000.caam: authencesn-hmac-sha1-cbc-des3_ede-caam  
  244. caam 2100000.caam: authenc-hmac-sha224-cbc-des3_ede-caam  
  245. caam 2100000.caam: authencesn-hmac-sha224-cbc-des3_ede-caam  
  246. caam 2100000.caam: authenc-hmac-sha256-cbc-des3_ede-caam  
  247. caam 2100000.caam: authencesn-hmac-sha256-cbc-des3_ede-caam  
  248. caam 2100000.caam: authenc-hmac-md5-cbc-des-caam  
  249. caam 2100000.caam: authencesn-hmac-md5-cbc-des-caam  
  250. caam 2100000.caam: authenc-hmac-sha1-cbc-des-caam  
  251. caam 2100000.caam: authencesn-hmac-sha1-cbc-des-caam  
  252. caam 2100000.caam: authenc-hmac-sha224-cbc-des-caam  
  253. caam 2100000.caam: authencesn-hmac-sha224-cbc-des-caam  
  254. caam 2100000.caam: authenc-hmac-sha256-cbc-des-caam  
  255. caam 2100000.caam: authencesn-hmac-sha256-cbc-des-caam  
  256. caam 2100000.caam: ecb-des-caam  
  257. caam 2100000.caam: ecb-arc4-caam  
  258. caam 2100000.caam: ecb-aes-caam  
  259. caam 2100000.caam: ctr-aes-caam  
  260. caam 2100000.caam: cbc-aes-caam  
  261. caam 2100000.caam: ecb-des3-caam  
  262. caam 2100000.caam: cbc-3des-caam  
  263. caam 2100000.caam: cbc-des-caam  
  264. caam 2100000.caam: fsl,sec-v4.0 algorithms registered in /proc/crypto  
  265. platform 2101000.jr0: registering rng-caam  
  266. platform caam_sm: caam_sm_test: 8-byte key test match OK  
  267. platform caam_sm: caam_sm_test: 16-byte key test match OK  
  268. platform caam_sm: caam_sm_test: 32-byte key test match OK  
  269. platform caam_secvio.25: security violation service handlers armed  
  270. usbcore: registered new interface driver usbhid  
  271. usbhid: USB HID core driver  
  272. i2c-core: driver [cs42888] using legacy suspend method  
  273. i2c-core: driver [cs42888] using legacy resume method  
  274. TCP: cubic registered  
  275. NET: Registered protocol family 10  
  276. sit: IPv6 over IPv4 tunneling driver  
  277. NET: Registered protocol family 17  
  278. can: controller area network core (rev 20120528 abi 9)  
  279. NET: Registered protocol family 29  
  280. can: raw protocol (rev 20120528)  
  281. can: broadcast manager protocol (rev 20120528 t)  
  282. can: netlink gateway (rev 20130117) max_hops=1  
  283. 8021q: 802.1Q VLAN Support v1.8  
  284. Key type dns_resolver registered  
  285. VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4  
  286. input: gpio-keys.19 as /devices/soc0/gpio-keys.19/input/input0  
  287. snvs_rtc 20cc034.snvs-rtc-lp: setting system clock to 1970-01-01 00:00:00 UTC (0)  
  288. ALSA device list:  
  289.   No soundcards found.  
  290. EXT4-fs (mmcblk0p1): recovery complete  
  291. EXT4-fs (mmcblk0p1): mounted filesystem with ordered data mode. Opts: (null)  
  292. VFS: Mounted root (ext4 filesystem) on device 179:1.  
  293. devtmpfs: mounted  
  294. Freeing unused kernel memory: 264K (80be8000 - 80c2a000)  
  295. ----------mount all..........  
  296. ----------Starting mdev......  
  297.   
  298. Please press Enter to activate this console.  
复制代码



  至此,LCD驱动的移植工作就完成了。有任何疑问欢迎留言讨论。






qqqq1637 发表于 2017-4-18 15:07:25 | 显示全部楼层
请问有关于lvds驱动的移植吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-4-20 04:07 , Processed in 1.031250 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表