mxsfb.c阅读
platform_get_resource(,IORESOURCE_MEM,)获取设备树提供的设备基地址,写在reg里
of_parse_phandle(,“display”,);找到设备树的display句柄
of_get_display_timings();获取display-timings
mxsfb_set_par;设置寄存器
LCDIF_CTRL设置:BYPASS_COUNT,MASTER=1
LCDIF_CTRL1设置:BYTE_PACKING_FORMAT=0x07
LCDIF_VDCTRL0设置:ENABLE_PRESENT=1,VSYNC_PERIOD_UNIT=1,VSYNC_PULSE_WIDTH_UNIT=1
LCDIF_VDCTRL1设置:
设备树的bits_per_pixel只有16和32两个选项,其他会被mxsfb_check_var强制改为32.
IMX6ULL参考手册的地址表示一个字节,例如21C_8000到21C_8004表示4个字节。
IMX6ULL的eLCDIF接口寄存器LCDIF_CTRL可以进行位操作
21C_8004表示LCDIF_CTRL_SET地址
21C_8008表示LCDIF_CTRL_CLR地址
21C_800C表示LCDIF_CTRL_TOG地址
例如往21C_8008写1<<12,则表示将LCDIF_CTRL的第12位设置为0而不改变其他位。
writel(CTRL1_VSYNC_EDGE_IRQ_EN,
host->base + LCDC_CTRL1 + REG_CLR);

浙公网安备 33010602011771号