{"id":1009,"url":"https://patchwork.libcamera.org/api/covers/1009/?format=json","web_url":"https://patchwork.libcamera.org/cover/1009/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/projects/1/?format=json","name":"libcamera","link_name":"libcamera","list_id":"libcamera_core","list_email":"libcamera-devel@lists.libcamera.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20190416220839.1577-1-laurent.pinchart@ideasonboard.com>","date":"2019-04-16T22:08:26","name":"[libcamera-devel,v2,00/13] Rockchip ISP pipeline handler","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/?format=json","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"mbox":"https://patchwork.libcamera.org/cover/1009/mbox/","series":[{"id":253,"url":"https://patchwork.libcamera.org/api/series/253/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=253","date":"2019-04-16T22:08:26","name":"Rockchip ISP pipeline handler","version":2,"mbox":"https://patchwork.libcamera.org/series/253/mbox/"}],"comments":"https://patchwork.libcamera.org/api/covers/1009/comments/","headers":{"Return-Path":"<laurent.pinchart@ideasonboard.com>","Received":["from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id E33BF60004\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 17 Apr 2019 00:08:51 +0200 (CEST)","from pendragon.bb.dnainternet.fi\n\t(dfj612yhrgyx302h3jwwy-3.rev.dnainternet.fi\n\t[IPv6:2001:14ba:21f5:5b00:ce28:277f:58d7:3ca4])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 66E5BE2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 17 Apr 2019 00:08:51 +0200 (CEST)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1555452531;\n\tbh=DQGHuQ+npamiHKYL0FIGvEFb2gKvmQhpnrxKgl5QIRg=;\n\th=From:To:Subject:Date:From;\n\tb=FRqcKUIGu4ov5fYpJJ7sCtLYDACnoRqFWKoXK5ktzS+ZQ4hMXkOUU8SjnPBHDn7hi\n\tvqdbTN2F918fxYnOLySSs9FsDGO/UOQBMn6lRpILZEvV4l4s4WEkxQ4f7PscCoTYBE\n\tOfGVYs6I0+haEL9fK4ut9a085q3SFQCLfxWx4Q1w=","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"libcamera-devel@lists.libcamera.org","Date":"Wed, 17 Apr 2019 01:08:26 +0300","Message-Id":"<20190416220839.1577-1-laurent.pinchart@ideasonboard.com>","X-Mailer":"git-send-email 2.21.0","MIME-Version":"1.0","Content-Type":"text/plain; charset=UTF-8","Content-Transfer-Encoding":"8bit","Subject":"[libcamera-devel] [PATCH v2 00/13] Rockchip ISP pipeline handler","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.23","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":"Tue, 16 Apr 2019 22:08:52 -0000"},"content":"Hello everybody,\n\nThis patch series implements a pipeline handler for the Rockchip ISP1.\n\nThe first ten patches, from 01/13 to 10/13, are miscellaneous fixes and\nimprovements, with the most notable change related to comparison\noperators for geometry classes. Patch 11/13 and 12/13 are were the fun\nbegins, with a new CameraSensor class that factors out code related to\nthe sensor from the IPU3 pipeline handler. Patch 13/13 finally adds the\nRkISP1 pipeline handler, using the new CameraSensor class.\n\nFeatures are limited, as explained in patch 13/13. Only CSI-2 raw Bayer\nsensors are supported, and while only one camera can be used at a time,\nmutual exclusion isn't implemented yet.\n\nCompared to v1, patches 08/13 and 09/13 have been added, and minor\nmiscellaneous changes have been performed, all described in the\nrespective patches.\n\nThe rkisp1 driver prints warnings in the kernel log when the stream is\nstarted and stopped, as well as during capture:\n\n[ 2527.336629] rkisp1: CIF_ISP_PIC_SIZE_ERROR (0x00000001)\n[ 2527.344146] rkisp1: CIF_ISP_PIC_SIZE_ERROR (0x00000000)\n\nThis doesn't seem to prevent proper operation so far, but will need to\nbe fixed. Please note that the kernel driver isn't upstream yet, the\nversion used for this development can be found at\n\n        git://linuxtv.org/pinchartl/media.git rockchip\n\nThe branch is based on the latest version of the driver as posted to the\nlinux-media mailing list, plus two additional patches that address the\nbitrotting, and contains DT integration.\n\nThe patches have been tested on a Acer Chromebook Tab 10 device, based\non the Rockchip RK3399 SoC. The RK399 has two ISP instances, with one\nCSI-2 receiver each, and it should be possible, at least in theory, to\nuse both ISPs for the same camera, one in live streaming mode and one in\nmemory-to-memory mode. This isn't supported on the kernel side, and thus\nout of scope for this initial pipeline handler implementation in\nlibcamera.\n\nLaurent Pinchart (13):\n  Install the cam and qcam utilities\n  libcamera: log: Mark Loggable::_log() methods as const\n  libcamera: camera: Log requested configuration in configureStreams()\n  libcamera: geometry: Sort classes alphabetically\n  libcamera: geometry: Use Size to store min and max in SizeRange\n  libcamera: geometry: Add comparison operators to geometry classes\n  test: geometry: Add tests for Size class comparison operators\n  libcamera: utils: Add set_overlap() function\n  libcamera: v4l2_subdevice: Close subdevice when destroyed\n  libcamera: v4l2-subdevice: Add method to retrieve the media entity\n  libcamera: camera_sensor: Add a new class to model a camera sensor\n  libcamera: pipeline: ipu3: Use the new CameraSensor class\n  libcamera: pipeline: Add RKISP1 pipeline\n\n include/libcamera/geometry.h                |  67 ++-\n src/cam/meson.build                         |   1 +\n src/libcamera/camera.cpp                    |  14 +\n src/libcamera/camera_sensor.cpp             | 258 ++++++++++++\n src/libcamera/geometry.cpp                  | 162 ++++++--\n src/libcamera/include/camera_sensor.h       |  56 +++\n src/libcamera/include/log.h                 |   5 +-\n src/libcamera/include/utils.h               |  19 +\n src/libcamera/include/v4l2_subdevice.h      |   4 +-\n src/libcamera/log.cpp                       |   5 +-\n src/libcamera/meson.build                   |   2 +\n src/libcamera/pipeline/ipu3/ipu3.cpp        | 116 ++----\n src/libcamera/pipeline/meson.build          |   1 +\n src/libcamera/pipeline/rkisp1/meson.build   |   3 +\n src/libcamera/pipeline/rkisp1/rkisp1.cpp    | 431 ++++++++++++++++++++\n src/libcamera/utils.cpp                     |  12 +\n src/libcamera/v4l2_subdevice.cpp            |  27 +-\n src/qcam/meson.build                        |   1 +\n test/geometry.cpp                           | 116 ++++++\n test/meson.build                            |   1 +\n test/v4l2_subdevice/list_formats.cpp        |  14 +-\n test/v4l2_subdevice/v4l2_subdevice_test.cpp |   2 +-\n 22 files changed, 1154 insertions(+), 163 deletions(-)\n create mode 100644 src/libcamera/camera_sensor.cpp\n create mode 100644 src/libcamera/include/camera_sensor.h\n create mode 100644 src/libcamera/pipeline/rkisp1/meson.build\n create mode 100644 src/libcamera/pipeline/rkisp1/rkisp1.cpp\n create mode 100644 test/geometry.cpp"}