linu

linux LCD驱动 及 ARM 寄存器映射

别说谁变了你拦得住时间么 提交于 2019-12-04 14:43:44
折腾了2天LCD驱动程序才发现系统其实已经移植了LCD驱动。设备名为/dev/fb0. 白折腾。 不过也有好处,搞了一遍基本了解LCD驱动的实现方法。 这里涉及到一个问题是如何把ARM寄存器地址空间映射到linux内核虚拟地址空间的问题。是通过更新 map_desc对象来实现的: static struct map_desc at91sam9g45_io_desc[] __initdata = { { .virtual = AT91_VA_BASE_SYS, .pfn = __phys_to_pfn(AT91_BASE_SYS), .length = SZ_16K, .type = MT_DEVICE, }, { .virtual = AT91_IO_VIRT_BASE - AT91SAM9G45_SRAM_SIZE, .pfn = __phys_to_pfn(AT91SAM9G45_SRAM_BASE), .length = AT91SAM9G45_SRAM_SIZE, .type = MT_DEVICE, }, { .virtual = AT91_IO_VIRT_BASE - AT91SAM9G45_SRAM_SIZE - SZ_8K, .pfn = __phys_to_pfn(AT91SAM9G45_LCDC_BASE), .length = SZ_8K, .type =