s6e3ha3 amoled屏

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.txt

SOC 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.o
dsi_status_6g.o      mdss_dsi_panel.o     mdss_mdp_ctl.o              mdss_mdp_pp_v1_7.o
mdss_cec_core.o      mdss_dsi_phy.o       mdss_mdp_debug.o            mdss_mdp_pp_v3.o
mdss_compat_utils.o  mdss_dsi_phy_v3.o    mdss_mdp_intf_cmd.o         mdss_mdp_splash_logo.o
mdss_dba_utils.o     mdss_dsi_status.o    mdss_mdp_intf_video.o       mdss_mdp_util.o
mdss_debug.o         mdss_fb.o            mdss_mdp_intf_writeback.o   mdss_mdp_wfd.o
mdss_debug_xlog.o    mdss_hdcp_1x.o       mdss_mdp_layer.o            mdss_panel.o
mdss_dp_aux.o        mdss_hdmi_audio.o    mdss_mdp.o                  mdss_rotator.o
mdss_dp_hdcp2p2.o    mdss_hdmi_cec.o      mdss-mdp.o                  mdss_smmu.o
mdss_dp.o            mdss_hdmi_edid.o     mdss_mdp_overlay.o          mdss_util.o
mdss_dp_util.o       mdss_hdmi_hdcp2p2.o  mdss_mdp_pipe.o             mdss_wb.o
mdss_dsi_clk.o       mdss_hdmi_panel.o    mdss_mdp_pp_cache_config.o  modules.builtin
mdss_dsi_cmd.o       mdss_hdmi_tx.o       mdss_mdp_pp_common.o        modules.order
mdss_dsi_host.o      mdss_hdmi_util.o     mdss_mdp_pp_debug.o         msm_mdss_io_8974.o
mdss_dsi.o           mdss_io_util.o       mdss_mdp_pp.o

MDSS软件驱动
    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等功能
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值