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);

posted @ 2023-03-16 16:33  吴燕青  阅读(80)  评论(0)    收藏  举报