博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
s6e3ha3 amoled屏
阅读量:4073 次
发布时间:2019-05-25

本文共 10204 字,大约阅读时间需要 34 分钟。

1.确定系统所使用的dts

串口打印:Machine: Qualcomm Technologies, Inc. APQ 8098 SKUK HDK

推测出所用的dts为apq8098-v2-qrd-skuk-hdk.dts
生成的是apq8098-v2-qrd-skuk-hdk.dtb
确定了所用的dts为kernel/msm-4.4/arch/arm/boot/dts/qcom/apq8098-v2-qrd-skuk-hdk.dts

#include "apq8098-v2.dtsi"#include "msm8998-mdss-panels.dtsi"#include "msm8998-qrd-skuk-hdk.dtsi"/ {    model = "Qualcomm Technologies, Inc. APQ 8098 SKUK HDK bshui";    compatible = "qcom,msm8998-qrd", "qcom,msm8998", "qcom,qrd";    qcom,board-id = <0x06000b 0x10>;};参考:kernel/msm-4.4/Documentation/devicetree/bindings/arm/msm/msm.txtSOC Type(qcom,msm8998-qrd)QRD device:qcom,qrd

所使用的屏

屏:kernel/msm-4.4/arch/arm/boot/dts/qcom/msm8998-mdss-panels.dtsi
显示屏为三星AMOLED屏
基本参数:
Resolution:1440x2560
5.5’ 2x4 lane MIPI DSI

2.AMOLED屏

AMOLED(Active Matrix/Organic Light Emitting Diode)主动矩阵有机发光二极体面板(AMOLED)被称为下一代显示技术,包括三星电子、三星SDI、LG飞利浦都十分重视这项新的显示技术

AMOLED屏幕是单个像素点发光
AMOLED屏幕的构造有三层,AMOLED显示屏幕、触摸感应面板跟外面保护的那层玻璃。Super AMOLED少了中间那层触摸感应面板,而把触摸感应层做在AMOLED显示层上了。Super AMOLED面板比AMOLED屏幕更薄,而且就是原生的触控面板
通过cmdline获取panel型号的dtsi文件节点(qcom,lcd,id)
高通是通过读取panel的id来确定当前使用的panel型号,将panel的型号放在cmdline里面
mdss_mdp.panel=1:dsi:0:qcom,mdss_dsi_s6e3ha3_amoled_wqhd_cmd:config0:1:qcom,
mdss_dsi_s6e3ha3_amoled_wqhd_cmd:config0:cfg:split_dsi

mdss_dsi_s6e3ha3_amoled_wqhd_cmd这个是我们需要找的

在内核里通过cmdline寻找panel的dtsi文件节点获取属性

3.dtsi 文件

找到所用的文件为arch/arm/boot/dts/qcom/dsi-panel-s6e3ha3-amoled-dualmipi-wqhd-cmd.dtsi

被arch/arm/boot/dts/qcom/msm8998-mdss-panels.dtsi引用

&dsi_dual_s6e3ha3_amoled_cmd {    qcom,mdss-dsi-panel-timings = [00 1c 06 06 0b 10 06 07 05 03 04 00];//时序设置    qcom,mdss-dsi-t-clk-post = <0x07>;    qcom,mdss-dsi-t-clk-pre = <0x2a>;};-----------------------------------------------------------------------------cat dsi-panel-s6e3ha3-amoled-dualmipi-wqhd-cmd.dtsi&mdss_mdp {    dsi_dual_s6e3ha3_amoled_cmd: qcom,mdss_dsi_s6e3ha3_amoled_wqhd_cmd{        qcom,mdss-dsi-panel-name =            "Dual s6e3ha3 amoled cmd mode dsi panel"; //用作面板描述名称的字符串        qcom,mdss-dsi-panel-type = "dsi_cmd_mode";//启用命令模式dsi_video_mode 启用视频模式        qcom,mdss-dsi-panel-framerate = <60>;//指定面板的帧率每秒60帧        qcom,mdss-dsi-virtual-channel-id = <0>;//指定虚拟频道标识符        qcom,mdss-dsi-stream = <0>;//指定要使用的数据包流        qcom,mdss-dsi-panel-width = <720>;//指定面板宽度单位像素        qcom,mdss-dsi-panel-height = <2560>;//指定面板高度        qcom,mdss-dsi-h-front-porch = <100>;//水平前沿值        qcom,mdss-dsi-h-back-porch = <100>;//水平后沿值        qcom,mdss-dsi-h-pulse-width = <40>;//水平脉冲宽度        qcom,mdss-dsi-h-sync-skew = <0>;//水平同步倾斜值        qcom,mdss-dsi-v-back-porch = <31>;//垂直后沿值        qcom,mdss-dsi-v-front-porch = <30>;//垂直前沿值        qcom,mdss-dsi-v-pulse-width = <8>;//垂直脉冲宽度        qcom,mdss-dsi-h-left-border = <0>;//水平左边框        qcom,mdss-dsi-h-right-border = <0>;//水平右边框        qcom,mdss-dsi-v-top-border = <0>;//垂直上边框        qcom,mdss-dsi-v-bottom-border = <0>;//垂直下边框        qcom,mdss-dsi-bpp = <24>;//指定面板的每像素位数24=rgb888        qcom,mdss-dsi-underflow-color = <0xff>;        qcom,mdss-dsi-border-color = <0>;//如有边框,定义边框颜色值        qcom,mdss-dsi-color-order = "rgb_swap_rgb";        qcom,mdss-dsi-on-command = [05 01 00 00 05 00 02 11 00 //mipi dsi 命令                    39 01 00 00 00 00 05 2a 00 00 05 9f                    39 01 00 00 00 00 05 2b 00 00 09 ff                    39 01 00 00 00 00 03 f0 5a 5a                    39 01 00 00 00 00 02 b0 10                    39 01 00 00 00 00 02 b5 a0                    39 01 00 00 00 00 02 c4 03                    39 01 00 00 00 00 0a                        f6 42 57 37 00 aa cc d0 00 00                    39 01 00 00 00 00 02 f9 03                    39 01 00 00 00 00 14                        c2 00 00 d8 d8 00 80 2b 05 08                        0e 07 0b 05 0d 0a 15 13 20 1e                    39 01 00 00 78 00 03 f0 a5 a5                    39 01 00 00 00 00 02 35 00                    39 01 00 00 00 00 02 53 20                    39 01 00 00 00 00 02 51 60                    05 01 00 00 05 00 02 29 00];        qcom,mdss-dsi-off-command = [05 01 00 00 3c 00 02 28 00                    05 01 00 00 b4 00 02 10 00];//面板关闭命令        qcom,mdss-dsi-on-command-state = "dsi_lp_mode";//定用于发送 ON 命令的控制状态的dsi_lp_mode:低功率模式        qcom,mdss-dsi-off-command-state = "dsi_hs_mode";//指定用于发送 OFF 命令的控制状态的dsi_hs_mode:高速模式        qcom,mdss-dsi-lp-mode-on = [39 00 00 00 05 00 03 f0 5a 5a                    39 00 00 00 05 00 03 f1 5a 5a                    39 00 00 00 05 00 03 fc 5a 5a                    39 00 00 00 05 00 02 b0 17                    39 00 00 00 05 00 02 cb 10                    39 00 00 00 05 00 02 b0 2d                    39 00 00 00 05 00 02 cb cd                    39 00 00 00 05 00 02 b0 0e                    39 00 00 00 05 00 02 cb 02                    39 00 00 00 05 00 02 b0 0f                    39 00 00 00 05 00 02 cb 09                    39 00 00 00 05 00 02 b0 02                    39 00 00 00 05 00 02 f2 c9                    39 00 00 00 05 00 02 b0 03                    39 00 00 00 05 00 02 f2 c0                    39 00 00 00 05 00 02 b0 03                    39 00 00 00 05 00 02 f4 aa                    39 00 00 00 05 00 02 b0 08                    39 00 00 00 05 00 02 b1 30                    39 00 00 00 05 00 02 b0 09                    39 00 00 00 05 00 02 b1 0a                    39 00 00 00 05 00 02 b0 0d                    39 00 00 00 05 00 02 b1 10                    39 00 00 00 05 00 02 b0 00                    39 00 00 00 05 00 02 f7 03                    39 00 00 00 05 00 02 fe 30                    39 01 00 00 05 00 02 fe b0];        qcom,mdss-dsi-lp-mode-off = [39 00 00 00 05 00 03 f0 5a 5a                    39 00 00 00 05 00 03 f1 5a 5a                    39 00 00 00 05 00 03 fc 5a 5a                    39 00 00 00 05 00 02 b0 2d                    39 00 00 00 05 00 02 cb 4d                    39 00 00 00 05 00 02 b0 17                    39 00 00 00 05 00 02 cb 04                    39 00 00 00 05 00 02 b0 0e                    39 00 00 00 05 00 02 cb 06                    39 00 00 00 05 00 02 b0 0f                    39 00 00 00 05 00 02 cb 05                    39 00 00 00 05 00 02 b0 02                    39 00 00 00 05 00 02 f2 b8                    39 00 00 00 05 00 02 b0 03                    39 00 00 00 05 00 02 f2 80                    39 00 00 00 05 00 02 b0 03                    39 00 00 00 05 00 02 f4 8a                    39 00 00 00 05 00 02 b0 08                    39 00 00 00 05 00 02 b1 10                    39 00 00 00 05 00 02 b0 09                    39 00 00 00 05 00 02 b1 0a                    39 00 00 00 05 00 02 b0 0d                    39 00 00 00 05 00 02 b1 80                    39 00 00 00 05 00 02 b0 00                    39 00 00 00 05 00 02 f7 03                    39 00 00 00 05 00 02 fe 30                    39 01 00 00 05 00 02 fe b0];        qcom,mdss-dsi-h-sync-pulse = <0>;//指定面板的脉冲模式选项0 = 不在 vs/ve 数据包之后发送        qcom,mdss-dsi-traffic-mode = "non_burst_sync_event";//指定面板流量模式non_burst_sync_event使用同步        qcom,mdss-dsi-lane-map = "lane_map_0123";        qcom,mdss-dsi-bllp-eof-power-mode;//用于确定低功率空白期bllp-eof模式        qcom,mdss-dsi-bllp-power-mode;//bllp power模式        qcom,mdss-dsi-tx-eot-append;        qcom,dcs-cmd-by-left;        qcom,mdss-dsi-lane-0-state; //指定是否启用数据通道 0 的布尔值        qcom,mdss-dsi-lane-1-state;        qcom,mdss-dsi-lane-2-state;        qcom,mdss-dsi-lane-3-state;        qcom,mdss-dsi-wr-mem-start = <0x2c>;        qcom,mdss-dsi-wr-mem-continue = <0x3c>;        qcom,mdss-dsi-te-pin-select = <1>;        qcom,mdss-dsi-te-dcs-command = <1>;        qcom,mdss-tear-check-sync-cfg-height = <2650>;        qcom,mdss-dsi-te-using-te-pin;        qcom,mdss-dsi-panel-timings =            [eb 38 26 00 6a 66 32 3c 2f 03 04 00];//长度为 12 的数组,用于指定面板的PHY 定时设置        qcom,mdss-dsi-t-clk-post = <0x2c>;//指定模式切换后的字节时钟周期        qcom,mdss-dsi-t-clk-pre = <0x1c>;//指定模式切换前的字节时钟周期        qcom,mdss-dsi-dma-trigger = "trigger_sw";//指定用于 DMA 路径的触发机制trigger_sw由软件触发        qcom,mdss-dsi-mdp-trigger = "none";//指定用于 MDP 路径的触发机制,none=无触发        qcom,mdss-dsi-lp11-init;        qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_dcs";        qcom,mdss-dsi-bl-min-level = <1>;        qcom,mdss-dsi-bl-max-level = <255>;        qcom,mdss-pan-physical-width-dimension = <68>;        qcom,mdss-pan-physical-height-dimension = <122>;        qcom,mdss-dsi-reset-sequence = <1 10>, <0 10>, <1 10>;    };};

4.msm显示系统框架

# ls out/target/product/msm8998/obj/kernel/msm-4.4/drivers/video/fbdev/msm/built-in.o           mdss-dsi.o           mdss_mdp_cdm.o              mdss_mdp_pp_stub.odsi_status_6g.o      mdss_dsi_panel.o     mdss_mdp_ctl.o              mdss_mdp_pp_v1_7.omdss_cec_core.o      mdss_dsi_phy.o       mdss_mdp_debug.o            mdss_mdp_pp_v3.omdss_compat_utils.o  mdss_dsi_phy_v3.o    mdss_mdp_intf_cmd.o         mdss_mdp_splash_logo.omdss_dba_utils.o     mdss_dsi_status.o    mdss_mdp_intf_video.o       mdss_mdp_util.omdss_debug.o         mdss_fb.o            mdss_mdp_intf_writeback.o   mdss_mdp_wfd.omdss_debug_xlog.o    mdss_hdcp_1x.o       mdss_mdp_layer.o            mdss_panel.omdss_dp_aux.o        mdss_hdmi_audio.o    mdss_mdp.o                  mdss_rotator.omdss_dp_hdcp2p2.o    mdss_hdmi_cec.o      mdss-mdp.o                  mdss_smmu.omdss_dp.o            mdss_hdmi_edid.o     mdss_mdp_overlay.o          mdss_util.omdss_dp_util.o       mdss_hdmi_hdcp2p2.o  mdss_mdp_pipe.o             mdss_wb.omdss_dsi_clk.o       mdss_hdmi_panel.o    mdss_mdp_pp_cache_config.o  modules.builtinmdss_dsi_cmd.o       mdss_hdmi_tx.o       mdss_mdp_pp_common.o        modules.ordermdss_dsi_host.o      mdss_hdmi_util.o     mdss_mdp_pp_debug.o         msm_mdss_io_8974.omdss_dsi.o           mdss_io_util.o       mdss_mdp_pp.oMDSS软件驱动    mdss_fb.c 顶层IOCTL/native framebuffer接口    mdss_mdp.c --MDP(Mobile Development Platforms)资源,包括时钟/中断/bus-bw/power    mdss_mdp_overlay.c--Overlay/DMA 顶层API    mdss_mdp_ctl.c--将(LM,DSPP,Ping-pong,interface)硬件集群    mdss_mdp_pipe.c--SRC pipe相关处理    mdss_mdp_intf_cmd.c/mdss_mdp_intf_video.c/mdss_mdp_intf_writeback.c--MDP面板接口处理    mdss_mdp_pp.c--后处理相关实现    mdss_mdp_rotator.c--旋转API(overlay_set, overlay_playinterface)Linux标准的fb架构没有MDP这个东西,高通提供了MDSS(multimedia display subsystem)进行管理高通使用MDP作为显示处理器,提高了显示效果,并提供了图像旋转,overlay等功能

转载地址:http://fakni.baihongyu.com/

你可能感兴趣的文章
3D游戏常用技巧Normal Mapping (法线贴图)原理解析——基础篇
查看>>
学UNITY的基础
查看>>
What is a RaycastHit normal?
查看>>
Vector3.forward
查看>>
Unity新功能|全息模拟器
查看>>
[Unity3D]深度相机 Depth Camera
查看>>
发布和运行HOLOLENS程序注意这里要勾上,不然就成普通的UWP程序了!
查看>>
Hololens入门之语音识别(语音命令)
查看>>
[自学总结] Unity5.3 API 之 Audio Mixer
查看>>
UNITY 之FixedUpdate
查看>>
HOLOLENS程序发布,这个界面调用的图片
查看>>
看出在玩啥了吗?想不想体验下
查看>>
Time.deltaTime 的平均值在0.1-0.2左右
查看>>
向量加减法运算及其几何意义
查看>>
magnitude是精确距离,sqrMagnitude是节省CPU的粗略距离,精度有损失
查看>>
学习和研究下unity3d的四元数 Quaternion
查看>>
一些最最基本的几何图形公式
查看>>
Non-convex MeshCollider with non-kinematic Rigidbody is no longer supported in Unity 5.
查看>>
理解四元数的一些文章
查看>>
Unity Shader入门
查看>>