diff options
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_mdp.c | 53 | ||||
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_mdp_overlay.c | 5 |
2 files changed, 58 insertions, 0 deletions
diff --git a/drivers/video/fbdev/msm/mdss_mdp.c b/drivers/video/fbdev/msm/mdss_mdp.c index ea382efde65a..3487c5d6e526 100644 --- a/drivers/video/fbdev/msm/mdss_mdp.c +++ b/drivers/video/fbdev/msm/mdss_mdp.c @@ -976,6 +976,55 @@ void mdss_mdp_footswitch_ctrl_splash(int on) } } +static ssize_t mdss_mdp_show_capabilities(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct mdss_data_type *mdata = dev_get_drvdata(dev); + size_t len = PAGE_SIZE; + int cnt = 0; + +#define SPRINT(fmt, ...) \ + (cnt += scnprintf(buf + cnt, len - cnt, fmt, ##__VA_ARGS__)) + + SPRINT("mdp_version=5 hw_rev=%d\n", mdata->mdp_rev); + SPRINT("rgb_pipes=%d\n", mdata->nrgb_pipes); + SPRINT("vig_pipes=%d\n", mdata->nvig_pipes); + SPRINT("dma_pipes=%d\n", mdata->ndma_pipes); + SPRINT("smp_count=%d\n", mdata->smp_mb_cnt); + SPRINT("smp_size=%d\n", mdata->smp_mb_size); + SPRINT("max downscale ratio=%d\n", MAX_DOWNSCALE_RATIO); + SPRINT("max upscale ratio=%d\n", MAX_UPSCALE_RATIO); + SPRINT("features:"); + if (mdata->has_bwc) + SPRINT(" bwc"); + if (mdata->has_decimation) + SPRINT(" decimation"); + SPRINT("\n"); + + return cnt; +} + +static DEVICE_ATTR(caps, S_IRUGO, mdss_mdp_show_capabilities, NULL); + +static struct attribute *mdp_fs_attrs[] = { + &dev_attr_caps.attr, + NULL +}; + +static struct attribute_group mdp_fs_attr_group = { + .attrs = mdp_fs_attrs +}; + +static int mdss_mdp_register_sysfs(struct mdss_data_type *mdata) +{ + struct device *dev = &mdata->pdev->dev; + int rc; + + rc = sysfs_create_group(&dev->kobj, &mdp_fs_attr_group); + + return rc; +} + static int mdss_mdp_probe(struct platform_device *pdev) { struct resource *res; @@ -1082,6 +1131,10 @@ static int mdss_mdp_probe(struct platform_device *pdev) if (!pm_runtime_enabled(&pdev->dev)) mdss_mdp_footswitch_ctrl(mdata, true); + rc = mdss_mdp_register_sysfs(mdata); + if (rc) + pr_err("unable to register mdp sysfs nodes\n"); + rc = mdss_fb_register_mdp_instance(&mdp5); if (rc) pr_err("unable to register mdp instance\n"); diff --git a/drivers/video/fbdev/msm/mdss_mdp_overlay.c b/drivers/video/fbdev/msm/mdss_mdp_overlay.c index cf6bd615e90d..cbd59060cb18 100644 --- a/drivers/video/fbdev/msm/mdss_mdp_overlay.c +++ b/drivers/video/fbdev/msm/mdss_mdp_overlay.c @@ -2158,6 +2158,11 @@ int mdss_mdp_overlay_init(struct msm_fb_data_type *mfd) goto init_fail; } + rc = sysfs_create_link_nowarn(&dev->kobj, + &mdp5_data->mdata->pdev->dev.kobj, "mdp"); + if (rc) + pr_warn("problem creating link to mdp sysfs\n"); + pm_runtime_set_suspended(&mfd->pdev->dev); pm_runtime_enable(&mfd->pdev->dev); |
