Loading drivers/media/platform/msm/cvp/msm_cvp.c +21 −15 Original line number Diff line number Diff line Loading @@ -1623,7 +1623,7 @@ static void aggregate_power_request(struct msm_cvp_core *core, static int adjust_bw_freqs(void) { struct msm_cvp_core *core; struct iris_hfi_device *hdev; struct cvp_hfi_device *hdev; struct bus_info *bus; struct clock_set *clocks; struct clock_info *cl; Loading @@ -1631,12 +1631,12 @@ static int adjust_bw_freqs(void) unsigned int tbl_size; unsigned int cvp_min_rate, cvp_max_rate, max_bw, min_bw; struct cvp_power_level rt_pwr = {0}, nrt_pwr = {0}; unsigned long tmp, core_sum, op_core_sum, bw_sum; unsigned long core_sum, op_core_sum, bw_sum; int i, rc = 0; core = list_first_entry(&cvp_driver->cores, struct msm_cvp_core, list); hdev = core->device->hfi_device_data; hdev = core->device; clocks = &core->resources.clock_set; cl = &clocks->clock_tbl[clocks->count - 1]; tbl = core->resources.allowed_clks_tbl; Loading Loading @@ -1691,22 +1691,24 @@ static int adjust_bw_freqs(void) return -EINVAL; } tmp = core->curr_freq; core->curr_freq = core_sum; rc = msm_cvp_set_clocks(core); mutex_unlock(&core->lock); rc = msm_bus_scale_update_bw(bus->client, bw_sum, 0); if (rc) { dprintk(CVP_ERR, "Failed voting bus %s to ab %u\n", bus->name, bw_sum); goto exit; } rc = call_hfi_op(hdev, scale_clocks, hdev->hfi_device_data, core_sum); if (rc) dprintk(CVP_ERR, "Failed to set clock rate %u %s: %d %s\n", core_sum, cl->name, rc, __func__); core->curr_freq = tmp; return rc; } hdev->clk_freq = core->curr_freq; rc = msm_bus_scale_update_bw(bus->client, bw_sum, 0); if (rc) dprintk(CVP_ERR, "Failed voting bus %s to ab %u\n", bus->name, bw_sum); exit: mutex_lock(&core->lock); if (!rc) core->curr_freq = core_sum; return rc; } Loading Loading @@ -1743,6 +1745,7 @@ static int msm_cvp_request_power(struct msm_cvp_inst *inst, inst->cur_cmd_type = CVP_KMD_REQUEST_POWER; core = inst->core; mutex_lock(&core->power_lock); mutex_lock(&core->lock); memcpy(&inst->power, power, sizeof(*power)); Loading @@ -1763,6 +1766,7 @@ static int msm_cvp_request_power(struct msm_cvp_inst *inst, } mutex_unlock(&core->lock); mutex_unlock(&core->power_lock); inst->cur_cmd_type = 0; cvp_put_inst(s); Loading @@ -1787,9 +1791,11 @@ static int msm_cvp_update_power(struct msm_cvp_inst *inst) inst->cur_cmd_type = CVP_KMD_UPDATE_POWER; core = inst->core; mutex_lock(&core->power_lock); mutex_lock(&core->lock); rc = adjust_bw_freqs(); mutex_unlock(&core->lock); mutex_unlock(&core->power_lock); inst->cur_cmd_type = 0; cvp_put_inst(s); Loading drivers/media/platform/msm/cvp/msm_cvp_internal.h +1 −1 Original line number Diff line number Diff line Loading @@ -298,7 +298,7 @@ struct cvp_session_event { struct msm_cvp_core { struct list_head list; struct mutex lock; struct mutex lock, power_lock; int id; dev_t dev_num; struct cdev cdev; Loading drivers/media/platform/msm/cvp/msm_v4l2_cvp.c +2 −0 Original line number Diff line number Diff line Loading @@ -124,6 +124,7 @@ static int msm_cvp_initialize_core(struct platform_device *pdev, INIT_LIST_HEAD(&core->instances); mutex_init(&core->lock); mutex_init(&core->power_lock); core->state = CVP_CORE_UNINIT; for (i = SYS_MSG_INDEX(SYS_MSG_START); Loading Loading @@ -487,6 +488,7 @@ static int msm_cvp_remove(struct platform_device *pdev) sysfs_remove_group(&pdev->dev.kobj, &msm_cvp_core_attr_group); dev_set_drvdata(&pdev->dev, NULL); mutex_destroy(&core->lock); mutex_destroy(&core->power_lock); kfree(core); return rc; } Loading Loading
drivers/media/platform/msm/cvp/msm_cvp.c +21 −15 Original line number Diff line number Diff line Loading @@ -1623,7 +1623,7 @@ static void aggregate_power_request(struct msm_cvp_core *core, static int adjust_bw_freqs(void) { struct msm_cvp_core *core; struct iris_hfi_device *hdev; struct cvp_hfi_device *hdev; struct bus_info *bus; struct clock_set *clocks; struct clock_info *cl; Loading @@ -1631,12 +1631,12 @@ static int adjust_bw_freqs(void) unsigned int tbl_size; unsigned int cvp_min_rate, cvp_max_rate, max_bw, min_bw; struct cvp_power_level rt_pwr = {0}, nrt_pwr = {0}; unsigned long tmp, core_sum, op_core_sum, bw_sum; unsigned long core_sum, op_core_sum, bw_sum; int i, rc = 0; core = list_first_entry(&cvp_driver->cores, struct msm_cvp_core, list); hdev = core->device->hfi_device_data; hdev = core->device; clocks = &core->resources.clock_set; cl = &clocks->clock_tbl[clocks->count - 1]; tbl = core->resources.allowed_clks_tbl; Loading Loading @@ -1691,22 +1691,24 @@ static int adjust_bw_freqs(void) return -EINVAL; } tmp = core->curr_freq; core->curr_freq = core_sum; rc = msm_cvp_set_clocks(core); mutex_unlock(&core->lock); rc = msm_bus_scale_update_bw(bus->client, bw_sum, 0); if (rc) { dprintk(CVP_ERR, "Failed voting bus %s to ab %u\n", bus->name, bw_sum); goto exit; } rc = call_hfi_op(hdev, scale_clocks, hdev->hfi_device_data, core_sum); if (rc) dprintk(CVP_ERR, "Failed to set clock rate %u %s: %d %s\n", core_sum, cl->name, rc, __func__); core->curr_freq = tmp; return rc; } hdev->clk_freq = core->curr_freq; rc = msm_bus_scale_update_bw(bus->client, bw_sum, 0); if (rc) dprintk(CVP_ERR, "Failed voting bus %s to ab %u\n", bus->name, bw_sum); exit: mutex_lock(&core->lock); if (!rc) core->curr_freq = core_sum; return rc; } Loading Loading @@ -1743,6 +1745,7 @@ static int msm_cvp_request_power(struct msm_cvp_inst *inst, inst->cur_cmd_type = CVP_KMD_REQUEST_POWER; core = inst->core; mutex_lock(&core->power_lock); mutex_lock(&core->lock); memcpy(&inst->power, power, sizeof(*power)); Loading @@ -1763,6 +1766,7 @@ static int msm_cvp_request_power(struct msm_cvp_inst *inst, } mutex_unlock(&core->lock); mutex_unlock(&core->power_lock); inst->cur_cmd_type = 0; cvp_put_inst(s); Loading @@ -1787,9 +1791,11 @@ static int msm_cvp_update_power(struct msm_cvp_inst *inst) inst->cur_cmd_type = CVP_KMD_UPDATE_POWER; core = inst->core; mutex_lock(&core->power_lock); mutex_lock(&core->lock); rc = adjust_bw_freqs(); mutex_unlock(&core->lock); mutex_unlock(&core->power_lock); inst->cur_cmd_type = 0; cvp_put_inst(s); Loading
drivers/media/platform/msm/cvp/msm_cvp_internal.h +1 −1 Original line number Diff line number Diff line Loading @@ -298,7 +298,7 @@ struct cvp_session_event { struct msm_cvp_core { struct list_head list; struct mutex lock; struct mutex lock, power_lock; int id; dev_t dev_num; struct cdev cdev; Loading
drivers/media/platform/msm/cvp/msm_v4l2_cvp.c +2 −0 Original line number Diff line number Diff line Loading @@ -124,6 +124,7 @@ static int msm_cvp_initialize_core(struct platform_device *pdev, INIT_LIST_HEAD(&core->instances); mutex_init(&core->lock); mutex_init(&core->power_lock); core->state = CVP_CORE_UNINIT; for (i = SYS_MSG_INDEX(SYS_MSG_START); Loading Loading @@ -487,6 +488,7 @@ static int msm_cvp_remove(struct platform_device *pdev) sysfs_remove_group(&pdev->dev.kobj, &msm_cvp_core_attr_group); dev_set_drvdata(&pdev->dev, NULL); mutex_destroy(&core->lock); mutex_destroy(&core->power_lock); kfree(core); return rc; } Loading