From patchwork Wed Mar 18 21:30:48 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Niklas_S=C3=B6derlund?= X-Patchwork-Id: 210550 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY, SPF_HELO_NONE, SPF_PASS, USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 57955C55186 for ; Wed, 18 Mar 2020 21:31:08 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 2C7B320752 for ; Wed, 18 Mar 2020 21:31:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727108AbgCRVbH (ORCPT ); Wed, 18 Mar 2020 17:31:07 -0400 Received: from bin-mail-out-05.binero.net ([195.74.38.228]:49989 "EHLO bin-mail-out-05.binero.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726747AbgCRVbH (ORCPT ); Wed, 18 Mar 2020 17:31:07 -0400 X-Halon-ID: b206bf1e-695f-11ea-9f40-0050569116f7 Authorized-sender: niklas@soderlund.pp.se Received: from bismarck.berto.se (p4fca2392.dip0.t-ipconnect.de [79.202.35.146]) by bin-vsp-out-03.atm.binero.net (Halon) with ESMTPA id b206bf1e-695f-11ea-9f40-0050569116f7; Wed, 18 Mar 2020 22:30:32 +0100 (CET) From: =?utf-8?q?Niklas_S=C3=B6derlund?= To: Hans Verkuil , Laurent Pinchart , linux-media@vger.kernel.org Cc: linux-renesas-soc@vger.kernel.org, =?utf-8?q?Niklas_S=C3=B6derlund?= Subject: [RFC 2/5] media-device: Add a graph_complete callback to struct media_device_ops Date: Wed, 18 Mar 2020 22:30:48 +0100 Message-Id: <20200318213051.3200981-3-niklas.soderlund+renesas@ragnatech.se> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200318213051.3200981-1-niklas.soderlund+renesas@ragnatech.se> References: <20200318213051.3200981-1-niklas.soderlund+renesas@ragnatech.se> MIME-Version: 1.0 Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org Add a new graph_complete operation to struct media_device_ops. The callback is optional to implement. If it's implemented it shall return the status about the media graphs completes. If all entities that the media device could contain is registered in the graph it shall return true, otherwise false. Signed-off-by: Niklas Söderlund --- include/media/media-device.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/include/media/media-device.h b/include/media/media-device.h index fa089543072052cf..f637ad2eee38f456 100644 --- a/include/media/media-device.h +++ b/include/media/media-device.h @@ -61,6 +61,8 @@ struct media_entity_notify { * request (and thus the buffer) must be available to the driver. * And once a buffer is queued, then the driver can complete * or delete objects from the request before req_queue exits. + * @graph_complete: Check if the media device graph is complete and all entries + * have been added to the graph. */ struct media_device_ops { int (*link_notify)(struct media_link *link, u32 flags, @@ -69,6 +71,7 @@ struct media_device_ops { void (*req_free)(struct media_request *req); int (*req_validate)(struct media_request *req); void (*req_queue)(struct media_request *req); + bool (*graph_complete)(struct media_device *mdev); }; /** From patchwork Wed Mar 18 21:30:51 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Niklas_S=C3=B6derlund?= X-Patchwork-Id: 210549 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY, SPF_HELO_NONE, SPF_PASS, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 72D73C4332E for ; Wed, 18 Mar 2020 21:31:11 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 42A2620752 for ; Wed, 18 Mar 2020 21:31:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727176AbgCRVbK (ORCPT ); Wed, 18 Mar 2020 17:31:10 -0400 Received: from bin-mail-out-05.binero.net ([195.74.38.228]:11844 "EHLO bin-mail-out-05.binero.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727146AbgCRVbJ (ORCPT ); Wed, 18 Mar 2020 17:31:09 -0400 X-Halon-ID: b354f972-695f-11ea-9f40-0050569116f7 Authorized-sender: niklas@soderlund.pp.se Received: from bismarck.berto.se (p4fca2392.dip0.t-ipconnect.de [79.202.35.146]) by bin-vsp-out-03.atm.binero.net (Halon) with ESMTPA id b354f972-695f-11ea-9f40-0050569116f7; Wed, 18 Mar 2020 22:30:34 +0100 (CET) From: =?utf-8?q?Niklas_S=C3=B6derlund?= To: Hans Verkuil , Laurent Pinchart , linux-media@vger.kernel.org Cc: linux-renesas-soc@vger.kernel.org, =?utf-8?q?Niklas_S=C3=B6derlund?= Subject: [RFC 5/5] rcar-vin: Do not unregister video device when a subdevice is unbound Date: Wed, 18 Mar 2020 22:30:51 +0100 Message-Id: <20200318213051.3200981-6-niklas.soderlund+renesas@ragnatech.se> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200318213051.3200981-1-niklas.soderlund+renesas@ragnatech.se> References: <20200318213051.3200981-1-niklas.soderlund+renesas@ragnatech.se> MIME-Version: 1.0 Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org If the v4l2-async notifier have once been complete and the video device(s) have been register, do not unregister them if one subdevice is unbound. Depending on which subdevice is unbound other parts of the pipeline could still be functional. For example if one of multiple sensors connected to a CSI-2 transmitter is unbound other sensors in that pipeline are still useable. This problem is extra critical for R-Car VIN which registers two independent CSI-2 receivers in the same media graph as they can both be used by the same dma-engines. If one of the CSI-2 receivers are unbound the other CSI-2 receiver pipeline is still fully functional. Signed-off-by: Niklas Söderlund --- drivers/media/platform/rcar-vin/rcar-core.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/drivers/media/platform/rcar-vin/rcar-core.c b/drivers/media/platform/rcar-vin/rcar-core.c index 21ce3de8168c3224..d51ffe75c34c97c5 100644 --- a/drivers/media/platform/rcar-vin/rcar-core.c +++ b/drivers/media/platform/rcar-vin/rcar-core.c @@ -533,7 +533,6 @@ static int rvin_parallel_subdevice_attach(struct rvin_dev *vin, static void rvin_parallel_subdevice_detach(struct rvin_dev *vin) { - rvin_v4l2_unregister(vin); vin->parallel->subdev = NULL; if (!vin->info->use_mc) { @@ -758,10 +757,6 @@ static void rvin_group_notify_unbind(struct v4l2_async_notifier *notifier, struct rvin_dev *vin = v4l2_dev_to_vin(notifier->v4l2_dev); unsigned int i; - for (i = 0; i < RCAR_VIN_NUM; i++) - if (vin->group->vin[i]) - rvin_v4l2_unregister(vin->group->vin[i]); - mutex_lock(&vin->group->lock); for (i = 0; i < RVIN_CSI_MAX; i++) {