int mdp_open(struct v4l2_subdev *sd, void *arg) { struct mdp_instance *inst = kzalloc(sizeof(struct mdp_instance), GFP_KERNEL); void **cookie = (void **)arg; int rc = 0; struct fb_info *fbi = NULL; if (!inst) { WFD_MSG_ERR("Out of memory\n"); return -ENOMEM; } fbi = msm_fb_get_writeback_fb(); if (!fbi) { WFD_MSG_ERR("Failed to acquire mdp instance\n"); rc = -ENODEV; goto exit; } msm_fb_writeback_init(fbi); inst->mdp = fbi; *cookie = inst; return rc; exit: kfree(inst); return rc; }
int mdp_open(struct v4l2_subdev *sd, void *arg) { struct mdp_instance *inst = kzalloc(sizeof(struct mdp_instance), GFP_KERNEL); struct mdp_msg_ops *mops = arg; int rc = 0; struct fb_info *fbi = NULL; if (!inst) { WFD_MSG_ERR("Out of memory\n"); rc = -ENOMEM; goto mdp_open_fail; } else if (!mops) { WFD_MSG_ERR("Invalid arguments\n"); rc = -EINVAL; goto mdp_open_fail; } fbi = msm_fb_get_writeback_fb(); if (!fbi) { WFD_MSG_ERR("Failed to acquire mdp instance\n"); rc = -ENODEV; goto mdp_open_fail; } msm_fb_writeback_init(fbi); inst->mdp = fbi; inst->secure = mops->secure; if (mops->secure) { rc = mdp_secure(sd, inst); if (rc) { WFD_MSG_ERR("Couldn't secure MDP\n"); goto mdp_secure_fail; } } mops->cookie = inst; return 0; mdp_secure_fail: msm_fb_writeback_terminate(fbi); mdp_open_fail: kfree(inst); return rc; }
int mdp_open(struct v4l2_subdev *sd, void *arg) { struct mdp_instance *inst = kzalloc(sizeof(struct mdp_instance), GFP_KERNEL); struct mdp_msg_ops *mops = arg; int rc = 0; struct fb_info *fbi = NULL; if (!inst) { WFD_MSG_ERR("Out of memory\n"); rc = -ENOMEM; goto mdp_open_fail; } else if (!mops) { WFD_MSG_ERR("Invalid arguments\n"); rc = -EINVAL; goto mdp_open_fail; } fbi = msm_fb_get_writeback_fb(); if (!fbi) { WFD_MSG_ERR("Failed to acquire mdp instance\n"); rc = -ENODEV; goto mdp_open_fail; } /*Tell HDMI daemon to open fb2*/ rc = kobject_uevent(&fbi->dev->kobj, KOBJ_ADD); if (rc) { WFD_MSG_ERR("Failed add to kobj"); goto mdp_open_fail; } msm_fb_writeback_init(fbi); inst->mdp = fbi; inst->secure = mops->secure; inst->uses_iommu_split_domain = mops->iommu_split_domain; mops->cookie = inst; return rc; mdp_open_fail: kfree(inst); return rc; }
int mdp_open(struct v4l2_subdev *sd, void *arg) { struct mdp_instance *inst = kzalloc(sizeof(struct mdp_instance), GFP_KERNEL); struct mdp_msg_ops *mops = arg; int rc = 0; struct fb_info *fbi = NULL; if (!inst) { WFD_MSG_ERR("Out of memory\n"); rc = -ENOMEM; goto mdp_open_fail; } else if (!mops) { WFD_MSG_ERR("Invalid arguments\n"); rc = -EINVAL; goto mdp_open_fail; } fbi = msm_fb_get_writeback_fb(); if (!fbi) { WFD_MSG_ERR("Failed to acquire mdp instance\n"); rc = -ENODEV; goto mdp_open_fail; } inst->sdev.name = "wfd"; /* Register wfd node to switch driver */ rc = switch_dev_register(&inst->sdev); if (rc) { WFD_MSG_ERR("WFD switch registration failed\n"); goto mdp_open_fail; } msm_fb_writeback_init(fbi); inst->mdp = fbi; inst->secure = mops->secure; inst->uses_iommu_split_domain = mops->iommu_split_domain; mops->cookie = inst; return rc; mdp_open_fail: kfree(inst); return rc; }
int mdp_start(struct v4l2_subdev *sd, void *arg) { struct mdp_instance *inst = arg; int rc = 0; struct fb_info *fbi = NULL; if (inst) { rc = msm_fb_writeback_start(inst->mdp); if (rc) { WFD_MSG_ERR("Failed to start MDP mode\n"); goto exit; } fbi = msm_fb_get_writeback_fb(); if (!fbi) { WFD_MSG_ERR("Failed to acquire mdp instance\n"); rc = -ENODEV; goto exit; } } exit: return rc; }
int mdp_start(struct v4l2_subdev *sd, void *arg) { struct mdp_instance *inst = arg; int rc = 0; struct fb_info *fbi = NULL; if (inst) { rc = msm_fb_writeback_start(inst->mdp); if (rc) { WFD_MSG_ERR("Failed to start MDP mode\n"); goto exit; } fbi = msm_fb_get_writeback_fb(); if (!fbi) { WFD_MSG_ERR("Failed to acquire mdp instance\n"); rc = -ENODEV; goto exit; } switch_set_state(&inst->sdev, true); WFD_MSG_DBG("wfd state switched to %d\n", inst->sdev.state); } exit: return rc; }
int mdp_start(struct v4l2_subdev *sd, void *arg) { struct mdp_instance *inst = arg; int rc = 0; struct fb_info *fbi = NULL; if (inst) { rc = msm_fb_writeback_start(inst->mdp); if (rc) { WFD_MSG_ERR("Failed to start MDP mode\n"); goto exit; } fbi = msm_fb_get_writeback_fb(); if (!fbi) { WFD_MSG_ERR("Failed to acquire mdp instance\n"); rc = -ENODEV; goto exit; } rc = kobject_uevent(&fbi->dev->kobj, KOBJ_ONLINE); if (rc) WFD_MSG_ERR("Failed to send ONLINE event\n"); } exit: return rc; }