赞
踩
gvim 推荐配置
set nu
set tabstop=4
set autoindent
set smartindent
set shiftwidth=4
"set guifont=SimSun-ExtB:h18:cGB2312:qDRAFT
set guifont=Courier\ New:h17
colorscheme desert
set nobackup
set noundofile
set noswapfile
马尔莫
1|malmo:/ # ls ./sys/firmware/devicetree/base/soc/qcom,mdss_mdp@5e00000/qcom,mdss_dsi_mot_boe_vtdr6130a_ft3683g_667_1080x2400_dsc_cmd
name qcom,mdss-dsi-bllp-power-mode qcom,mdss-dsi-lane-1-state qcom,mdss-dsi-panel-local-hbm-enabled qcom,mdss-dsi-te-dcs-command
phandle qcom,mdss-dsi-border-color qcom,mdss-dsi-lane-2-state qcom,mdss-dsi-panel-local-hbm-wait-fps-count qcom,mdss-dsi-te-pin-select
qcom,cellid-read-enabled qcom,mdss-dsi-bpp qcom,mdss-dsi-lane-3-state qcom,mdss-dsi-panel-local-hbm-wait-fps-interval qcom,mdss-dsi-te-using-te-pin
qcom,dsi-ctrl-num qcom,mdss-dsi-color-order qcom,mdss-dsi-lp11-init qcom,mdss-dsi-panel-name qcom,mdss-dsi-traffic-mode
qcom,dsi-phy-num qcom,mdss-dsi-dc-off-command qcom,mdss-dsi-mdp-trigger qcom,mdss-dsi-panel-physical-type qcom,mdss-dsi-tx-eot-append
qcom,dsi-select-clocks qcom,mdss-dsi-dc-off-command-state qcom,mdss-dsi-no-panel-on-read-support qcom,mdss-dsi-panel-status-check-mode qcom,mdss-dsi-underflow-color
qcom,esd-check-enabled qcom,mdss-dsi-dc-on-command qcom,mdss-dsi-panel-bl-num qcom,mdss-dsi-panel-status-command qcom,mdss-dsi-virtual-channel-id
qcom,mdss-brightness-max-level qcom,mdss-dsi-dc-on-command-state qcom,mdss-dsi-panel-cellid-command qcom,mdss-dsi-panel-status-command-state qcom,mdss-pan-physical-height-dimension
qcom,mdss-dsi-bl-default-level qcom,mdss-dsi-display-timings qcom,mdss-dsi-panel-cellid-read-length qcom,mdss-dsi-panel-status-read-length qcom,mdss-pan-physical-width-dimension
qcom,mdss-dsi-bl-inverted-dbv qcom,mdss-dsi-dma-trigger qcom,mdss-dsi-panel-lhbm-not-allowed-fps-list qcom,mdss-dsi-panel-status-value qcom,panel-supply-entries
qcom,mdss-dsi-bl-is-exponent qcom,mdss-dsi-hbm-fod qcom,mdss-dsi-panel-lhbm-wait-fps-valid qcom,mdss-dsi-panel-supplier qcom,platform-reset-gpio
qcom,mdss-dsi-bl-max-level qcom,mdss-dsi-hbm-fod-on-command qcom,mdss-dsi-panel-local-hbm-DC-HYBIRD-THRESHOLD-BL qcom,mdss-dsi-panel-type qcom,platform-te-gpio
qcom,mdss-dsi-bl-min-level qcom,mdss-dsi-hbm-off-command qcom,mdss-dsi-panel-local-hbm-alpha-register qcom,mdss-dsi-reset-sequence
qcom,mdss-dsi-bl-pmic-control-type qcom,mdss-dsi-hbm-on-command qcom,mdss-dsi-panel-local-hbm-alpha-size qcom,mdss-dsi-stream
qcom,mdss-dsi-bllp-eof-power-mode qcom,mdss-dsi-lane-0-state qcom,mdss-dsi-panel-local-hbm-alpha-table qcom,mdss-dsi-te-check-enable
./sys/firmware/devicetree/base/soc/qcom,mdss_mdp@5e00000/qcom,mdss_dsi_mot_boe_vtdr6130a_ft3683g_667_1080x2400_dsc_cmd/qcom,mdss-dsi-display-timings/timing@0 <
name qcom,mdss-dsc-block-prediction-enable qcom,mdss-dsi-h-back-porch qcom,mdss-dsi-h-sync-skew qcom,mdss-dsi-panel-height qcom,mdss-dsi-v-back-porch
qcom,compression-mode qcom,mdss-dsc-slice-height qcom,mdss-dsi-h-front-porch qcom,mdss-dsi-off-command qcom,mdss-dsi-panel-jitter qcom,mdss-dsi-v-bottom-border
qcom,default-topology-index qcom,mdss-dsc-slice-per-pkt qcom,mdss-dsi-h-left-border qcom,mdss-dsi-off-command-state qcom,mdss-dsi-panel-phy-timings qcom,mdss-dsi-v-front-porch
qcom,display-topology qcom,mdss-dsc-slice-width qcom,mdss-dsi-h-pulse-width qcom,mdss-dsi-on-command qcom,mdss-dsi-panel-width qcom,mdss-dsi-v-pulse-width
qcom,mdss-dsc-bit-per-component qcom,mdss-dsc-version qcom,mdss-dsi-h-right-border qcom,mdss-dsi-on-command-state qcom,mdss-dsi-timing-switch-command qcom,mdss-dsi-v-top-border
qcom,mdss-dsc-bit-per-pixel qcom,mdss-dsi-cmd-mode qcom,mdss-dsi-h-sync-pulse qcom,mdss-dsi-panel-framerate qcom,mdss-dsi-timing-switch-command-state
malmo:/ #
qcom,mdss-dsi-display-timings/
qcom,mdss-dsi-on-command
adb shell od -t x1 ./sys/firmware/devicetree/base/soc/qcom,mdss_mdp@5e00000/qcom,mdss_dsi_mot_boe_vtdr6130a_ft3683g_667_1080x2400_dsc_cmd/qcom,mdss-dsi-display-timings/timing@0/qcom,mdss-dsi-on-command
改后:
name qcom,mdss-dsi-bllp-power-mode qcom,mdss-dsi-lane-1-state qcom,mdss-dsi-panel-local-hbm-enabled qcom,mdss-dsi-te-dcs-command
phandle qcom,mdss-dsi-border-color qcom,mdss-dsi-lane-2-state qcom,mdss-dsi-panel-local-hbm-wait-fps-count qcom,mdss-dsi-te-pin-select
qcom,cellid-read-enabled qcom,mdss-dsi-bpp qcom,mdss-dsi-lane-3-state qcom,mdss-dsi-panel-local-hbm-wait-fps-interval qcom,mdss-dsi-te-using-te-pin
qcom,dsi-ctrl-num qcom,mdss-dsi-color-order qcom,mdss-dsi-lp11-init qcom,mdss-dsi-panel-name qcom,mdss-dsi-traffic-mode
qcom,dsi-phy-num qcom,mdss-dsi-dc-off-command qcom,mdss-dsi-mdp-trigger qcom,mdss-dsi-panel-physical-type qcom,mdss-dsi-tx-eot-append
qcom,dsi-select-clocks qcom,mdss-dsi-dc-off-command-state qcom,mdss-dsi-no-panel-on-read-support qcom,mdss-dsi-panel-status-check-mode qcom,mdss-dsi-underflow-color
qcom,esd-check-enabled qcom,mdss-dsi-dc-on-command qcom,mdss-dsi-panel-bl-num qcom,mdss-dsi-panel-status-command qcom,mdss-dsi-virtual-channel-id
qcom,mdss-brightness-max-level qcom,mdss-dsi-dc-on-command-state qcom,mdss-dsi-panel-cellid-command qcom,mdss-dsi-panel-status-command-state qcom,mdss-pan-physical-height-dimension
qcom,mdss-dsi-bl-default-level qcom,mdss-dsi-display-timings qcom,mdss-dsi-panel-cellid-read-length qcom,mdss-dsi-panel-status-read-length qcom,mdss-pan-physical-width-dimension
qcom,mdss-dsi-bl-inverted-dbv qcom,mdss-dsi-dma-trigger qcom,mdss-dsi-panel-lhbm-not-allowed-fps-list qcom,mdss-dsi-panel-status-value qcom,panel-supply-entries
qcom,mdss-dsi-bl-is-exponent qcom,mdss-dsi-hbm-fod qcom,mdss-dsi-panel-lhbm-wait-fps-valid qcom,mdss-dsi-panel-supplier qcom,platform-reset-gpio
qcom,mdss-dsi-bl-max-level qcom,mdss-dsi-hbm-fod-on-command qcom,mdss-dsi-panel-local-hbm-DC-HYBIRD-THRESHOLD-BL qcom,mdss-dsi-panel-type qcom,platform-te-gpio
qcom,mdss-dsi-bl-min-level qcom,mdss-dsi-hbm-off-command qcom,mdss-dsi-panel-local-hbm-alpha-register qcom,mdss-dsi-reset-sequence
qcom,mdss-dsi-bl-pmic-control-type qcom,mdss-dsi-hbm-on-command qcom,mdss-dsi-panel-local-hbm-alpha-size qcom,mdss-dsi-stream
qcom,mdss-dsi-bllp-eof-power-mode qcom,mdss-dsi-lane-0-state qcom,mdss-dsi-panel-local-hbm-alpha-table qcom,mdss-dsi-te-check-enable
malmo:/ # ls ./sys/firmware/devicetree/base/soc/qcom,mdss_mdp@5e00000/qcom,mdss_dsi_mot_boe_vtdr6130a_ft3683g_667_1080x2400_dsc_cmd/qcom,mdss-dsi-display-timings/timing@0
name qcom,mdss-dsc-slice-height qcom,mdss-dsi-h-left-border qcom,mdss-dsi-nolp-command qcom,mdss-dsi-panel-height qcom,mdss-dsi-v-bottom-border
qcom,compression-mode qcom,mdss-dsc-slice-per-pkt qcom,mdss-dsi-h-pulse-width qcom,mdss-dsi-nolp-command-state qcom,mdss-dsi-panel-jitter qcom,mdss-dsi-v-front-porch
qcom,default-topology-index qcom,mdss-dsc-slice-width qcom,mdss-dsi-h-right-border qcom,mdss-dsi-off-command qcom,mdss-dsi-panel-phy-timings qcom,mdss-dsi-v-pulse-width
qcom,display-topology qcom,mdss-dsc-version qcom,mdss-dsi-h-sync-pulse qcom,mdss-dsi-off-command-state qcom,mdss-dsi-panel-width qcom,mdss-dsi-v-top-border
qcom,mdss-dsc-bit-per-component qcom,mdss-dsi-cmd-mode qcom,mdss-dsi-h-sync-skew qcom,mdss-dsi-on-command qcom,mdss-dsi-timing-switch-command
qcom,mdss-dsc-bit-per-pixel qcom,mdss-dsi-h-back-porch qcom,mdss-dsi-lp1-command qcom,mdss-dsi-on-command-state qcom,mdss-dsi-timing-switch-command-state
qcom,mdss-dsc-block-prediction-enable qcom,mdss-dsi-h-front-porch qcom,mdss-dsi-lp1-command-state qcom,mdss-dsi-panel-framerate qcom,mdss-dsi-v-back-porch
搜 mipi timing:
./sys/firmware/devicetree/base/soc/qcom,mdss_mdp@5e00000/qcom,mdss_dsi_mot_boe_vtdr6130a_ft3683g_667_1080x2400_dsc_cmd/qcom,mdss-dsi-display-timings
qcom,mdss-dsi-panel-phy-timings
ls ./sys/firmware/devicetree/base/soc/qcom,mdss_mdp@5e00000/qcom,mdss_dsi_mot_tm_icna3508_ft3683g_667_1080x2400_dsc_vid/qcom,mdss-dsi-display-timings/timing@0/
adb root 获取root
adb reboot edl
fastboot oem edl
fastboot flash dtbo dtbo.img
https://oa.huaqin.com/workflow/request/ManageRequestNoForm.jsp?viewdoc=&fromFlowDoc=&f_weaver_belongto_userid=474949&f_weaver_belongto_usertype=0&uselessFlag=&requestid=18265874&isrequest=0&isovertime=0&isaffirmance=&reEdit=1&seeflowdoc=0&isworkflowdoc=0&isfromtab=false&isSubmitDirect=#
https://oa.huaqin.com/wui/main.jsp?templateId=1 - 人事 - 保密区 -
P963F10 手动灭亮屏的打印: 相比于电源键 dpu 等未reset
6,33118,6687299931,c1,-,caller=T662;[drm][sprd_pwm_backlight_update] sprd_pwm_backlight_update: brightness level:0 => 0 min_level:116,33119,6687306422,c6,-,caller=T596;[drm][ dpms_mode_store] input dpms mode is 36,33120,6687306435,c6,-,caller=T596;[drm] dsi_panel_set_dpms_mode(just skip it)6,33121,6687306510,c6,-,caller=T596;[drm] sprd_dsi_connector_best_encoder()6,33122,6687306514,c6,-,caller=T596;[drm] sprd_dsi_connector_best_encoder()6,33123,6687306520,c6,-,caller=T596;[drm] sprd_dsi_encoder_atomic_check()6,33124,6687306537,c6,-,caller=T596;[drm] sprd_dsi_encoder_disable(last_dpms=0, dpms=3)6,33125,6687309977,c7,-,caller=T596;[drm][ dpu_stop] dpu stop6,33126,6687309995,c7,-,caller=T596;[drm] sprd_dpu_disable_vblank()6,33127,6687310008,c7,-,caller=T596;[drm] sprd_panel_disable() cmds_len=106,33129,6687310025,c7,-,caller=T596;[drm][lcd_tpd_notifier_callback] [SPRD_LCD]lcd_tpd_notifier_callback:lcd suspend power off6,33131,66873100
P963F10 手动灭亮屏的打印: 相比于电源键 dpu 等未reset
6,33118,6687299931,c1,-,caller=T662;[drm][sprd_pwm_backlight_update] sprd_pwm_backlight_update: brightness level:0 => 0 min_level:11
6,33119,6687306422,c6,-,caller=T596;[drm][ dpms_mode_store] input dpms mode is 3
6,33120,6687306435,c6,-,caller=T596;[drm] dsi_panel_set_dpms_mode(just skip it)
6,33121,6687306510,c6,-,caller=T596;[drm] sprd_dsi_connector_best_encoder()
6,33122,6687306514,c6,-,caller=T596;[drm] sprd_dsi_connector_best_encoder()
6,33123,6687306520,c6,-,caller=T596;[drm] sprd_dsi_encoder_atomic_check()
6,33124,6687306537,c6,-,caller=T596;[drm] sprd_dsi_encoder_disable(last_dpms=0, dpms=3)
6,33125,6687309977,c7,-,caller=T596;[drm][ dpu_stop] dpu stop
6,33126,6687309995,c7,-,caller=T596;[drm] sprd_dpu_disable_vblank()
6,33127,6687310008,c7,-,caller=T596;[drm] sprd_panel_disable() cmds_len=10
6,33129,6687310025,c7,-,caller=T596;[drm][lcd_tpd_notifier_callback] [SPRD_LCD]lcd_tpd_notifier_callback:lcd suspend power off
6,33131,6687310069,c7,-,caller=T596;[drm][sprd_pwm_backlight_update] last_backlevel == level,no set 0 => 0
6,33140,6687464822,c0,-,caller=T596;[drm] sprd_panel_unprepare()
6,33141,6687464831,c0,-,caller=T596;[drm] sprd_panel_unprepare() set lcd reset_gpio to 1
6,33142,6687594919,c7,-,caller=T596;[drm] sprd_panel_unprepare() tpd: suspend don' need power on, lcd power off
6,33144,6687594983,c7,-,caller=T596;[drm] sprd_dpu_atomic_disable()
6,33145,6687605095,c7,-,caller=T350;[disp-pm-domain][drm][ sprd_disp_power_off] disp power domain off
6,33177,6688967754,c1,-,caller=T596;[drm][ dpms_mode_store] input dpms mode is 0
6,33178,6688967764,c1,-,caller=T596;[drm] dsi is not inited,just skip
6,33179,6688967882,c1,-,caller=T596;[drm] sprd_dsi_connector_best_encoder()
6,33180,6688967890,c1,-,caller=T596;[drm] sprd_dsi_connector_best_encoder()
6,33181,6688967899,c1,-,caller=T596;[drm] sprd_dsi_encoder_atomic_check()
6,33182,6688967924,c1,-,caller=T596;[drm] sprd_dpu_atomic_enable()
6,33183,6688977955,c1,-,caller=T596;[disp-pm-domain][drm][ sprd_disp_power_on] disp power domain on
6,33184,6688978014,c1,-,caller=T596;[drm][ dpu_clk_init] DPU_CORE_CLK = 384000000, DPI_CLK_SRC = 153600000
6,33185,6688978024,c1,-,caller=T596;[drm][ dpu_clk_init] dpi clock is 38400000
6,33186,6688978686,c1,-,caller=T596;[drm][ dpu_enhance_reload] enhance hsv reload
6,33187,6688978696,c1,-,caller=T596;[drm][ dpu_enhance_reload] enhance cm reload
6,33188,6688979081,c1,-,caller=T596;[drm][ dpu_enhance_reload] enhance gamma reload
6,33189,6688979117,c1,-,caller=T596;[drm] dpu resume OK
6,33190,6688979131,c1,-,caller=T596;[drm] sprd_dsi_encoder_enable(last_dpms=3, dpms=0)
6,33191,6688979162,c1,-,caller=T596;[drm][ sprd_dsi_init] escape clock divider = 4
6,33192,6688979199,c1,-,caller=T596;[drm][ sprd_dphy_init] lanes : 2
6,33193,6688979204,c1,-,caller=T596;[drm][ sprd_dphy_init] freq : 512000
6,33194,6688979667,c1,-,caller=T596;[drm] sprd_panel_prepare()
6,33195,6688979673,c1,-,caller=T596;[drm] sprd_panel_prepare() tpd:lcd power on
6,33213,6689035659,c1,-,caller=T596;[drm] sprd_panel_enable() lcd_name=lcd_easyquick_aixiesheng_boe_mipi_hd
6,33214,6689035662,c1,-,caller=T596;[drm] sprd_panel_enable() step 1
6,33223,6689216478,c1,-,caller=T596;[drm] sprd_panel_enable() step 2
6,33228,6689216590,c1,-,caller=T596;[drm][sprd_pwm_backlight_update] last_backlevel == level,no set 0 => 0
6,33229,6689216717,c1,-,caller=T596;[drm][ dpu_run] dpu run
6,33241,6689222565,c2,-,caller=T662;[drm][sprd_pwm_backlight_update] sprd_pwm_backlight_update: brightness level:38 => 152 min_level:11
6,33242,6689222576,c2,-,caller=T662;[drm][sprd_pwm_backlight_update] [SPRD_LCD]sprd_pwm_backlight_update delay 60ms
6,33244,6689228887,c3,-,caller=T701;[drm] sprd_dpu_enable_vblank()
6,33252,6689290526,c3,-,caller=T937;[drm][ ssc_store] ssc is disabled by zte
P963F10 做esd recovery 的打印: 相比于esd dpu 有 reset
6,35162,6853203192,c5,-,caller=T15342;[drm][lcd_tpd_notifier_callback] [SPRD_LCD]lcd_tpd_notifier_callback:tp esd check error, notiry lcd esd
6,35163,6853532592,c2,-,caller=T701;[drm] sprd_dpu_enable_vblank()
6,35164,6853980438,c0,-,caller=T234;[drm] ====== esd recovery start ========
6,35165,6853980452,c0,-,caller=T234;[drm] sprd_dsi_encoder_disable(last_dpms=0, dpms=0)
6,35166,6853987960,c0,-,caller=T234;[drm][ dpu_stop] dpu stop
6,35167,6853987980,c0,-,caller=T234;[drm] sprd_dpu_disable_vblank()
6,35168,6853987994,c0,-,caller=T234;[drm] sprd_panel_disable() cmds_len=10
6,35170,6853988139,c0,-,caller=T234;[drm][lcd_tpd_notifier_callback] [SPRD_LCD]lcd_tpd_notifier_callback:lcd suspend power off
6,35172,6853988196,c0,-,caller=T234;[drm][sprd_pwm_backlight_update] sprd_pwm_backlight_update: brightness level:38 => 0 min_level:11
6,35181,6854144561,c0,-,caller=T234;[drm] sprd_panel_unprepare()
6,35182,6854144568,c0,-,caller=T234;[drm] sprd_panel_unprepare() set lcd reset_gpio to 1
6,35183,6854274613,c0,-,caller=T234;[drm] sprd_panel_unprepare() tpd: suspend don' need power on, lcd power off
6,35185,6854274660,c0,-,caller=T234;[drm] sprd_dsi_encoder_enable(last_dpms=0, dpms=0)
6,35186,6854274686,c0,-,caller=T234;[drm][ sprd_dsi_init] escape clock divider = 4
6,35187,6854274722,c0,-,caller=T234;[drm][ sprd_dphy_init] lanes : 2
6,35188,6854274726,c0,-,caller=T234;[drm][ sprd_dphy_init] freq : 512000
6,35189,6854275209,c0,-,caller=T234;[drm] sprd_panel_prepare()
6,35190,6854275213,c0,-,caller=T234;[drm] sprd_panel_prepare() tpd:lcd power on
6,35198,6854331236,c0,-,caller=T234;[drm] sprd_panel_enable() lcd_name=lcd_easyquick_aixiesheng_boe_mipi_hd
6,35199,6854331239,c0,-,caller=T234;[drm] sprd_panel_enable() step 1
6,35200,6854508109,c0,-,caller=T234;[drm] sprd_panel_enable() step 2
6,35205,6854508233,c0,-,caller=T234;[drm][sprd_pwm_backlight_update] sprd_pwm_backlight_update: brightness level:38 => 152 min_level:11
6,35206,6854508240,c0,-,caller=T234;[drm][sprd_pwm_backlight_update] [SPRD_LCD]sprd_pwm_backlight_update delay 60ms
6,35226,6854580386,c0,-,caller=T234;[drm][ dpu_run] dpu run
6,35227,6854580413,c0,-,caller=T234;[drm] ======= esd recovery end =========
6,35228,6854580418,c0,-,caller=T234;[drm] esd_count is 1
SPCSS01271783 S20 项目 90 hz
SPCSS01268544 SPCSS01274652 如何改 lk 阶段平台 pwm 的频率 , 目前在 logo 界面频率 101 khz ,超过了 100 khz 的最大频率
P963F10_T 有一个长时间待机,突然唤醒花屏问题,休眠唤醒不恢复,最后是没电才恢复的。射频干扰问题
94 三供屏回来了,做checklist
T_o=T_clk×(P_prescale+1)×(M_ +1)
T_o是输出的pwm频率,T_clk是外部时钟源26m,P_prescale是预分频系数,M_即mod。
int pwm_config(int pwm_id,int duty,int period)的三个参数分别对应PWM通道、占空比参数、周期。
占空比=duty / (period +1);
检查有无删除 faceid
adb shell ls /proc/device-tree/reserved-memory 或者 adb shell ls /sys/firmware/devicetree/base/reserved-memory
ai@ff410000 faceid-mem ise_med dptx_hdcp@fff10000
2023,12,12
1、P963F10 和 P720S20 陆续发现在 boot logo 亮起来的几秒钟内,pwm 频率达到了 101 khz 超过了背光芯片支持的最大频率 100khz,我打算再看一下 720S11 ,找一个符合要求的,把代码比对过去
2、P963F10 花屏问题
在 P720S11_T 项目中,/SPRD_T_5G_V1-P720S11_T/bsp/bootloader/lk/project/zte_staple.mk 中关掉了展锐平台中自带的两个屏:
LCD_G40396_TRULY_MIPI_FHD = 0
21 LCD_NT36672E_TRULY_MIPI_FHD = 0
因为这两个屏幕在平台.mk 中被打开了 /SPRD_T_5G_V1-P720S11_T/bsp/bootloader/lk/project/ums9620_2h10.mk
# attach lcd
99 LCD_G40396_TRULY_MIPI_FHD := 1
100 LCD_NT36672E_TRULY_MIPI_FHD := 1
image.png
P720S20 在上电时, vsp 先 5.5V (默认电压),再通过写 14 ,改成 6V
sprd_gpio_direction_output(CONFIG_LCM_GPIO_RSTN, 1); 打开 vsp 输出 ,tps65132 先输出默认电压 5V
zte_set_vsp_vsn_power 设为偏压 6V
mipi 上电的打印:
在 /SPRD_T_5G_V2-P720F02_T/bsp/modules/kernel5.4/display/dispc/sprd_dsi.c 中:
176 sprd_dsi_enable(dsi);177 sprd_dphy_enable(dsi->phy);178 179 sprd_dsi_lp_cmd_enable(dsi, true);
后
drm_panel_prepare(dsi->panel);
具有wakeup 属性的设备有无打上selinxu 标签
单独编译 : ./build.sh P720S20T -S -I -m SuspendSepolicyTests
生成产物:
./out/target/product/ums9620_2h10/testcases/SuspendSepolicyTests/arm64/SuspendSepolicyTests
lk 里的 6 分频 ,要打开同时打开,要关闭同时关闭 :
.dpi_clk_div = 6,
.video_lp_cmd_enable = true,
.hporch_lp_disable = true, 单独打开了此选项,导致了 S20 lk 阶段显示问题
kernel 里的 6 分频 ,要打开同时打开,要关闭同时关闭:
sprd,dpi-clk-div = <6>;
sprd,video-lp-cmd-enable = <1>;
sprd,hporch-lp-disable = <1>;
展锐下载工具快速加载 pac 包方法:
改 BinPack.ini 里的 LoadPolicy = 2
从lk 无法进入开机向导log
drm|surfaceflinger|zygote|hwcomposer
pd 是协议, 依赖 type c 接口 ; dp 是协议,显示的 ;
上下电情况:
lk 阶段上电 : io 电 , avdd , avee reset
mipi 上电平台提供不方便控; mipi 电在代码里体现在 dsi init ; vsp 上电后 mipi 上电, vsp 下电后 mipi 下电 ,通过 vsp vsn 间接控制 mipi 电 ; 如果想让 mipi 晚下电可增加休眠 10 寄存器的延时
kernel 阶段 上下电 :
唤醒 : avdd , avee , reset
休眠: reset , avee , avdd
image.png
在cmdline 和kernel log 中可查看log等级 loglevel=4 ,log 等级开到 7 再看 log
在sleep in 是关机和休眠用 里面的28 是关闭显示 display off , 延时 20 ms , 10 是 sleep in ,延时 120 ms
在 sleep out 和 initial command 里的11 出休眠 sleep out , 延时 120ms , 29 亮背光 display on 延时 20 ms
34 下 00 是关闭 te , 35 是打开 te 不写 35 也是关 te
2023年11月9日
1、找到了一个测vts wakeup的shell 脚本,翻译成Python就可以做成aio,目前在看逻辑
2、606f08 963f94验证common patch完成
2023年11月8日
1、更新解析亮屏时间分析脚本,增加set power 莫mode2 到 finish set ,finish set 到 lights write 以及 set mode 2 到 lights write 的时间统计,详情见https://i.zte.com.cn/#/space/0f02556f60fa4c52bbdb92824de53df3/wiki/page/c0c4b9fda9b7463e96f4863e433930d8/view
2、vts 检查具有 wake up属性的,有无 selinux 标签,目前在手动寻找规律中
2023年11月6日
1、p720f03 反复下版本50次,未复现 lk 阶段花屏
2、p963f10 开机不休眠 esd 恢复不了,目前看来可能与 lk 阶段 porch 配错了有关,待验证
2023年11月3日
1、P963F10_T tp esd check error 通知 lcd 做 esd 代码添加
2、 P963F10_T 在 launcher 界面字体偏小问题分析,改了物理尺寸和 density 验证
2023年11月2日
1、 P720F03 common patch 验证,看起来的确是 T820 了,无问题,但是同时,我用 游戏版 P720F03 (后盖金黄色)的手机,发现在下完版本开机 boot logo 阶段花屏 2到 3 秒,刚开始是竖条纹花, 后来 ZTE 上一条横线的花 ,看起来此版本有问题 。 有照片(一次性)
2、P731F21 和 P963F10 check list
2023年11月1日
验证合入common Patch的P720f05,压测650次+。暂未发现LCD相关问题。
P 963f10做check list,发现桌面界面字体偏小。怀疑可能是物理尺寸或者density配置不对。明天继续核实一下
2023年10月31日
1、 更改了产生 boot logo 的脚本, create_splash.sh ,解决改前找不到 boot_logo 放一张低电 logo 问题
2、P731F21 兼容点亮 lcdtron 屏
3、P720S16 华映屏在进 deep standby 延时 100 ms
禁用 tp : cd vendor_dlkm/lib/modules 再 rmmod zte_tpd.ko
adb push D:\MYFILE\zte_tpd.ko ./vendor_dlkm/lib/modules/zte_tpd.ko 替换 tp 的ko
vendor/firmware 改模组 mv axs_firmware_easyquick.bin axs_firmware_easyquick2.bin 让找不到固件即可除去 tp
[Neptuneyt]$ echo $net
www.baidu.com
# 删除匹配字符串的左边,留下剩余部分
[Neptuneyt]$ echo ${net#*.} #这里用*.表示匹配到www.,用一个#表示删除匹配到的字符串,留下剩余的部分
baidu.com
# 用2个#号表示尽可能多的删除匹配到的字符串
[Neptuneyt]$ echo ${net##*.}
com
电流源的使用
按voltage 按enter number 按 4 按 Res(小数点) 按000000(多按几个0) 按 output(输出)
开关电源:
按 output
log 等级开到1 ,在打印完 lk 后进入kernel 会出现 console $: 就停下来,建议 log 等级开到 7
i2c transfer fail 可能是 i2c 的lane 数配置的不对,不影响亮屏,正负 6v 偏压没设成功不影响亮屏,因为背光芯片默认输出 5v 能点亮屏幕,如果需要用到 正负 6v 偏压芯片,需要在 /SPRD_T-P606F05_T/device/sprd/mpool/module/others/bsp/mfeature/kernel/kernel5.4/msoc/sharkl3/ko/zte_okra.mk
中加入 zte_lcdbl_vsp_vsn.ko
image.pngimage.png
s11是4 lane ,可通过的lcd座子原理图看出来,共用一组 clk 时钟信号, data 信号有4组,d0到d3
image.png
确认延时多少打背光,需要量 lcda (这是背光的正极,通常 20V 左右,一颗钉就是一个二极管,二极管差不多需要 3.3 v ,6 颗等差不多 20 V)与 d0p 和 d0n (d0p ,d0n 是mipi 的 data 信号,送图像的,上电前两帧画面不稳定,提前亮背光的话会看到闪屏或花屏) 的相位关系
设置 VSP vsn 6 v 时,i2c lane num 在 原理图里看
image.png
如果 git status 中出现modify 想回退修改可使用 git checkout xx.c 即可回退
grep -rn "pwm_backlight_update" ./bsp/kernel/kernel5.4/drivers/gpu/drm/sprd/ 可以过滤打印语句被打包在哪个 image 里了
cq 号 SPCSS01243276
S16 易快来屏 闪屏 ,同时 log 打印 dpu_isr
05354 < 3> [91482.905973] [10-09 16:17:52.905] [drm][ dpu_isr] int value check : reg int sts value is 0x2, gap value is 9
05355 < 3> [91482.905985] [10-09 16:17:52.905] [drm][ dpu_isr] int value check : clr value is 0x0, mmu0 int value is 0x0, mmu1 int value is 0x0
05384 < 3> [91483.989345] [10-09 16:17:53.989] [drm][ dpu_isr] int value check : reg int sts value is 0x2, gap value is 9
05385 < 3> [91483.989355] [10-09 16:17:53.989] [drm][ dpu_isr] int value check : clr value is 0x0, mmu0 int value is 0x0, mmu1 int value is 0x0
053D0 < 3> [91485.485984] [10-09 16:17:54.485] [drm][ dpu_isr] int value check : reg int sts value is 0x2, gap value is 9
另外一个确定版本是否生效的方法:
在 dtsi 里加上 zte,lcd-version-v000;
然后在手机上 adb shell "find -name zte,lcd-version-v000"
可见:
./sys/firmware/devicetree/base/lcds/lcd_huaying_sitronix_st7123_mipi_hdplus/zte,lcd-version-v000
./sys/firmware/devicetree/base/lcds/lcd_sitronix_st7123_qm065hs03_ykl_mipi_hdplus/zte,lcd-version-v000
./sys/firmware/devicetree/base/lcds/lcd_gc7202_skyworth_galaxycore_mipi_hdplus/zte,lcd-version-v000
./sys/firmware/devicetree/base/lcds/lcd_chipone_icnl9911c2_tongxingda_mipi_hdplus/zte,lcd-version-v000
./sys/firmware/devicetree/base/lcds/lcd_chipone_icnl9911c2_easyquick_mipi_hdplus/zte,lcd-version-v000
两套背光方案:
P963F94 IC 侧背光, 在overlay.dts 里不会配置平台侧背光:
452 &panel {
453 sprd,backlight = <&pwm_backlight>;
454 reset-gpio = <&ap_gpio 11 GPIO_ACTIVE_HIGH>;
455 };
所以 sprd_panel_probe 里平台背光节点就会找不到:
1730 bl_node = of_parse_phandle(slave->dev.of_node,1731 "sprd,backlight", 0);
1754 } else1755 DRM_WARN("backlight node not found\n");
1779 DRM_ERROR("222, backlight node not found\n");
0106C < 4> [ 3.964906] [09-21 04:16:01.964] [drm] backlight node not found
0106D < 3> [ 3.965162] [09-21 04:16:01.965] [drm:sprd_panel_probe [sprd_drm]] *ERROR* 222, backlight node not found 自己加的打印
与之对应的, IC 侧背光会走到:
在 sprd_oled_backlight_init 函数中
1331 p = of_get_property(oled_node, "sprd,reg-lock", &bytes);
1332 if (p) {1333 info->cmds[CMD_OLED_REG_LOCK] = p;
1334 info->cmds_len[CMD_OLED_REG_LOCK] = bytes;
1335 } else
1336 DRM_INFO("can't find sprd,reg-lock property\n");
1337
1338 p = of_get_property(oled_node, "sprd,reg-unlock", &bytes);
1339 if (p) {
1340 info->cmds[CMD_OLED_REG_UNLOCK] = p;
1341 info->cmds_len[CMD_OLED_REG_UNLOCK] = bytes;
1342 } else1343 DRM_INFO("can't find sprd,reg-unlock property\n");
1371 DRM_INFO("%s() ok\n", __func__);
0107C < 6> [ 4.029786] [09-21 09:36:27.029] [drm] sprd_oled_backlight_init() ok
0107A < 6> [ 4.029778] [09-21 09:36:27.029] [drm] can't find sprd,reg-lock property
0107B < 6> [ 4.029781] [09-21 09:36:27.029] [drm] can't find sprd,reg-unlock property
0107C < 6> [ 4.029786] [09-21 09:36:27.029] [drm] sprd_oled_backlight_init() ok
如果两个背光都加上,则会死机:
[ 19.535857]c0 [ T349] [<c01129d4>] (unwind_backtrace) from [<c010e18c>] (show_stack+0x20/0x24)
[ 19.535891]c0 [ T349] [<c010e18c>] (show_stack) from [<c0d5c624>] (dump_stack+0x88/0xb4)
[ 19.535928]c0 [ T349] [<c0d5c624>] (dump_stack) from [<c03d6dac>] (sysfs_warn_dup+0x68/0x74)
[ 19.535966]c0 [ T349] [<c03d6dac>] (sysfs_warn_dup) from [<c03d713c>] (sysfs_do_create_link_sd+0xa0/0xdc)
[ 19.536003]c0 [ T349] [<c03d713c>] (sysfs_do_create_link_sd) from [<c074f358>] (device_add+0x2a0/0x7c0)
[ 19.536024]c0 [ T349] [<c074f358>] (device_add) from [<c06637cc>] (backlight_device_register+0x11c/0x204)
[ 19.536064]c0 [ T349] [<c06637cc>] (backlight_device_register) from [<c0663a94>] (devm_backlight_device_register+0x64/0xa0)
[ 19.536649]c0 [ T349] [<c0663a94>] (devm_backlight_device_register) from [<bf102ee8>] (sprd_panel_probe+0x4c8/0x914 [sprd_drm])
[ 19.537130]c0 [ T349] [<bf102ee8>] (sprd_panel_probe [sprd_drm]) from [<c07546e4>] (really_probe+0x130/0x498)
[ 19.537166]c0 [ T349] [<c07546e4>] (really_probe) from [<c07544d0>] (driver_probe_device+0xc8/0x1ac)
[ 19.537199]c0 [ T349] [<c07544d0>] (driver_probe_device) from [<c0754cec>] (device_driver_attach+0x60/0x68)
[ 19.537233]c0 [ T349] [<c0754cec>] (device_driver_attach) from [<c0754de8>] (__driver_attach+0x44/0x13c)
[ 19.537271]c0 [ T349] [<c0754de8>] (__driver_attach) from [<c075244c>] (bus_for_each_dev+0x98/0xc8)
[ 19.537310]c0 [ T349] [<c075244c>] (bus_for_each_dev) from [<c0752b80>] (bus_add_driver+0x11c/0x230)
[ 19.537346]c0 [ T349] [<c0752b80>] (bus_add_driver) from [<c07568f8>] (driver_register+0x78/0x10c)
[ 19.537771]c0 [ T349] [<c07568f8>] (driver_register) from [<bf177068>] (init_module+0x68/0x1000 [sprd_drm])
[ 19.538193]c0 [ T349] [<bf177068>] (init_module [sprd_drm]) from [<c0102ea0>] (do_one_initcall+0x68/0x2b4)
[ 19.538236]c0 [ T349] [<c0102ea0>] (do_one_initcall) from [<c01ef7cc>] (do_init_module+0x58/0x1f0)
[ 19.538275]c0 [ T349] [<c01ef7cc>] (do_init_module) from [<c01eed74>] (load_module+0x1b10/0x2078)
[ 19.538312]c0 [ T349] [<c01eed74>] (load_module) from [<c01ebbec>] (sys_finit_module+0xf4/0x11c)
[ 19.538348]c0 [ T349] [<c01ebbec>] (sys_finit_module) from [<c0101000>] (ret_fast_syscall+0x0/0x54)
[ 19.538364]c0 [ T349] Exception stack(0xe8a0bfa8 to 0xe8a0bff0)
[ 19.538395]c0 [ T349] bfa0: ffffffff 00000000 00000004 becf8589 00000000 00000000
[ 19.538431]c0 [ T349] bfc0: ffffffff 00000000 00000000 0000017b becf8768 becf8748 00000000 becf8589
[ 19.538455]c0 [ T349] bfe0: becf8580 becf8570 0041a87d b69e84ac
[ 19.539126]c0 [ T349] [drm:sprd_panel_probe [sprd_drm]] *ERROR* failed to register oled backlight ops
[ 19.539172]c0 [ T349] ------------[ cut here ]------------
2023,1,18
focal 敦泰
ilitek 奕力
lcetron 联创
easyquick 易快来
#ifdefine 和 #else在vscode中可以用- 来折叠
帧率不够 -> 硬件刷新率是否 58? 测mipi波形,TE信号 ,systrace 上层帧率
查看当前应用名 adb shell "dumpsys window | grep -i mCurrent"
通过应用名来找 pid 在systrace 上确认看哪个的 UI Thread 和 Render adb shell "ps -ef | grep -i baidu"
将图片 push 到手机里
DCIM\camera
python -m ensurepip --default-pip python 安装 pip
kernel.log 里休眠唤醒关键字
zte powerkey pressed|sprd_panel_prepare|sprd_panel_enable|dpu_run|sprd_pwm_backlight_update|dpu_stop|sprd_panel_disable|sprd_panel_unprepare
cat /dev/kmsg |grep -iE 'zte powerkey pressed|sprd_panel_prepare|sprd_panel_enable|dpu_run|sprd_pwm_backlight_update|dpu_stop|sprd_panel_disable|sprd_panel_unprepare'
adb shell "cat /dev/kmsg |grep -iE 'zte powerkey pressed|sprd_panel_prepare|sprd_panel_enable|dpu_run|sprd_pwm_backlight_update|dpu_stop|sprd_panel_disable|sprd_panel_unprepare'"
S11 kernel 唤醒流程
6,23423832,258168913650,c0,-,caller=T21153;gpio_keys_gpio_report_event:zte powerkey pressed!
6,23423837,258168945442,c3,-,caller=T1220;[drm] sprd_dsi_connector_best_encoder()
6,23423838,258168945452,c3,-,caller=T1220;[drm] sprd_dsi_connector_best_encoder()
6,23423848,258168947417,c3,-,caller=T1220;[drm] sprd_panel_prepare() avdd置1 avee置1 reset 按照dtsi sprd,reset-on-sequence 中 高低高
6,23423849,258168947421,c3,-,caller=T1220;[drm] sprd_panel_prepare() tpd:lcd power on
6,32652,1055991469,c7,-,caller=T640;[drm] sprd_panel_enable() lcd_name=lcd_huaying_st7123_boe_6p517_mipi_hd_4lane 发 initial code
6,32653,1055991470,c7,-,caller=T640;[drm] This panel ic is not icnl9911c
6,23423901,258169104751,c0,-,caller=T21153;gpio_keys_gpio_report_event:zte powerkey released!
6,23423961,258169190383,c1,-,caller=T1220;[drm][ dpu_run] dpu run
6,23423965,258169195653,c1,-,caller=T1220;[drm] sprd_dsi_connector_best_encoder()
6,23423966,258169195662,c1,-,caller=T1220;[drm] sprd_dsi_connector_best_encoder()
6,23423979,258169201346,c1,-,caller=T664;[drm][sprd_pwm_backlight_update] [SPRD_LCD]sprd_pwm_backlight_update delay 34ms
6,23423991,258169223960,c3,-,caller=T388;[drm][zte_panel_fps_send_uevent] [SPRD_LCD]FPS: send fps 90
S11 cat /dev/kmsg 切帧率流程
6,65066356,241339120521,c2,-,caller=T835;[drm] sprd_dpu_enable_vblank()
6,65066358,241339154596,c0,-,caller=T633;[drm] vrr going, flush current esd work and cancel ongoing work
6,65066359,241339154624,c0,-,caller=T633;[drm] sprd_dsi_connector_best_encoder()
6,65066360,241339154629,c0,-,caller=T633;[drm] sprd_dsi_connector_best_encoder()
6,65066361,241339154642,c0,-,caller=T633;[drm] sprd_dpu_mode_valid() mode: "720x1600": 90 128000 720 756 760 796 1600 1760 1764 1796 0x40 0x0
6,65066362,241339154646,c0,-,caller=T633;[drm] sprd_dsi_encoder_atomic_check()
6,65066363,241339154664,c0,-,caller=T633;[drm] sprd_dsi_encoder_disable(last_dpms=0, dpms=0)
6,65066364,241339154673,c0,-,caller=T633;[drm] sprd_dpu_disable_vblank()
6,65066365,241339154704,c0,-,caller=T633;[drm] sprd_dpu_mode_set_nofb() mode: "720x1600": 90 128000 720 756 760 796 1600 1760 1764 1796 0x40 0x0
6,65066366,241339154710,c0,-,caller=T633;[drm][ dpu_modeset] begin switch to 720 x 1600
6,65066367,241339154716,c0,-,caller=T633;[drm] sprd_dsi_encoder_mode_set() mode: "720x1600": 90 128000 720 756 760 796 1600 1760 1764 1796 0x40 0x0
6,65066368,241339154722,c0,-,caller=T633;[drm] sprd_dsi_encoder_enable(last_dpms=0, dpms=0)
6,65066369,241339154723,c0,-,caller=T633;[drm] skip dsi resume
6,65066370,241339154795,c2,-,caller=T835;[drm] sprd_dpu_enable_vblank()
6,65066371,241339177230,c2,-,caller=T362;[drm][ dpu_wait_stop_done] dpu is idle now
6,65066372,241339177236,c2,-,caller=T362;[drm][ dpu_stop] dpu stop
6,65066373,241339177686,c2,-,caller=T362;[drm][zte_panel_fps_send_uevent] [SPRD_LCD]FPS: send fps 90
6,65066374,241339177693,c2,-,caller=T362;[drm] vrr finished, schedule esd work
6,65066382,241339754298,c0,-,caller=T633;[drm] vrr going, flush current esd work and cancel ongoing work
6,65066383,241339754333,c0,-,caller=T633;[drm] sprd_dsi_connector_best_encoder()
6,65066384,241339754346,c0,-,caller=T633;[drm] sprd_dsi_connector_best_encoder()
6,65066385,241339754368,c0,-,caller=T633;[drm] sprd_dpu_mode_valid() mode: "720x1600": 60 128000 720 756 760 796 1600 2622 2626 2658 0x48 0x0
6,65066386,241339754377,c0,-,caller=T633;[drm] sprd_dsi_encoder_atomic_check()
6,65066387,241339754405,c0,-,caller=T633;[drm] sprd_dsi_encoder_disable(last_dpms=0, dpms=0)
6,65066388,241339754418,c0,-,caller=T633;[drm] sprd_dpu_disable_vblank()
6,65066389,241339754489,c0,-,caller=T633;[drm] sprd_dpu_mode_set_nofb() mode: "720x1600": 60 128000 720 756 760 796 1600 2622 2626 2658 0x48 0x0
6,65066390,241339754500,c0,-,caller=T633;[drm][ dpu_modeset] begin switch to 720 x 1600
6,65066391,241339754515,c0,-,caller=T633;[drm] sprd_dsi_encoder_mode_set() mode: "720x1600": 60 128000 720 756 760 796 1600 2622 2626 2658 0x48 0x0
6,65066392,241339754527,c0,-,caller=T633;[drm] sprd_dsi_encoder_enable(last_dpms=0, dpms=0)
6,65066393,241339754531,c0,-,caller=T633;[drm] skip dsi resume
6,65066394,241339754657,c1,-,caller=T835;[drm] sprd_dpu_enable_vblank()
6,65066396,241339780439,c1,-,caller=T362;[drm][ dpu_wait_stop_done] dpu is idle now
6,65066397,241339780447,c1,-,caller=T362;[drm][ dpu_stop] dpu stop
6,65066398,241339781186,c1,-,caller=T362;[drm][zte_panel_fps_send_uevent] [SPRD_LCD]FPS: send fps 60
6,65066399,241339781197,c1,-,caller=T362;[drm] vrr finished, schedule esd work
S11 cat /dev/kmsg 休眠打印
6,113727,1113232372,c1,-,caller=T204;gpio_keys_gpio_report_event:zte powerkey pressed!
6,113729,1113416207,c1,-,caller=T204;gpio_keys_gpio_report_event:zte powerkey released!
6,430206,8568900393,c3,-,caller=T9897;[drm] sprd_dsi_connector_best_encoder()
6,430207,8568900397,c3,-,caller=T9897;[drm] sprd_dsi_connector_best_encoder()
6,430208,8568900403,c3,-,caller=T9897;[drm] sprd_dsi_encoder_atomic_check()
6,430210,8568902470,c2,-,caller=T9897;[drm] sprd_dsi_encoder_disable(last_dpms=0, dpms=0)
6,430211,8568918937,c2,-,caller=T9897;[drm][ dpu_wait_stop_done] dpu is idle now
6,430212,8568918944,c2,-,caller=T9897;[drm][ dpu_stop] dpu stop
6,430213,8568918958,c2,-,caller=T9897;[drm] sprd_dpu_disable_vblank()
6,430214,8568919385,c2,-,caller=T9897;[drm] sprd_panel_disable() cmds_len=68 发 sleep in command
6,430217,8568919405,c2,-,caller=T9897;[drm][lcd_tpd_notifier_callback] [SPRD_LCD]lcd_tpd_notifier_callback:lcd suspend powe off
6,430219,8568919458,c2,-,caller=T9897;[drm][sprd_pwm_backlight_update] last_backlevel == level,no set 0 => 0
6,430227,8569084170,c0,-,caller=T9897;[drm] sprd_panel_unprepare()
6,30169,845388106,c2,-,caller=T840;[drm] sprd_panel_unprepare() set lcd reset_gpio to 1 avee 置0 avdd 置0 reset 按照dtsi sprd,reset-off-sequence 中置 1
6,430228,8569124483,c4,-,caller=T9897;[drm] sprd_panel_unprepare() tpd: suspend don' need power on, lcd power off
6,430230,8569124571,c4,-,caller=T9897;[drm] sprd_dpu_atomic_disable()
6,430280,8569344941,c0,-,caller=T761;[drm][ dpu_enhance_backup] enhance module disable backup: 0x1c0
插拔 usb 打印关键词 usb_ch 500 是插线,0 是拔线
android.log 里与休眠唤醒关键字
Powerkey down|Powerkey up|setting power mode|Waking up from Asleep|sprd_backlight|Going to sleep due to
Powerkey down|Powerkey up|setting power mode|Waking up from Asleep|sprd_backlight|Going to sleep due to|WindowManager
logcat |grep -iE 'Powerkey down|Powerkey up|setting power mode|Waking up from Asleep|sprd_backlight|Going to sleep due to'
adb shell "logcat |grep -Ei 'Powerkey down|Powerkey up|setting power mode|Waking up from Asleep|sprd_backlight|Going to sleep due to'"
P720F03 android log 的屏幕唤醒流程:
Line 351656: S0528FD 07-11 19:05:39.584 1594 1795 D WindowManager: Receive Input KeyEvent of Powerkey down windows manager 收到按键按下
Line 351683: S052918 07-11 19:05:39.587 1594 1795 I PowerManagerService: Waking up from Asleep (uid=1000, reason=WAKE_REASON_POWER_BUTTON, details=android.policy:POWER)... 唤醒
Line 351823: M05296D 07-11 19:05:39.602 700 700 D SurfaceFlinger: Setting power mode 2 on display 0 设置亮屏
Line 353435: S052FA6 07-11 19:05:39.770 1594 1795 D WindowManager: Receive Input KeyEvent of Powerkey up windows manager 收到按键松开
Line 353691: M0530A6 07-11 19:05:39.899 700 700 D SurfaceFlinger: Finished setting power mode 2 on display 0 设置亮屏完成 ; 对应 kernel 里的上电和初始化
Line 353714: M0530BD 07-11 19:05:39.905 668 668 D LIGHTS : func:write_int, path=/sys/class/backlight/sprd_backlight/brightness, value=73 写亮度节点,亮屏
P720S11 android log 的屏幕唤醒流程:
03-03 09:03:28.044 13 13 I gpio_keys_gpio_report_event: zte powerkey pressed!
03-03 09:03:28.054 1553 1729 I PowerManagerService: Waking up from Asleep (uid=1000, reason=WAKE_REASON_POWER_BUTTON, details=android.policy:POWER)... 因电源键唤醒
03-03 09:46:10.104 1554 5773 I PowerManagerService: Waking up from Asleep (uid=1000, reason=WAKE_REASON_GESTURE, details=com.zte.zgesture:RaiseWake)... 因抬手亮屏唤醒
03-03 09:03:28.071 696 696 D SurfaceFlinger: Setting power mode 2 on displ
03-03 09:03:28.246 13 13 I gpio_keys_gpio_report_event: zte powerkey released!
03-03 09:03:28.306 696 696 D SurfaceFlinger: Finished setting power mode 2 on display 0
03-03 09:03:28.318 654 654 D LIGHTS : func:write_int, path=/sys/class/backlight/sprd_backlight/brightness, value=150
P720F03 android log 的屏幕休眠流程:
Line 353965: S05318D 07-11 19:05:49.583 1594 1703 I PowerManagerService: Going to sleep due to timeout (uid 1000)...
Line 354094: M05320E 07-11 19:05:49.701 668 668 D LIGHTS : func:write_int, path=/sys/class/backlight/sprd_backlight/brightness, value=0
Line 354180: M05323D 07-11 19:05:49.710 700 700 D SurfaceFlinger: Setting power mode 0 on display 0
Line 354653: M053416 07-11 19:05:50.023 700 700 D SurfaceFlinger: Finished setting power mode 0 on display 0
P720S11 android log 的屏幕休眠流程:
03-03 09:07:52.669 13 13 I gpio_keys_gpio_report_event: zte powerkey pressed!
03-03 09:07:52.872 13 13 I gpio_keys_gpio_report_event: zte powerkey released!
03-03 09:48:14.008 1554 1554 I PowerManagerService: Going to sleep due to power_button (uid 1000)... power键休眠
03-03 09:46:20.751 1554 1646 I PowerManagerService: Going to sleep due to timeout (uid 1000)... 超时导致休眠
03-03 09:46:20.756 659 659 D LIGHTS : func:write_int, path=/sys/class/backlight/sprd_backlight/brightness, value=0 关背光
03-03 09:46:20.786 751 751 D SurfaceFlinger: Setting power mode 0 on display 0 设置灭屏
03-03 09:46:20.995 751 751 D SurfaceFlinger: Finished setting power mode 0 on display 0 设置灭屏完成
几个项目的亮度条最中间的背光亮度
项目 logcat dev
P720S11_T 73/255=0.286 70->280/255->1023 =0.274
P963F94_T 22/255=0.086 369/4095=0.09
Z5302O_T 23/255=0.09 22/255=0.086
P963F80_R 129/255=0.50 88/255=0.34
P963F23_S GO 22/255=0.098 22/255=0.098
S11 转换亮度的 log
中间亮度,在把 overlay 中数组改成线性背光之前:
pr_info("%s: brightness min:%u old: %u => zte:%u => level:%u\n", __func__, bl->min_level, bl_preset, bl_convert, level);
6,39079,1049625133,c1,-,caller=T657;[drm][sprd_pwm_backlight_update] sprd_pwm_backlight_update: brightness level:67 => 125 min_level:11
下发 67 ,在 overlay 中数组第 67 个数字是 125 ,67/255=0.262 125/1024=0.122
中间亮度,在把 overlay 中数组改成线性背光之后:
pr_info("%s: brightness min:%u old: %u => zte:%u => level:%u\n", __func__, bl->min_level, bl_preset, bl_convert, level);
6,39079,1049625133,c1,-,caller=T657;[drm][sprd_pwm_backlight_update] sprd_pwm_backlight_update: brightness level:67 => 268 min_level:11
下发 67 ,在 overlay 中数组第 67 个数字是 268 , 67/255=0.262 268/1024=0.261
(在logcat 中打印 :
08-22 00:58:22.693 657 657 D LIGHTS : func:write_int, path=/sys/class/backlight/sprd_backlight/brightness, value=67
08-22 02:01:32.014 657 657 I [drm][sprd_pwm_backlight_update] sprd_pwm_backlight_update: brightness level:67 => 268 min_level:11
)
如果打开 CONFIG_ZTE_LCD_BACKLIGHT_LEVEL_CURVE 宏控,则中间还会再转换一次亮度: level -> convert -> level ,不过此宏控删掉很久了
pr_info("%s: brightness min:%u old: %u => zte:%u => level:%u\n", __func__, bl->min_level, bl_preset, bl_convert, level);
6,134755,1223094972,c3,-,caller=T671;[drm][sprd_pwm_backlight_update] sprd_pwm_backlight_update: 222,brightness min:11 old: 67 => zte:31 => level:124
67 是下发的亮度, 在 comm.c 里的数组第 67 个数字找到 convert = 31 ,在 overlay 里的数组第 31 个数字找到 level = 124 ,67/255=0.262 31/255=0.121 124/1024=0.121
(在 logcat 中打印:
08-28 14:19:34.079 671 671 D LIGHTS : func:write_int, path=/sys/class/backlight/sprd_backlight/brightness, value=67
08-28 14:21:23.215 671 671 I [drm][sprd_pwm_backlight_update] sprd_pwm_backlight_update: 222,brightness min:11 old: 67 => zte:31 => level:124
)
提 cq 的联系人: yang.chaofeng@zte.com.cn,yang.yanpeng@zte.com.cn,wang.jianping3@zte.com.cn,dong.yuanjie@zte.com.cn,qu.tao5@zte.com.cn,
P720S16 华映屏闪屏,且log 出现 "Warning: (vsync + vbp) < 32, underflow risk!\n" 和 dpu underflow 打印 , cq SPCSS01196644
adb shell "cat /sys/class/devfreq/scene-frequency/sprd-governor/ddrinfo_freq_table" 查看可用 lcdon 频率
http://10.67.16.29:8080/c/device/sprd/mpool/+/1085969 去掉 tp 驱动
notepad++ 搜索框不见了, F7 后按 ALT + space 或者双击下边栏
在 0-android_system.log
07-14 14:28:24.055 1605 2907 D RefreshRate: setDesiredConfig fps : 90, who : touch, isUnlockCompleted : true, testing : false // 框架设置刷新率成功
07-14 14:28:24.100 1605 1771 D RefreshRate: onUEvent status : 90 // 驱动上报切换后的刷新率值
adb shell "dumpsys SurfaceFlinger |grep refresh" 查看有哪些刷新率可选
esd 恢复流程
6,97320,525878530,c3,-,caller=T878;[drm] sprd_dpu_enable_vblank()
6,97367,531164654,c0,-,caller=C0;[drm] sprd_dpu_disable_vblank()
6,97387,531958399,c7,-,caller=T6806;[drm][ dwrite_store] [SPRD_LCD]dtype = 0x05,write cmd = 0x10,length = 0x02
3,97390,533148955,c0,-,caller=T486;[drm:sprd_panel_te_check [sprd_drm]] *ERROR* TE esd timeout.
6,97391,533148982,c0,-,caller=T486;[drm] ====== esd recovery start ========
6,97392,533148989,c0,-,caller=T486;[drm] sprd_dsi_encoder_disable(last_dpms=0, dpms=0)
6,97393,533153579,c0,-,caller=T486;[drm][ dpu_wait_stop_done] dpu is idle now
6,97394,533153581,c0,-,caller=T486;[drm][ dpu_stop] dpu stop
6,97395,533153944,c0,-,caller=T486;[drm] sprd_panel_disable() cmds_len=68
6,97398,533153956,c0,-,caller=T486;[drm][lcd_tpd_notifier_callback] [SPRD_LCD]lcd_tpd_notifier_callback:lcd suspend powe off
6,97400,533153966,c0,-,caller=T486;[drm][sprd_pwm_backlight_update] sprd_pwm_backlight_update: brightness level:96 => 0 min_level:11
6,97408,533320661,c0,-,caller=T486;[drm] sprd_panel_unprepare()
6,97409,533320677,c0,-,caller=T486;[drm] sprd_panel_unprepare() set lcd reset_gpio to 1
6,97422,533360743,c0,-,caller=T486;[drm] sprd_panel_unprepare() tpd: suspend don' need power on, lcd power off
6,97424,533360789,c0,-,caller=T486;[drm] sprd_dsi_encoder_enable(last_dpms=0, dpms=0)
6,97425,533360824,c0,-,caller=T486;[drm][ sprd_dsi_init] escape clock divider = 5
6,97426,533360959,c0,-,caller=T486;[drm][ sprd_dphy_init] lanes : 4
6,97427,533360961,c0,-,caller=T486;[drm][ sprd_dphy_init] freq : 768000
6,97428,533361934,c0,-,caller=T486;[drm] sprd_panel_prepare()
6,97429,533361936,c0,-,caller=T486;[drm] sprd_panel_prepare() tpd:lcd power on
6,97437,533437929,c0,-,caller=T486;[drm] sprd_panel_enable() lcd_name=lcd_icnl9911c2_easyquick_hkc_6p517_mipi_hd_chipone_4lane
6,97438,533437933,c0,-,caller=T486;[drm] icnl9911c_f6=0x2e
6,97447,533608508,c0,-,caller=T486;[drm][sprd_pwm_backlight_update] sprd_pwm_backlight_update: brightness level:96 => 385 min_level:11
6,97448,533608514,c0,-,caller=T486;[drm][sprd_pwm_backlight_update] [SPRD_LCD]sprd_pwm_backlight_update delay 34ms
6,97453,533652796,c0,-,caller=T486;[drm][ dpu_run] dpu run
6,97454,533652838,c0,-,caller=T486;[drm] ======= esd recovery end =========
6,97455,533652840,c0,-,caller=T486;[drm] esd_count is 1
6,450081,10126834475,c1,-,caller=T891;[drm] vrr going, flush current esd work and cancel ongoing work
6,450082,10126834506,c1,-,caller=T891;[drm] sprd_dsi_connector_best_encoder()
6,450083,10126834511,c1,-,caller=T891;[drm] sprd_dsi_connector_best_encoder()
6,450084,10126834526,c1,-,caller=T891;[drm] sprd_dpu_mode_valid() mode: "720x1600": 60 128000 720 756 760 796 1600 2622 2626 2658 0x48 0x0
6,450085,10126834531,c1,-,caller=T891;[drm] sprd_dsi_encoder_atomic_check()
6,450086,10126834553,c1,-,caller=T891;[drm] sprd_dsi_encoder_disable(last_dpms=0, dpms=0)
6,450087,10126834561,c1,-,caller=T891;[drm] sprd_dpu_disable_vblank()
6,450088,10126834608,c1,-,caller=T891;[drm] sprd_dpu_mode_set_nofb() mode: "720x1600": 60 128000 720 756 760 796 1600 2622 2626 2658 0x48 0x0
6,450089,10126834616,c1,-,caller=T891;[drm][ dpu_modeset] begin switch to 720 x 1600
6,450090,10126834629,c1,-,caller=T891;[drm] sprd_dsi_encoder_mode_set() mode: "720x1600": 60 128000 720 756 760 796 1600 2622 2626 2658 0x48 0x0
6,450091,10126834637,c1,-,caller=T891;[drm] sprd_dsi_encoder_enable(last_dpms=0, dpms=0)
6,450092,10126834640,c1,-,caller=T891;[drm] skip dsi resume
6,450093,10126835544,c1,-,caller=T878;[drm] sprd_dpu_enable_vblank()
6,450095,10126874776,c3,-,caller=T388;[drm][ dpu_wait_stop_done] dpu is idle now
6,450096,10126874786,c3,-,caller=T388;[drm][ dpu_stop] dpu stop
6,450097,10126875872,c3,-,caller=T388;[drm][zte_panel_fps_send_uevent] [SPRD_LCD]FPS: send fps 60
6,450098,10126875880,c3,-,caller=T388;[drm] vrr finished, schedule esd work
S11 格科屏检测 id 的流程:
[00002872] [c1] cpu num 1
[00002873] [c0] creating secondary task
[00002876] [c1] entering scheduler on cpu 1
[00002879] [c0] arch_context_switch: cpu 0, old 0xb5722018 (bootstrap2, pri 16, flags 0x27), new 0xb5729318 (sprd_preload, pri 24, flags 0x27)
[00002890] [c1] arch_context_switch: cpu 1, old 0xb5197790 (idle 1, pri 0, flags 0x11), new 0xb5726418 (secondarybootstrap2, pri 16, flags 0x27)
[00002902] [c0] [lk core0] enter sprd_preload
[00002905] [c1] arch_context_switch: cpu 1, old 0xb5726418 (secondarybootstrap2, pri 16, flags 0x27), new 0xb572b718 (sprd_lcd, pri 24, flags 0x27)
[00002917] [c1] [lk core1] enter sprd_lcd
[00002920] [c1] lcd start init time:2920ms
[00002923] [c1] [sprdfb][sprd_panel_probe] zte sprd_panel_probe begin zte_lcd_detect_id = 0xfffe OPT_ID=0x9f name=lcd_chipone_icnl9911c2_tongxingda_mipi_hdplus
[00002936] [c1] [sprdfb][sprd_panel_probe] zte_lcd_detect sprd_t v1.0.0 ,there has no read panel id
[00002959] [c1] [sprdfb][mipi_dsi_init] escape clk div = 5
[00002964] [c1] [sprdfb][sprd_dsi_resume] dsi init OK
[00002967] [c1] [sprdfb][mipi_dphy_configure] lanes : 4
[00002971] [c1] [sprdfb][mipi_dphy_configure] freq : 768000
[00002977] [c1] [sprdfb][sprd_dphy_resume] dphy init OK
[00002981] [c1] [sprdfb][icnl9911c2_power] icnl9911c2_power on
[00003160] [c1] [sprdfb][icnl9911c2_readid] icnl9911c2 V2 read id:0x4a,0x0,0x0,0x0
[00003166] [c1] [sprdfb][icnl9911c2_power] icnl9911c2_power off V2
[00003201] [c1] [sprdfb][sprd_dphy_suspend] dphy uninit OK
[00003206] [c1] [sprdfb][sprd_dsi_suspend] dsi uninit OK
[00003211] [c1] [sprdfb][sprd_panel_probe] attach panel 0x9f failed, try next...
[00003217] [c1] [sprdfb][sprd_panel_probe] zte sprd_panel_probe begin zte_lcd_detect_id = 0x4a OPT_ID=0xa3 name=lcd_chipone_icnl9911c2_easyquick_mipi_hdplus
[00003229] [c1] [sprdfb][sprd_panel_probe] zte sprd_panel_probe begin zte_lcd_detect_id = 0x4a OPT_ID=0x4a name=lcd_gc7202_skyworth_galaxycore_mipi_hdplus
[00003258] [c1] [sprdfb][mipi_dsi_init] escape clk div = 7
[00003262] [c1] [sprdfb][sprd_dsi_resume] dsi init OK
[00003266] [c1] [sprdfb][mipi_dphy_configure] lanes : 4
[00003270] [c1] [sprdfb][mipi_dphy_configure] freq : 1012480
[00003275] [c1] [sprdfb][sprd_dphy_resume] dphy init OK
[00003279] [c0] load boot.img succeed!!
[00003282] [c1] [sprdfb][gc7202_power] gc7202_power on
[00003461] [c1] [sprdfb][sprd_panel_probe] attach panel 0x4a success twice
[00003466] [c1] i2c6, freq=100000
[00003469] [c1] i2c6, freq=100000
[00003472] [c1] i2c6, freq=100000
[00003475] [c1] [sprdfb][zte_set_vsp_vsn_power] zte_set_vsp_vsn_power to 6V sucess
[00003481] [c1] [sprdfb][gc7202_init] gc7202_init start
[00003627] [c1] [sprdfb][sprd_panel_probe] panel_init info->is_icnl9911c=0 ,supported_panel[i].lcd_id=74
[00003635] [c1] [sprdfb][calc_dpi_clk_src] calc DPI_CLK_SRC failed, use default
[00003641] [c1] [sprdfb][dispc_clk_init] DPU_CORE_CLK = 614000000
[00003646] [c1] [sprdfb][dispc_clk_init] DPI_CLK_SRC = 256000000
[00003651] [c1] [sprdfb][dispc_clk_init] DPU_CORE_CLK = 614000000, DPI_CLK_DIV = 8
[00003657] [c1] [sprdfb][dpu_run] dpu run
[00003660] [c1] [sprdfb][sprd_dispc_resume] dispc init OK
[00003664] [c1] [sprdfb][logo_mem_init] splashimage addr is 0x0x9d000000, fb size is 0x9e4000
[00003672] [c1] logo memory init success.
[00003674] [c1] splash_get_bpix: ZTE_LCD_DISPLAY_SPLASH defined bpix = 8
[00003680] [c1] [sprdlk][lcd_init] [LCD] Using LCD frambuffer at 0xb0000000
[00003686] [c1] [sprdlk][lcd_clear] [LCD] setting up console...
[00003690] [c1] lcd_console: have 90/100 col/rws on scr 720x1600 (0 deg rotated)
[00003861] [c0] load vendor_boot.img succeed!!
[00003864] [c1] Found Data: name=zte_variantflag; head=this-is-cfg-head; str=UNI_CN; signature=cfg-signature-is-here
[00003873] [c0] sprd_preload consume 974ms
[00003876] [c1] getcfgbyname cfgname=zte_variantflag, c=this-is-cfg-head
unlock 的方法 (解 bl 锁)为了push 东西到手机
1、adb reboot bootloader
2、fastboot flashing unlock_bootloader C:\Users\10335101\Downloads\adb1039_fastboot_unlock_newkey\signature_file 此时无adb 口,直接用此命令即可
3、按音量下键,显示成功后
4、fastboot reboot
5、adb push D:\MYFILE\OLD\apk\fps_mode_test.sh system/bin/
6、nohup fps_mode_test.sh &
7、adb push 失败可以 adb root 再 adb remount 重启后需要重新 adb root 和 adb remount
如果要看 TA 分支的代码,可以拉下来。 先 repo init (不加 --depth=1) ,随后 repo sync (不加-c) ,再 git branch 查看有哪些分支名,再 git checkout 分支名
切换分支
跳过开机向导命令
adb shell settings put secure user_setup_complete 1
adb shell settings put global device_provisioned 1
adb reboot
打开刷新率
adb shell service call SurfaceFlinger 1034 i32 1
aio 自测用例 取代码命令:
拉代码命令:
git clone "http://10335101@10.67.16.29:8080/a/platform/tools/testcase" -b tradefed && (cd "testcase" && mkdir -p .git/hooks && curl -Lo `git rev-parse --git-dir`/hooks/commit-msg http://10335101@10.67.16.29:8080/tools/hooks/commit-msg; chmod +x `git rev-parse --git-dir`/hooks/commit-msg)
(从网页里找 http://10.67.16.29:8080/admin/repos/platform/tools/testcase windows 系统建议从网页带 http 的命令拉)
推送
git push origin HEAD:refs/for/tradefed
参考资料:
1、这是其他同事写的 py的测试用例,可以先参考下。py的用例编写比较简单。
http://10.67.16.29:8080/plugins/gitiles/platform/tools/testcase/+/refs/heads/tradefed/P_testcase/testcases/
2、这里是配置文件,用例编写完如果需要上线测试,需要加上配置文件。
http://10.67.16.29:8080/plugins/gitiles/platform/tools/testcase/+/refs/heads/tradefed/P_testcase/config
3、代码库修改记录查询
http://10.67.16.29:8080/q/project:platform%252Ftools%252Ftestcase
4、每日构建 AIO 项目
https://ct.zd.zte.com.cn/view=Dailybuild&view_type=all
5、云真机
http://ct.zd.zte.com.cn/pandora
取 CQ 中的patch 文档 主机名 ftp.unisoc.com 用户名 zte_sh 密码 3hTzs3tk 再 通用设置里 改为 HTTP/1.1 代理主机 proxysh.zte.com.cn 代理端口 80
time ./build.sh P720S11_T -S -I -v userdebug -m vendor_dlkmimage -j 40 可编译sprd-drm.ko
生成的ko在目录 Z:\sprd\P720S11_T1\out\target\product\ums9620_2h10\vendor_dlkm\lib\modules\sprd-drm.ko 大小1.13M
adb push D:\MYFILE\sprd-drm.ko ./vendor_dlkm/lib/modules/sprd-drm.ko
push到手机
adb shell "cat /dev/kmsg | grep -Ei 'esd|fps'" 查看帧率和esd的打印
adb shell "cat /sys/class/display/panel0/esd_check_enable" 查看 esd 打开与否
P720S11是平台侧输出pwm波控制背光,生效的是 xref: /SPRD_T_5G_V1-P720S11_T/bsp/modules/kernel5.4/display/dispc/sprd_bl.c log关键字
last_backlevel == level, no set200 => 657 189 .update_status = sprd_pwm_backlight_update,
6,274710,934998704,c2,-,caller=T670;[drm][sprd_pwm_backlight_update] sprd_pwm_backlight_update: brightness level:88 => 353 min_level:11
P932F22是IC侧输出pwm波控制背光,生效的是 xref: /SPRD_S_GO-P932F22_S/bsp/kernel/kernel5.4/drivers/gpu/drm/sprd/sprd_dsi_panel.c log关键字 last_backlevel == level, so no set
1284 .update_status = sprd_oled_set_brightness,
6,65234,182203472,c1,-,caller=T756;[drm] sprd_oled_set_brightness level:979 --> convert_level:979 oled->cmds_total:1 bl_register_len:12
&panel {
sprd,backlight = <&pwm_backlight>;
reset-gpio = <&ap_gpio 11 GPIO_ACTIVE_HIGH>;
};
&dpu {
sprd,logo-memory = <&logo_reserved>;
sprd,backlight = <&pwm_backlight>;
/* if we need use fastcall for widevine, open the following config */
// sprd,widevine-use-fastcall;
};
F22 IC侧背光
&dpu {
sprd,logo-memory = <&logo_reserved>;
};
背光控制:
平台侧提供PWM:
| 7731E CPU | __________输出pwm波_________|上贴电阻,表示CPU和BL芯片连通了| _________ |BL芯片,(背光芯片)| ______________A=20V ,K=0V ,电压加在二极管两端,产生背光 ---|>-|>---(二极管) 。
|
屏,此处屏与BL芯片断开,没有连背光芯片
IC侧提供PWM:
| 7731E CPU | __________通过mipi信号,mipi协议,将控制亮度的51寄存器写值,比如写入FF,调到最亮 _________|屏的IC,比如7701s,连接BL芯片| _________ |BL芯片,(背光芯片)| __________| 输出pwm波 | ___________A=20V ,K=0V ,电压加在二极管两端,产生背光 ---|>-|>---(二极管) 。
|
CPU,此处CPU与BL芯片断开,没有连背光芯片
image.png
ap写 IC 的 51 (IC 的亮度寄存器)和53 (开关)
当51 寄存器存 FF 表示调到最亮,00 表示调到最暗 ,能控制占空比
当53 寄存器存 24 表示打开pwm 一下子亮,直接亮 ; 当53 寄存器存 2C 表示打开 dimming 功能
ENP 对应dtsi中的 CONFIG_LCM_GPIO_AVDDEN
ENN 对应dtsi中的 CONFIG_LCM_GPIO_AVEEEN
___________ 通过mipi_dsi给51寄存器写值来调节占空比,占空比影响电压电流,从而影响功率,亮度跟着变
___|___ | 表明AP侧提供背光
|_____|--二极管 /
| /
____ 贴上电阻____PWM______N/A(表示断开)____________
| |
| ______|________
|AP芯片|(CPU,UMS9620是CPU型号) ----------->|显示IC() |
| | LCD | 电压1.8V,默认正负5V,在dtsi中bias_config里写入14就是在调节电压到6V
| |______________|
| _______ ______ |
|____________|PMIC|______1.8v___|LDO|______________________|
______________
|AP芯片|(CPU,UMS9620是CPU型号) ----------->|显示IC() |
| / | LCD | 1.8V,正负5V
| / |______________|
| _______ ______ 发送PWM波 |
|____________|PMIC|______1.8v___|LDO|______________________|
PMIC是power manager IC,电源管理
LDO相当于开关,打开关闭
4路mipi的话,差分电路,4*2=8,再加上2路时钟信号,总共10条线路
软件dtsi文件中的lcd_id和硬件lcd id是不一样的,dtsi中的lcd_id是通过烧录寄存器,软件通过排线读取lcd上的ic里的寄存器来确认
硬件lcd id是靠硬件搭出来的电路状态来确认
LCM BIAS DRIVER 是lcd的供电驱动
LCM BACKLITHT DRIVER 是lcd的背光驱动
亮屏时序 : 先ui显示,再打开背光 防止异常显示
灭屏时序: 先关背光,再停图 防止异常显示
_____________
AP芯片(quantum,mtk,sprd)刷图 ------------>|显示IC() |
/ | LCD |
/ |______________|
发送PWM波
reset时序:
在kernel里 sprd,reset-on-sequence = <1 50>, <0 50>, <1 120>;
在lk里 在 .c 的 power函数里 sprd_gpio_request(CONFIG_LCM_GPIO_RSTN);
sprd_gpio_direction_output(CONFIG_LCM_GPIO_RSTN, 1);
没下成功初始化,打印异常log
dsi_wait_tx_cmd_fifo_empty|dsi_wait_tx_payload_fifo_empty
单个的dtsi 编译成dtb 编进 bootimage
dtbo是dtb的overlay ,改了overlay 编进dtboimage
拉最新的代码
git status
git log
git diff > patch.patch
git reset --hard 节点
repo sync -c bsp/kernel/kernel5.4 或者 git pull
S11 为了看版本号,进工程模式的方法:
进工程模式 *#*#983#*#*
一级解锁 *983*673636#
进真正工程模式 *987*0# 可以看到版本号
*983*#1024# 变形金刚标志位
*983*0# 各项测试界面
手机开root方法 为了cat /dev/kmsg ,user 版本无法cat 问题
adb shell getprop |findstr signature 查看下载软件的密钥,下载对应的apk
在 *#*983#*#* 再 *983*1024# 找到右上角扫码鉴权
*#*#983#*#*
同时手机安装软件 adb install "C:\Users\10335101\Downloads\SecureEmode-S-signed.apk" 用网站对应的apk
*#983*1024# 安装完apk 后才会显示扫码界面
安装成功后在网站上扫码 https://zd.zte.com.cn/secureemode/
P720S09开log方法:*#*#83781#*#* ,DEBUG&LOG里的YLOG如果是灰色的YLog表示没开
vysor 连接错误和用adb install装软件失败,可用 adb shell vendorcfg -s -nzte.anti_usb_install -r0 ,解决不能安装软件问题,之后再重启生效
查看S11 创维屏 initial code 是否生效 亮屏下执行,灭屏执行会死机
adb shell "echo FF55AA66 > /sys/lcd_sys/reg_debug/dwrite"
adb shell "echo FE55AA66 > /sys/lcd_sys/reg_debug/dwrite" 前两行是解锁,用的initial code最前两行
adb shell "echo FF22 > /sys/lcd_sys/reg_debug/dwrite" 切page
adb shell "echo F403 > /sys/lcd_sys/reg_debug/dread" F4寄存器,读取 3个寄存器
adb shell "cat /sys/lcd_sys/reg_debug/dread" 查看读取结果
pause
C:\Users\10335101\Desktop>adb shell "echo FF55AA66 > /sys/lcd_sys/reg_debug/dwrite"
C:\Users\10335101\Desktop>adb shell "echo FE55AA66 > /sys/lcd_sys/reg_debug/dwrite"
C:\Users\10335101\Desktop>adb shell "echo FF22 > /sys/lcd_sys/reg_debug/dwrite"
C:\Users\10335101\Desktop>adb shell "echo F403 > /sys/lcd_sys/reg_debug/dread" F4寄存器,读取 3个寄存器
C:\Users\10335101\Desktop>adb shell "cat /sys/lcd_sys/reg_debug/dread"
read back:
rbuf[00]=01 rbuf[01]=00 rbuf[02]=00
如果更改了 sleep in code
可通过 cat /dev/kmsg | grep drm 查看 cmds_len 的长度,有几个数据
6,59868,114303704,c2,-,caller=T881;[drm] sprd_panel_disable() cmds_len=151
也可通过 cat /proc/driver/lcd_id 查看时间戳
932F22_NEEA_S 查看变形标记 *#*#983#*#* 再 *983*1024# 就可见到 Transform Variants 里面变型标记 DGT_SS
因为在 staple/ums9620-2h10-overlay.dts 里 include dtsi 所以单编 dtbo
1 #include "zte_lcd_skyworth_gc7202_6p517_mipi_hdplus.dtsi"
image.png
上面是mipi,下面是reset,应该reset需要比mipi晚下电70ms,上图同时下电,有问题,旁边箭头图例是自己设置的变量
正确的:
image.png
上面是mipi,下面是reset,reset需要比mipi晚下电70ms,符合要求
time ./build.sh P720S11_T -S -I -v userdebug -m vendor_dlkmimage -j 40 可编译sprd-drm.ko 大小1.13M
生成的ko在目录 Z:\sprd\P720S11_T1\out\target\product\ums9620_2h10\vendor_dlkm\lib\modules
adb push D:\MYFILE\sprd-drm.ko ./vendor_dlkm/lib/modules/sprd-drm.ko push到手机
lk consume time:3655ms, lcd init consume:1508ms, backlight on time:4636ms
sprd_lcd consume 在uboot里可查看lcd耗时
lcd耗时 从enter sprd_lcd 到 logo memory init success.
新串口线,如果手机连电脑,不需要串口线的接地线连接手机。如果手机没连电脑,只需串口线的RX接手机TX
通过板级查询哪些项目在用此板级 可在/SPRD_S-P618F08_S/vendor/zte/feature/projects/ 搜索 lettuce
lettuce (full), "/SPRD_S-P618F08_S/vendor/zte/feature/projects/" (path) in projects: SPRD_S-P618F08_S - OpenGrok search results
getprop | grep brightness 查看prop
如果有故障,是否必现?还是一次性
1、在0-android.log中搜索 Going to sleep due 关键字可查看 休眠原因
Waking up from Asleep 唤醒原因 , 相关的可搜索的关键字 SurfaceFlinger ,也 可通过命令 logcat |grep SurfaceFlinger 查看
SurfaceFlinger: Setting power mode 2 表示亮屏
SurfaceFlinger: Setting power mode 0 表示灭屏
logcat |grep -Ei "SurfaceFlinger: Setting power mode|Going to sleep due|Waking up from Asleep"
可通过命令 logcat |grep "SurfaceFlinger: Setting power mode" 查看打印
比如 01-05 06:00:45.620 693 693 D SurfaceFlinger: Setting power mode 0 on display 0
P720S11_T中找brightness 节点 cat ./sys/devices/platform/backlight/backlight/sprd_backlight/brightness 通过find -name "brightness"找到的路径
关背光和写亮度节点,推荐: adb shell "echo 0 > sys/class/backlight/sprd_backlight/brightness"
因为andorid.log 里就是再写此节点:
P963F94:/ # cat sys/class/backlight/ sprd_backlight /brightness
0
其中 sprd_backlight 是软链接
P963F94:/sys/class/backlight # ls -l sprd_backlight
lrwxrwxrwx 1 root root 0 2023-09-16 12:13 sprd_backlight -> ../../devices/platform/soc/soc:mm/63100000.dsi/63100000.dsi.0/display/panel0/sprd_backlight
实际上操作的 ./sys/devices/platform/soc/soc:mm/63100000.dsi/63100000.dsi.0/display/panel0/sprd_backlight/ brightness 节点
P963F94 机器 find -name brightness 结果:
./sys/devices/platform/soc/soc:ap-ahb/20300000.sdio/leds/mmc1::/brightness
./sys/devices/platform/soc/soc:ap-ahb/20600000.sdio/leds/mmc0::/brightness
./sys/devices/platform/soc/soc:aon/41800000.spi/spi_master/spi4/spi4.0/41800000.spi:pmic@0:led-controller@180/leds/sc27xx:green/brightness
./sys/devices/platform/soc/soc:aon/41800000.spi/spi_master/spi4/spi4.0/41800000.spi:pmic@0:led-controller@180/leds/sc27xx:red/brightness
./sys/devices/platform/soc/soc:aon/41800000.spi/spi_master/spi4/spi4.0/41800000.spi:pmic@0:led-controller@180/leds/sc27xx:blue/brightness
./sys/devices/platform/soc/soc:mm/63100000.dsi/63100000.dsi.0/display/panel0/sprd_backlight/brightness 实际操作的节点
P963F94 关背光方法二:
2|P963F94:/ # cat sys/class/display/ panel0 /sprd_backlight/brightness
0
此时 panel0 是软链接
ls -l panel0
lrwxrwxrwx 1 root root 0 2023-09-16 11:39 panel0 -> ../../devices/platform/soc/soc:mm/63100000.dsi/63100000.dsi.0/display/panel0
实际上也是操作的 ./sys/devices/platform/soc/soc:mm/63100000.dsi/63100000.dsi.0/display/panel0/ sprd_backlight/brightness
P720S11关背光方法二:
adb shell "echo 0 > ./sys/devices/platform/backlight/backlight/sprd_backlight/brightness"
因为 P720S11机器 find -name brightness 结果:
./sys/devices/platform/backlight/backlight/sprd_backlight/brightness 这是实际操作的节点
./sys/devices/platform/soc/soc:ap-ahb/22200000.sdio/leds/mmc0::/brightness
./sys/devices/platform/soc/soc:ap-ahb/22220000.sdio/leds/mmc1::/brightness
./sys/devices/platform/soc/soc:aon/64400000.spi/spi_master/spi4/spi4.0/sc27xx-bltc/leds/sc27xx:blue/brightness
./sys/devices/platform/soc/soc:aon/64400000.spi/spi_master/spi4/spi4.0/sc27xx-bltc/leds/sc27xx:red/brightness
./sys/devices/platform/soc/soc:aon/64400000.spi/spi_master/spi4/spi4.0/sc27xx-bltc/leds/sc27xx:green/brightness
此时推荐的方法: adb shell "echo 0 > sys/class/backlight/sprd_backlight/brightness" 中的 sys/class/backlight/sprd_backlight 是软链接
P720S11:/ # ls -l sys/class/backlight/sprd_backlight
lrwxrwxrwx 1 root root 0 2023-08-31 09:22 sys/class/backlight/sprd_backlight -> ../../devices/platform/backlight/backlight/sprd_backlight
S11 设置光感亮度命令
adb shell dumpsys sensorservice set_lux N
adb shell dumpsys sensorservice set_lux 5000
adb shell "echo 255 > /sys/class/backlight/sprd_backlight/brightness"
查看亮度 cat /sys/class/display/panel0/sprd_backlight/brightness
adb shell "cat /sys/class/backlight/sprd_backlight/brightness"
在bsp/out/androids/s9863a1h10_go_32_2g/obj/kernel/drivers/gpu/drm/sprd里有sprd-drm.ko,把这个ko可以push到手机分区
2022.11.14
今日笔记:
kernel中的ums9620-2h10-overlay.dts 里的 sprd,max-brightness-level = <1023>; 是因为有10比特,2^10
下面的brightness-levels 也相应地乘以对应系数转换
关pq:
enhance_test enable read 查看pq
如何找一个项目对应 json ,在rdc里补充信息里找
P932F22-Tigo-危地马拉-项目差异-GUI-0010 Bootup logo 在rdc 补充信息
json:P932F22_AR_RV_S.json
变形标志位:TIGO_GT
存放正式版本的地址 \\10.95.242.18\version\version_blade\P932F22\GEN_MX_P932F22V1.0.0B08
存放构建地址 \\10.95.242.28\version_jarvis\S\SPRD\SC9832E\P932F22\dailybuild
查看kernel宏是否生效 vim bsp/out/androidt/ums9620_2h10_native/obj/kernel/.config 在此文件里找找
在S11 等T 基线上的kernel代码不在 bsp/kernel/kernel5.4/drivers/gpu/drm/sprd/sprd_dsi_panel.c 等文件里,因为
通过ls bsp/out/androidt/ums9620_2h10_native/obj/kernel/drivers/gpu/drm/sp 都tab自动补全不出来文件所在目录表明都没有编译到。而在bsp/modules/kernel5.4/display/dispc/sprd_dsi_panel.c 里
image.png
pinmap
image.png
想把RST拉高拉低,先在电路原理图上查看RST是哪个GPIO,例如GPIO11,再通过GPIO11在硬件配置表(excel表)里查看实际名称,例如 LCM0_RSTN ,最后在pinmap.c ,例如 bsp/bootloader/lk/target/ums9620_2h10/zte_staple_pinmap.c 中搜索 LCM0_RSTN 找到该改的位置,如下图。注意,两行记录才表示一个pin
{REG_PIN_LCM0_RSTN, BITS_PIN_AF(3)},
{REG_MISC_PIN_LCM0_RSTN, BITS_PIN_DS(1)|BIT_PIN_NULL|BIT_PIN_WPD|BIT_PIN_SLP_AP|BIT_PIN_SLP_NUL|BIT_PIN_SLP_OE},//LCM_RSTN
lcd 解析dtsi的函数调用过程
sprd_panel_probe --> sprd_panel_parse_dt --> sprd_panel_parse_lcddtb (解析 sprd,dsi-color-format 和 sprd,initial-command 等) -->
of_get_property --> of_find_property(查找结点) --> __of_find_property --> of_prop_cmp(比较,一旦名字对应则找到返回)
hbp/hfp/hsync vbp/vfp/vsync Video 屏的 Hporch/Vporch 参数。如果是 CMD 屏,这些参数必须是 0。
LCD 屏幕需要支持通过只修改 vfront-porch 参数来进行 60 Hz/90 Hz 刷新率动态切换,保证平台停止 送数 50 ms 内无显示异常。
sprd,sleep-in-command LCD 休眠指令。 sprd,sleep-out-command LCD 唤醒指令。
sprd,reset-on-sequence LCD 上电时,reset 引脚的操作时序。 <1 5>, <0 5>, <1 20>:表示先保持高电平 5 ms,再保持低电平 5 ms,然后 保持高电平 20 ms。
sprd,phy-bit-clock High-Speed 模式下数据传输时,clock lane 的传输速率,即 PHY frequency,单位为 kbit/s。
mipi_clock=pixel_clock *div ,几分频
P720S11_T 同兴达 icnl9911c2 设置的 mipi 频率 sprd,phy-bit-clock = <768000>; /* kHz */ 768000 kHz 即 768 MHz
P720S11_T 同兴达 icnl9911c2 设置的 pixel clk 频率 clock-frequency = <128000000>; /* Hz */ 128000000 Hz 即 128 MHz
P720S11_T 同兴达 icnl9911c2 设置的 分频 sprd,dpi-clk-div = <6>; 设置的 6 分频 刚好对应 128 x 6 = 768
mipi 频率是sprd,phy-bit-clock = <552000>; 单位 kbps
pixel clock是clock-frequency = <38400000> 单位 Hz
.dtsi中的 sprd,phy-bit-clock = <453000>; /* kbps */ 对应 cat /sys/class/display/dphy0/freq 出现的453000 ,叫做mipi频率,mipi clock 453 Mbps
.dtsi中的 clock-frequency = <34000000>; 对应 cat /sys/class/display/panel0/pixel_clock 出现的32000000 ,叫做 pixel_clock Hz
cat /sys/class/display/dphy0/freq 显示453000 查看mipi频率
echo xxx > /sys/class/display/dphy0/freq 设置mipi频率
mipi clk (M) = (SPRDFB_DPI_CLOCK_SRC * dividor ) * 3 * 8/0.9/ .lan_number /1000000
其中的 dividor = if (need_clock/2 > SPRDFB_DPI_CLOCK_SRC - dividor*need_clock , int(
SPRDFB_DPI_CLOCK_SRC/ Dpi_need_clk ) , int( SPRDFB_DPI_CLOCK_SRC/ Dpi_need_clk ) +1 )
[SPRD_9620]dpiclk_dsiclk_calc 根据porch信息计算mipi频率和clock_frequency
P720S11_T 里的频率 计算方法(h+hfp+hbp+hsync)*(w+vfp+vbp+vsync)*60=.pixel_clk
.pixel_clk X 6 =.phy_freq .dtsi实际填的 .phy_freq 单位是KHZ,所以.dtsi填入的值等于 .pixel_clk X 6/1000 6是6分频,1000是因为 kbps
win+shift +print Screen 暗色主题
win + ctrl +c 颜色滤镜
下版本命令:
qcom平台使用 adb reboot edl
sprd平台使用 adb reboot autodloader
mtk平台开着下载工具,adb reboot即可
(1、打开PC功能,配置好下载选项后,选择 文件导出download.xml
2、在cmd窗口运行flash_tool -i download.xml
3、在另外一个窗口让手机重启)
注意终端软件部和终端软件工程部两个空间页面的区别
2023,2,9
正式版本在18服务器,每日构建在28服务器 \\10.95.242.18\version\version_blade\P932F22\GEN_MX_P932F22V1.0.0B08
如果merge conflict 网页上rebase再修改,可以先修改patch 1
S11 的initcode开关在 /SPRD_T-P720S07_T/bsp/modules/kernel5.4/display/dispc/zte_lcd_reg_debug.c 中
单独编译pic_ref下boot logo的内容命令 ./build.sh P932F22_S -m splashimg -S -I 2>&1 | tee -a test3.log -I是跳过一些内容,加速编译
注意是哪个项目 P932F22_NEEA_GEN_S 就 ./build.sh P932F22_NEEA_GEN_S
开机logo生成的img文件在Boot Logo分区里面。具体名称比如,P963F22里的Boot Logo:
在GAIA 网站里的LOGO配的是 LOGO_BIN_NAME :unisoc_HD_720_1280_24bit.bmp
在S11中lk里的函数宏定义 位置:bsp/bootloader/lk/project/zte_staple.mk
GLOBAL_DEFINES += ZTE_LCD_DISPLAY_SPLASH <---宏定义
ZTE_LCD_DISPLAY_DEFAULT_BPP=8
ZTE_LCD_PANEL_DETECT
ZTE_LCD_SUPPORT_PANEL_OFF
ZTE_LCD_SUPPORT_TE_PRECHECK
ZTE_LCD_SUPPORT_TE_PIN_DSI0
ZTE_LCD_TE_GPIO=12
CONFIG_LCM_GPIO_AVDDEN=189
CONFIG_LCM_GPIO_AVEEEN=190 \
2023,1,17
排查lcd不亮的流程:
1、背光亮么?P720F03是平台背光
2、屏幕和lcd_name匹配么,若不匹配,是否是lcd_id有问题,可写死,提前return 0试试
3、看lk 的log有明显异常么,找硬件量电,1.8V, 正负5V是否正常,电有异常具体是哪个电有异常
pinmap是设GPIO的,查硬件原理图和硬件配置表可看到
2023,1,16
chage -l dongyuanjie 查看用户上回改密码时间 ; dmesg -Tx 查看内核信息
2023,1,11
1、查看一个项目最小亮度 可找到kernel下的overlay 例如
bsp/kernel5.4/kernel5.4/arch/arm64/boot/dts/sprd/coconut/ums9620-2h10-overlay.dts
有时候uart send error可能是版本和手机型号不符合
vysor 连接错误和用adb install装软件失败,可用 adb shell vendorcfg -s -nzte.anti_usb_install -r0 ,解决不能安装软件问题,之后再重启生效
2023,1,9
1、P720S09 Sensor FOTA升级压力测试 D:\MYFILE\update-OTA>python fota_test.py 324225940012
展锐平台 userdebug 打开ylog *#*#83781#*#*
2、忘记拉的是不是TINY分支,可通过在项目目录下 cat .repo/mainfest.xml 查看
3、vendor/zte/feature/projects/ 里面显示哪些项目同一个库
2023,1,3
1. enhance_test enable read 命令可查看enhance打开关闭情况
logcat |grep enhance 查看enhance相关日志
编译机配置环境变量命令 source ./build.sh P720S11_T 再 mninja 模块名 2>&1 | tee mninja.log
生成后的动态库位置在 out/target/product/ums9620_2h10/vendor/lib64/hw/enhance.unisoc.so
另一个编译命令 ./build.sh P720S11_T -S -I -m enhance.unisoc
手机端先 adb root 再 adb remount 若提示先 adb disable-verity (关闭分区检测功能) 则照做,
remount 成功后用 adb push D:\MYFILE\enhance.unisoc.so /vendor/lib64/hw/enhance.unisoc.so
在手机端查看 enhance 相关动态库的位置 先 cd vendor 再 find -name *enhance* 出现 ./lib64/hw/enhance.unisoc.so
关闭enhance 的函数位置在 vendor/sprd/modules/enhance/2.0/Core/DpuEnhanceCore.cpp
2022,12,16
1.grep "lcd_g40396_truly_mipi_fhd" * -nR 查找与屏幕名相关的文档,定位可能涉及的需同时修改的文档
2、在 bsp/kernel/kernel5.4/drivers/video/backlight/backlight.c 中使用宏控
在 bsp/kernel/kernel5.4/drivers/gpu/drm/sprd/Kconfig 中配置宏
config ZTE_LCD_WRITE_MAX_BRIGHTNESS
bool "zte add for support ZTE_LCD_WRITE_MAX_BRIGHTNESS"
default n
在 vendor/zte/kernelconfig/sprd/configs/pitaya_diff_config 中 ADD宏控
ADD:CONFIG_ZTE_LCD_WRITE_MAX_BRIGHTNESS
lcd 解析dtsi的函数调用过程
sprd_panel_probe --> sprd_panel_parse_dt --> sprd_panel_parse_lcddtb (解析 sprd,dsi-color-format 和 sprd,initial-command 等) -->
of_get_property --> of_find_property(查找结点) --> __of_find_property --> of_prop_cmp(比较,一旦名字对应则找到返回)
mtk串口波特率选 921600
mtk下版本的Download-Agent C:\Users\10335101\Downloads\SP_Flash_Tool_exe_Windows_v5.2044.00.000\DA_PL_2044.bin
Scatter-loading File 选 什么scatter.txt
2022,12,14
1、学硬件原理图,整理连接情况
GPIO 189 / LCM_BIAS_ENP(P5) --> GPIO 189 / LCM_BIAS_ENP(P43) --> 输出 OUTP LCM_AVDD (p43)
--> LCM_AVDD(p42)
LCD_TP_VIO (P42) --> LCD_TP_VIO (P43) 1.8V --> LCD_TP_VIO (P55) 芯板板连接器
GPIO9 LCM_ID (P4) --> GPIIO 9 /LCM_ID (P42)
2022.12.8
git diff drivers/video/backlight/backlight.c > modify.patch
git checkout drivers/video/backlight/backlight.c
git diff drivers/video/backlight/backlight.c
vi modify.patch
patch -p1 < modify.patch
查看backlight.c 是否生效ls out/androids/s9863a1h10_go_32b_2g/obj/kernel/drivers/video/backlight/backlight.o
查看日志等级 cat proc/sys/kernel/printk
cat /sys/class/display/dispc0/actual_fps 查看刷新率
2022.12.5
在P932F22_S中
sudo kill -STOP 进程号1 进程号2 暂停进程
sudo kill -CONT 进程号1 进程号2 恢复执行
sudo renice -n -20 -u 用户名 设置优先级
hdparm -Tt /dev/sda4 测磁盘速度
taskset -c 1 ./dgram_servr& 指定的进程运行在指定的cpu上,程序运行在1号核上
2022.12,3
P932F22:/sys/lcd_sys/reg_debug # echo 3400 > dwrite 给34寄存器写入00,把显示弄坏,看是否有esd重启
P932F22:/sys/lcd_sys/reg_debug # echo 1000 > dwrite 给10寄存器写入00
P932F22:/sys/lcd_sys/reg_debug # echo 51ff > dwrite 51寄存器是调亮度的,设置最大亮度ff
esd_check_en 1是打开,0是关闭
esd_check_mode 0是reg寄存器检查,1是te信号检查
P720S11_T icnl9911c 关 TE 的方法: 注释 35 和 C2 寄存器 ; 华映屏,是在 35 后下 34
29 0A 00 02 35 00
29 0A 00 01 34 多下一个 34
2022,11,20
非第一次全编译可加上 -S -I 如 ./build.sh P720S11_T -S -I
保存时间戳的编译命令 ./build.sh P720S11_T -m bootloader -S -I 2>&1 | tee >(awk '{print "["strftime("%Y%m%d %T",systime())"]"$0}' > build_log.txt)
提CQ版本号可从路径 https://souing.zx.zte.com.cn/xref/SPRD_S_GO-P932F22_S/vendor/sprd/release/IDH/Doc/Version_T.txt 查看
2022.11.29
查看pixel_clock cat /sys/class/display/panel0/pixel_clock
查看porch cat /sys/class/display/panel0/hporch
查看mipi 频率 cat /sys/class/display/dphy0/freq
2022.11.28
董远杰-11月总结汇报.pptx
2022.11.18
1、 解决P932F22 PV版本插USB无法进五色界面
今日笔记:
pv版本无法五色界面问题:
源码地址:https://souing.zx.zte.com.cn/xref/SPRD_S_GO-P932F22_S/bsp/bootloader/u-boot15/common/lcd.c?r=241e9f9c&mo=21931&fi=889#889
函数名: void zte_lcd_precheck_mode(void)
注释的位置:https://souing.zx.zte.com.cn/xref/SPRD_S_GO-P932F22_S/bsp/bootloader/u-boot15/include/configs/zte_rosemary_diff.h?r=dff49a17#24
当时串口log反复打印:
ztelcd _ precheck _ mode : This is PV lcd check mode
zte _1cd_ detect _ te V2.0.0 start _ time =278873 end _ time =283896 te _ count =0
zte _ lcd _ precheck _ mode : This is PV lcd check mode
zte _ lcd _ detect _ te V2.0.0 start _ time =283909 end _ time =288932 te _ count =0
分析源码:
while (1) {
printf("zte_lcd_precheck_mode: This is PV lcd check mode\n");
#ifdef ZTE_LCD_SUPPORT_TE_PRECHECK 当时这个宏定义定义了,没注释
set_rgb_color(0xffff);/*white*/ 显示白色界面
if (zte_lcd_delay_get_te(5000) > 0) zte_lcd_delay_get_te(5000)根据日志,返回值为-1
printf("zte_lcd_precheck_mode:will display red\n");
else
continue; 执行这里,陷入循环中
}
int zte_lcd_delay_get_te(int delayms) {
printf("zte_lcd_detect_te V2.0.0 start_time=%d end_time=%d te_count= %d\n", start_time, end_time, te_count); 根据日志打印得知 te_count=0
if (te_count > (delayms / 1000) * TE_MIN_COUNT_PER_SECOND)
return 1;
else
return -1; 所以结果返回-1
#else 最后我们取消了宏控,执行下面这段代码
set_rgb_color(0xffff);/*white*/ 显示白色
#ifdef ZTE_LCD_CMD_TYPE_MODE
lcd_enable();
#endif926 mdelay(5000);
set_rgb_color(0xf800);/*red*/ 显示红色
}
修改后正常,log循环打印:
zte_lcd_precheck_mode: This is PV lcd check mode
zte_lcd_precheck_mode: This is PV lcd check mode
zte_lcd_precheck_mode: This is PV lcd check mode
2022.11.7
董远杰中期答辩_2022年.pptx
2022.11.5
今日笔记:
vim bsp/kernel5.4/kernel5.4/drivers/gpu/drm/sprd/Kconfig
module里面加的宏在git diff bsp/modules/kernel5.4/display/dispc/Kbuild
+#zte add for disable enhance func by board_name
+$(info zte lcd display ZTE_BOARD_NAME = ${ZTE_BOARD_NAME})
+ifeq ($(ZTE_BOARD_NAME),unicorn)
+$(info CONFIG_SPRD_DSI_SWITCH = ${CONFIG_SPRD_DSI_SWITCH})
+CONFIG_SPRD_DSI_SWITCH :=y
+$(info CONFIG_SPRD_DSI_SWITCH = ${CONFIG_SPRD_DSI_SWITCH})
+endif
查看kernel宏是否生效 vim bsp/out/androidt/ums9620_2h10_native/obj/kernel/.config 在此文件里找找
lk里的屏幕.c生成后的位置在 ./bsp/out/androidt/ums9620_2h10_native/obj/lk/build-ums9620_2h10/platform/sprd_shared/driver/video/sprd/lcd/zte_lcd_tongxingda_icnl9911c2_6p517_mipi_hdplus.o
2022.11.3
今日笔记:
1、验证kernel里面dtsi是否生效的方法
在里面加一行 zte,lcd-version-v000
再cmd里adb 里 adb shell "ls /sys/firmware/devicetree/base/lcds" 可以看见兼容了几家屏幕
再cmd里adb 里 adb shell "ls /sys/firmware/devicetree/base/lcds/lcd_chipone_icnl9911c2_tongxingda_mipi_hdplus" 可以看见 zte,lcd-version-v000
2. sprd定义的宏位置 bsp/out/androidr/umns9620_2h10_native/obj/kernel
2022.11.2
今日笔记:
1、不重复上传单据 git --amend 再git commit
git commit -m "xx"
防止冲突方法, git pull --rebase 后,如果冲突了,本地一解,再上传
防止修改文件属性命令 git config --replace core.filemode false
允许修改文件属性命令 git config --replace core.filemode true
切换分支,拉取最新代码,再比对上传:
cd vendor/zte/kernelconfig/
git branch -a |grep release
git checkout -t zte/t-default-tiny-ccs
2022.11.1
今日笔记:
P720S07_T查看是否编译,是否生成.o节点
ls bsp/out/androidt/ums9620_2h10_native/obj/lk/build-ums9620_2h10/platform/sprd_shared/driver/video/sprd/lcd/
2022.10.31
董远杰-10月总结汇报.pptx
今日笔记:
高通下载版本:三键齐按 或 adb reboot edl
判断是否编译执行了修改? #error "cuole"如果运行到,停下报错 #warning "cuole"如果运行到,会打印出来
查看log定位问题可以搜索显示架构drm等关键字
2022.10.28
p720s07_t的lcd 驱动调试
参观产线
2022.10.27
1、 P720S07_T 的lcd驱动调试(进行中)
今日笔记:
T基线因为有overlay,所以可以单独编译dtbo,还可以单独编译bootloader ./build.sh P720S09_R -m dtboimage -S
P720S07_T的lcd驱动,回顾具体做了什么:
1. . c位置在\\10.95.240.190\dongyuanjie\sprd\P720S07_T\bsp\bootloader\lk\platform\sprd_shared\driver\video\sprd\lcd下
除了对着类似的.c改动以外还修改了
2. git diff project/zte_unicorn.mk 位置:bsp/bootloader/lk/project/zte_unicorn.mk
+#lcd
+LCD_UNICORN_TONGXINGDA_ICNL9911C2 := 1 加宏控,宏打开
+CONFIG_SPRD_DSI_SWITCH := 1
+
+CONFIG_LCM_GPIO_AVDDEN :=62
+CONFIG_LCM_GPIO_AVEEEN :=61
+GLOBAL_DEFINES += \
+CONFIG_LCM_GPIO_AVDDEN=62 \
+CONFIG_LCM_GPIO_AVEEEN=61 \
+CONFIG_SPRD_DSI_SWITCH=1
+
+#iovdd-gpio = <&ap_gpio 148 GPIO_ACTIVE_HIGH>;
+
GLOBAL_DEFINES += CONFIG_LCM_GPIO_AVDDEN=62
CONFIG_LCM_GPIO_AVEEEN=61
CONFIG_SPRD_DSI_SWITCH=1
在S11中lk里的函数宏定义
GLOBAL_DEFINES += ZTE_LCD_DISPLAY_SPLASH <---宏定义
ZTE_LCD_DISPLAY_DEFAULT_BPP=8
ZTE_LCD_PANEL_DETECT
ZTE_LCD_SUPPORT_PANEL_OFF
ZTE_LCD_SUPPORT_TE_PRECHECK
ZTE_LCD_SUPPORT_TE_PIN_DSI0
ZTE_LCD_TE_GPIO=12
CONFIG_LCM_GPIO_AVDDEN=189
CONFIG_LCM_GPIO_AVEEEN=190 \
3. git diff platform/sprd_shared/driver/video/sprd/rules.mk 加config_xxx宏
+ifeq ($(LCD_UNICORN_TONGXINGDA_ICNL9911C2),1)
+GLOBAL_DEFINES += CONFIG_LCD_UNICORN_TONGXINGDA_ICNL9911C2
+MODULE_SRCS += \
+ $(LOCAL_DIR)/lcd/zte_lcd_tongxingda_icnl9911c2_6p517_mipi_hdplus.c
+endif
+
.c在\\10.95.240.190\dongyuanjie\sprd\P720S07_T\bsp\bootloader\lk\platform\sprd_shared\driver\video\sprd\lcd下
4. git diff platform/sprd_shared/driver/video/sprd/lcd/panel_cfg.h 用config_xxx,加 panel driver
extern struct panel_driver g40396_truly_driver;
+extern struct panel_driver icnl9911c2_tongxingda_driver;
#ifdef CONFIG_LCD_UNICORN_TONGXINGDA_ICNL9911C2
+ {
+ .lcd_id = 0xc3,
+ .drv = &icnl9911c2_tongxingda_driver,
+ },
+#endif
5 .c里包含了一个结构体
struct panel_driver icnl9911c2_tongxingda_driver = {
.info = &icnl9911c2_info,
.ops = &icnl9911c2_ops,
};
6. git diff arch/arm64/boot/dts/sprd/unicorn/ums9620-2h10-overlay.dts include 一下 kernel的dtsi
+#include "zte_lcd_tongxingda_icnl9911c2_6p517_mipi_hdplus.dtsi"
- sprd,max-brightness-level = <880>;
+ sprd,max-brightness-level = <1023>;
brightness-levels = < //亮度等级被修改了
- 0 3 4 5 6 7
+ /* 0 3 4 5 6 7
8 9 10 11 12 13 14 15 16 17
766 772 778 784 790 796 802 808 814 820
- 826 832 838 844 850 856 862 868 874 880
+ 826 832 838 844 850 856 862 868 874 880 */
+ 0 5 5 5 6 8
+ 9 10 11 12 13 15 16 17 18 19
+ 20 22 23 24 25 26 27 29 30 31
- avdd-gpio = <&ap_gpio 192 GPIO_ACTIVE_HIGH>;
- avee-gpio = <&ap_gpio 191 GPIO_ACTIVE_HIGH>;
+ avdd-gpio = <&ap_gpio 62 GPIO_ACTIVE_HIGH>;
+ avee-gpio = <&ap_gpio 61 GPIO_ACTIVE_HIGH>;
-&lcd_g40396_truly_mipi_fhd {
- sprd,sr-width = <720>;
- sprd,sr-height = <1600>;
-};
7. 在 vendor/zte/kernelconfig/sprd/configs/unicorn_diff_config 中
+#lcd
+ADD:CONFIG_SPRD_DSI_SWITCH
这里unicorn是板级名,新项目注意查看确认板级
8. 检查pinmap avdd avee 的GPIO 是否配置正确
9.检查 sprd/configs/okra_diff_config 是否配置正确
10. 检查 projects/P963F10_T.json logo是否配置正确
11、检查 module/others/bsp/mfeature/kernel/kernel5.4/msoc/sharkl3/ko/zte_okra.mk 是否加载 ±6v 的ko
可以参考 http://10.67.16.29:8080/q/topic:%22P963F10_T+add+easyquick+aixiesheng+lcd+driver%22 节点
2022.10.26
1、 P720S07_T 的lcd驱动调试(进行中)
今日笔记:
ls bsp/out/androidt/ums9620_2h10_native/obj/kernel/arch/arm64/boot/dts/sprd/unicorn/
不看网站查板级驱动名
回到项目目录,比如 P932F22_S 再repo sync -c bsp/kernel/kernel4.14/ 拉取一小段最新代码
如果本地改过遇到报错,则 git log . 查看修改的序列号
git reset --hard b76885ad6180f64eca49e73e661ddb5cc127d580 同步到最新的序列号
git rm platform/sprd 删去git里不需要再显示的已删去文件的命令
grep "lcd_g40396_truly_mipi_fhd" * -nR 查找与屏幕名相关的文档,定位可能涉及的需同时修改的文档
2022.10.25
1. 观摩学习师傅定位产线拿来的4台闪屏黑屏手机问题
2.跟师傅讨论交流lcd函数调用流程,准备月总结
查看闪频分析故障命令 cat /dev/kmsg |grep drm 看看有没有什么error
单独编译dtbo ./build.sh P720S09_R -m dtboimage -S
想生成initcode节点 在 bsp/kernel/kernel5.4/drivers/gpu/drm/sprd 的 zte_lcd_reg_debug.c 上面加定义 LCD_INITCODE_DEBUG 的宏控
查看 initcode cat sys/lcd_sys/reg_debug/initcode 最稳妥的找 zte_lcd_reg_debug.c 的方法是在 souing 上找
adb shell ls /sys/lcd_sys/reg_debug 后会出现 如下节点
dread
dwrite
mipiclk
reserved
或者 dread dwrite esdcode gread gwrite initcode mipiclk reserved
可通过 :
adb shell "echo FF55AA66 > /sys/lcd_sys/reg_debug/dwrite"
adb shell "echo FE55AA66 > /sys/lcd_sys/reg_debug/dwrite"
adb shell "echo FF22 > /sys/lcd_sys/reg_debug/dwrite"
adb shell "echo F403 > /sys/lcd_sys/reg_debug/dread" F4寄存器,读取 3个寄存器
adb shell "cat /sys/lcd_sys/reg_debug/dread"
来读取操作寄存器
查看lcd节点命令,查看lcd信息 ,查看lcd的使用的驱动程序 cat /proc/driver/lcd_id
cd /sys/class/display/ 再ls 屏幕输出: dispc0 dispc1 dphy0 dsi0 panel0 分别是2个展示控制和dphy
adb shell "ls /sys/class/display/panel0/" 下有很多节点 :
device
esd_check_enable
esd_check_mode
esd_check_period
esd_check_register
esd_check_value
hporch
lane_num
name
of_node
panel_fps
pixel_clock
power
resolution
resume
screen_size
sprd_backlight
subsystem
suspend
uevent
vporch
waiting_for_supplier
adb shell ls /sys/class/display/ 屏幕输出: dispc0 dphy0 dsi panel0
adb shell cat /sys/class/display/panel0/esd_check_enable 屏幕输出:1 表明esd检测已打开
adb shell cat /sys/class/display/panel0/esd_check_mode 屏幕输出: 0 0对应dtsi中的esd检测从寄存器里读取,1 为检测 TE 信号
adb shell "echo 0 > /sys/class/display/panel0/esd_check_enable" 关闭 esd check
adb shell "echo 1000 > /sys/lcd_sys/reg_debug/dwrite" 可以通过这个模拟静电黑屏,看屏幕是否恢复。向10写入00数据,观察到屏幕熄灭后又亮了,因为这是在故意搞乱,esd检测到后使得芯片重启,恢复显示
adb shell cat /sys/class/display/panel0/esd_check_mode 屏幕输出: 0 0对应dtsi中的esd检测从寄存器里读取
adb shell cat /sys/class/display/panel0/esd_check_register 屏幕输出:0x0a 代表esd检测的寄存器是10号
adb shell cat /sys/class/display/panel0/esd_check_value 屏幕输出: 0x9c
adb shell "echo 3400 > /sys/lcd_sys/reg_debug/dwrite"
2022.10.24
1. 查看刷新率 cat /sys/class/display/dispc0/actual_fps 显示60.4
2. 给手机安装软件.apk adb install 拖拉电脑的apk到窗口
对加载开机logo函数的学习.docx
2022.10.20
1、云CI验证K98_R AP侧代码修改
今日笔记:
对加载开机logo函数的学习,我通过函数找出了调用流程 zte_display_splash_screen_prepare 调用-> zte_read_logo-from_splash ->
common_raw_read(char* path_name ,4096,logo_info_offset,logo_info_arr) 在common_raw_read(part_name,size ,offset,buf)中通过
memcpy(buf,offset,size),将数据写入buf,即就是logo_info_arr里面,而logo_info_arr[4096]刚好对应之前的前4096字节里存放的是
boot logo 和charge logo的分辨率大小等信息,后面的字节存放实际图片内容
2022.10.19
观摩学习师傅解决k98的背光比屏幕后关闭故障
发现git能拉代码,但无法上传单据,找同事改git配置解决
今日笔记:
如果电脑连接的有两个手机可以adb选择一个进入 adb devices
显示
324226320141 device
327325630084 device
选择一个进入 adb -s 327325630084 shell
高通平台进入下载模式adb reboot edl,ports 口才会出来,或者高通的三键齐按
单独编译高通的bootimg命令 ./build.sh K98_R -m out/target/product/bengal/boot.img -S
编辑宏控文件 vim vendor/zte/kernelconfig/qcom/configs/boards/chestnut_diff_config
里面加入一个宏 ADD:CONFIG_ZTE_LCD_CLOSE_DIMMING
编辑kconfig文件 vim kernel/msm-4.19/drivers/gpu/drm/Kconfig
设置配置
config ZTE_LCD_CLOSE_DIMMING
bool "add for close lcd ic dimming function"
default n
如果光有上面的的kconfig,而没有上面的ADD宏,那么在编译后.config里CONFIG_ZTE_LCD_CLOSE_DIMMING会显示not set
编译后查看宏配置是否生效 vim out/target/product/bengal/obj/KERNEL_OBJ/.config
CONFIG_ZTE_LCD_CLOSE_DIMMING=y 已生效
运用宏来改.c逻辑,修改.c vim kernel/msm-4.19/techpack/display/msm/dsi/dsi_panel.c
#ifdef CONFIG_ZTE_LCD_CLOSE_DIMMING
if (bl_lvl == 0) {
int error_ret;
const char CMD53 = 0x24;
error_ret = mipi_dsi_dcs_write(dsi, MIPI_DCS_WRITE_CONTROL_DISPLAY, &CMD53, 1);
/*if (error_ret < 0)
return error;*/
pr_info("MSM_LCD Sends 53 cmds,error_ret=%d\n", error_ret);
}
#endif
2022.10.18
1、K98项目拉代码,编译版本、借机器,和装高通的下载工具
2、学lcd图片加载相关的函数和内容
2022.10.17
改sh脚本,修复bootlogo重复载入boot_logo.bmp问题,并上传单据
写bat脚本,实现比较两个cat结点值是否相等(进行中)
单独编译pic_ref下的内容命令 ./build.sh P932F22_S -m splashimg -S -I 2>&1 | tee -a test3.log -I是跳过一些内容,加速编译
进入校准模式 高通 adb reboot ftmmode
展锐 adb reboot cftreboot (AT+ZREBOOTCALI) 会出现一个 com 口
MTK adb reboot meta
image.png
2022.12.12
查看有哪些可用的 dpu_core_clk ,需要先确认在哪一个 global_dispc.c .c 里找
ls bsp/out/androidr/sp7731e_1h10_native/obj/u-boot15/drivers/video/sprd/ 查看是哪一个? 例如 pike2/global_dispc.c
SPRD_DIAG (COM 16) 是校准模式的com口
P732F21_R和P963F60_R是一个souing代码库
DPI_CLK_SRC 数组里
2022.10.13
1、P963F91的二供屏st7701点亮
2、P932F22的开机logo有白点,我认为是用画图打开另存为256色位图时不小心点上的,下回多检查避免这类低级问题,logo重新改过后上传了
今日笔记:
开机logo生成的img文件在Boot Logo分区里面。具体名称比如,P963F22里的Boot Logo:
在GAIA 网站里的LOGO配的是 LOGO_BIN_NAME :unisoc_HD_720_1280_24bit.bmp
最后在下载工具里的Boot Logo是 D:\MYFILE\ResearchDownload_R25.21.0802\Bin\ImageFiles\_DownloadFiles1995C_19B8E805_0\unisoc_HD_720_1280_24bit.bmp
刚好对应,如果更换logo后想单独编译一下,用命令 ./build.sh P932F22_S -m splashimg -S
lcd学习指南总结:
lcd有两种工作模式,video mode和command mode,video mode模式需要持续刷新显示器,不需要帧缓冲器;command mode有帧缓冲器不需要定期刷新,定时器会从帧缓冲器取数据显示在屏幕上。video mode虽节省了帧缓冲器,但是定期高速发送DSI视频报文消耗了大量能量,command mode在显示器中集成全帧长帧缓冲器需要成本
中间具体改dtsi的我总结过;后面波形图的内容不大看得懂
2022.10.12
1、p932f22验证二供屏正常,上传单据
2 p963f91二供屏st7701驱动加好了,但是现在只是uboot生效了,kernel似乎没编进去还没有生效
今日笔记:
快速在项目目录里找到板级驱动 ls bsp/out/androids/s9863a1h10_go_32b_2g/obj/kernel/arch/arm/boot/dts/pitaya/ (多次tab补齐)
以P932F22_S为例,含义是 ls bsp/out/androids/sp9832e_1h10_go2g/obj/kernel/arch/arm/boot/dts/rosemary/ sp9832刚好对应P932F22_S,
后面就是kernel里面修改dtsi的路径
刚下载编译好,下载版本到手机,改动代码前看看初始的代码有没有问题
如果屏幕不亮,在有口的条件下,cat /proc/driver/lcd_id 看是否加载了正确的驱动程序 也可 cat /proc/cmdline 查看lcd_name是否符合预期
如果怀疑uboot没有编译进来,可以先单独编译uboot,刚好也花不了太多时间
2022.10.11
1、P932F22二供屏点亮
2、遇到一些initial-comand不符合展锐格式的改成了展锐格式,和屏幕不亮的一些解决方法
3.接下来的计划:具体的学习一下开机logo图片是怎么样,转化成bin文件加载到内存和最后输出到屏幕的 ,我在程序里面找一下相应的函数
下面是今天的笔记:
开机logo流程:boot logo会先转换成boot.bin,boot.bin里前4096字节里存放的是boot logo 和charge logo的分辨率大小等信息,后面的字节存放实际图片内容
不要用\\注释,不要用printk函数,用print_info函数
屏幕还是没亮采取的策略: 不是平台侧控制背光,是IC控制输出pw信号控制背光,找创维lcd ic 厂的FAE要输出30k的pw波的指令,厂商发来如下指令:
39 01 00 00 00 00 06 FF 77 01 00 00 10
39 01 00 00 00 00 02 BB 00
39 01 00 00 00 00 02 CD 00
39 01 00 00 00 00 02 CA 11
39 01 00 00 00 00 02 BC 01
39 01 00 00 00 00 02 51 00
39 01 00 00 00 00 02 53 0C
39 01 00 00 00 00 02 55 00
39 01 00 00 00 00 02 5E 03
这些指令,不符合展锐的风格,我把它们转换成符合展锐风格的格式,如下:
39 01 00 06 FF 77 01 00 00 10
39 01 00 02 BB 00
39 01 00 02 CD 00
39 01 00 02 CA 11
39 01 00 02 BC 01
39 00 00 06 FF 77 01 00 00 00
39 00 00 02 51 ff/*zuiliang,yuanlaishi 00*/ 51后面的数据原来是00,为了让它以最大的亮度显示,我将这里改成了ff
39 00 00 02 53 0C
39 00 00 02 55 00
39 00 00 02 5e 03/*yishang 4 hang*/ 我把它们放在最后一个指令29的前面
05 20 00 01 29 这是initial-command最后一条指令29
还是没亮 ---> 找硬件测PW波形,发现没PW波信号 ----> 找厂商要自测模式,发来自测模式如下:
WriteComm (0xFF);
WriteData (0x77);
WriteData (0x01);
WriteData (0x00);
WriteData (0x00);
WriteData (0x12);//bank2
WriteComm (0xD1);
WriteData (0x81);
WriteComm (0xD2);
//WriteData (0x05);//黑色白边框
//WriteData (0x06);//棋盘格
WriteData (0x08);//彩条
WriteComm (0x29);//display on 最后29对应initial-command的最后一条指令 05 20 00 01 29 打开显示
我把它们按照展锐的格式加在initial-command的倒数第二个指令:
39 00 00 06 FF 77 01 00 00 12
39 00 00 02 D1 81
39 00 00 02 D2 08
屏还没亮,找硬件部把背光强制拉高,看看结果 ---> 强制拉高后屏亮了,接下来用电池也能亮屏,只是注意主板拆下来后,
要按电源开机或下版本,一定要把主板往中壳按下去,这样电源按钮才能短接,电源键才能用
最后为了速度快一些,我把 sleep-in-command 中的 05 78 00 01 28 中的延时120ms改成了32ms ,修改后的指令是 05 20 00 01 28
直接通过adb指令改porch :
cd /sys/class/display/panel0/
ls 在ls后可以看到hporch 和 vporch
cat hporch 屏幕显示: hfp=20 hbp=20 hsync=8
echo 42 42 8 > hporch
echo 48 48 8 > vporch
input keyevent 26 相当于按下power键
2022.10.10
9月总结
月总结.docx
内核启动时u-boot传入参数: cat /proc/cmdline
在修改dtsi文件的initial-command中,一般含有文件名比如 zte_lcd_lcetron_st7701_hsd_4p95_480p.dtsi 中的initial-command 里有 39 00 00 06 FF 77 01 00 00 00
这样含有文件名7701的指令,意义是切换7701的page寄存器,通常在initial-command最后一个切换page寄存器指令是切换到寄存器编号为0的指令,比如
在前面可能是 39 00 00 06 FF 77 01 00 00 13 在initial-command快要结束的时候切成 39 00 00 06 FF 77 01 00 00 00 ,以便后面的其它诸如sleep-in-command执行
2022.10.9
39 00 00 03 7A 13 1A 是展锐平台initial-command格式
1 1 2
MIPI_CMD_TYPE delay_time register_count register_value(把值13,1A写给寄存器7A)
在初始化参数的39,15,05等是MIPI命令,随后一个字节是延时时间,其后两个字节 00 03表示后面有三个寄存器值
例如 05 78 00 01 11 //delay 120ms 第二个字节是十六进制78表示延时120ms
在mtk平台写法变成 39 00 00 08 69 14 22 14 22 44 22 08 = 0x69, 07, 14 22 14 22 44 22 08 把69寄存器写在前面,后面还剩7个寄存器和值
在兼容第二家屏前,先通过下载版本到手机来看看之前程序有没有问题,无误后再下一步,有误则重新拉取程序编译和修改
在有口的情况下展讯平台下版本可以直接通过 reboot autodloader (adb shell下) adb reboot autodloader (cmd下)
2022.10.8:
一个驱动测试,包括驱动代码、dts修改、编译控制修改等
在\\10.95.240.190\dongyuanjie\sprd\P720S09\bsp\kernel\kernel4.14\arch\arm64\boot\dts\sprd\snail\ touchscreen_snail.dtsi 改写 test.dtsi
/ {
zte_test:zte_test {
compatible = "zte_test";
};
};
在\\10.95.240.190\dongyuanjie\sprd\P720S09\vendor\zte\kernelconfig\sprd\configs\snail_diff_config (因为板级驱动 ZTE_BOARD_NAME 就是snail) 中加入
ADD:CONFIG_A
最后按照之前的方式把它上传之后,很快在网页里点击三个点把它设置为work in progress,这样其它人就不会加1
今天发现展锐平台的log用一个批处理文件抓完后打开看乱码,需要运行一个.py的python脚本双击解析出新文档才能看,安装python脚本的时候要注意勾选加入环境变量,这样之后双击.py的analyzer.py脚本才有新的解析后的不乱码的文档生成
2022.9.30
1 修改P932F22的bootlogo和重新拉取代码,修改bootlogo地址: \\10.95.240.190\dongyuanjie\sprd\P932F22\vendor\zte\resourceimg\pic_res\boot_logo\V11_2021new\1014_480
2 单独重新拉取一个小manifest的代码: 回到项目目录,比如 P932F22_S 再repo sync -c vendor/zte/resourceimg
3 commit代码的另一个方法,git commit
输入文字
(空行)
@type RQ
F3
回车
CTRL+X 退出
apush (提交)
2022.9.13
1、参加二轮培训,学习了《认识终端启航第一课》和《终端战略及产品知识》、《职业发展规划》学到了要善于觉察
和对制定的目标要有行动力,要有独立的思考和行动,成就自我,再成就公司。
2022.9.9
1、单独编辑bootimage,得到的文件路径是P720S07/out/target/product/ums9620_2h10
2、在bsp/kernel/kernel14.14/drivers/gpu/drm/sprd/zte_lcd_common.c中加入proc节点的代码
2022.9.8
1、单独编译的命令 ./build.sh P720S07_R -m bootimage -S
2、查看手机日志 cat /dev/kmsg
3、编译了我的Proc节点,ls能查看到,但是read和write有问题导致cat和echo节点后手机死机,接下来我要仿照着源码改程序。
2022.9..7
一、在师傅指导下,在\\10.95.240.190\dongyuanjie\sprd\P720S07.1\bsp\kernel\kernel4.14\drivers\gpu\drm\sprd\zte_lcd_common.c 中加了一个很简单的proc节点,源码是
#define FILE_NAME "my_test_procfs"
static ssize_t test_proc_read(struct file *file, char __user *buffer, size_t count, loff_t *ppos)
{
printk(KERN_INFO "hello");
return 0;
}
static const struct file_operations test_ops =
{ .owner = THIS_MODULE,
.read = test_proc_read,
};
在一定会执行的代码下加入
proc_create(FILE_NAME, 0664, NULL, &test_ops);
image.png
image.png
image.png
二、同事指导的在proc下产生一个节点需要执行的步骤:
1、在\\10.95.240.190\dongyuanjie\sprd\P720S07.1\vendor\zte\kernelconfig\sprd\configs下的unicorn_diff_config下输入
ADD:CONFIG_A
2、在\\10.95.240.190\dongyuanjie\sprd\P720S07.1\bsp\kernel\kernel4.14\drivers\vendor\common\下创建自己文件夹c,c里再存放makefile和kconfig以及自己的a.c
2.1、makefile内容如下:
#drivers/test/Makefile
#
#Makefile for the test
#
#ccflags-y += -I$(srctree)/drivers/vendor/common/touchscreen_v2/test/
ccflags-y += -I$(srctree)/drivers/vendor/common/c
obj-$(CONFIG_A) += a.o
2.2、kconfig内容如下:
config A
bool "A support"
default n
help
Say Y here to enable debug test.
If unsure, say N.
3、父目录\\10.95.240.190\dongyuanjie\sprd\P720S07.1\bsp\kernel\kernel4.14\drivers\vendor\common\下
makefile内容:
#
obj-$(CONFIG_A) += c/
kconfig内容:
#
source "drivers/vendor/common/c/Konfig"
最后单独编译命令 ./build.sh P720S07_R -S -m bootimage 得到的image路径为 P720S07/out/target/product/ums9620_2h10
存在的问题:
再看源码时函数调用比较复杂,像是上回的dtsi文件里的reset-on-sequence都没有一路追踪到®ister
2022.9.5
在同事指导下修改P720S07的γ参数,再编译版本,下载版本到手机,成功上传一次代码
用到的命令是:
git status .
git add xxx.dtsi
git commit 然后CTRL+X先退出,在是否保存输入Y确认保存,再回车,即可本地提交成功
git log 查看本地提交情况
cat .git/refs/remotes/m/release-zte 查看上传分支
屏幕显示:ref: refs/remotes/zte/r-sprd-5g-v1
git push zte HEAD:refs/for/r-sprd-5g-v1
接着网页设置boot和kernel下的文件同一topic关联起来,再点击reply给自己加1
2022.9.1
使用P720S07的熊猫屏修改后的配置文件重新编译程序,下载了版本,配置文件在uboot和kernel中都有,所以一次改两处,路径是P720S07/bsp/bootloader/boot/soic
学了linux中的信号,通过signal函数来注册信号处理函数,signal函数中的两个参数分别为信号的宏和发生此信号的回调函数signal_handler,回调函数是由内核调用,不是由程序员调用,程序员只注册信号处理函数,以下是以前写的利用信号实现父进程回收子进程。sigaction函数注册信号SIGCHLD的信号处理函数(此处用sigaction,因为sigaction无论UNIX还是 Linux都可以用,更通用。虽然signal函数更简单些。)
2022.8.31
1. 学了poll轮询函数和select函数,联系到之前的Linux网络编程里写高并发服务器的时候用到过,当时是说poll函数监控发生变化的文件描述符,可以取代多进程和多线程版本的服务器,相比少了进程切换的开销,以下是之前使用poll函数写高并发服务器server.c的程序:
2022.8.30
P932F22开机logo已经好了,是把sprd.main.c中的文件里一个字符串后面_a取消了就好了,今天熟悉了当出现屏幕相关问题,可以抓log看看哪里出了问题,再结合一个搜索代码的网站,定位代码出错位置再修改
P932F22的开机logo位置是 \\10.95.240.190\dongyuanjie\sprd\P932F22\vendor\zte\resourceimg\pic_res\boot_logo\V11_2021new\1014_480 ,了解了sprd平台开机logo要设置成8bit,画图工具打开,另存为256位即可
修改两个dtsi里的内容,在uboot里改lcd_id 烧录id,一次改两个位置,然后改porch,在kernel只需改porch
需要修改两个dtsi位置为
\\10.95.240.190\dongyuanjie\sprd\P932F22\bsp\bootloader\u-boot15\arch\arm\dts\rosemary
\\10.95.240.190\dongyuanjie\sprd\P932F22\bsp\kernel\kernel5.4\arch\arm\boot\dts\rosemary
在分别include一下:在kernel里的arch/arm/boot/dts/rosemary/zte_lcd.dtsi和uboot里的arch/arm/dts/rosemary/sp9832e_1h10_32b.dts里面分别include一下就好
单独编译 ./build.sh P720S07_R -S -m bootimage 单独编译uboot ./build.sh P720S07_R -S -m bootloader 编译后的结果是u-boot-sign.bin
2022.8.29
今天学习了加载开机启动logo的内容,首先根据物料信息更改JSON上面的分辨率等相关配置,然后git上传
阅读了.sh和.py两个脚本,Python脚本里面有个读取bmp文本的函数,boot logo的bmp图片会先转换成boot.bin存在内存中,
boot.bin里前4096字节里存放的是boot logo 和charge logo的分辨率大小等信息,后面的字节存放实际图片内容,最后再由其它地方的程序加载显示在屏幕上。
2022.8.26
参与了P932F22项目,现在屏幕亮了,在这个过程中,学习了改程序的套路和提交命令,熟练了下载版本等操作
看完了mtk关于LCD的源码,觉得和之前的设备驱动结构有些类似,还需要再看看书本,了解LCD相关的内容,看看LCD驱动编程通常需要实现哪些函数
2022.8.25
学习了看与LCD相关的电路图,这样一旦程序出问题,我们还可以拿万用表来测量一些电压,锁定问题,了解了pwm调光,我们的pwm调光来源有两个,一是显示IC,而是CPU芯片,ap侧
学习了已经兼容了第一家屏的基础上,如何改代码兼容第二家屏,通常来说,如果能兼容第一家屏的话,说明了供电没有问题,这时候只需要复制第一家屏的uboot文件和kernel文件,换2个porch和ID就行了
第三就是找板级,方法是JSON系统——项目名——项目配置——board name。
修改好的新LCD驱动,单独编译后输出的内容在bsp/out/target目录下
2022.2.24
学习内容:
1. 下载了开源的mtk的源码,找到了LCD相关的程序在阅读
2. 最近这几天把Python基础看完了,因为之前见到同期入职的同事再拿Python写脚本,而且之前领导也问我会不会Python,问了两次,现在我把Python基础过完了,但是最后再做一个关于Python面向对象特性的项目飞机大战的时候,pygame一直装不上,可能是因为我为了运行流畅而装的Ubuntu14.04版本老的缘故,视频中老师一行安装代码能行,但是我用就会报错,下面是我看的mtk程序和写的Python代码
2022.8.18
学习内容:
看了书并发与同步控制的一章,发现很多函数原型和之前看的视频不一样,就拿之前看过的基于信号量实现的生产者消费者模型来说,下面以前的程序
视频教程都用的sem_wait和sem_post中间夹着临界区,而书本则是down和up
IMG_20220818_220641.jpg
而在man手册直接查不到down这个系统调用,不过感觉似乎表达的意思差不多
最后还是感觉以前看的视频更简单些,以前的视频介绍的是互斥锁,条件变量(条件变量不是锁,通常配合互斥锁一起使用),读写锁(读写锁是一把锁,读共享,写独占。写锁优先级更高。),信号量以及最后基于信号量实现的生产者消费者模型(允许一定程度的并发)。
2022.8.17
学习内容:
借到了展瑞的p720s09手机,拉取源码并编译
学会了adb 下cat proc/driver/lcd_id看LCD的版本,再通过soud网站查询LCD的源码
看了一些竞态与并发相关的内容,了解了读写锁和自旋锁
明日计划:
学互斥锁与信号量
2022.8.16
学习内容:
1、《看懂原理图》一文看了一遍,起初这篇文章打不开,联系了作者还是打不开,即使作者开了权限也打不开,后来在it网站提交问题,十分钟后解决,说是原因是:服务器异常
2、完成三门线上考试
3、看了新加驱动后kconifg和makefile内容怎么改
明日计划:
学Linux设备驱动中的并发控制
存在问题:
不知道kconfig加在哪,以及写完kconfig后的后续操作和验证程序
2022.8.15
学习内容:
下载 MTK 平台 版本工具,遇到无法下载问题。需要安装 MTK 平台的 Preloader 端口驱动 才能正常下载。联系一位同事发来驱动解决
明日计划:
学adb调试,打印分析log
2022.8.12
学习内容:
完成了字符驱动程序编写
明日计划:
找IT解决repo拉代码报错
等mtk手机申请处理完成,然后借手机
image.png
image.pngimage.png
image.pngimage.pngimage.pngimage.pngimage.png
2022.8.11
学习内容:
学习字符设备驱动开发内容
参考教材,已经写了一半的字符驱动程序了
明日计划:
写完整个字符驱动开发程序
存在问题:
repo命令报错,拉代码报错
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。