diff options
| author | Ray Zhang <rayz@codeaurora.org> | 2015-01-08 14:53:11 +0800 |
|---|---|---|
| committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-23 20:39:10 -0700 |
| commit | 7937cdefcf8bfc8b8f2ea1c819bfe024560439dc (patch) | |
| tree | db4bfa04226a9409214ec75c78b3847d171f01fb | |
| parent | cb4fe3d98913db23b825f09d942e60b9c1389eec (diff) | |
msm: mdss: add sysfs node for panel status
Some tools like MMI need know whether panel is working
correctly or not, so add a panel_status node in sysfs.
Signed-off-by: Ray Zhang <rayz@codeaurora.org>
Change-Id: I2f5da3c850f83230476f0cd66f2bf11b9234ed32
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_dsi.c | 4 | ||||
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_fb.c | 20 | ||||
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_panel.h | 4 |
3 files changed, 27 insertions, 1 deletions
diff --git a/drivers/video/fbdev/msm/mdss_dsi.c b/drivers/video/fbdev/msm/mdss_dsi.c index bc5a41ba0959..0893149846f4 100644 --- a/drivers/video/fbdev/msm/mdss_dsi.c +++ b/drivers/video/fbdev/msm/mdss_dsi.c @@ -1398,6 +1398,10 @@ static int mdss_dsi_event_handler(struct mdss_panel_data *pdata, rc = mdss_dsi_register_recovery_handler(ctrl_pdata, (struct mdss_intf_recovery *)arg); break; + case MDSS_EVENT_DSI_PANEL_STATUS: + if (ctrl_pdata->check_status) + rc = ctrl_pdata->check_status(ctrl_pdata); + break; default: pr_debug("%s: unhandled event=%d\n", __func__, event); break; diff --git a/drivers/video/fbdev/msm/mdss_fb.c b/drivers/video/fbdev/msm/mdss_fb.c index 2a5845ddc0bb..2787bb98c2d6 100644 --- a/drivers/video/fbdev/msm/mdss_fb.c +++ b/drivers/video/fbdev/msm/mdss_fb.c @@ -552,6 +552,22 @@ static ssize_t mdss_fb_get_panel_info(struct device *dev, return ret; } +static ssize_t mdss_fb_get_panel_status(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct fb_info *fbi = dev_get_drvdata(dev); + struct msm_fb_data_type *mfd = fbi->par; + int ret; + int panel_status; + + panel_status = mdss_fb_send_panel_event(mfd, + MDSS_EVENT_DSI_PANEL_STATUS, NULL); + ret = scnprintf(buf, PAGE_SIZE, "panel_status=%s\n", + panel_status > 0 ? "alive" : "dead"); + + return ret; +} + /* * mdss_fb_lpm_enable() - Function to Control LowPowerMode * @mfd: Framebuffer data structure for display @@ -650,7 +666,8 @@ static DEVICE_ATTR(msm_fb_src_split_info, S_IRUGO, mdss_fb_get_src_split_info, NULL); static DEVICE_ATTR(msm_fb_thermal_level, S_IRUGO | S_IWUSR, mdss_fb_get_thermal_level, mdss_fb_set_thermal_level); - +static DEVICE_ATTR(msm_fb_panel_status, S_IRUGO, + mdss_fb_get_panel_status, NULL); static struct attribute *mdss_fb_attrs[] = { &dev_attr_msm_fb_type.attr, &dev_attr_msm_fb_split.attr, @@ -660,6 +677,7 @@ static struct attribute *mdss_fb_attrs[] = { &dev_attr_msm_fb_panel_info.attr, &dev_attr_msm_fb_src_split_info.attr, &dev_attr_msm_fb_thermal_level.attr, + &dev_attr_msm_fb_panel_status.attr, NULL, }; diff --git a/drivers/video/fbdev/msm/mdss_panel.h b/drivers/video/fbdev/msm/mdss_panel.h index 62b5e732705a..7e00898cb3e3 100644 --- a/drivers/video/fbdev/msm/mdss_panel.h +++ b/drivers/video/fbdev/msm/mdss_panel.h @@ -181,6 +181,9 @@ struct mdss_intf_recovery { * - 1: update to command mode * @MDSS_EVENT_REGISTER_RECOVERY_HANDLER: Event to recover the interface in * case there was any errors detected. + * @ MDSS_EVENT_DSI_PANEL_STATUS:Event to check the panel status + * <= 0: panel check fail + * > 0: panel check success */ enum mdss_intf_events { MDSS_EVENT_RESET = 1, @@ -203,6 +206,7 @@ enum mdss_intf_events { MDSS_EVENT_DSI_STREAM_SIZE, MDSS_EVENT_DSI_DYNAMIC_SWITCH, MDSS_EVENT_REGISTER_RECOVERY_HANDLER, + MDSS_EVENT_DSI_PANEL_STATUS, }; struct lcd_panel_info { |
