0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

fireflyFace-RK3399主板LCD 使用

firefly 来源:firefly 作者:firefly 2019-12-04 10:05 次阅读

LCD 使用

简介

Face-RK3399开发板支持MIPI屏幕,接口对应板子上的位置如下图:

MIPI屏

客户根据需要在自行添加mipi硬件接口之后,配置MIPI屏的 Timing dts文件,在kernel/arch/arm64/boot/dts/rockchip/firefly-face-mipi8.dts中可以看到以下语句:

display-timings { native-mode = 《&timing0》; timing0: timing0 { clock-frequency = 《67000000》;//《80000000》; hactive = 《800》;//《768》; vactive = 《1280》; hsync-len = 《20》; //20, 50 hback-porch = 《20》; //50, 56 hfront-porch = 《32》;//50, 30 vsync-len = 《4》; vback-porch = 《4》; vfront-porch = 《8》; hsync-active = 《0》; vsync-active = 《0》; de-active = 《0》; pixelclk-active = 《0》; }; }; };

Kernel 在kernel/drivers/gpu/drm/panel/panel-simple.c中可以看到在初始化函数panel_simple_probe中初始化了获取时序的函数。

static int panel_simple_probe(struct device *dev, const struct panel_desc *desc){ ··· panel-》base.funcs = &panel_simple_funcs; ··· }

该函数的在kernel/drivers/gpu/drm/panel/panel-simple.c中也有定义:

static int panel_simple_get_timings(struct drm_panel *panel,unsigned int num_timings,struct display_timing *timings) { struct panel_simple *p = to_panel_simple(panel); unsigned int i; if (!p-》desc) return 0; if (p-》desc-》num_timings 《 num_timings) num_timings = p-》desc-》num_timings; if (timings) for (i = 0; i 《 num_timings; i++) timings[i] = p-》desc-》timings[i]; return p-》desc-》num_timings; }

mipi屏上完电后需要发送初始化指令才能使之工作,可以在kernel/arch/arm64/boot/dts/rockchip/firefly-face-mipi8.dts中可以看到mipi的初始化指令列表:

&mipi_dsi { status = “okay”; 。。。 panel-init-sequence = [ 05 20 01 29 05 96 01 11 。。。 ]; panel-exit-sequence = [ 05 05 01 28 05 78 01 10 ]; 。。。 };

命令格式以及说明可参考以下附件: Rockchip DRM Panel Porting Guide.pdf

发送指令可以看到在kernel/drivers/gpu/drm/panel/panel-simple.c文件中的操作:

static int panel_simple_enable(struct drm_panel *panel) { struct panel_simple *p = to_panel_simple(panel); int err; if (p-》enabled) return 0; DBG(“enter\n”); if (p-》on_cmds) { err = panel_simple_dsi_send_cmds(p, p-》on_cmds); if (err) dev_err(p-》dev, “failed to send on cmds\n”); } if (p-》desc && p-》desc-》delay.enable) { DBG(“p-》desc-》delay.enable=%d\n”, p-》desc-》delay.enable); msleep(p-》desc-》delay.enable); } if (p-》backlight) { DBG(“open backlight\n”); p-》backlight-》props.power = FB_BLANK_UNBLANK; backlight_update_status(p-》backlight); } p-》enabled = true; return 0; }

U-boot 发送指令可以看到在u-boot/drivers/video/rockchip-dw-mipi-dsi.c文件中的操作:

static int rockchip_dw_mipi_dsi_enable(struct display_state *state) { struct connector_state *conn_state = &state-》conn_state; struct crtc_state *crtc_state = &state-》crtc_state; const struct rockchip_connector *connector = conn_state-》connector; const struct dw_mipi_dsi_plat_data *pdata = connector-》data; struct dw_mipi_dsi *dsi = conn_state-》private; u32 val; DBG(“enter\n”); dw_mipi_dsi_set_mode(dsi, DW_MIPI_DSI_VID_MODE); dsi_write(dsi, DSI_MODE_CFG, ENABLE_CMD_MODE); dw_mipi_dsi_set_mode(dsi, DW_MIPI_DSI_VID_MODE); if (!pdata-》has_vop_sel) return 0; if (pdata-》grf_switch_reg) { if (crtc_state-》crtc_id) val = pdata-》dsi0_en_bit | (pdata-》dsi0_en_bit 《《 16); else val = pdata-》dsi0_en_bit 《《 16; writel(val, RKIO_GRF_PHYS + pdata-》grf_switch_reg); } debug(“vop %s output to dsi0\n”, (crtc_state-》crtc_id) ? “LIT” : “BIG”); //rockchip_dw_mipi_dsi_read_allregs(dsi); return 0; }

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6085

    浏览量

    35195
  • Firefly
    +关注

    关注

    2

    文章

    538

    浏览量

    6980
收藏 人收藏

    评论

    相关推荐

    RK3399芯片主板DLT3399A的串口资料说明

    本文档的主要内容详细介绍的是RK3399芯片主板DLT3399A的串口资料说明。
    发表于 03-25 08:00 28次下载
    <b class='flag-5'>RK3399</b>芯片<b class='flag-5'>主板</b>DLT<b class='flag-5'>3399</b>A的串口资料说明

    firefly ROC-RK3399-PC主板介绍

    ROC-RK3399-PC是一款迷你PC主板,体积只有小型手机的大小。
    的头像 发表于 11-13 11:51 2629次阅读
    firefly ROC-<b class='flag-5'>RK3399</b>-PC<b class='flag-5'>主板</b>介绍

    Firefly-RK3399--LCD介绍

    Firefly-RK3399开发板外置了两个LCD屏接口,一个是EDP,一个是MIPI
    的头像 发表于 11-22 10:17 6374次阅读
    Firefly-<b class='flag-5'>RK3399--LCD</b>介绍

    fireflyFace-RK3399主板UART串口简介

    Face-RK3399 外置3个增强功能串口(UART)的功能,分别为UART1,UART2,RS485。
    的头像 发表于 12-04 09:04 8589次阅读

    fireflyFace-RK3399主板TIMER介绍

    RK3399有12 个Timers (timer0-timer11),有12 个Secure Timers(stimer0~stimer11) 和 2 个Timers(pmutimer0
    的头像 发表于 12-04 09:08 2681次阅读
    <b class='flag-5'>fireflyFace-RK3399</b><b class='flag-5'>主板</b>TIMER介绍

    fireflyFace-RK3399主板RTC介绍

    Face-RK3399开发板上有 一个集成于RK808上的RTC(Real Time Clock),主要功能有时钟,日历,闹钟,周期性中断,双通道32KHz时钟输出。
    的头像 发表于 12-04 09:11 5537次阅读

    fireflyFace-RK3399主板LED灯介绍

    Face-RK3399 开发板上有 2 个 LED 灯Bule(GPIO2_D3)和Yellow(GPIO2_D2)。
    的头像 发表于 12-04 09:14 3885次阅读

    fireflyFace-RK3399主板PWM输出介绍

    Face-RK3399开发板上引出有 2 路 PWM 输出,
    的头像 发表于 12-04 09:35 4319次阅读

    fireflyFace-RK3399主板I2C控制器介绍

    Face-RK3399 开发板上有 9 个片上 I2C 控制器,
    的头像 发表于 12-04 09:17 2926次阅读
    <b class='flag-5'>fireflyFace-RK3399</b><b class='flag-5'>主板</b>I2C控制器介绍

    fireflyFace-RK3399主板ADC介绍

    Face-RK3399 开发板上的 AD 接口有两种,分别为:温度传感器 (Temperature Sensor)、逐次逼近ADC (Successive Approximation Register)。
    的头像 发表于 12-04 09:20 3684次阅读

    fireflyFace-RK3399主板启动模式说明

    Face-RK3399 有灵活的启动方式。
    的头像 发表于 12-04 10:16 7258次阅读

    简单介绍RK3399开发板、RK3399主板的相关参数

    用过RK3288主板的朋友都知道,RK3399开发板延续了RK3288的linux系统开源!作为Rockchip旗舰级芯片,RK3399具有
    发表于 12-09 14:14 7262次阅读

    ROC RK3399 PC Pro源代码Linux SDK(仅支持RK3399

    电子发烧友网站提供《ROC RK3399 PC Pro源代码Linux SDK(仅支持RK3399).txt》资料免费下载
    发表于 09-20 16:03 25次下载
    ROC <b class='flag-5'>RK3399</b> PC Pro源代码Linux SDK(仅支持<b class='flag-5'>RK3399</b>)

    rk3566和rk3399的区别

    rk3566和rk3399的区别 Rockchip是中国芯片设计企业,其旗下产品包括rk3566和rk3399芯片,这两种芯片都具有高性能和低成本的优点,但在一些细节上还是存在一定的差
    的头像 发表于 08-15 17:44 1.4w次阅读

    RK3399硬件设计指南

    RK3399是一款基于ARM架构的高性能处理器,常用于嵌入式系统和单板计算机。在进行RK3399硬件设计时,需要考虑多个方面,包括电源、封装、信号传输、外设接口等。本文将详细介绍RK3399硬件
    的头像 发表于 12-28 10:59 1482次阅读