static int mdp3_overlay_queue_buffer(struct msm_fb_data_type *mfd, struct msmfb_overlay_data *req) { int rc; struct mdp3_session_data *mdp3_session = mfd->mdp.private1; struct msmfb_data *img = &req->data; struct mdp3_img_data data; struct mdp3_dma *dma = mdp3_session->dma; rc = mdp3_get_img(img, &data, MDP3_CLIENT_DMA_P); if (rc) { pr_err("fail to get overlay buffer\n"); return rc; } if (data.len < dma->source_config.stride * dma->source_config.height) { pr_err("buf length is smaller than required by dma configuration\n"); mdp3_put_img(&data, MDP3_CLIENT_DMA_P); return -EINVAL; } rc = mdp3_bufq_push(&mdp3_session->bufq_in, &data); if (rc) { pr_err("fail to queue the overlay buffer, buffer drop\n"); mdp3_put_img(&data, MDP3_CLIENT_DMA_P); return rc; } return 0; }
static int mdp3_overlay_queue_buffer(struct msm_fb_data_type *mfd, struct msmfb_overlay_data *req) { int rc; struct mdp3_session_data *mdp3_session = mfd->mdp.private1; struct msmfb_data *img = &req->data; struct mdp3_img_data data; rc = mdp3_get_img(img, &data, MDP3_CLIENT_DMA_P); if (rc) { pr_err("fail to get overlay buffer\n"); return rc; } rc = mdp3_bufq_push(&mdp3_session->bufq_in, &data); if (rc) { pr_err("fail to queue the overlay buffer, buffer drop\n"); mdp3_put_img(&data, MDP3_CLIENT_DMA_P); return rc; } return 0; }