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";qcom,mdss-dsi-
panel-framerate = <
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>;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 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
1039 01 00 00 00 00 02 b5 a0
39 01 00 00 00 00 02 c4
0339 01 00 00 00 00 0af6
42 57 37 00 aa cc d0
00 0039 01 00 00 00 00 02 f9
0339 01 00 00 00 00 14c2
00 00 d8 d8
00 80 2b
05 080e
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 0039 01 00 00 00 00 02 53 2039 01 00 00 00 00 02 51 6005 01 00 00 05 00 02 29 00];qcom,mdss-dsi-off-command = [
05 01 00 00 3c
00 02 28 0005 01 00 00 b4
00 02 10 00];qcom,mdss-dsi-on-command-state =
"dsi_lp_mode";qcom,mdss-dsi-off-command-state =
"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
1739 00 00 00 05 00 02 cb
1039 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
0239 00 00 00 05 00 02 b0
0f
39 00 00 00 05 00 02 cb
0939 00 00 00 05 00 02 b0
0239 00 00 00 05 00 02 f2 c9
39 00 00 00 05 00 02 b0
0339 00 00 00 05 00 02 f2 c0
39 00 00 00 05 00 02 b0
0339 00 00 00 05 00 02 f4 aa
39 00 00 00 05 00 02 b0
0839 00 00 00 05 00 02 b1
3039 00 00 00 05 00 02 b0
0939 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
1039 00 00 00 05 00 02 b0
0039 00 00 00 05 00 02 f7
0339 00 00 00 05 00 02 fe
3039 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
1739 00 00 00 05 00 02 cb
0439 00 00 00 05 00 02 b0
0e
39 00 00 00 05 00 02 cb
0639 00 00 00 05 00 02 b0
0f
39 00 00 00 05 00 02 cb
0539 00 00 00 05 00 02 b0
0239 00 00 00 05 00 02 f2 b8
39 00 00 00 05 00 02 b0
0339 00 00 00 05 00 02 f2
8039 00 00 00 05 00 02 b0
0339 00 00 00 05 00 02 f4
8a
39 00 00 00 05 00 02 b0
0839 00 00 00 05 00 02 b1
1039 00 00 00 05 00 02 b0
0939 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
8039 00 00 00 05 00 02 b0
0039 00 00 00 05 00 02 f7
0339 00 00 00 05 00 02 fe
3039 01 00 00 05 00 02 fe b0];qcom,mdss-dsi-h-sync-pulse = <
0>;qcom,mdss-dsi-traffic-mode =
"non_burst_sync_event";qcom,mdss-dsi-lane-map =
"lane_map_0123";qcom,mdss-dsi-bllp-eof-power-mode;qcom,mdss-dsi-bllp-power-mode;qcom,mdss-dsi-tx-eot-append;qcom,dcs-cmd-by-left;qcom,mdss-dsi-lane-
0-state; 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];PHY 定時設置qcom,mdss-dsi-t-clk-post = <
0x2c>;qcom,mdss-dsi-t-clk-pre = <
0x1c>;qcom,mdss-dsi-dma-trigger =
"trigger_sw";qcom,mdss-dsi-mdp-trigger =
"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
.oMDSS軟件驅動mdss_fb
.c 頂層IOCTL/native framebuffer接口mdss_mdp
.c --MDP(Mobile Development Platforms)資源,包括時鐘/中斷/bus-bw/powermdss_mdp_overlay
.c--Overlay/DMA 頂層APImdss_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等功能
總結
以上是生活随笔為你收集整理的s6e3ha3 amoled屏的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。