[{"id":3464,"web_url":"https://patchwork.libcamera.org/comment/3464/","msgid":"<20200116224121.GA16210@pendragon.ideasonboard.com>","date":"2020-01-16T22:41:21","subject":"Re: [libcamera-devel] [PATCH] libcamera: pipeline: rkisp1: sync\n\ttopology with upstream driver","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Helen,\n\nThank you for the patch.\n\nOn Wed, Jan 15, 2020 at 09:45:53PM -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 libramera 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> ---\n> \n> Hi,\n> \n> I'm not sure if it is better to wait the driver to get out of staging,\n> but in any case I'm sending it here in case others want to use it.\n\nI don't think we should wait for the driver to get out of staging. As\nfar as I'm concerned, a driver in staging is better than an out-of-tree\ndriver. We will switch to this for Rockchip ISP development as soon as\nwe can validate it. We're working on it.\n\n> It is also available at:\n> https://gitlab.collabora.com/koike/libcamera\n> \n>  src/libcamera/pipeline/rkisp1/rkisp1.cpp | 63 +++++++++++++-----------\n>  utils/rkisp1/rkisp1-capture.sh           | 16 +++---\n>  2 files changed, 43 insertions(+), 36 deletions(-)\n> \n> diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> index 389a99c..279bbb6 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> @@ -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 receiver 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> diff --git a/utils/rkisp1/rkisp1-capture.sh b/utils/rkisp1/rkisp1-capture.sh\n> index cffe9fe..4d09f5d 100755\n> --- a/utils/rkisp1/rkisp1-capture.sh\n> +++ b/utils/rkisp1/rkisp1-capture.sh\n> @@ -68,14 +68,14 @@ configure_pipeline() {\n>  \n>  \t$mediactl -r\n>  \n> -\t$mediactl -l \"'$sensor':0 -> 'rockchip-sy-mipi-dphy':0 [1]\"\n> -\t$mediactl -l \"'rockchip-sy-mipi-dphy':1 -> 'rkisp1-isp-subdev':0 [1]\"\n> -\t$mediactl -l \"'rkisp1-isp-subdev':2 -> 'rkisp1_mainpath':0 [1]\"\n> +\t$mediactl -l \"'$sensor':0 -> 'rkisp1_isp':0 [1]\"\n> +\t$mediactl -l \"'rkisp1_isp':2 -> 'rkisp1_resizer_mainpath':0 [1]\"\n>  \n>  \t$mediactl -V \"\\\"$sensor\\\":0 [$format]\"\n> -\t$mediactl -V \"'rockchip-sy-mipi-dphy':1 [$format]\"\n> -\t$mediactl -V \"'rkisp1-isp-subdev':0 [$format crop:(0,0)/$sensor_size]\"\n> -\t$mediactl -V \"'rkisp1-isp-subdev':2 [fmt:$capture_mbus_code/$capture_size crop:(0,0)/$capture_size]\"\n> +\t$mediactl -V \"'rkisp1_isp':0 [$format crop:(0,0)/$sensor_size]\"\n> +\t$mediactl -V \"'rkisp1_isp':2 [fmt:$capture_mbus_code/$sensor_size crop:(0,0)/$sensor_size]\"\n> +\t$mediactl -V \"'rkisp1_resizer_mainpath':0 [fmt:$capture_mbus_code/$sensor_size crop:(0,0)/$sensor_size]\"\n> +\t$mediactl -V \"'rkisp1_resizer_mainpath':1 [fmt:$capture_mbus_code/$capture_size]\"\n>  }\n>  \n>  # Capture frames\n> @@ -161,8 +161,8 @@ fi\n>  \n>  sensor_name=$1\n>  \n> -modprobe mipi_dphy_sy\n> -modprobe video_rkisp1\n> +modprobe phy_rockchip_dphy_rx0\n> +modprobe rockchip_isp1\n>  \n>  sensor=$(find_sensor $sensor_name) || exit\n>  mdev=$(find_media_device rkisp1) || exit","headers":{"Return-Path":"<laurent.pinchart@ideasonboard.com>","Received":["from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 1714260705\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 16 Jan 2020 23:41:36 +0100 (CET)","from pendragon.ideasonboard.com (81-175-216-236.bb.dnainternet.fi\n\t[81.175.216.236])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 7551F2D2;\n\tThu, 16 Jan 2020 23:41:35 +0100 (CET)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1579214495;\n\tbh=a03SWkFgso6PmyzSHr5C08vyv1pSiG205NiSIPiYeeM=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=gp9035yp1YUSaXdvKQf8oxBLvOULMzQElUnTPxz77IbaneZkSV3O/fFwfAb5swLO+\n\tE8gWbc9g+mPiip/sS2dCqmM3ui4b/yQhhv+77qJjbN26j90M77rhjNYEleaIucZbyc\n\tkLmIt/zr+Tfl6nu4GQHPvctBi+KGF3nXFpLysf5k=","Date":"Fri, 17 Jan 2020 00:41:21 +0200","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Helen Koike <helen.koike@collabora.com>","Cc":"libcamera-devel@lists.libcamera.org, kernel@collabora.com,\n\theiko@sntech.de, tfiga@chromium.org","Message-ID":"<20200116224121.GA16210@pendragon.ideasonboard.com>","References":"<20200116004553.2885674-1-helen.koike@collabora.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20200116004553.2885674-1-helen.koike@collabora.com>","User-Agent":"Mutt/1.10.1 (2018-07-13)","Subject":"Re: [libcamera-devel] [PATCH] libcamera: pipeline: rkisp1: sync\n\ttopology 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":"Thu, 16 Jan 2020 22:41:36 -0000"}},{"id":3468,"web_url":"https://patchwork.libcamera.org/comment/3468/","msgid":"<20200117002739.GG987380@oden.dyn.berto.se>","date":"2020-01-17T00:27:39","subject":"Re: [libcamera-devel] [PATCH] libcamera: pipeline: rkisp1: sync\n\ttopology 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-15 21:45:53 -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 libramera 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\nI tested this change with the driver merged in the media-tree and it \nworks as expected, great work! I have some small nits bellow but other \nthen that I think it's ready to go.\n\nWhen testing this I was unable to locate any up-to-date patches updating \ndevicetree files to the state of the driver in staging and had to hack \nsomething of my own to get it working. Is there patches somewhere? Is  \ntheir a plan to upstream the DT changes for Scarlet ?\n\n> ---\n> \n> Hi,\n> \n> I'm not sure if it is better to wait the driver to get out of staging,\n> but in any case I'm sending it here in case others want to use it.\n> \n> It is also available at:\n> https://gitlab.collabora.com/koike/libcamera\n> \n> Thanks\n> Helen\n> \n>  src/libcamera/pipeline/rkisp1/rkisp1.cpp | 63 +++++++++++++-----------\n>  utils/rkisp1/rkisp1-capture.sh           | 16 +++---\n>  2 files changed, 43 insertions(+), 36 deletions(-)\n> \n> diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> index 389a99c..279bbb6 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> @@ -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 receiver and create one\n\nI would s/receiver//\n\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> diff --git a/utils/rkisp1/rkisp1-capture.sh b/utils/rkisp1/rkisp1-capture.sh\n> index cffe9fe..4d09f5d 100755\n> --- a/utils/rkisp1/rkisp1-capture.sh\n> +++ b/utils/rkisp1/rkisp1-capture.sh\n> @@ -68,14 +68,14 @@ configure_pipeline() {\n\nI would split the changes to the capture script in it's own patch.\n\n>  \n>  \t$mediactl -r\n>  \n> -\t$mediactl -l \"'$sensor':0 -> 'rockchip-sy-mipi-dphy':0 [1]\"\n> -\t$mediactl -l \"'rockchip-sy-mipi-dphy':1 -> 'rkisp1-isp-subdev':0 [1]\"\n> -\t$mediactl -l \"'rkisp1-isp-subdev':2 -> 'rkisp1_mainpath':0 [1]\"\n> +\t$mediactl -l \"'$sensor':0 -> 'rkisp1_isp':0 [1]\"\n> +\t$mediactl -l \"'rkisp1_isp':2 -> 'rkisp1_resizer_mainpath':0 [1]\"\n>  \n>  \t$mediactl -V \"\\\"$sensor\\\":0 [$format]\"\n> -\t$mediactl -V \"'rockchip-sy-mipi-dphy':1 [$format]\"\n> -\t$mediactl -V \"'rkisp1-isp-subdev':0 [$format crop:(0,0)/$sensor_size]\"\n> -\t$mediactl -V \"'rkisp1-isp-subdev':2 [fmt:$capture_mbus_code/$capture_size crop:(0,0)/$capture_size]\"\n> +\t$mediactl -V \"'rkisp1_isp':0 [$format crop:(0,0)/$sensor_size]\"\n> +\t$mediactl -V \"'rkisp1_isp':2 [fmt:$capture_mbus_code/$sensor_size crop:(0,0)/$sensor_size]\"\n> +\t$mediactl -V \"'rkisp1_resizer_mainpath':0 [fmt:$capture_mbus_code/$sensor_size crop:(0,0)/$sensor_size]\"\n> +\t$mediactl -V \"'rkisp1_resizer_mainpath':1 [fmt:$capture_mbus_code/$capture_size]\"\n>  }\n>  \n>  # Capture frames\n> @@ -161,8 +161,8 @@ fi\n>  \n>  sensor_name=$1\n>  \n> -modprobe mipi_dphy_sy\n> -modprobe video_rkisp1\n> +modprobe phy_rockchip_dphy_rx0\n> +modprobe rockchip_isp1\n>  \n>  sensor=$(find_sensor $sensor_name) || exit\n>  mdev=$(find_media_device rkisp1) || exit\n> -- \n> 2.24.0\n> \n> _______________________________________________\n> libcamera-devel mailing list\n> libcamera-devel@lists.libcamera.org\n> https://lists.libcamera.org/listinfo/libcamera-devel","headers":{"Return-Path":"<niklas.soderlund@ragnatech.se>","Received":["from mail-lj1-x241.google.com (mail-lj1-x241.google.com\n\t[IPv6:2a00:1450:4864:20::241])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id C644C6075C\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 17 Jan 2020 01:27:41 +0100 (CET)","by mail-lj1-x241.google.com with SMTP id m26so24553279ljc.13\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 16 Jan 2020 16:27:41 -0800 (PST)","from localhost (h-93-159.A463.priv.bahnhof.se. [46.59.93.159])\n\tby smtp.gmail.com with ESMTPSA id\n\tv9sm12986938lfe.18.2020.01.16.16.27.40\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tThu, 16 Jan 2020 16:27:40 -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=T1oxQ2PTIZUVcYeboVVTIiw3T8R4Dq5zvSFuQBAj23k=;\n\tb=J90/bW0TRmxyG5FfdBasvqmIeaX00U9w9v/jTqYL0Miasjxqa0uRoAkUQ0CJBylKti\n\tkSoShIJ0Hsyliaf14cVtXXXcJETxUc++jc/lPA/Db2To9TktBtFB3+TQ9Hy5wkH1ThYZ\n\tdFneaXF6A+xtsMoyv53hHb1puMvlbntqSKnkBIiNLcmLvX5RKu7bAwDu7WO67/8B2zGC\n\tpszt3A0wROtkQcg/H21sS1v8LwkckcQU5YNfaldcAR4UihK5pQhLNQqZBNCp66NNGonY\n\t/uPi4v9SH2nGPFSWBrE8GObYuFXuJERy5Egdn5FB+W4YFkfYnmjOGKfZDCbxxsXpPgPE\n\tAPUg==","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=T1oxQ2PTIZUVcYeboVVTIiw3T8R4Dq5zvSFuQBAj23k=;\n\tb=mGi2GeW8NcARRTQInz9IKL3YMYuQdNPz8DML2+/CQo4a9FRxA/PWWe3D0li/6yH0Ta\n\tRPY2rT7R25EfFVplvBb5HIbQgLOM+/3TCykXiqvSbvrEwdUfvp6tjltt9ULbW6sy+mHJ\n\t8TxLzKx9uPwnbvRlGDsTTZc8yxxPPmViZo4rdw4ODAKvwGRSd9yR4SjL7nyA/cPzX6eP\n\tryXB0C+1LO7PLSQHFZ+wQUk0712gxs0iR63GQySrbzGqf81wfbtH+efoFjko2aTCdpbm\n\to3ISE7dBjACIErMijBVfRxOPIGsVHtgyXDkPbOdkpKH16hy0GtiKJGL31HMu/yu4WldI\n\tNYGA==","X-Gm-Message-State":"APjAAAWW9IQEgrvE4BgjPOFQ2UbKzLW5PfYeyRENQXO7bY06gvMHwGDj\n\tXO1joz3+wTndzHylk0cd3CLQ9Q==","X-Google-Smtp-Source":"APXvYqyU5mB6VDOeq4qpCz5UO1zQEx+zWftohvPCnZK3iUSkfSaTrAlFReiLaa9F1mxIAGKddtPVEw==","X-Received":"by 2002:a2e:80d9:: with SMTP id r25mr3930330ljg.8.1579220860971; \n\tThu, 16 Jan 2020 16:27:40 -0800 (PST)","Date":"Fri, 17 Jan 2020 01:27:39 +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, kernel@collabora.com,\n\theiko@sntech.de","Message-ID":"<20200117002739.GG987380@oden.dyn.berto.se>","References":"<20200116004553.2885674-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":"<20200116004553.2885674-1-helen.koike@collabora.com>","Subject":"Re: [libcamera-devel] [PATCH] libcamera: pipeline: rkisp1: sync\n\ttopology 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 00:27:42 -0000"}},{"id":3474,"web_url":"https://patchwork.libcamera.org/comment/3474/","msgid":"<3e7861d4-df67-9c5f-9007-1f5007b9c24a@collabora.com>","date":"2020-01-17T14:19:18","subject":"Re: [libcamera-devel] [PATCH] libcamera: pipeline: rkisp1: sync\n\ttopology with upstream driver","submitter":{"id":20,"url":"https://patchwork.libcamera.org/api/people/20/","name":"Helen Koike","email":"helen.koike@collabora.com"},"content":"Hi,\n\nOn 1/16/20 10:27 PM, Niklas Söderlund wrote:\n> Hi Helen,\n> \n> Thanks for your work.\n> \n> On 2020-01-15 21:45:53 -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 libramera 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> \n> I tested this change with the driver merged in the media-tree and it \n> works as expected, great work! I have some small nits bellow but other \n> then that I think it's ready to go.\n> \n> When testing this I was unable to locate any up-to-date patches updating \n> devicetree files to the state of the driver in staging and had to hack \n> something of my own to get it working. Is there patches somewhere? Is  \n> their a plan to upstream the DT changes for Scarlet ?\n\nI have a draft version, which is available in my tree:\nhttps://gitlab.collabora.com/koike/linux/tree/rockchip/isp/v13\n\nI plan to upstream them, but the bindings are still in staging, and\nI want to take a closer look to this patchset before we move the\nbindings out of staging: https://patchwork.kernel.org/patch/10988217/\nLooks like they conflict, or describe the same thing (I plan to take\na look and reply to the patch).\n\n> \n>> ---\n>>\n>> Hi,\n>>\n>> I'm not sure if it is better to wait the driver to get out of staging,\n>> but in any case I'm sending it here in case others want to use it.\n>>\n>> It is also available at:\n>> https://gitlab.collabora.com/koike/libcamera\n>>\n>> Thanks\n>> Helen\n>>\n>>  src/libcamera/pipeline/rkisp1/rkisp1.cpp | 63 +++++++++++++-----------\n>>  utils/rkisp1/rkisp1-capture.sh           | 16 +++---\n>>  2 files changed, 43 insertions(+), 36 deletions(-)\n>>\n>> diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n>> index 389a99c..279bbb6 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>> @@ -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 receiver and create one\n> \n> I would s/receiver//\n\nack\n\n> \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>> diff --git a/utils/rkisp1/rkisp1-capture.sh b/utils/rkisp1/rkisp1-capture.sh\n>> index cffe9fe..4d09f5d 100755\n>> --- a/utils/rkisp1/rkisp1-capture.sh\n>> +++ b/utils/rkisp1/rkisp1-capture.sh\n>> @@ -68,14 +68,14 @@ configure_pipeline() {\n> \n> I would split the changes to the capture script in it's own patch.\n\nok\n\nThanks\nHelen\n\n> \n>>  \n>>  \t$mediactl -r\n>>  \n>> -\t$mediactl -l \"'$sensor':0 -> 'rockchip-sy-mipi-dphy':0 [1]\"\n>> -\t$mediactl -l \"'rockchip-sy-mipi-dphy':1 -> 'rkisp1-isp-subdev':0 [1]\"\n>> -\t$mediactl -l \"'rkisp1-isp-subdev':2 -> 'rkisp1_mainpath':0 [1]\"\n>> +\t$mediactl -l \"'$sensor':0 -> 'rkisp1_isp':0 [1]\"\n>> +\t$mediactl -l \"'rkisp1_isp':2 -> 'rkisp1_resizer_mainpath':0 [1]\"\n>>  \n>>  \t$mediactl -V \"\\\"$sensor\\\":0 [$format]\"\n>> -\t$mediactl -V \"'rockchip-sy-mipi-dphy':1 [$format]\"\n>> -\t$mediactl -V \"'rkisp1-isp-subdev':0 [$format crop:(0,0)/$sensor_size]\"\n>> -\t$mediactl -V \"'rkisp1-isp-subdev':2 [fmt:$capture_mbus_code/$capture_size crop:(0,0)/$capture_size]\"\n>> +\t$mediactl -V \"'rkisp1_isp':0 [$format crop:(0,0)/$sensor_size]\"\n>> +\t$mediactl -V \"'rkisp1_isp':2 [fmt:$capture_mbus_code/$sensor_size crop:(0,0)/$sensor_size]\"\n>> +\t$mediactl -V \"'rkisp1_resizer_mainpath':0 [fmt:$capture_mbus_code/$sensor_size crop:(0,0)/$sensor_size]\"\n>> +\t$mediactl -V \"'rkisp1_resizer_mainpath':1 [fmt:$capture_mbus_code/$capture_size]\"\n>>  }\n>>  \n>>  # Capture frames\n>> @@ -161,8 +161,8 @@ fi\n>>  \n>>  sensor_name=$1\n>>  \n>> -modprobe mipi_dphy_sy\n>> -modprobe video_rkisp1\n>> +modprobe phy_rockchip_dphy_rx0\n>> +modprobe rockchip_isp1\n>>  \n>>  sensor=$(find_sensor $sensor_name) || exit\n>>  mdev=$(find_media_device rkisp1) || exit\n>> -- \n>> 2.24.0\n>>\n>> _______________________________________________\n>> libcamera-devel mailing list\n>> libcamera-devel@lists.libcamera.org\n>> https://lists.libcamera.org/listinfo/libcamera-devel\n>","headers":{"Return-Path":"<helen.koike@collabora.com>","Received":["from bhuna.collabora.co.uk (bhuna.collabora.co.uk [46.235.227.227])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 1A25A60456\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 17 Jan 2020 15:19:26 +0100 (CET)","from [127.0.0.1] (localhost [127.0.0.1])\n\t(Authenticated sender: koike) with ESMTPSA id 056472948E6"],"To":"=?utf-8?q?Niklas_S=C3=B6derlund?= <niklas.soderlund@ragnatech.se>","Cc":"libcamera-devel@lists.libcamera.org, kernel@collabora.com,\n\theiko@sntech.de, laurent.pinchart@ideasonboard.com","References":"<20200116004553.2885674-1-helen.koike@collabora.com>\n\t<20200117002739.GG987380@oden.dyn.berto.se>","From":"Helen Koike <helen.koike@collabora.com>","Autocrypt":"addr=helen.koike@collabora.com; keydata=\n\t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","Message-ID":"<3e7861d4-df67-9c5f-9007-1f5007b9c24a@collabora.com>","Date":"Fri, 17 Jan 2020 11:19:18 -0300","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101\n\tThunderbird/68.3.0","MIME-Version":"1.0","In-Reply-To":"<20200117002739.GG987380@oden.dyn.berto.se>","Content-Type":"text/plain; charset=utf-8","Content-Language":"en-US","Content-Transfer-Encoding":"8bit","Subject":"Re: [libcamera-devel] [PATCH] libcamera: pipeline: rkisp1: sync\n\ttopology 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 14:19:26 -0000"}}]