[{"id":3478,"web_url":"https://patchwork.libcamera.org/comment/3478/","msgid":"<20200117154322.GA1074550@oden.dyn.berto.se>","date":"2020-01-17T15:43:22","subject":"Re: [libcamera-devel] [PATCH v2 1/2] libcamera: pipeline: rkisp1:\n\tsync topology with upstream driver","submitter":{"id":5,"url":"https://patchwork.libcamera.org/api/people/5/","name":"Niklas Söderlund","email":"niklas.soderlund@ragnatech.se"},"content":"Hi Helen,\n\nThanks for your work.\n\nOn 2020-01-17 11:58:01 -0300, Helen Koike wrote:\n> rkisp1 kernel driver was merged upstream with minor changes in the\n> topology from the original driver libcamera based it's first support to\n> rkisp1.\n> \n> Adapt libcamera pipeline to work with upstream driver.\n> \n> * Remove subdevice dphy from the pipeline.\n> * Add resizer in the pipeline.\n> * Fix links.\n> * Update entity names.\n> \n> Signed-off-by: Helen Koike <helen.koike@collabora.com>\n\nReviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n\n> \n> ---\n> \n> Changes in v2:\n> * Update rkisp1-capture.sh in a different patch\n> * Fix typos in commit message.\n> * Remove \"receiver\" and \"CSI-2\" reference at:\n> \n>                         << \" link from sensor '\"\n>                         << link->source()->entity()->name()\n> -                       << \"' to CSI-2 receiver\";\n> +                       << \"' to ISP\";\n> ...\n> \n> -        * Enumerate all sensors connected to the ISP receiver and create one\n> +        * Enumerate all sensors connected to the ISP and create one\n> ---\n>  src/libcamera/pipeline/rkisp1/rkisp1.cpp | 65 +++++++++++++-----------\n>  1 file changed, 36 insertions(+), 29 deletions(-)\n> \n> diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> index 389a99c..e25b215 100644\n> --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> @@ -207,8 +207,8 @@ private:\n>  \tint freeBuffers(Camera *camera);\n>  \n>  \tMediaDevice *media_;\n> -\tV4L2Subdevice *dphy_;\n>  \tV4L2Subdevice *isp_;\n> +\tV4L2Subdevice *resizer_;\n>  \tV4L2VideoDevice *video_;\n>  \tV4L2VideoDevice *param_;\n>  \tV4L2VideoDevice *stat_;\n> @@ -513,7 +513,7 @@ CameraConfiguration::Status RkISP1CameraConfiguration::validate()\n>  }\n>  \n>  PipelineHandlerRkISP1::PipelineHandlerRkISP1(CameraManager *manager)\n> -\t: PipelineHandler(manager), dphy_(nullptr), isp_(nullptr),\n> +\t: PipelineHandler(manager), isp_(nullptr), resizer_(nullptr),\n>  \t  video_(nullptr), param_(nullptr), stat_(nullptr)\n>  {\n>  }\n> @@ -523,8 +523,8 @@ PipelineHandlerRkISP1::~PipelineHandlerRkISP1()\n>  \tdelete param_;\n>  \tdelete stat_;\n>  \tdelete video_;\n> +\tdelete resizer_;\n>  \tdelete isp_;\n> -\tdelete dphy_;\n>  }\n>  \n>  /* -----------------------------------------------------------------------------\n> @@ -564,7 +564,7 @@ int PipelineHandlerRkISP1::configure(Camera *camera, CameraConfiguration *c)\n>  \t * Configure the sensor links: enable the link corresponding to this\n>  \t * camera and disable all the other sensor links.\n>  \t */\n> -\tconst MediaPad *pad = dphy_->entity()->getPadByIndex(0);\n> +\tconst MediaPad *pad = isp_->entity()->getPadByIndex(0);\n>  \n>  \tfor (MediaLink *link : pad->links()) {\n>  \t\tbool enable = link->source()->entity() == sensor->entity();\n> @@ -576,7 +576,7 @@ int PipelineHandlerRkISP1::configure(Camera *camera, CameraConfiguration *c)\n>  \t\t\t<< (enable ? \"Enabling\" : \"Disabling\")\n>  \t\t\t<< \" link from sensor '\"\n>  \t\t\t<< link->source()->entity()->name()\n> -\t\t\t<< \"' to CSI-2 receiver\";\n> +\t\t\t<< \"' to ISP\";\n>  \n>  \t\tret = link->setEnabled(enable);\n>  \t\tif (ret < 0)\n> @@ -596,16 +596,6 @@ int PipelineHandlerRkISP1::configure(Camera *camera, CameraConfiguration *c)\n>  \n>  \tLOG(RkISP1, Debug) << \"Sensor configured with \" << format.toString();\n>  \n> -\tret = dphy_->setFormat(0, &format);\n> -\tif (ret < 0)\n> -\t\treturn ret;\n> -\n> -\tLOG(RkISP1, Debug) << \"Configuring ISP input pad with \" << format.toString();\n> -\n> -\tret = dphy_->getFormat(1, &format);\n> -\tif (ret < 0)\n> -\t\treturn ret;\n> -\n>  \tret = isp_->setFormat(0, &format);\n>  \tif (ret < 0)\n>  \t\treturn ret;\n> @@ -622,6 +612,22 @@ int PipelineHandlerRkISP1::configure(Camera *camera, CameraConfiguration *c)\n>  \n>  \tLOG(RkISP1, Debug) << \"ISP output pad configured with \" << format.toString();\n>  \n> +\tret = resizer_->setFormat(0, &format);\n> +\tif (ret < 0)\n> +\t\treturn ret;\n> +\n> +\tLOG(RkISP1, Debug) << \"Resizer input pad configured with \" << format.toString();\n> +\n> +\tformat.size = cfg.size;\n> +\n> +\tLOG(RkISP1, Debug) << \"Configuring resizer output pad with \" << format.toString();\n> +\n> +\tret = resizer_->setFormat(1, &format);\n> +\tif (ret < 0)\n> +\t\treturn ret;\n> +\n> +\tLOG(RkISP1, Debug) << \"Resizer output pad configured with \" << format.toString();\n> +\n>  \tV4L2DeviceFormat outputFormat = {};\n>  \toutputFormat.fourcc = video_->toV4L2Fourcc(cfg.pixelFormat);\n>  \toutputFormat.size = cfg.size;\n> @@ -868,7 +874,7 @@ int PipelineHandlerRkISP1::initLinks()\n>  \tif (ret < 0)\n>  \t\treturn ret;\n>  \n> -\tlink = media_->link(\"rockchip-sy-mipi-dphy\", 1, \"rkisp1-isp-subdev\", 0);\n> +\tlink = media_->link(\"rkisp1_isp\", 2, \"rkisp1_resizer_mainpath\", 0);\n>  \tif (!link)\n>  \t\treturn -ENODEV;\n>  \n> @@ -876,7 +882,7 @@ int PipelineHandlerRkISP1::initLinks()\n>  \tif (ret < 0)\n>  \t\treturn ret;\n>  \n> -\tlink = media_->link(\"rkisp1-isp-subdev\", 2, \"rkisp1_mainpath\", 0);\n> +\tlink = media_->link(\"rkisp1_resizer_mainpath\", 1, \"rkisp1_mainpath\", 0);\n>  \tif (!link)\n>  \t\treturn -ENODEV;\n>  \n> @@ -923,24 +929,25 @@ bool PipelineHandlerRkISP1::match(DeviceEnumerator *enumerator)\n>  \tconst MediaPad *pad;\n>  \n>  \tDeviceMatch dm(\"rkisp1\");\n> -\tdm.add(\"rkisp1-isp-subdev\");\n> +\tdm.add(\"rkisp1_isp\");\n> +\tdm.add(\"rkisp1_resizer_selfpath\");\n> +\tdm.add(\"rkisp1_resizer_mainpath\");\n>  \tdm.add(\"rkisp1_selfpath\");\n>  \tdm.add(\"rkisp1_mainpath\");\n> -\tdm.add(\"rkisp1-statistics\");\n> -\tdm.add(\"rkisp1-input-params\");\n> -\tdm.add(\"rockchip-sy-mipi-dphy\");\n> +\tdm.add(\"rkisp1_stats\");\n> +\tdm.add(\"rkisp1_params\");\n>  \n>  \tmedia_ = acquireMediaDevice(enumerator, dm);\n>  \tif (!media_)\n>  \t\treturn false;\n>  \n>  \t/* Create the V4L2 subdevices we will need. */\n> -\tdphy_ = V4L2Subdevice::fromEntityName(media_, \"rockchip-sy-mipi-dphy\");\n> -\tif (dphy_->open() < 0)\n> +\tisp_ = V4L2Subdevice::fromEntityName(media_, \"rkisp1_isp\");\n> +\tif (isp_->open() < 0)\n>  \t\treturn false;\n>  \n> -\tisp_ = V4L2Subdevice::fromEntityName(media_, \"rkisp1-isp-subdev\");\n> -\tif (isp_->open() < 0)\n> +\tresizer_ = V4L2Subdevice::fromEntityName(media_, \"rkisp1_resizer_mainpath\");\n> +\tif (resizer_->open() < 0)\n>  \t\treturn false;\n>  \n>  \t/* Locate and open the capture video node. */\n> @@ -948,11 +955,11 @@ bool PipelineHandlerRkISP1::match(DeviceEnumerator *enumerator)\n>  \tif (video_->open() < 0)\n>  \t\treturn false;\n>  \n> -\tstat_ = V4L2VideoDevice::fromEntityName(media_, \"rkisp1-statistics\");\n> +\tstat_ = V4L2VideoDevice::fromEntityName(media_, \"rkisp1_stats\");\n>  \tif (stat_->open() < 0)\n>  \t\treturn false;\n>  \n> -\tparam_ = V4L2VideoDevice::fromEntityName(media_, \"rkisp1-input-params\");\n> +\tparam_ = V4L2VideoDevice::fromEntityName(media_, \"rkisp1_params\");\n>  \tif (param_->open() < 0)\n>  \t\treturn false;\n>  \n> @@ -967,10 +974,10 @@ bool PipelineHandlerRkISP1::match(DeviceEnumerator *enumerator)\n>  \t}\n>  \n>  \t/*\n> -\t * Enumerate all sensors connected to the CSI-2 receiver and create one\n> +\t * Enumerate all sensors connected to the ISP and create one\n>  \t * camera instance for each of them.\n>  \t */\n> -\tpad = dphy_->entity()->getPadByIndex(0);\n> +\tpad = isp_->entity()->getPadByIndex(0);\n>  \tif (!pad)\n>  \t\treturn false;\n>  \n> -- \n> 2.24.0\n>","headers":{"Return-Path":"<niklas.soderlund@ragnatech.se>","Received":["from mail-lf1-x143.google.com (mail-lf1-x143.google.com\n\t[IPv6:2a00:1450:4864:20::143])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 78AD760456\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 17 Jan 2020 16:43:24 +0100 (CET)","by mail-lf1-x143.google.com with SMTP id m30so18643926lfp.8\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 17 Jan 2020 07:43:24 -0800 (PST)","from localhost (h-93-159.A463.priv.bahnhof.se. [46.59.93.159])\n\tby smtp.gmail.com with ESMTPSA id\n\tr9sm14235097lfc.72.2020.01.17.07.43.22\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tFri, 17 Jan 2020 07:43:23 -0800 (PST)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=ragnatech-se.20150623.gappssmtp.com; s=20150623;\n\th=date:from:to:cc:subject:message-id:references:mime-version\n\t:content-disposition:content-transfer-encoding:in-reply-to;\n\tbh=NLOxNsb0f2pRYcmEMDLOIDQYRZqLO3uBGRnqe8t//iI=;\n\tb=LMu9jlPNAnvKtqBnDqyPuq6VZBpoeUEGB+UgEP3uBqLtKBJgGXh1+Ptql9QMICUCMH\n\tc0/FB+9tRTMHJJXh4jioV1ZvSKGVVjlPmfRqLek+C+YO7+JLj6j2j71JTjZMDCjBMZBq\n\tbyRcUWxiLNBndQp+581C/grcCIqqNq0/Rb+OexJlgxbIY86T8m2xlv55XyuE5Nw2XXBi\n\tSnYjiimQT0jF8n7yWvyDiPcEHnhLqc42s4UpkcoJq6bfD+NQ7KkArCpRGNFDebHXmKq+\n\t59lyDUI7bUupWAczeAEWx6kwgygNovFDESPcB4CPtjOHUDn1gJyN7laN28U9awdgZkvW\n\tXyFw==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:date:from:to:cc:subject:message-id:references\n\t:mime-version:content-disposition:content-transfer-encoding\n\t:in-reply-to;\n\tbh=NLOxNsb0f2pRYcmEMDLOIDQYRZqLO3uBGRnqe8t//iI=;\n\tb=bWhb/Vnc7w0kZtWA06OJbENMUjUotYN98J6SjElHZjY4BDjuDYcoAHHo4cnuSvNbah\n\tXiO/S9h6yjHwUnbL9KwwKDPQyJO/6oU3bRerHa6j/JncZjeoDS4s+4OLp2r2MYiGzGLP\n\tX4/CrhHQrhNYkbk/WTPRHgKkmOPWCCcwZmKQSNDnrnzYbtluvgixrzfC+tHv3+OOf/eP\n\tQ3X/4QmWQvpBZhbCK55O6ztfSHzrvPqgHJTowJNHkL/kABsDzpRMs165g7dQ69ZAt6wy\n\tx2HAozbjNBmOCNvYP/hnF6CkLq3jGkQWkzOss1KaPaxldjMRIpK8FbeUvYpmOoY3JZMJ\n\tlDew==","X-Gm-Message-State":"APjAAAUW2/HptU9TSEdPiV4JYEVbkKxiEcbqOXHljQXoPix7vFoVFoYX\n\tyAeEN0BdHQFUeKcQfXdrcneEhg==","X-Google-Smtp-Source":"APXvYqxO0CD1bPYOdWr10D3nLyUVhfG/IR+su+cJabliDwNkq0aJk+wRQgl8ylscGIXpDC3GIJEVTw==","X-Received":"by 2002:ac2:4909:: with SMTP id n9mr5791241lfi.21.1579275803640; \n\tFri, 17 Jan 2020 07:43:23 -0800 (PST)","Date":"Fri, 17 Jan 2020 16:43:22 +0100","From":"Niklas =?iso-8859-1?q?S=F6derlund?= <niklas.soderlund@ragnatech.se>","To":"Helen Koike <helen.koike@collabora.com>","Cc":"libcamera-devel@lists.libcamera.org, laurent.pinchart@ideasonboard.com, \n\tkernel@collabora.com, heiko@sntech.de, tfiga@chromium.org,\n\tjoacim.zetterling@gmail.com","Message-ID":"<20200117154322.GA1074550@oden.dyn.berto.se>","References":"<20200117145802.3322874-1-helen.koike@collabora.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=iso-8859-1","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<20200117145802.3322874-1-helen.koike@collabora.com>","Subject":"Re: [libcamera-devel] [PATCH v2 1/2] libcamera: pipeline: rkisp1:\n\tsync topology with upstream driver","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","X-List-Received-Date":"Fri, 17 Jan 2020 15:43:24 -0000"}}]