mdss_dsi_pdwin10 1709 正式版_sofego1_1080p_cmdpanel 是什么屏幕

彪悍的人生不需要解释,彪悍的代码不需要注释
qcom 亮灭屏代码分析
0. fb0以及背光注册流程
mdss_fb_probe
mdss_fb_register(struct msm_fb_data_type *mfd)
struct fb_info *fbi = mfd-&
fix = &fbi-&
var = &fbi-&var;
fbi-&fbops = &mdss_fb_
static struct fb_ops mdss_fb_ops = {
.fb_blank = mdss_fb_blank,
mdss_fb_blank
mdss_fb_blank_sub
case FB_BLANK_UNBLANK:
mdss_fb_blank_unblank(mfd);
case FB_BLANK_HSYNC_SUSPEND:
case FB_BLANK_POWERDOWN:
mdss_fb_blank_blank(mfd, req_power_state);
led_classdev_register(&pdev-&dev, &backlight_led)
static struct led_classdev backlight_led = {
= "lcd-backlight",
.brightness
= MDSS_MAX_BL_BRIGHTNESS / 2,
.brightness_set = mdss_fb_set_bl_brightness,
.max_brightness = MDSS_MAX_BL_BRIGHTNESS,
register_framebuffer(struct fb_info *fb_info)
1.mdss_fb_blank_blank & unblank
mdss_fb_blank_blank
mdss_fb_set_backlight
mfd-&mdp.off_fnc(mfd);
mdss_fb_blank_unblank
ret = mfd-&mdp.on_fnc(mfd);
mdss_fb_set_backlight
// mdss_fb_set_backlight 函数追踪
mdss_fb_set_backlight
// mdss_fb.c
mdss_panel_data-&set_backlight
----------
// (drivers\video\msm\mdss\mdss_dsi_panel.c)
ctrl_pdata-&panel_data.set_backlight = mdss_dsi_panel_bl_
case BL_WLED:
printk("zch===============set blk type = BL_WLED\n");
led_trigger_event(bl_led_trigger, bl_level);
case BL_PWM:
printk("zch===============set blk type = BL_PWM\n");
mdss_dsi_panel_bklt_pwm(ctrl_pdata, bl_level);
note: 背光的控制方式由 dsi中的 qcom,mdss-dsi-bl-pmic-control-type 属性值控制
qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_wled" , “bl_ctrl_pwm”;
mdp3_interface-&on_fnc =mdp3_ctrl_on
mdp3_clk_enable(1, 0);
rc = panel-&event_handler(panel,
MDSS_EVENT_LINK_READY, NULL);
rc |= panel-&event_handler(panel,
MDSS_EVENT_UNBLANK, NULL);
rc |= panel-&event_handler(panel,
MDSS_EVENT_PANEL_ON, NULL);
mdp3_clk_enable(0, 0);
mdp3_interface-&off_fnc = mdp3_ctrl_
rc = panel-&event_handler(panel, MDSS_EVENT_BLANK,
(void *) (long int)mfd-&panel_power_state);
rc = panel-&event_handler(panel, MDSS_EVENT_PANEL_OFF,
(void *) (long int)mfd-&panel_power_state);
① 开关panel电源
dsi_panel_device_register
ctrl_pdata-&panel_data.event_handler = mdss_dsi_event_
mdss_dsi_event_handler
MDSS_EVENT_LINK_READY|MDSS_EVENT_PANEL_OFF
mdss_dsi_on | mdss_dsi_off
mdss_dsi_panel_power_ctrl(struct mdss_panel_data * pdata, int power_state)(struct mdss_panel_data *pdata,int power_state)
case MDSS_PANEL_POWER_OFF:
mdss_dsi_panel_power_off(pdata);
case MDSS_PANEL_POWER_ON:
mdss_dsi_panel_power_on(pdata);
② 开关panel
mdss_dsi_event_handler
case MDSS_EVENT_UNBLANK:
if (ctrl_pdata-&on_cmds.link_state == DSI_LP_MODE)
rc = mdss_dsi_unblank(pdata);
case MDSS_EVENT_PANEL_ON:
ctrl_pdata-&ctrl_state |= CTRL_STATE_MDP_ACTIVE;
if (ctrl_pdata-&on_cmds.link_state == DSI_HS_MODE)
rc = mdss_dsi_unblank(pdata);
pdata-&panel_info.esd_rdy = true;
case MDSS_EVENT_BLANK:
if (ctrl_pdata-&off_cmds.link_state == DSI_HS_MODE)
rc = mdss_dsi_blank(pdata, power_state);
case MDSS_EVENT_PANEL_OFF:
ctrl_pdata-&ctrl_state &= ~CTRL_STATE_MDP_ACTIVE;
if (ctrl_pdata-&off_cmds.link_state == DSI_LP_MODE)
rc = mdss_dsi_blank(pdata, power_state);
rc = mdss_dsi_off(pdata, power_state);
----------
mdss_dsi_unblank
ATRACE_BEGIN("dsi_panel_on");
mdss_dsi_ctrl_pdata
ctrl_pdata-&on(pdata);
ATRACE_END("dsi_panel_on");
mdss_dsi_blank
ATRACE_BEGIN("dsi_panel_off");
mdss_dsi_ctrl_pdata
ctrl_pdata-&off(pdata);
ATRACE_END("dsi_panel_off");
----------
mdss_dsi_panel_init
mdss_dsi_ctrl_pdata
ctrl_pdata-&on = mdss_dsi_panel_
mdss_dsi_ctrl_pdata
ctrl_pdata-&off = mdss_dsi_panel_
mdss_dsi_parse_dcs_cmds(np, &pt-&on_cmds,
"qcom,mdss-dsi-on-command","qcom,mdss-dsi-on-command-state");
mdss_dsi_parse_dcs_cmds(np, &ctrl_pdata-&off_cmds,
"qcom,mdss-dsi-off-command", "qcom,mdss-dsi-off-command-state");
mdss_dsi_panel_on
mdss_dsi_panel_cmds_send(ctrl, on_cmds, CMD_REQ_COMMIT);
mdss_dsi_panel_off
mdss_dsi_panel_cmds_send(ctrl, &ctrl-&off_cmds, CMD_REQ_COMMIT);
2.打印背光亮灭
diff --git a/kernel/msm-3.18/drivers/leds/leds-qpnp-wled.c b/kernel/msm-3.18/drivers/leds/leds-qpnp-wled.c
index 06b80c8..fbf
@@ -199,7 +199,7 @@
#define QPNP_WLED_AVDD_MIN_TRIM_VALUE
#define QPNP_WLED_AVDD_MAX_TRIM_VALUE
#define QPNP_WLED_AVDD_SET_BIT
@@ -841,16 +843,29 @@ static void qpnp_wled_set(struct led_classdev *led_cdev,
enum led_brightness level)
struct qpnp_wled *
wled = container_of(led_cdev, struct qpnp_wled, cdev);
if (level & LED_OFF)
level = LED_OFF;
else if (level & wled-&cdev.max_brightness)
level = wled-&cdev.max_
wled-&cdev.brightness =
schedule_work(&wled-&work);
+if(level ==0)
printk("zch--- set backlight brightness= %d\n",level);
myflag =1;
+if(myflag)
myflag =0;
printk("zch--- set backlight brightness= %d\n",level);
schedule_work(&wled-&work);
static int qpnp_wled_set_disp(struct qpnp_wled *wled, u16 base_addr)
没有更多推荐了,MSM8610:ESD CHECK & recovery
[1]Dsi_host_v2.c (kernel\drivers\video\msm\mdss):static int msm_dsi_bta_status_check(struct mdss_dsi_ctrl_pdata *ctrl_pdata)
[2]Dsi_host_v2.c (kernel\drivers\video\msm\mdss):void msm_dsi_ctrl_init(struct mdss_dsi_ctrl_pdata *ctrl)
void msm_dsi_ctrl_init(struct mdss_dsi_ctrl_pdata *ctrl)
ctrl-&check_status = msm_dsi_bta_status_
Dsi_status_v2.c (kernel\drivers\video\msm\mdss):int __init mdss_dsi_status_init(void)
int __init mdss_dsi_status_init(void)
............
pstatus_data-&fb_notifier.notifier_call = fb_event_
rc = fb_register_client(&pstatus_data-&fb_notifier);
..............
INIT_DELAYED_WORK(&pstatus_data-&check_status, check_dsi_ctrl_status);
[4]fb_event_callback实现esd机制的睡眠唤醒
[5]Mdss_fb.c (kernel\drivers\video\msm\mdss):static int mdss_fb_blank_sub(int blank_mode, struct fb_info *info,
mdss_fb_blank_sub实现display显示系统的reset
这里尤其要注意的是:mdss_dsi_panel_reset只reset LCD,而不是reset显示系统。别混淆。reset显示系统是mdss_fb_blank_sub
[5]display HAL实现
Hwc.cpp (hardware\qcom\display\libhwcomposer):static void reset_panel(struct hwc_composer_device_1* dev);
void reset_panel_esd_check(struct hwc_context_t* ctx)
没有更多推荐了,LoongEmbedded
阅读(1401)
MSM8909+Android5.1.1之BSP---增加ili9806e(display LCD)的支持&Mobile display processor: MDP 3.05 for display processingDCS (DisplayCommandSet):DCS是一个标准化的命令集,用于命令模式的显示模组&1.&&&&&硬件原理图&
图1&GPIO_24引脚功能是MDP verticalsync – primary Configurable I/O,如果我们有第2个显示屏,还会用到GPIO_25引脚MDP vertical sync –secondary Configurable I/O,这里我们只用到GPIO_24。&TP和背光部分后面再介绍。&2.&&&&&支持ili9806e显示屏&Before starting any porting, verify thatyou are using the latest Android device tree and Qualcomm’s proprietary source.How to generate Panel dtsi/header file: Take these steps to update the XMLfiles for display.参考device\qcom\common\display\tools\README.txt&2.1&&&生成panel dtsi/头文件参考device/qcom/common/display/tools/README.txt文件,以tools文件夹下的《dsi-panel-ntp-video.dtsi》为样本,我们复制一份并命名为取名为panel_ili9806e_wvga_video.xml,根据ili9806e及原理图修改其中的内容然后用命令:perl parser.pl panel_ili9806e_wvga_video.xml panel生成dsi-panel-ili9806e-wvga-video.dtsi和panel_ili9806e-wvga-video.h文件&这里我们重点介绍如何根据显示屏驱动IC厂家给的初始化代码来填写panel_ili9806e_wvga_video.xml文件&(1)&&上电初始化部分//***************Page 1 Command******************************//REGISTER,FF,5,FF,98,06,04,01&&& &//Change to Page 1REGISTER,08,1,10&&&&&&&&&&&&&&&& // output SDAREGISTER,21,1,01& &&&&&&&&&&&&&&&// DE = 1 ActiveREGISTER,30,1,02&&&&&&&&&&&&&&&& // 480 X 800…&在bootable/bootloader/lk/dev/gcdb/display/include/找到自带的文件panel_ili9806e_fwvga_video.h可知初始化的mipi包数据类型为0x39,见下图: 图2根据初始化代码填写的panel_ili9806e_wvga_video.xml上电初始化内容如下: 图3上图对应的结构体如下:kernel\drivers\video\msm\mdss\mdss_dsi_cmd.hstruct dsi_ctrl_hdr {
/* data type */
/* last in chain */
/* virtual chan */
/* ask ACK from peripheral */
/* 16 bits */
struct dsi_cmd_desc {
structdsi_ctrl_
};(2)&&MIPI DSI接口根据原理图知道采用的是DSI接口,采用MIPIDSI Interface接口o DSI兼容的外设支持Command或Video操作模式,用哪个模式由外设的构架决定o Command模式是指采用发送命令和数据到具有显示缓存的控制器。主机通过命令间接的控制外设。Command模式采用双向接口o Video模式是指从主机传输到外设采用时实象素流。这种模式只能以高速传输。为减少复杂性和节约成本,只采用Video模式的系统可能只有一个单向数据路径&o Command Mode(类似于MPU接口)&& o Video Mode(类似于RGB接口)- 必须用高速模式传输数据command还是video模式由Driver IC RAM决定:& 1.带RAM IC可支持 command及video模式& 2.不带RAM IC只支持video模式&ILI9806E不带RAM.&2.2&&&Lk支持ili9806e显示屏(1)&&增加显示屏头文件拷贝上面生成的panel_ili9806e-wvga-video.h文件到bootable/bootloader/lk/dev/gcdb/display/include/目录下。&(2)&&bootable\bootloader\lk\target\msm8909\oem_panel.c增加对新显示屏的支持#include &include/panel_ili9806e_wvga_video.h&
HXP_VIDEO_PANEL,
SHARP_QHD_VIDEO_PANEL,
TRULY_WVGA_CMD_PANEL,
HX8379A_FWVGA_SKUA_VIDEO_PANEL,
ILI9806E_FWVGA_VIDEO_PANEL,
ILI9806E_WVGA_VIDEO_PANEL,//kandi add at
HX8394D_QHD_VIDEO_PANEL,
HX8379C_FWVGA_VIDEO_PANEL,
NT35512_FWVGA_VIDEO_PANEL,
OTM9605A_QHD_VIDEO_PANEL,
OTM9605A_QHD_CB03_VIDEO_PANEL,
OTM9605AG_QHD_VIDEO_PANEL,
HX8389B_QHD_VIDEO_PANEL,
HX8389BG_QHD_VIDEO_PANEL,
JD9161BA_FWVGA_VIDEO_PANEL,
UNKNOWN_PANEL
};init_panel_data()函数增加:case ILI9806E_WVGA_VIDEO_PANEL:
panelstruct-&paneldata
= &ili9806e_wvga_video_panel_
panelstruct-&panelres
= &ili9806e_wvga_video_panel_
panelstruct-&color
= &ili9806e_wvga_video_
panelstruct-&videopanel
= &ili9806e_wvga_video_video_
panelstruct-&commandpanel =&ili9806e_wvga_video_command_
panelstruct-&state
= &ili9806e_wvga_video_
panelstruct-&laneconfig
= &ili9806e_wvga_video_lane_
panelstruct-&paneltiminginfo
=&ili9806e_wvga_video_timing_
panelstruct-&panelresetseq
=&ili9806e_wvga_video_reset_
panelstruct-&backlightinfo =&ili9806e_wvga_video_
pinfo-&mipi.panel_cmds
=ili9806e_wvga_video_on_
pinfo-&mipi.num_of_panel_cmds
=ILI9806E_WVGA_VIDEO_ON_COMMAND;
memcpy(phy_db-&timing,
ili9806e_wvga_video_timings, TIMING_SIZE);
pinfo-&mipi.signature =ILI9806E_WVGA_VIDEO_SIGNATURE;
panelstruct-&paneldata-&panel_lp11_init= 1;
oem_panel_select()函数的QRD_SKUE_CB03这case改为用新显示屏case QRD_SKUE_CB03:
//panel_id= HX8389BG_QHD_VIDEO_PANEL;
//panel_id= OTM9605A_QHD_CB03_VIDEO_PANEL;
panel_id= ILI9806E_WVGA_VIDEO_PANEL; //kandi add at
//panel_id= NT35512_FWVGA_VIDEO_PANEL;
2.3&&&Kernel支持ili9806e显示屏(1)&&增加显示屏对应的设备树拷贝上面生成的dsi-panel-ili9806e-wvga-video.dtsi到kernel\arch\arm\boot\dts\qcom目录下&(2)&&kernel\arch\arm\boot\dts\qcom\msm8909-qrd-skue-cb03.dtsi需要包含dsi-panel-ili9806e-wvga-video.dtsi#include&dsi-panel-ili9806e-wvga-video.dtsi&
&mdss_mdp {
qcom,mdss-pref-prim-intf= &dsi&;//DSI设置成主要接口
//&dsi_otm9605a_qhd_video {
qcom,cont-splash-
&pmx_mdss {
qcom,num-grp-pins= &1&;
qcom,pins= &&gp 8&;
&pmx_mdss_te {
qcom,num-grp-pins= &1&;
qcom,pins= &&gp 24&;
&mdss_dsi0 {
qcom,dsi-pref-prim-pan= &&dsi_otm9605a_qhd_video&;
qcom,dsi-pref-prim-pan= &&dsi_ili9806e_wvga_video&;//设置PANEL NODE
pinctrl-names= &mdss_default&, &mdss_sleep&;
pinctrl-0= &&mdss_dsi_active &mdss_te_active&;
pinctrl-1= &&mdss_dsi_suspend &mdss_te_suspend&;
qcom,platform-reset-gpio= &&msm_gpio 8 0&;
};需要主要dsi_ili9806e_wvga_video需要和显示屏的dsi-panel-ili9806e-wvga-video.dtsi中的值一样,如下:&mdss_mdp {
dsi_ili9806e_wvga_video:qcom,mdss_dsi_ili9806e_wvga_video {
qcom,mdss-dsi-panel-name= &ili9806e wvga video mode dsi panel&;
}(3)&&kernel\arch\arm\boot\dts\qcom\msm8909-mdss.dtsi&soc {
mdss_mdp: qcom,mdss_mdp@fd900000 { //包含mdss_mdp
compatible = &qcom,mdss_mdp&;
mdss_dsi0: qcom,mdss_dsi@fd922800 { //包含mdss_dsi0
compatible = &qcom,mdss-dsi-ctrl&;
}做上面的修改后分别编译bootloader和kernelmake abootmake bootimage&&相关帖子:&
阅读排行榜jdi j1 fhd cmd incell dsi panel 这是什么牌子的屏幕好嘛?_百度知道
jdi j1 fhd cmd incell dsi panel 这是什么牌子的屏幕好嘛?
我有更好的答案
就是日本jdj的屏幕,和夏普,三星一样属于牌子质量都不错的厂商
采纳率:100%
2条折叠回答
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。AIDA64查询X20 PLUS屏幕信息是mdss_dsi_pd1710【vivo吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
AIDA64查询X20 PLUS屏幕信息是mdss_dsi_pd1710收藏
请问这是哪个厂家的产品
v粉您好,vivo X20Plus手机屏幕材质是Super AMOLED。Super AMOLED屏幕是三星公司研发的一款屏幕,具有响应速度快、自发光、低耗能、操控灵敏、显色亮丽等特点。
sa屏也就三星自己和果X的是上等品,其他的,都一般
x20plus的屏幕是Super AMOLED的哦。
登录百度帐号}

我要回帖

更多关于 win10 1709下载 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信