资源描述:
《linux的lcd驱动源码分析及移植》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Linux的LCD驱动源码分析及移植(三部曲)第一部分:基于ARM9处理器的linux-2.6.32.2操作系统内核移植手记part5.1(LCD驱动源码分析及移植之platformdevice)1.与LCD控制器硬件相关的寄存器内容请参照三星S3C2440A技术手册中的第15章。2. LCDController的平台设备定义如下(文件位于linux/arch/arm/plat-s3c24xx/devs.c):1./* LCDController */2.3.staticstructresources3c_lcd_resource[] = {4.
2、 [0] = {5. .start = S3C24XX_PA_LCD,6. .end = S3C24XX_PA_LCD + S3C24XX_SZ_LCD - 1,7. .flags = IORESOURCE_MEM,8. },9. [1] = {10. .start = IRQ_LCD,11. .end = IRQ_LCD,12. .flags = IORESOURCE_IRQ,13. }14.15.};16.17.staticu64s3c_dev
3、ice_lcd_dmamask = 0xffffffffUL;18.19.structplatform_devices3c_device_lcd = {20. .name = "s3c2410-lcd",21. .id = -1,22. .num_resources = ARRAY_SIZE(s3c_lcd_resource),23. .resource = s3c_lcd_resource,24. .dev = {25. .dma_mask =
4、 &s3c_device_lcd_dmamask,26. .coherent_dma_mask = 0xffffffffUL27. }28.};29.30.EXPORT_SYMBOL(s3c_device_lcd);平台设备的结构体定义为s3c_device_lcd,该设备在平台总线中的名字取为s3c2410-lcd,该平台设备申请的两个板级资源为以S3C24XX_PA_LCD为起始的IORESOURCE_MEM资源和一个定义为IRQ_LCD的IORESOURCE_IRQ资源。其中,1.#defineS3C24XX_PA_L
5、CDS3C2410_PA_LCD1./* LCDcontroller */2.#defineS3C2410_PA_LCD (0x4D000000)3.#defineS3C24XX_SZ_LCD SZ_1M0x4D000000为LCDCON1寄存器的地址。3.LCDController的平台设备的注册如下(文件位于linux/arch/arm/mach-s3c2440/mach-smdk2440.c):1.staticstructplatform_device *smdk2440_devices[] __initdata = {2.
6、 &s3c_device_usb,3.4. &s3c_device_lcd,5.6. &s3c_device_wdt,7. &s3c_device_i2c0,8. &s3c_device_iis,9. &s3c_device_rtc,10.};以上第4行代码将lcd平台设备注册进内核。4.在系统初始化时将smdk2440_fb_info结构体添加进平台设备的私有结构中。具体流程如下:4.11.MACHINE_START(S3C2440, "SMDK2440")2. /* Maintainer: BenDooks <
7、ben@fluff.org> */3. .phys_io = S3C2410_PA_UART,4. .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc,5. .boot_params = S3C2410_SDRAM_PA + 0x100,6.7. .init_irq = s3c24xx_init_irq,8. .map_io = smdk2440_map_io,9. .init_machine = smdk2440
8、_machine_init,10. .timer = &s3c24xx_timer,11