From patchwork Sun Jan 30 23:58:16 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Scally X-Patchwork-Id: 12730373 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id EAD76C433FE for ; Sun, 30 Jan 2022 23:59:10 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239158AbiA3X7J (ORCPT ); Sun, 30 Jan 2022 18:59:09 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39036 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236438AbiA3X7I (ORCPT ); Sun, 30 Jan 2022 18:59:08 -0500 Received: from mail-wr1-x42c.google.com (mail-wr1-x42c.google.com [IPv6:2a00:1450:4864:20::42c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A2989C061714 for ; Sun, 30 Jan 2022 15:59:08 -0800 (PST) Received: by mail-wr1-x42c.google.com with SMTP id c23so22070464wrb.5 for ; Sun, 30 Jan 2022 15:59:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=KKgmf5edtGbJ9h0LX6rTJGe7gf+2myJfiAdHSNMIYE4=; b=nYgorl02OBSDDoz2QxOJC326/TYULEbc85Zv6g28GOEBMSx3GXxLBU58R7vfoLOH5g rV8QrgkA0jVq+M9+xwDY+wpEroN2jdpiptPsihygQ3DF++4UqU47ewCcUwmoe+fJ64dZ EbhGt3Saxr6gnQYDdsDKVGjd1SzP6RXM/XYi8zmC0aJb24CdWGEo3/7r32Sq+zedfJi2 kmldQkOU62qPVo5mglljgwhW3YMj5TuluAPn54d7nM5QBwYzqiTLRZRzrvjANSEkYNp4 ovhsLy4a4E3xVJM7OzD6W6aGyMekp4x/1vGY+ltj4TVh1Q3rJRckcZWobVow9OJXHuV3 YxyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=KKgmf5edtGbJ9h0LX6rTJGe7gf+2myJfiAdHSNMIYE4=; b=UnrcsAbzPoY8JlQKl2o7XHCYVYE/6EWEWFiN74slj3HllnYjMXJXJqNiGBR3t3J7N6 pKicSqSKW1L9LJuR2VB5Sv7pOlqz/aSeGQYzSJuz3v+W7S3e/cf/U6Ku/+w7vE6XbQUX FjJt9Zu4G0rtLaN0ivNGPZerZsK83++ZkEuaJLXpWrWGkBofqVRkZSATgRdxd2XO+c06 Xz3nGXYgIlwlESz8eIQYFrpw+z5qhVQP7cbobrM3HjgQTCYsmw5QN9cKx5kRzky4URNF cecHtKvM5m1POJHjUahM+LlsjNr05dgdbHycR9DExc5a0p1x36X8304poQz6KnazUfLS 70Ug== X-Gm-Message-State: AOAM532uNIXapZxzJ84lL2OZz6i5tGCqFPOtsjWtQK4zwIcaUoz3D0OO ZSUAocbhydfELFEv0ckY9g/5+oP0zi4= X-Google-Smtp-Source: ABdhPJy6S71fEhugp7GLdCYTygZWbK5lcBNNm0V6Ac0Tba1URoZGFjJWELe82FhEZDh+HHnuWLxBCw== X-Received: by 2002:adf:f312:: with SMTP id i18mr14806019wro.441.1643587147127; Sun, 30 Jan 2022 15:59:07 -0800 (PST) Received: from localhost.localdomain (cpc141996-chfd3-2-0-cust928.12-3.cable.virginm.net. [86.13.91.161]) by smtp.gmail.com with ESMTPSA id 11sm11993663wrb.30.2022.01.30.15.59.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 30 Jan 2022 15:59:06 -0800 (PST) From: Daniel Scally To: linux-media@vger.kernel.org, libcamera-devel@lists.libcamera.org Cc: sakari.ailus@linux.intel.com, laurent.pinchart@ideasonboard.com, hanlinchen@chromium.org, tfiga@chromium.org, hdegoede@redhat.com, kieran.bingham@ideasonboard.com, hpa@redhat.com Subject: [PATCH v2 1/6] media: entity: Skip non-data links in graph iteration Date: Sun, 30 Jan 2022 23:58:16 +0000 Message-Id: <20220130235821.48076-2-djrscally@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220130235821.48076-1-djrscally@gmail.com> References: <20220130235821.48076-1-djrscally@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org When iterating over the media graph, don't follow links that are not data links. Reviewed-by: Laurent Pinchart Signed-off-by: Daniel Scally --- Changes since v1: - Moved to the head of the series - s/pad-to-pad/data (Sakari) - Dropped the debug message (Laurent) Changes since the rfc: - new patch drivers/media/mc/mc-entity.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/media/mc/mc-entity.c b/drivers/media/mc/mc-entity.c index f40f41977142..2a6e16fb0048 100644 --- a/drivers/media/mc/mc-entity.c +++ b/drivers/media/mc/mc-entity.c @@ -313,6 +313,12 @@ static void media_graph_walk_iter(struct media_graph *graph) link = list_entry(link_top(graph), typeof(*link), list); + /* If the link is not a data link, don't follow it */ + if ((link->flags & MEDIA_LNK_FL_LINK_TYPE) != MEDIA_LNK_FL_DATA_LINK) { + link_top(graph) = link_top(graph)->next; + return; + } + /* The link is not enabled so we do not follow. */ if (!(link->flags & MEDIA_LNK_FL_ENABLED)) { link_top(graph) = link_top(graph)->next; From patchwork Sun Jan 30 23:58:17 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Scally X-Patchwork-Id: 12730374 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0C1FEC433EF for ; Sun, 30 Jan 2022 23:59:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S241571AbiA3X7K (ORCPT ); Sun, 30 Jan 2022 18:59:10 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39042 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239043AbiA3X7J (ORCPT ); Sun, 30 Jan 2022 18:59:09 -0500 Received: from mail-wr1-x42f.google.com (mail-wr1-x42f.google.com [IPv6:2a00:1450:4864:20::42f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5D4F0C061714 for ; Sun, 30 Jan 2022 15:59:09 -0800 (PST) Received: by mail-wr1-x42f.google.com with SMTP id c23so22070507wrb.5 for ; Sun, 30 Jan 2022 15:59:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=w0T9EcKMpQUVHCpgvBm4+xMsufqtQ6UT10jHk3vORD0=; b=R+kuABtgCl3FMxDyxw9I8pPuCBuFIZqnzmqPi7FsQIW6P5Hg09ySwXKlTBnsXp9xlM pYBEfehgI/0jyxXOEKxQnpCGcT4Jkhi3jd3pPvGkyMXFCGz+4myzTtHm+m8vEtHkISGC h/gd+Ttk6jKDn8RQKY1+YvmWj9YrH3Dn/ZKc8cdvQ/9O5gFb5c1/XHGXqyjaFvoW30+0 w/iWId/zKjg2HRNJpXQ6FY+lhokvoC2ia0TXZkzfkzhdyoah1ZKZr2C7lRz924vLFzNt YLVI4jBPviByhK4aoqHYwlazfFAJ3mIM0v1UEVcP/875jAg8msV/74fXcg0Xt1iP7qlU Tiaw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=w0T9EcKMpQUVHCpgvBm4+xMsufqtQ6UT10jHk3vORD0=; b=twkmt8THoV7rXe2/hbmYt4AIEZrvCo9b75OBdNqYAUSjoa4MyJLqfjMvXCx7W61+G8 8ilP+8mb72wpwShcC8tpb99JJdR8bUKgHkj68KivBRCg9Kn6/tvGPHglyaLkUc0nZwxp N5Y8iWyfkP8CThfr/AP4Lmza7jY0lwZe7v1jZICBDr9amYGpk3XF8zu5tiumZkgdOLqw iwnWcb7jrPdFAaZ77kBsQkFpzQnsEAJPAFgCzEy7S9P2tGO6yj4tU4Mg5cmrSeg3TW6K 1cGur6KEq3XIwfzCE+dMyFGY4rdBHkFtzurIYCwnJ39JbsQ6BLfGmgGR7MJtNogTu+iN I7TQ== X-Gm-Message-State: AOAM53303YcQj9uFlHW2UGOcu1yt95FLCZI0nJNuQkFLTrGCMj7xhIBH 9QE17uZVJx3UCUHvKeBp9OI7JaG7E3k= X-Google-Smtp-Source: ABdhPJybaDovEa+FfJYHdDFeryAbCdBtmsrr6X9qpt2t18dQ/hIqOImMamQVlLcBeBjC++7Ummelhw== X-Received: by 2002:a5d:64e5:: with SMTP id g5mr6828398wri.162.1643587148012; Sun, 30 Jan 2022 15:59:08 -0800 (PST) Received: from localhost.localdomain (cpc141996-chfd3-2-0-cust928.12-3.cable.virginm.net. [86.13.91.161]) by smtp.gmail.com with ESMTPSA id 11sm11993663wrb.30.2022.01.30.15.59.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 30 Jan 2022 15:59:07 -0800 (PST) From: Daniel Scally To: linux-media@vger.kernel.org, libcamera-devel@lists.libcamera.org Cc: sakari.ailus@linux.intel.com, laurent.pinchart@ideasonboard.com, hanlinchen@chromium.org, tfiga@chromium.org, hdegoede@redhat.com, kieran.bingham@ideasonboard.com, hpa@redhat.com Subject: [PATCH v2 2/6] media: media.h: Add new media link type Date: Sun, 30 Jan 2022 23:58:17 +0000 Message-Id: <20220130235821.48076-3-djrscally@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220130235821.48076-1-djrscally@gmail.com> References: <20220130235821.48076-1-djrscally@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org To describe in the kernel the connection between devices and their supporting peripherals (for example, a camera sensor and the vcm driving the focusing lens for it), add a new type of media link to introduce the concept of these ancillary links. Signed-off-by: Daniel Scally Reviewed-by: Laurent Pinchart --- Changes since v1: - None changes since the rfc: - Split out into its own patch (mostly so it can be followed by patch #3, which corrects some media-core code that is otherwise broken by the new links) include/uapi/linux/media.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/uapi/linux/media.h b/include/uapi/linux/media.h index 200fa8462b90..afbae7213d35 100644 --- a/include/uapi/linux/media.h +++ b/include/uapi/linux/media.h @@ -226,6 +226,7 @@ struct media_pad_desc { #define MEDIA_LNK_FL_LINK_TYPE (0xf << 28) # define MEDIA_LNK_FL_DATA_LINK (0 << 28) # define MEDIA_LNK_FL_INTERFACE_LINK (1 << 28) +# define MEDIA_LNK_FL_ANCILLARY_LINK (2 << 28) struct media_link_desc { struct media_pad_desc source; From patchwork Sun Jan 30 23:58:18 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Scally X-Patchwork-Id: 12730375 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id E9722C4332F for ; Sun, 30 Jan 2022 23:59:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243787AbiA3X7K (ORCPT ); Sun, 30 Jan 2022 18:59:10 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39048 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241651AbiA3X7K (ORCPT ); Sun, 30 Jan 2022 18:59:10 -0500 Received: from mail-wm1-x332.google.com (mail-wm1-x332.google.com [IPv6:2a00:1450:4864:20::332]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 24EFFC061714 for ; Sun, 30 Jan 2022 15:59:10 -0800 (PST) Received: by mail-wm1-x332.google.com with SMTP id k6-20020a05600c1c8600b003524656034cso5139295wms.2 for ; Sun, 30 Jan 2022 15:59:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=3jJ0g27dpE1FUu3MPy8YxNnCH8nvgWy6GR4rkrcef5o=; b=GSmf0muxy9deZ2hL+lVMfPRZ9wWaJDwAM7NcmHet2TImu1Y0ImdwB2qX6il+G6+C0c PpRMV1do1RnOhkTF3hrOv9nIButtvsI8m1zzvHOV7RBrF82gobVzP54IJZhozx+jicfn hI0TBoNdxjGJJqwWXaXzcfQqDgtCprqNho6Ji5tq5os2OSnuJRN8L0Uwfmcz3L6c5Ual 5xZiRSTt5N2tY70ns5rHK2rfWUPusuQQZsV6di6c2gsx+gd9k6w0hfALtw+VshGFm4NJ KixHFg5VUCGrHDO9nAClNuLrjzvkVlCxJPhBcimYS8i6FT6ZCSHghFWMtw9hMBrbEGlO ayEQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=3jJ0g27dpE1FUu3MPy8YxNnCH8nvgWy6GR4rkrcef5o=; b=pBmN44RcQDD8DeX4VrHD0Myqho3yTErOqFZJAAh9GJWicPPNHmER7/72Vjoo4HbZfs lyfJwVePUELIvPt59QU21A2NhN56Y+6ovcUYLnysXam8lQaTioiMxAofRhUN1INmMAAW Mpm8fDWHw8Yy64n8+UVe+p9eX89WwcyL0F+1ee3OqCKvlG/wXQ6ftxOV0yb6MDIeUpp5 +gPAZ/Y8wuZmKPQVHHvDbObvVZYvBfXtIFY2wEPO+bXt3jPfTf3iwXNASvetaxhVrKFj 5po5DyyIeQYk+J3a++ivVDON6l6Qaa803BNqvVWpBGEwv51cVhiEVmPwoKwZDbfZYFMl zA2Q== X-Gm-Message-State: AOAM532P8eFUfv/IUYyukNbmcmcJdZTtKTgucp03TPUMkc/OcupBkQWG 4Fs622KKGnWVkKAI1oHI80MUfOIupz4= X-Google-Smtp-Source: ABdhPJzSV5eAjHoUiE6Tb04AF1J4I8wvc/pfMPqepm8Ru1a3nU6DkeuKalY3PAG2cPf8E1daEETexA== X-Received: by 2002:a7b:cbda:: with SMTP id n26mr25225403wmi.76.1643587148829; Sun, 30 Jan 2022 15:59:08 -0800 (PST) Received: from localhost.localdomain (cpc141996-chfd3-2-0-cust928.12-3.cable.virginm.net. [86.13.91.161]) by smtp.gmail.com with ESMTPSA id 11sm11993663wrb.30.2022.01.30.15.59.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 30 Jan 2022 15:59:08 -0800 (PST) From: Daniel Scally To: linux-media@vger.kernel.org, libcamera-devel@lists.libcamera.org Cc: sakari.ailus@linux.intel.com, laurent.pinchart@ideasonboard.com, hanlinchen@chromium.org, tfiga@chromium.org, hdegoede@redhat.com, kieran.bingham@ideasonboard.com, hpa@redhat.com Subject: [PATCH v2 3/6] media: docs: Add entries documenting ancillary links Date: Sun, 30 Jan 2022 23:58:18 +0000 Message-Id: <20220130235821.48076-4-djrscally@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220130235821.48076-1-djrscally@gmail.com> References: <20220130235821.48076-1-djrscally@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org Add some elements to the uAPI documentation to explain the new link type, their purpose and some aspects of their current implementation. Signed-off-by: Daniel Scally --- Changes since v1: - New patch .../media/mediactl/media-controller-model.rst | 6 ++++++ .../userspace-api/media/mediactl/media-types.rst | 9 ++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/Documentation/userspace-api/media/mediactl/media-controller-model.rst b/Documentation/userspace-api/media/mediactl/media-controller-model.rst index 222cb99debb5..f77cb9d952e5 100644 --- a/Documentation/userspace-api/media/mediactl/media-controller-model.rst +++ b/Documentation/userspace-api/media/mediactl/media-controller-model.rst @@ -33,3 +33,9 @@ are: - An **interface link** is a point-to-point bidirectional control connection between a Linux Kernel interface and an entity. + +- An **ancillary link** is a point-to-point connection describing a physical + relationship between two entities. For example this could represent the + fact that a particular camera sensor and lens controller form a single + physical module, meaning this lens controller drives the lens for this + camera sensor. \ No newline at end of file diff --git a/Documentation/userspace-api/media/mediactl/media-types.rst b/Documentation/userspace-api/media/mediactl/media-types.rst index 0a26397bd01d..d69bae359e5b 100644 --- a/Documentation/userspace-api/media/mediactl/media-types.rst +++ b/Documentation/userspace-api/media/mediactl/media-types.rst @@ -413,7 +413,7 @@ must be set for every pad. * - ``MEDIA_LNK_FL_LINK_TYPE`` - This is a bitmask that defines the type of the link. Currently, - two types of links are supported: + three types of links are supported: .. _MEDIA-LNK-FL-DATA-LINK: @@ -423,3 +423,10 @@ must be set for every pad. ``MEDIA_LNK_FL_INTERFACE_LINK`` if the link is between an interface and an entity + + .. _MEDIA-LNK-FL-ANCILLARY-LINK: + + ``MEDIA_LNK_FL_ANCILLARY_LINK`` if the link is between two + different entities. This at present implies both MEDIA_LNK_FL_ENABLED + and MEDIA_LNK_FL_IMMUTABLE, however applications should not rely on + that being the case in the future. From patchwork Sun Jan 30 23:58:19 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Scally X-Patchwork-Id: 12730376 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 84842C433FE for ; Sun, 30 Jan 2022 23:59:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243863AbiA3X7M (ORCPT ); Sun, 30 Jan 2022 18:59:12 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39054 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241651AbiA3X7L (ORCPT ); Sun, 30 Jan 2022 18:59:11 -0500 Received: from mail-wr1-x42a.google.com (mail-wr1-x42a.google.com [IPv6:2a00:1450:4864:20::42a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0A459C061714 for ; Sun, 30 Jan 2022 15:59:11 -0800 (PST) Received: by mail-wr1-x42a.google.com with SMTP id w11so22061537wra.4 for ; Sun, 30 Jan 2022 15:59:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=OPpoJnU/qyg2/VoeGoW1Rn4aPz6S0A9ibACKGoGZN18=; b=mi2/QUg5gWiGvQqVrMJ9tD3a+99R4h/pf625IaJ5ekxUwfe734jVrYfEvS85V7l82X Ki2ZNyC4CmrYAdOhONydYzPPH/nkEbr7yvZfJrBqWfi9EgYKJ2GcPq9S95q4z2TpH8lD +qvFsW2c5zoy52JHyL3IWnmxVzoKFUWDcsL668OxOy5CtbiRNRhgpuHJs4mF0T1BY9y5 xHnb9JAmFP8TSUD9I5LHLfjlsHDhczP1rVnFdq7iqoLZsFcvRnNVAn4+LK82R12OIKjD 7snvR3fzYVdRcjPD2t4m+eNDVf99bHr/EIL0nv77fY903gPOumGeARe1NQp1ZaT0cZ++ n36g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=OPpoJnU/qyg2/VoeGoW1Rn4aPz6S0A9ibACKGoGZN18=; b=g0npUoI6QYNmgrGGHLhShtUGkk3CKbK7GgJXZtnoV1FSECLVsLcvN9m4fOeJYzZZ7h BAbXjO+8lkpzytuTQAJzc+eosLUvHov755FbxFTwLDueP/wF7boIQUiENYTI64SDys9b FFvAOLHiXfcX8H4LrDnuMnUQ8oqK4hTZ0/wk7MttfJIEEujbYJ007/aNPMMI4RtNiJSI WeJOX6HhjkISWzCkhORaSYKVNxhcTDHfKdT9S66PK8+YjblOGqudc/p7sCUZt8Bfrh0r Oo/xWBySGxbzWZocHA63wBoOB7X8ZMyLwY7c+t+9PeHKgGQv4tf2wxlHRbW7PW2qjN1l ThhA== X-Gm-Message-State: AOAM530HOAENfwbEeLeOnXOD3bg54dqY840u+k3b+Ez/tEe8hQYg7/pr muNXMGmBNWULfrpPaa/N6+xocatI2zw= X-Google-Smtp-Source: ABdhPJw/ZKDFFuQpy2pfkYk48xdzvk7TXgvZRkEm9DSG5fVyY1ZAxYR7N9RhYmUdcddXvCxA23DvNg== X-Received: by 2002:a5d:47cf:: with SMTP id o15mr15151828wrc.577.1643587149642; Sun, 30 Jan 2022 15:59:09 -0800 (PST) Received: from localhost.localdomain (cpc141996-chfd3-2-0-cust928.12-3.cable.virginm.net. [86.13.91.161]) by smtp.gmail.com with ESMTPSA id 11sm11993663wrb.30.2022.01.30.15.59.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 30 Jan 2022 15:59:09 -0800 (PST) From: Daniel Scally To: linux-media@vger.kernel.org, libcamera-devel@lists.libcamera.org Cc: sakari.ailus@linux.intel.com, laurent.pinchart@ideasonboard.com, hanlinchen@chromium.org, tfiga@chromium.org, hdegoede@redhat.com, kieran.bingham@ideasonboard.com, hpa@redhat.com Subject: [PATCH v2 4/6] media: entity: Add link_type_name() helper Date: Sun, 30 Jan 2022 23:58:19 +0000 Message-Id: <20220130235821.48076-5-djrscally@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220130235821.48076-1-djrscally@gmail.com> References: <20220130235821.48076-1-djrscally@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org Now we have three types of media link, printing the right name during debug output is slightly more complicated. Add a helper function to make it easier. Reviewed-by: Laurent Pinchart Signed-off-by: Daniel Scally --- Changes since v1: - renamed function to link_type_name() (Laurent) Changes since the rfc: - new patch drivers/media/mc/mc-entity.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/drivers/media/mc/mc-entity.c b/drivers/media/mc/mc-entity.c index 2a6e16fb0048..29d1285c805a 100644 --- a/drivers/media/mc/mc-entity.c +++ b/drivers/media/mc/mc-entity.c @@ -60,6 +60,20 @@ static inline const char *intf_type(struct media_interface *intf) } }; +static inline const char *link_type_name(struct media_link *link) +{ + switch (link->flags & MEDIA_LNK_FL_LINK_TYPE) { + case MEDIA_LNK_FL_DATA_LINK: + return "data"; + case MEDIA_LNK_FL_INTERFACE_LINK: + return "interface"; + case MEDIA_LNK_FL_ANCILLARY_LINK: + return "ancillary"; + default: + return "unknown"; + } +} + __must_check int __media_entity_enum_init(struct media_entity_enum *ent_enum, int idx_max) { @@ -107,9 +121,7 @@ static void dev_dbg_obj(const char *event_name, struct media_gobj *gobj) dev_dbg(gobj->mdev->dev, "%s id %u: %s link id %u ==> id %u\n", - event_name, media_id(gobj), - media_type(link->gobj0) == MEDIA_GRAPH_PAD ? - "data" : "interface", + event_name, media_id(gobj), link_type_name(link), media_id(link->gobj0), media_id(link->gobj1)); break; From patchwork Sun Jan 30 23:58:20 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Scally X-Patchwork-Id: 12730377 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6C62FC433EF for ; Sun, 30 Jan 2022 23:59:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243874AbiA3X7N (ORCPT ); Sun, 30 Jan 2022 18:59:13 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39058 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243865AbiA3X7M (ORCPT ); Sun, 30 Jan 2022 18:59:12 -0500 Received: from mail-wm1-x32c.google.com (mail-wm1-x32c.google.com [IPv6:2a00:1450:4864:20::32c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E761EC061714 for ; Sun, 30 Jan 2022 15:59:11 -0800 (PST) Received: by mail-wm1-x32c.google.com with SMTP id j5-20020a05600c1c0500b0034d2e956aadso8190626wms.4 for ; Sun, 30 Jan 2022 15:59:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=/aoh8o1GHLWarjipXS3EzkDQkIHXyhnCnloR5RFP+40=; b=kvI+t8u3jyndZQNunoe4nqv47WHuRbg4YPSv6Odo6OPiEv0im85w6vzCQGWxAkcvz7 fYxBerJdUuzJmgl+KiaNOtysT+v7v8vvKp1sjViqAyXvlJa9bqVw/HRJfKtVeOPciuF9 eFx5UsvDTw/Y8VXf5tp5DX2tFW+AfnG2vySSGDv9Woi9A83ZmFrBaT270fACqTkrXQrG fYdOf9a41mF8a5X8tIJhaFbtG6zwFMW73pX6czKS4jY6Q6sAgHUBRu498nJWPuwlk5LM qiqOK7HjmKOyDWDEGrgDLTH1UW4sWKfb23C8kagWJGJFfSoTTjoBJOLSqFByP4tLVx/f Exwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=/aoh8o1GHLWarjipXS3EzkDQkIHXyhnCnloR5RFP+40=; b=wZjqRv2/rxh96rpvZZbghuSDZvbd5UC3nPb4Eu8ZNDzk8dulT6CwQmm9AN+ssXSZ8O JSbRmmHaREibkC3KLcij7Mo7Vc/NAGB/+ZdBnUEzlTFpyJmB/z2mH7EykWgKxlzX6UYj dfqrVwX1UxilNsSZ8qKCe601ArtfQGIf2i1LZS/vEFBjeGu4jwpgt4YJRlXmRR55Pacc 4EA3h1fpAgj7ev0eSQ3v5o5qRJrzZ3bi9I+pKmUrp5dFg0wYgJCBXooglB4r6sXy/7Ee 42oDmBm29kteOBtDfzzK+F/JEvwNLk5eB+/oyWLzJHHEd4678hry3xNT614j6gZrS/Tc yzNw== X-Gm-Message-State: AOAM533ex2zULJohsp+SdF0F/pzFr1wfvhrR6xpgHgIqE34Pn74M0pei YEXofY+lCg/B92bPFjfLkKjcQbdX6G4= X-Google-Smtp-Source: ABdhPJwB2XKV5p1z3Kvb7mNjKR3Vd7lXlpF4KogSPjUFaFQ8nYHq8v9r65qUazoAf/YqbaAlX+nXUA== X-Received: by 2002:a05:600c:2053:: with SMTP id p19mr24905342wmg.29.1643587150560; Sun, 30 Jan 2022 15:59:10 -0800 (PST) Received: from localhost.localdomain (cpc141996-chfd3-2-0-cust928.12-3.cable.virginm.net. [86.13.91.161]) by smtp.gmail.com with ESMTPSA id 11sm11993663wrb.30.2022.01.30.15.59.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 30 Jan 2022 15:59:10 -0800 (PST) From: Daniel Scally To: linux-media@vger.kernel.org, libcamera-devel@lists.libcamera.org Cc: sakari.ailus@linux.intel.com, laurent.pinchart@ideasonboard.com, hanlinchen@chromium.org, tfiga@chromium.org, hdegoede@redhat.com, kieran.bingham@ideasonboard.com, hpa@redhat.com Subject: [PATCH v2 5/6] media: entity: Add support for ancillary links Date: Sun, 30 Jan 2022 23:58:20 +0000 Message-Id: <20220130235821.48076-6-djrscally@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220130235821.48076-1-djrscally@gmail.com> References: <20220130235821.48076-1-djrscally@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org Add functions to create ancillary links, so that they don't need to be manually created by users. Signed-off-by: Daniel Scally Reported-by: kernel test robot Reviewed-by: Laurent Pinchart --- Changes since v1: - Hardcoded MEDIA_LINK_FL_IMMUTABLE and MEDIA_LINK_FL_ENABLED (Laurent) Changes since the rfc: - (Laurent) Set gobj0 and gobj1 directly instead of the other union members - (Laurent) Added MEDIA_LNK_FL_IMMUTABLE to the kerneldoc for the new create function drivers/media/mc/mc-entity.c | 22 ++++++++++++++++++++++ include/media/media-entity.h | 21 +++++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/drivers/media/mc/mc-entity.c b/drivers/media/mc/mc-entity.c index 29d1285c805a..7bf2c73a3886 100644 --- a/drivers/media/mc/mc-entity.c +++ b/drivers/media/mc/mc-entity.c @@ -1050,3 +1050,25 @@ void media_remove_intf_links(struct media_interface *intf) mutex_unlock(&mdev->graph_mutex); } EXPORT_SYMBOL_GPL(media_remove_intf_links); + +struct media_link *media_create_ancillary_link(struct media_entity *primary, + struct media_entity *ancillary) +{ + struct media_link *link; + + link = media_add_link(&primary->links); + if (!link) + return ERR_PTR(-ENOMEM); + + link->gobj0 = &primary->graph_obj; + link->gobj1 = &ancillary->graph_obj; + link->flags = MEDIA_LNK_FL_IMMUTABLE | MEDIA_LNK_FL_ENABLED | + MEDIA_LNK_FL_ANCILLARY_LINK; + + /* Initialize graph object embedded in the new link */ + media_gobj_create(primary->graph_obj.mdev, MEDIA_GRAPH_LINK, + &link->graph_obj); + + return link; +} +EXPORT_SYMBOL_GPL(media_create_ancillary_link); diff --git a/include/media/media-entity.h b/include/media/media-entity.h index fea489f03d57..afeda41ece4c 100644 --- a/include/media/media-entity.h +++ b/include/media/media-entity.h @@ -1104,6 +1104,27 @@ void media_remove_intf_links(struct media_interface *intf); * it will issue a call to @operation\(@entity, @args\). */ +/** + * media_create_ancillary_link() - create an ancillary link between two + * instances of &media_entity + * + * @primary: pointer to the primary &media_entity + * @ancillary: pointer to the ancillary &media_entity + * + * Create an ancillary link between two entities, indicating that they + * represent two connected pieces of hardware that form a single logical unit. + * A typical example is a camera lens being linked to the sensor that it is + * supporting. + * + * The function sets both MEDIA_LNK_FL_ENABLED and MEDIA_LNK_FL_IMMUTABLE for + * the new link. This behaviour may be subject to change in the future, so + * userspace applications using ancillary links should ensure that ancillary + * links are enabled when in use. + */ +struct media_link * +media_create_ancillary_link(struct media_entity *primary, + struct media_entity *ancillary); + #define media_entity_call(entity, operation, args...) \ (((entity)->ops && (entity)->ops->operation) ? \ (entity)->ops->operation((entity) , ##args) : -ENOIOCTLCMD) From patchwork Sun Jan 30 23:58:21 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Scally X-Patchwork-Id: 12730378 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id F3A8DC433FE for ; Sun, 30 Jan 2022 23:59:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S244077AbiA3X7O (ORCPT ); Sun, 30 Jan 2022 18:59:14 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39064 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241651AbiA3X7N (ORCPT ); Sun, 30 Jan 2022 18:59:13 -0500 Received: from mail-wr1-x429.google.com (mail-wr1-x429.google.com [IPv6:2a00:1450:4864:20::429]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C6956C06173B for ; Sun, 30 Jan 2022 15:59:12 -0800 (PST) Received: by mail-wr1-x429.google.com with SMTP id u15so22090564wrt.3 for ; Sun, 30 Jan 2022 15:59:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=TsRQ3SVohkOtQPdF+FWJeJ2VqSG/vDGg0tiEtAOREIM=; b=aohO9Go1mMW0DmLUPrYqXyicUFMJyZx4iDGeZkMMH8GF1eUI891taRf+dpuYnTxhEX ZFRrGidCc9f73wRKfXxEhsjQS0qStKvs17lQwTHDBiEy8fI3K8PuS2qSFmgyw/sRJGdC Zm2rx+Kj2uhaOtV03ubWuiu3LVs2QKTchhGZ1bXO8WD+VkaEgBOCpvjdqghPrenpEysp KUMhdmDBMZRvjCv8bwRrf+M2A5eU0uJouxa3FlY72PHTjKKz6ElsQ5GQ9Ka6aeOuKMB5 HUtsfgsFtsMtQfpgty6LXJLLUoOBhINN7GHBNpRAOidPljzo6NT9SknApF3l9J6wTqDn c+KA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=TsRQ3SVohkOtQPdF+FWJeJ2VqSG/vDGg0tiEtAOREIM=; b=WAE8nGLWMJEhzhm/D27Cs5N05PzU6+iZ/upwfDr/N2Ky2CfqXBfzhe9xPKuEdK+A9/ 5X+j71UMlA8y3iCHh6NEztDdx3qTcG1czx9ngMrMMNA52tyYkHv0XvA79FusAmgZ9OWa D88wkR+CYH7y5eAjZBiW2D5toUEBqf4iSnsjZ/4aDUZumPH8+KFp5sMEUchLAPvJTDR2 PSuBtmu1Sdy5G8yLBjvIiPtVQk9I1q384uQ0NydVay7GzbJg1FdPOBASlqrEsexHZcbC nBNFw4Ag6eTzisQBbA+cUZhoXBq/oYACjoI8NyjoMBRtOhfH72IYac4DoYbvf7+a8fOK Yq6Q== X-Gm-Message-State: AOAM532VPY6htI//BOsDuPKR8uxdJcZQbhcQq5yjLO5BlvVEslinK7gS K0dPmhY2ItSCwfznhB9ntjNyX1ASnqM= X-Google-Smtp-Source: ABdhPJwo/8lAg1VcbfXGIKrXktZ/0c3eyIE8YP3e9uMMRaMJeJw2RBTuNYgQGzIvJ8PpwWybXlIm4w== X-Received: by 2002:a5d:4889:: with SMTP id g9mr14979816wrq.400.1643587151468; Sun, 30 Jan 2022 15:59:11 -0800 (PST) Received: from localhost.localdomain (cpc141996-chfd3-2-0-cust928.12-3.cable.virginm.net. [86.13.91.161]) by smtp.gmail.com with ESMTPSA id 11sm11993663wrb.30.2022.01.30.15.59.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 30 Jan 2022 15:59:11 -0800 (PST) From: Daniel Scally To: linux-media@vger.kernel.org, libcamera-devel@lists.libcamera.org Cc: sakari.ailus@linux.intel.com, laurent.pinchart@ideasonboard.com, hanlinchen@chromium.org, tfiga@chromium.org, hdegoede@redhat.com, kieran.bingham@ideasonboard.com, hpa@redhat.com Subject: [PATCH v2 6/6] media: v4l2-async: Create links during v4l2_async_match_notify() Date: Sun, 30 Jan 2022 23:58:21 +0000 Message-Id: <20220130235821.48076-7-djrscally@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220130235821.48076-1-djrscally@gmail.com> References: <20220130235821.48076-1-djrscally@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org Upon an async fwnode match, there's some typical behaviour that the notifier and matching subdev will want to do. For example, a notifier representing a sensor matching to an async subdev representing its VCM will want to create an ancillary link to expose that relationship to userspace. To avoid lots of code in individual drivers, try to build these links within v4l2 core. Signed-off-by: Daniel Scally --- Changes since v1: - Added #ifdef guards for CONFIG_MEDIA_CONTROLLER - Some spelling and nomenclature cleanup (Laurent) Changes since the rfc: - None drivers/media/v4l2-core/v4l2-async.c | 56 ++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/drivers/media/v4l2-core/v4l2-async.c b/drivers/media/v4l2-core/v4l2-async.c index 0404267f1ae4..8980534e755e 100644 --- a/drivers/media/v4l2-core/v4l2-async.c +++ b/drivers/media/v4l2-core/v4l2-async.c @@ -275,6 +275,50 @@ v4l2_async_nf_try_complete(struct v4l2_async_notifier *notifier) static int v4l2_async_nf_try_all_subdevs(struct v4l2_async_notifier *notifier); +static int +__v4l2_async_create_ancillary_link(struct v4l2_async_notifier *notifier, + struct v4l2_subdev *sd) +{ + struct media_link *link = NULL; + +#if IS_ENABLED(CONFIG_MEDIA_CONTROLLER) + + if (sd->entity.function != MEDIA_ENT_F_LENS && + sd->entity.function != MEDIA_ENT_F_FLASH) + return -EINVAL; + + link = media_create_ancillary_link(¬ifier->sd->entity, &sd->entity); + +#endif + + return IS_ERR(link) ? PTR_ERR(link) : 0; +} + +/* + * Create links on behalf of the notifier and subdev, where it's obvious what + * should be done. At the moment, we only support cases where the notifier + * is a camera sensor and the subdev is a lens controller. + * + * TODO: Create data links if the notifier's function is + * MEDIA_ENT_F_VID_IF_BRIDGE and the subdev's is MEDIA_ENT_F_CAM_SENSOR. + */ +static int v4l2_async_try_create_links(struct v4l2_async_notifier *notifier, + struct v4l2_subdev *sd) +{ +#if IS_ENABLED(CONFIG_MEDIA_CONTROLLER) + + if (!notifier->sd) + return 0; + + switch (notifier->sd->entity.function) { + case MEDIA_ENT_F_CAM_SENSOR: + return __v4l2_async_create_ancillary_link(notifier, sd); + } + +#endif + return 0; +} + static int v4l2_async_match_notify(struct v4l2_async_notifier *notifier, struct v4l2_device *v4l2_dev, struct v4l2_subdev *sd, @@ -293,6 +337,18 @@ static int v4l2_async_match_notify(struct v4l2_async_notifier *notifier, return ret; } + /* + * Depending of the function of the entities involved, we may want to + * create links between them (for example between a sensor and its lens + * or between a sensor's source pad and the connected device's sink + * pad). + */ + ret = v4l2_async_try_create_links(notifier, sd); + if (ret) { + v4l2_device_unregister_subdev(sd); + return ret; + } + /* Remove from the waiting list */ list_del(&asd->list); sd->asd = asd;