From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from galahad.ideasonboard.com ([185.26.127.97]:54331 "EHLO galahad.ideasonboard.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751926AbeDEJSj (ORCPT ); Thu, 5 Apr 2018 05:18:39 -0400 From: Laurent Pinchart To: linux-media@vger.kernel.org Cc: dri-devel@lists.freedesktop.org, linux-renesas-soc@vger.kernel.org, Kieran Bingham Subject: [PATCH v2 05/15] v4l: vsp1: Share duplicated DRM pipeline configuration code Date: Thu, 5 Apr 2018 12:18:30 +0300 Message-Id: <20180405091840.30728-6-laurent.pinchart+renesas@ideasonboard.com> In-Reply-To: <20180405091840.30728-1-laurent.pinchart+renesas@ideasonboard.com> References: <20180405091840.30728-1-laurent.pinchart+renesas@ideasonboard.com> Sender: linux-media-owner@vger.kernel.org List-ID: Move the duplicated DRM pipeline configuration code to a function and call it from vsp1_du_setup_lif() and vsp1_du_atomic_flush(). Signed-off-by: Laurent Pinchart Reviewed-by: Kieran Bingham --- drivers/media/platform/vsp1/vsp1_drm.c | 95 +++++++++++++++------------------- 1 file changed, 43 insertions(+), 52 deletions(-) diff --git a/drivers/media/platform/vsp1/vsp1_drm.c b/drivers/media/platform/vsp1/vsp1_drm.c index e210917fdc3f..9a043a915c0b 100644 --- a/drivers/media/platform/vsp1/vsp1_drm.c +++ b/drivers/media/platform/vsp1/vsp1_drm.c @@ -42,6 +42,47 @@ static void vsp1_du_pipeline_frame_end(struct vsp1_pipeline *pipe, drm_pipe->du_complete(drm_pipe->du_private, completed); } +/* ----------------------------------------------------------------------------- + * Pipeline Configuration + */ + +/* Configure all entities in the pipeline. */ +static void vsp1_du_pipeline_configure(struct vsp1_pipeline *pipe) +{ + struct vsp1_entity *entity; + struct vsp1_entity *next; + struct vsp1_dl_list *dl; + + dl = vsp1_dl_list_get(pipe->output->dlm); + + list_for_each_entry_safe(entity, next, &pipe->entities, list_pipe) { + /* Disconnect unused RPFs from the pipeline. */ + if (entity->type == VSP1_ENTITY_RPF && + !pipe->inputs[entity->index]) { + vsp1_dl_list_write(dl, entity->route->reg, + VI6_DPR_NODE_UNUSED); + + entity->pipe = NULL; + list_del(&entity->list_pipe); + + continue; + } + + vsp1_entity_route_setup(entity, pipe, dl); + + if (entity->ops->configure) { + entity->ops->configure(entity, pipe, dl, + VSP1_ENTITY_PARAMS_INIT); + entity->ops->configure(entity, pipe, dl, + VSP1_ENTITY_PARAMS_RUNTIME); + entity->ops->configure(entity, pipe, dl, + VSP1_ENTITY_PARAMS_PARTITION); + } + } + + vsp1_dl_list_commit(dl); +} + /* ----------------------------------------------------------------------------- * DU Driver API */ @@ -85,9 +126,6 @@ int vsp1_du_setup_lif(struct device *dev, unsigned int pipe_index, struct vsp1_drm_pipeline *drm_pipe; struct vsp1_pipeline *pipe; struct vsp1_bru *bru; - struct vsp1_entity *entity; - struct vsp1_entity *next; - struct vsp1_dl_list *dl; struct v4l2_subdev_format format; unsigned long flags; unsigned int i; @@ -239,22 +277,7 @@ int vsp1_du_setup_lif(struct device *dev, unsigned int pipe_index, vsp1_write(vsp1, VI6_DISP_IRQ_ENB, 0); /* Configure all entities in the pipeline. */ - dl = vsp1_dl_list_get(pipe->output->dlm); - - list_for_each_entry_safe(entity, next, &pipe->entities, list_pipe) { - vsp1_entity_route_setup(entity, pipe, dl); - - if (entity->ops->configure) { - entity->ops->configure(entity, pipe, dl, - VSP1_ENTITY_PARAMS_INIT); - entity->ops->configure(entity, pipe, dl, - VSP1_ENTITY_PARAMS_RUNTIME); - entity->ops->configure(entity, pipe, dl, - VSP1_ENTITY_PARAMS_PARTITION); - } - } - - vsp1_dl_list_commit(dl); + vsp1_du_pipeline_configure(pipe); /* Start the pipeline. */ spin_lock_irqsave(&pipe->irqlock, flags); @@ -490,15 +513,9 @@ void vsp1_du_atomic_flush(struct device *dev, unsigned int pipe_index) struct vsp1_pipeline *pipe = &drm_pipe->pipe; struct vsp1_rwpf *inputs[VSP1_MAX_RPF] = { NULL, }; struct vsp1_bru *bru = to_bru(&pipe->bru->subdev); - struct vsp1_entity *entity; - struct vsp1_entity *next; - struct vsp1_dl_list *dl; unsigned int i; int ret; - /* Prepare the display list. */ - dl = vsp1_dl_list_get(pipe->output->dlm); - /* Count the number of enabled inputs and sort them by Z-order. */ pipe->num_inputs = 0; @@ -557,33 +574,7 @@ void vsp1_du_atomic_flush(struct device *dev, unsigned int pipe_index) __func__, rpf->entity.index); } - /* Configure all entities in the pipeline. */ - list_for_each_entry_safe(entity, next, &pipe->entities, list_pipe) { - /* Disconnect unused RPFs from the pipeline. */ - if (entity->type == VSP1_ENTITY_RPF && - !pipe->inputs[entity->index]) { - vsp1_dl_list_write(dl, entity->route->reg, - VI6_DPR_NODE_UNUSED); - - entity->pipe = NULL; - list_del(&entity->list_pipe); - - continue; - } - - vsp1_entity_route_setup(entity, pipe, dl); - - if (entity->ops->configure) { - entity->ops->configure(entity, pipe, dl, - VSP1_ENTITY_PARAMS_INIT); - entity->ops->configure(entity, pipe, dl, - VSP1_ENTITY_PARAMS_RUNTIME); - entity->ops->configure(entity, pipe, dl, - VSP1_ENTITY_PARAMS_PARTITION); - } - } - - vsp1_dl_list_commit(dl); + vsp1_du_pipeline_configure(pipe); } EXPORT_SYMBOL_GPL(vsp1_du_atomic_flush); -- Regards, Laurent Pinchart From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: [PATCH v2 05/15] v4l: vsp1: Share duplicated DRM pipeline configuration code Date: Thu, 5 Apr 2018 12:18:30 +0300 Message-ID: <20180405091840.30728-6-laurent.pinchart+renesas@ideasonboard.com> References: <20180405091840.30728-1-laurent.pinchart+renesas@ideasonboard.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from galahad.ideasonboard.com (galahad.ideasonboard.com [185.26.127.97]) by gabe.freedesktop.org (Postfix) with ESMTPS id B0AED6E6E1 for ; Thu, 5 Apr 2018 09:18:38 +0000 (UTC) In-Reply-To: <20180405091840.30728-1-laurent.pinchart+renesas@ideasonboard.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: linux-media@vger.kernel.org Cc: linux-renesas-soc@vger.kernel.org, Kieran Bingham , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org TW92ZSB0aGUgZHVwbGljYXRlZCBEUk0gcGlwZWxpbmUgY29uZmlndXJhdGlvbiBjb2RlIHRvIGEg ZnVuY3Rpb24gYW5kCmNhbGwgaXQgZnJvbSB2c3AxX2R1X3NldHVwX2xpZigpIGFuZCB2c3AxX2R1 X2F0b21pY19mbHVzaCgpLgoKU2lnbmVkLW9mZi1ieTogTGF1cmVudCBQaW5jaGFydCA8bGF1cmVu dC5waW5jaGFydCtyZW5lc2FzQGlkZWFzb25ib2FyZC5jb20+ClJldmlld2VkLWJ5OiBLaWVyYW4g QmluZ2hhbSA8a2llcmFuLmJpbmdoYW0rcmVuZXNhc0BpZGVhc29uYm9hcmQuY29tPgotLS0KIGRy aXZlcnMvbWVkaWEvcGxhdGZvcm0vdnNwMS92c3AxX2RybS5jIHwgOTUgKysrKysrKysrKysrKysr LS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDQzIGluc2VydGlvbnMoKyksIDUy IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdnNwMS92 c3AxX2RybS5jIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92c3AxL3ZzcDFfZHJtLmMKaW5kZXgg ZTIxMDkxN2ZkYzNmLi45YTA0M2E5MTVjMGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvcGxh dGZvcm0vdnNwMS92c3AxX2RybS5jCisrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdnNwMS92 c3AxX2RybS5jCkBAIC00Miw2ICs0Miw0NyBAQCBzdGF0aWMgdm9pZCB2c3AxX2R1X3BpcGVsaW5l X2ZyYW1lX2VuZChzdHJ1Y3QgdnNwMV9waXBlbGluZSAqcGlwZSwKIAkJZHJtX3BpcGUtPmR1X2Nv bXBsZXRlKGRybV9waXBlLT5kdV9wcml2YXRlLCBjb21wbGV0ZWQpOwogfQogCisvKiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICogUGlwZWxpbmUgQ29uZmlndXJhdGlvbgorICovCisKKy8qIENvbmZp Z3VyZSBhbGwgZW50aXRpZXMgaW4gdGhlIHBpcGVsaW5lLiAqLworc3RhdGljIHZvaWQgdnNwMV9k dV9waXBlbGluZV9jb25maWd1cmUoc3RydWN0IHZzcDFfcGlwZWxpbmUgKnBpcGUpCit7CisJc3Ry dWN0IHZzcDFfZW50aXR5ICplbnRpdHk7CisJc3RydWN0IHZzcDFfZW50aXR5ICpuZXh0OworCXN0 cnVjdCB2c3AxX2RsX2xpc3QgKmRsOworCisJZGwgPSB2c3AxX2RsX2xpc3RfZ2V0KHBpcGUtPm91 dHB1dC0+ZGxtKTsKKworCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShlbnRpdHksIG5leHQsICZw aXBlLT5lbnRpdGllcywgbGlzdF9waXBlKSB7CisJCS8qIERpc2Nvbm5lY3QgdW51c2VkIFJQRnMg ZnJvbSB0aGUgcGlwZWxpbmUuICovCisJCWlmIChlbnRpdHktPnR5cGUgPT0gVlNQMV9FTlRJVFlf UlBGICYmCisJCSAgICAhcGlwZS0+aW5wdXRzW2VudGl0eS0+aW5kZXhdKSB7CisJCQl2c3AxX2Rs X2xpc3Rfd3JpdGUoZGwsIGVudGl0eS0+cm91dGUtPnJlZywKKwkJCQkJICAgVkk2X0RQUl9OT0RF X1VOVVNFRCk7CisKKwkJCWVudGl0eS0+cGlwZSA9IE5VTEw7CisJCQlsaXN0X2RlbCgmZW50aXR5 LT5saXN0X3BpcGUpOworCisJCQljb250aW51ZTsKKwkJfQorCisJCXZzcDFfZW50aXR5X3JvdXRl X3NldHVwKGVudGl0eSwgcGlwZSwgZGwpOworCisJCWlmIChlbnRpdHktPm9wcy0+Y29uZmlndXJl KSB7CisJCQllbnRpdHktPm9wcy0+Y29uZmlndXJlKGVudGl0eSwgcGlwZSwgZGwsCisJCQkJCSAg ICAgICBWU1AxX0VOVElUWV9QQVJBTVNfSU5JVCk7CisJCQllbnRpdHktPm9wcy0+Y29uZmlndXJl KGVudGl0eSwgcGlwZSwgZGwsCisJCQkJCSAgICAgICBWU1AxX0VOVElUWV9QQVJBTVNfUlVOVElN RSk7CisJCQllbnRpdHktPm9wcy0+Y29uZmlndXJlKGVudGl0eSwgcGlwZSwgZGwsCisJCQkJCSAg ICAgICBWU1AxX0VOVElUWV9QQVJBTVNfUEFSVElUSU9OKTsKKwkJfQorCX0KKworCXZzcDFfZGxf bGlzdF9jb21taXQoZGwpOworfQorCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogRFUgRHJp dmVyIEFQSQogICovCkBAIC04NSw5ICsxMjYsNiBAQCBpbnQgdnNwMV9kdV9zZXR1cF9saWYoc3Ry dWN0IGRldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZV9pbmRleCwKIAlzdHJ1Y3QgdnNwMV9k cm1fcGlwZWxpbmUgKmRybV9waXBlOwogCXN0cnVjdCB2c3AxX3BpcGVsaW5lICpwaXBlOwogCXN0 cnVjdCB2c3AxX2JydSAqYnJ1OwotCXN0cnVjdCB2c3AxX2VudGl0eSAqZW50aXR5OwotCXN0cnVj dCB2c3AxX2VudGl0eSAqbmV4dDsKLQlzdHJ1Y3QgdnNwMV9kbF9saXN0ICpkbDsKIAlzdHJ1Y3Qg djRsMl9zdWJkZXZfZm9ybWF0IGZvcm1hdDsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCXVuc2ln bmVkIGludCBpOwpAQCAtMjM5LDIyICsyNzcsNyBAQCBpbnQgdnNwMV9kdV9zZXR1cF9saWYoc3Ry dWN0IGRldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZV9pbmRleCwKIAl2c3AxX3dyaXRlKHZz cDEsIFZJNl9ESVNQX0lSUV9FTkIsIDApOwogCiAJLyogQ29uZmlndXJlIGFsbCBlbnRpdGllcyBp biB0aGUgcGlwZWxpbmUuICovCi0JZGwgPSB2c3AxX2RsX2xpc3RfZ2V0KHBpcGUtPm91dHB1dC0+ ZGxtKTsKLQotCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShlbnRpdHksIG5leHQsICZwaXBlLT5l bnRpdGllcywgbGlzdF9waXBlKSB7Ci0JCXZzcDFfZW50aXR5X3JvdXRlX3NldHVwKGVudGl0eSwg cGlwZSwgZGwpOwotCi0JCWlmIChlbnRpdHktPm9wcy0+Y29uZmlndXJlKSB7Ci0JCQllbnRpdHkt Pm9wcy0+Y29uZmlndXJlKGVudGl0eSwgcGlwZSwgZGwsCi0JCQkJCSAgICAgICBWU1AxX0VOVElU WV9QQVJBTVNfSU5JVCk7Ci0JCQllbnRpdHktPm9wcy0+Y29uZmlndXJlKGVudGl0eSwgcGlwZSwg ZGwsCi0JCQkJCSAgICAgICBWU1AxX0VOVElUWV9QQVJBTVNfUlVOVElNRSk7Ci0JCQllbnRpdHkt Pm9wcy0+Y29uZmlndXJlKGVudGl0eSwgcGlwZSwgZGwsCi0JCQkJCSAgICAgICBWU1AxX0VOVElU WV9QQVJBTVNfUEFSVElUSU9OKTsKLQkJfQotCX0KLQotCXZzcDFfZGxfbGlzdF9jb21taXQoZGwp OworCXZzcDFfZHVfcGlwZWxpbmVfY29uZmlndXJlKHBpcGUpOwogCiAJLyogU3RhcnQgdGhlIHBp cGVsaW5lLiAqLwogCXNwaW5fbG9ja19pcnFzYXZlKCZwaXBlLT5pcnFsb2NrLCBmbGFncyk7CkBA IC00OTAsMTUgKzUxMyw5IEBAIHZvaWQgdnNwMV9kdV9hdG9taWNfZmx1c2goc3RydWN0IGRldmlj ZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZV9pbmRleCkKIAlzdHJ1Y3QgdnNwMV9waXBlbGluZSAq cGlwZSA9ICZkcm1fcGlwZS0+cGlwZTsKIAlzdHJ1Y3QgdnNwMV9yd3BmICppbnB1dHNbVlNQMV9N QVhfUlBGXSA9IHsgTlVMTCwgfTsKIAlzdHJ1Y3QgdnNwMV9icnUgKmJydSA9IHRvX2JydSgmcGlw ZS0+YnJ1LT5zdWJkZXYpOwotCXN0cnVjdCB2c3AxX2VudGl0eSAqZW50aXR5OwotCXN0cnVjdCB2 c3AxX2VudGl0eSAqbmV4dDsKLQlzdHJ1Y3QgdnNwMV9kbF9saXN0ICpkbDsKIAl1bnNpZ25lZCBp bnQgaTsKIAlpbnQgcmV0OwogCi0JLyogUHJlcGFyZSB0aGUgZGlzcGxheSBsaXN0LiAqLwotCWRs ID0gdnNwMV9kbF9saXN0X2dldChwaXBlLT5vdXRwdXQtPmRsbSk7Ci0KIAkvKiBDb3VudCB0aGUg bnVtYmVyIG9mIGVuYWJsZWQgaW5wdXRzIGFuZCBzb3J0IHRoZW0gYnkgWi1vcmRlci4gKi8KIAlw aXBlLT5udW1faW5wdXRzID0gMDsKIApAQCAtNTU3LDMzICs1NzQsNyBAQCB2b2lkIHZzcDFfZHVf YXRvbWljX2ZsdXNoKHN0cnVjdCBkZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGVfaW5kZXgp CiAJCQkJX19mdW5jX18sIHJwZi0+ZW50aXR5LmluZGV4KTsKIAl9CiAKLQkvKiBDb25maWd1cmUg YWxsIGVudGl0aWVzIGluIHRoZSBwaXBlbGluZS4gKi8KLQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3Nh ZmUoZW50aXR5LCBuZXh0LCAmcGlwZS0+ZW50aXRpZXMsIGxpc3RfcGlwZSkgewotCQkvKiBEaXNj b25uZWN0IHVudXNlZCBSUEZzIGZyb20gdGhlIHBpcGVsaW5lLiAqLwotCQlpZiAoZW50aXR5LT50 eXBlID09IFZTUDFfRU5USVRZX1JQRiAmJgotCQkgICAgIXBpcGUtPmlucHV0c1tlbnRpdHktPmlu ZGV4XSkgewotCQkJdnNwMV9kbF9saXN0X3dyaXRlKGRsLCBlbnRpdHktPnJvdXRlLT5yZWcsCi0J CQkJCSAgIFZJNl9EUFJfTk9ERV9VTlVTRUQpOwotCi0JCQllbnRpdHktPnBpcGUgPSBOVUxMOwot CQkJbGlzdF9kZWwoJmVudGl0eS0+bGlzdF9waXBlKTsKLQotCQkJY29udGludWU7Ci0JCX0KLQot CQl2c3AxX2VudGl0eV9yb3V0ZV9zZXR1cChlbnRpdHksIHBpcGUsIGRsKTsKLQotCQlpZiAoZW50 aXR5LT5vcHMtPmNvbmZpZ3VyZSkgewotCQkJZW50aXR5LT5vcHMtPmNvbmZpZ3VyZShlbnRpdHks IHBpcGUsIGRsLAotCQkJCQkgICAgICAgVlNQMV9FTlRJVFlfUEFSQU1TX0lOSVQpOwotCQkJZW50 aXR5LT5vcHMtPmNvbmZpZ3VyZShlbnRpdHksIHBpcGUsIGRsLAotCQkJCQkgICAgICAgVlNQMV9F TlRJVFlfUEFSQU1TX1JVTlRJTUUpOwotCQkJZW50aXR5LT5vcHMtPmNvbmZpZ3VyZShlbnRpdHks IHBpcGUsIGRsLAotCQkJCQkgICAgICAgVlNQMV9FTlRJVFlfUEFSQU1TX1BBUlRJVElPTik7Ci0J CX0KLQl9Ci0KLQl2c3AxX2RsX2xpc3RfY29tbWl0KGRsKTsKKwl2c3AxX2R1X3BpcGVsaW5lX2Nv bmZpZ3VyZShwaXBlKTsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKHZzcDFfZHVfYXRvbWljX2ZsdXNo KTsKIAotLSAKUmVnYXJkcywKCkxhdXJlbnQgUGluY2hhcnQKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRl dmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=