summaryrefslogtreecommitdiffstats
path: root/drivers
Commit message (Collapse)AuthorAgeFilesLines
* media: platform: place Via drivers on a separate dirMauro Carvalho Chehab2022-03-146-11/+15
| | | | | | | In order to cleanup the main platform media directory, move Via driver to its own directory. Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
* media: platform: place Intel drivers on a separate dirMauro Carvalho Chehab2022-03-145-11/+15
| | | | | | | In order to cleanup the main platform media directory, move Intel driver to its own directory. Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
* media: platform: place NXP drivers on a separate dirMauro Carvalho Chehab2022-03-1417-69/+77
| | | | | | | | In order to cleanup the main platform media directory, move NXP drivers to their own directory. Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
* media: platform: place Aspeed driver on a separate dirMauro Carvalho Chehab2022-03-145-10/+14
| | | | | | | In order to cleanup the main platform media directory, move Aspeed driver to its own directory. Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
* media: platform: move platform menu dependencies to driversMauro Carvalho Chehab2022-03-1415-45/+98
| | | | | | | | | | | | | | | | | | | | Right now, platform dependencies are organized by the type of the platform driver. Yet, things tend to become very messy with time. The better seems to organize the drivers per manufacturer, as other Kernel subsystems are doing. As a preparation for such purpose, get rid of menuconfigs, moving the per-menu dependencies to be at the driver-specifig config entires. This shoud give flexibility to reorganize the platform drivers per manufacturer and re-sort them. This patch removes all "if..endif" options from the platform Kconfig, converting them into depends on. Acked-by: Jernej Skrabec <jernej.skrabec@gmail.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
* media: platform: Makefile: reorganize its contentsMauro Carvalho Chehab2022-03-141-82/+50
| | | | | | | | | | | | | | There are lots of inconsistencies here: some directories are included as-is, and others included using one (or more) symbols that are inside it. Also, its entries are not sorted. That makes it harder to maintain. Reorganize it by placing everything on alphabetic order and providing some hints about how patches for such file is expected. Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
* media: Makefiles: sort entries where it fitsMauro Carvalho Chehab2022-03-1413-321/+366
| | | | | | | | | | | | | Alphabetically sort entries at the Makefiles per group, in ASCII order, e. g., using the output of: $ LC_ALL=C sort Makefile |grep obj-y ... $ LC_ALL=C sort Makefile |grep obj.*CONFIG ... Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
* media: Makefiles: remove extra spacesMauro Carvalho Chehab2022-03-127-113/+113
| | | | | | | | | | | It is hard to keep all those options aligned as newer config changes get added, and we really don't want to have patches adding new options also touching already existing entries. So, drop the extra spaces. Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
* media: xc2028: rename the driver from tuner-xc2028Mauro Carvalho Chehab2022-03-1225-29/+29
| | | | | | | | This is the only tuner driver that has "tuner-" on its name. Rename it, in order to match all the other tuner drivers. Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
* Merge tag 'br-v5.18s' of git://linuxtv.org/hverkuil/media_tree into media_stageMauro Carvalho Chehab2022-03-077-18/+14
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | Tag branch * tag 'br-v5.18s' of git://linuxtv.org/hverkuil/media_tree: ivtv: fix incorrect device_caps for ivtvfb media: rcar-csi2: Drop comma after SoC match table sentinel media: camss: Replace hard coded value with parameter media: saa7134: fix incorrect use to determine if list is empty media: MAINTAINERS: update rksip1 maintainers info MAINTAINERS: update media vimc driver maintainers media: i2c: max2175: Use rbtree rather than flat register cache Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
| * ivtv: fix incorrect device_caps for ivtvfbHans Verkuil2022-03-073-13/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The VIDIOC_G_FBUF and related overlay ioctls no longer worked (-ENOTTY was returned). The root cause was the introduction of the caps field in ivtv-driver.h. While loading the ivtvfb module would update the video_device device_caps field with V4L2_CAP_VIDEO_OUTPUT_OVERLAY it would not update that caps field, and that's what the overlay ioctls would look at. It's a bad idea to keep information in two places, so drop the caps field and only use vdev.device_caps. Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Reported-by: Martin Dauskardt <martin.dauskardt@gmx.de> Fixes: 2161536516ed (media: media/pci: set device_caps in struct video_device)
| * media: rcar-csi2: Drop comma after SoC match table sentinelGeert Uytterhoeven2022-03-071-1/+1
| | | | | | | | | | | | | | | | | | It does not make sense to have a comma after a sentinel, as any new elements must be added before the sentinel. Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> Reviewed-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
| * media: camss: Replace hard coded value with parameterSouptick Joarder (HPE)2022-03-071-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Kernel test robot reported below warning -> drivers/media/platform/qcom/camss/camss-csid-gen2.c:407:3: warning: Value stored to 'val' is never read [clang-analyzer-deadcode.DeadStores] Replace hard coded value with val. Reported-by: kernel test robot <lkp@intel.com> Signed-off-by: Souptick Joarder (HPE) <jrdr.linux@gmail.com> Reviewed-by: Robert Foss <robert.foss@linaro.org> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
| * media: saa7134: fix incorrect use to determine if list is emptyJakob Koschel2022-03-071-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | 'dev' will *always* be set by list_for_each_entry(). It is incorrect to assume that the iterator value will be NULL if the list is empty. Instead of checking the pointer it should be checked if the list is empty. Fixes: 79dd0c69f05f ("V4L: 925: saa7134 alsa is now a standalone module") Signed-off-by: Jakob Koschel <jakobkoschel@gmail.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
| * media: i2c: max2175: Use rbtree rather than flat register cacheMark Brown2022-03-071-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The max2175 uses a flat register cache but supplies only a single default value and has many volatile registers. This is a poor fit for a flat cache since the cache will assume a default of zero for any register not yet written which can lead to bugs for example when regmap_update_bits() suppresses a noop write. A rbtree cache is a much better fit, this will only cache default values and values that have been written to the device with any reads of uncached values going to the hardware. Convert the driver to use a rbtree cache. Since the device is controlled via I2C the cost of manging the rbtree should be immaterial compared to the cost of accessing the device. Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
* | media: amphion: add amphion vpu entry in Kconfig and MakefileMing Qian2022-03-072-0/+21
| | | | | | | | | | | | | | Add V4L2 driver entry for the amphion vpu encoder/decoder. Signed-off-by: Ming Qian <ming.qian@nxp.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
* | media: amphion: implement malone decoder rpc interfaceMing Qian2022-03-072-0/+1669
| | | | | | | | | | | | | | | | | | | | This part implements the malone decoder rpc interface. Signed-off-by: Ming Qian <ming.qian@nxp.com> Signed-off-by: Shijie Qin <shijie.qin@nxp.com> Signed-off-by: Zhou Peng <eagle.zhou@nxp.com> Tested-by: Nicolas Dufresne <nicolas.dufresne@collabora.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
* | media: amphion: implement windsor encoder rpc interfaceMing Qian2022-03-072-0/+1206
| | | | | | | | | | | | | | | | | | | | | | This part implements the windsor encoder rpc interface. Signed-off-by: Ming Qian <ming.qian@nxp.com> Signed-off-by: Shijie Qin <shijie.qin@nxp.com> Signed-off-by: Zhou Peng <eagle.zhou@nxp.com> Reported-by: kernel test robot <lkp@intel.com> Tested-by: Nicolas Dufresne <nicolas.dufresne@collabora.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
* | media: amphion: add v4l2 m2m vpu decoder stateful driverMing Qian2022-03-071-0/+1691
| | | | | | | | | | | | | | | | | | | | This consists of video decoder implementation plus decoder controls. Signed-off-by: Ming Qian <ming.qian@nxp.com> Signed-off-by: Shijie Qin <shijie.qin@nxp.com> Signed-off-by: Zhou Peng <eagle.zhou@nxp.com> Tested-by: Nicolas Dufresne <nicolas.dufresne@collabora.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
* | media: amphion: add v4l2 m2m vpu encoder stateful driverMing Qian2022-03-071-0/+1358
| | | | | | | | | | | | | | | | | | | | This consists of video encoder implementation plus encoder controls. Signed-off-by: Ming Qian <ming.qian@nxp.com> Signed-off-by: Shijie Qin <shijie.qin@nxp.com> Signed-off-by: Zhou Peng <eagle.zhou@nxp.com> Tested-by: Nicolas Dufresne <nicolas.dufresne@collabora.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
* | media: amphion: add vpu v4l2 m2m supportMing Qian2022-03-075-0/+1437
| | | | | | | | | | | | | | | | | | | | | | | | | | | | vpu_v4l2.c implements the v4l2 m2m driver methods. vpu_helpers.c implements the common helper functions vpu_color.c converts the v4l2 colorspace with the VUI parameters that specified by ITU-T | ISO/IEC Signed-off-by: Ming Qian <ming.qian@nxp.com> Signed-off-by: Shijie Qin <shijie.qin@nxp.com> Signed-off-by: Zhou Peng <eagle.zhou@nxp.com> Reported-by: kernel test robot <lkp@intel.com> Tested-by: Nicolas Dufresne <nicolas.dufresne@collabora.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
* | media: amphion: implement vpu core communication based on mailboxMing Qian2022-03-076-0/+991
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | driver use mailbox to communicate with vpu core. and there are a command buffer and a message buffer. driver will write commands to the command buffer, then trigger a vpu core interrupt vpu core will write messages to the message buffer, then trigger a cpu interrupt. Signed-off-by: Ming Qian <ming.qian@nxp.com> Signed-off-by: Shijie Qin <shijie.qin@nxp.com> Signed-off-by: Zhou Peng <eagle.zhou@nxp.com> Reported-by: kernel test robot <lkp@intel.com> Tested-by: Nicolas Dufresne <nicolas.dufresne@collabora.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
* | media: amphion: add vpu core driverMing Qian2022-03-076-0/+2161
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The vpu supports encoder and decoder. it needs vpu core to handle it. core will run either encoder or decoder firmware. This driver is for support the vpu core. Signed-off-by: Ming Qian <ming.qian@nxp.com> Signed-off-by: Shijie Qin <shijie.qin@nxp.com> Signed-off-by: Zhou Peng <eagle.zhou@nxp.com> Tested-by: Nicolas Dufresne <nicolas.dufresne@collabora.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
* | media: amphion: add amphion vpu device driverMing Qian2022-03-076-0/+1215
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The amphion vpu codec ip contains encoder and decoder. Windsor is the encoder, it supports to encode H.264. Malone is the decoder, it features a powerful video processing unit able to decode many formats, such as H.264, HEVC, and other formats. This Driver is for this IP that is based on the v4l2 mem2mem framework. Supported SoCs are: IMX8QXP, IMX8QM Signed-off-by: Ming Qian <ming.qian@nxp.com> Signed-off-by: Shijie Qin <shijie.qin@nxp.com> Signed-off-by: Zhou Peng <eagle.zhou@nxp.com> Reported-by: kernel test robot <lkp@intel.com> Tested-by: Nicolas Dufresne <nicolas.dufresne@collabora.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
* | media: add nv12m_8l128 and nv12m_10be_8l128 video format.Ming Qian2022-03-071-0/+2
|/ | | | | | | | | | | nv12m_8l128 is 8-bit tiled nv12 format used by amphion decoder. nv12m_10be_8l128 is 10-bit tiled format used by amphion decoder. The tile size is 8x128 Signed-off-by: Ming Qian <ming.qian@nxp.com> Signed-off-by: Shijie Qin <shijie.qin@nxp.com> Signed-off-by: Zhou Peng <eagle.zhou@nxp.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
* Merge tag 'for-5.18-2.6-signed' of git://linuxtv.org/sailus/media_tree into ↵Mauro Carvalho Chehab2022-03-0722-159/+2911
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | media_stage Even yet more V4L2 patches for 5.18 * tag 'for-5.18-2.6-signed' of git://linuxtv.org/sailus/media_tree: media: i2c: Fix pixel array positions in ov8865 media: adv7183: Convert to GPIO descriptors media: m5mols: Convert to use GPIO descriptors media: noon010p30: Convert to use GPIO descriptors media: mt9m111: Drop unused include media: adv7511: Drop unused include media: i2c: isl7998x: Add driver for Intersil ISL7998x media: dt-bindings: Add Intersil ISL79987 DT bindings media: media-entity: Clarify media_entity_cleanup() usage media: i2c: imx274: Drop surplus includes media: i2c: ccs: Drop unused include v4l: fwnode: Remove now-redundant loop from v4l2_fwnode_parse_reference() v4l: fwnode: Drop redunant -ENODATA check in property reference parsing media: media-entity: Simplify media_pipeline_start() media: media-entity: Add media_pad_is_streaming() helper function media: Add a driver for the og01a1b camera sensor media: i2c: ov5648: Fix lockdep error media: ov5640: Fix set format, v4l2_mbus_pixelcode not updated Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
| * media: i2c: Fix pixel array positions in ov8865Daniel Scally2022-03-041-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The ov8865's datasheet gives the pixel array as 3296x2528, and the active portion as the centre 3264x2448. This makes for a top offset of 40 and a left offset of 16, not 32 and 80. Fixes: acd25e220921 ("media: i2c: Add .get_selection() support to ov8865") Reported-by: Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com> Signed-off-by: Daniel Scally <djrscally@gmail.com> Reviewed-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com> Reviewed-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
| * media: adv7183: Convert to GPIO descriptorsLinus Walleij2022-03-041-26/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | This driver is using two GPIO numbers passed as platform data. No board file in the kernel defines this however, so we can just change the mechanism without side effects. Let's just switch it to use GPIO descriptors and add some comments on how to provide these. Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
| * media: m5mols: Convert to use GPIO descriptorsLinus Walleij2022-03-043-20/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | The Fujitsu M5MOLS sensor driver is using a reset GPIO number passed from platform data. No machine/board descriptor file in the kernel is using this so let's replace it with a GPIO descriptor. Cc: Kyungmin Park <kyungmin.park@samsung.com> Cc: Heungjun Kim <riverful.kim@samsung.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
| * media: noon010p30: Convert to use GPIO descriptorsLinus Walleij2022-03-041-40/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The noon010pc30 sensor driver is using legacy gpio numbers passed through platform data and open coding reverse polarity on the GPIOs used for reset and standby. Nothing in the kernel defines any platform data for this driver so we can just convert the driver to use GPIO descriptors and requires that these specify the correct polarity instead. Cc: Sylwester Nawrocki <s.nawrocki@samsung.com> Cc: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
| * media: mt9m111: Drop unused includeLinus Walleij2022-03-041-1/+0
| | | | | | | | | | | | | | | | This driver includes <linux/gpio.h> but does not use any symbols from this file. Drop the include. Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
| * media: adv7511: Drop unused includeLinus Walleij2022-03-041-1/+0
| | | | | | | | | | | | | | | | | | | | | | The adv7511 driver includes the legacy GPIO header <linux/gpio.h> yet fails to use any symbols from it. Drop the include. Cc: Hans Verkuil <hverkuil@xs4all.nl> Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
| * media: i2c: isl7998x: Add driver for Intersil ISL7998xMarek Vasut2022-03-043-0/+1639
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add driver for the Intersil ISL7998x Analog to MIPI CSI-2/BT656 decoder. This chip supports 1/2/4 analog video inputs and converts them into 1/2/4 VCs in MIPI CSI2 stream. This driver currently supports ISL79987 and both 720x480 and 720x576 resolutions, however as per specification, all inputs must use the same resolution and standard. The only supported pixel format is now YUYV/YUV422. The chip should support RGB565 on the CSI2 as well, but this is currently unsupported. Signed-off-by: Marek Vasut <marex@denx.de> Cc: Sakari Ailus <sakari.ailus@linux.intel.com> Cc: Mauro Carvalho Chehab <mchehab+samsung@kernel.org> Cc: Rob Herring <robh+dt@kernel.org> To: linux-media@vger.kernel.org Signed-off-by: Michael Tretter <m.tretter@pengutronix.de> Acked-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> [Sakari Ailus: Always call pm_runtime_get_and_resume in pre_streamon] Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
| * media: i2c: imx274: Drop surplus includesLinus Walleij2022-03-041-2/+0
| | | | | | | | | | | | | | | | | | | | The driver already includes <linux/gpio/consumer.h> which is what it uses, drop the legacy <linux/gpio.h> and <linux/of_gpio.h> includes. Cc: Sakari Ailus <sakari.ailus@linux.intel.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
| * media: i2c: ccs: Drop unused includeLinus Walleij2022-03-041-1/+0
| | | | | | | | | | | | | | | | | | The driver already includes <linux/gpio/consumer.h> which is what it uses, drop the legacy <linux/gpio.h> include. Cc: Sakari Ailus <sakari.ailus@linux.intel.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
| * v4l: fwnode: Remove now-redundant loop from v4l2_fwnode_parse_reference()Sakari Ailus2022-03-041-16/+8
| | | | | | | | | | | | | | | | | | | | | | | | v4l2_fwnode_parse_reference() relied on counting the number of references for async array memory allocation. The array is long gone so remove counting the references now. This also changes how the function arrives in different unsuccessful return values but the functionality remains unchanged. Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
| * v4l: fwnode: Drop redunant -ENODATA check in property reference parsingSakari Ailus2022-03-041-5/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | The check of -ENODATA return value from fwnode_property_get_reference_args() was made redundant by commit c343bc2ce2c6 ("ACPI: properties: Align return codes of __acpi_node_get_property_reference()"). -ENOENT remains to be used to signal there are no further entries. Remove the check for -ENODATA. Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
| * media: media-entity: Simplify media_pipeline_start()Laurent Pinchart2022-03-041-30/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The media_pipeline_start() function has two purposes: it constructs a pipeline by recording the entities that are part of it, gathered from a graph walk, and validate the media links. The pipeline pointer is stored in the media_entity structure as part of this process, and the entity's stream count is increased, to record that the entity is streaming. When multiple video nodes are present in a pipeline, media_pipeline_start() is typically called on all of them, with the same pipeline pointer. This is taken into account in media_pipeline_start() by skipping validation for entities that are already part of the pipeline, while returning an error if an entity is part of a different pipeline. It turns out that this process is overly complicated. When media_pipeline_start() is called for the first time, it constructs the full pipeline, adding all entities and validating all the links. Subsequent calls to media_pipeline_start() are then nearly no-ops, they only increase the stream count on the pipeline and on all entities. The media_entity stream_count field is used for two purposes: checking if the entity is streaming, and detecting when a call to media_pipeline_stop() balances needs to reset the entity pipe pointer to NULL. The former can easily be replaced by a check of the pipe pointer. Simplify media_pipeline_start() by avoiding the pipeline walk on all calls but the first one, and drop the media_entity stream_count field. media_pipeline_stop() is updated accordingly. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> [Sakari Ailus: Drop redundant '!= NULL' as discussed] Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
| * media: media-entity: Add media_pad_is_streaming() helper functionLaurent Pinchart2022-03-045-7/+11
| | | | | | | | | | | | | | | | | | | | Add a function to test if a pad is part of a pipeline currently streaming, and use it through drivers to replace direct access to the stream_count field. This will help reworking pipeline start/stop without disturbing drivers. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
| * media: Add a driver for the og01a1b camera sensorShawn Tu2022-03-043-0/+1142
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a V4L2 sub-device driver for Omnivision og01a1b b&w image sensor. This is a camera sensor using the I2C bus for control and the CSI-2 bus for data. This driver supports following features: - manual exposure and analog/digital gain control support - vblank/hblank control support - test pattern support - media controller support - runtime PM support - support following resolutions: + 1280x1024 at 120FPS Signed-off-by: Shawn Tu <shawnx.tu@intel.com> [Sakari Ailus: Update according to recent v4l2-async API changes] Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
| * media: i2c: ov5648: Fix lockdep errorHans de Goede2022-03-041-2/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ov5648_state_init() calls ov5648_state_mipi_configure() which uses __v4l2_ctrl_s_ctrl[_int64](). This means that sensor->mutex (which is also sensor->ctrls.handler.lock) must be locked before calling ov5648_state_init(). ov5648_state_mipi_configure() is also used in other places where the lock is already held so it cannot be changed itself. Note this is based on an identical (tested) fix for the ov8865 driver, this has only been compile-tested. Cc: Paul Kocialkowski <paul.kocialkowski@bootlin.com> Reviewed-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com> Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
| * media: ov5640: Fix set format, v4l2_mbus_pixelcode not updatedMirela Rabulea2022-02-231-7/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In ov5640_set_fmt, pending_fmt_change will always be false, because the sensor format is saved before comparing it with the previous format: fmt = &sensor->fmt;... *fmt = *mbus_fmt;... if (mbus_fmt->code != sensor->fmt.code) sensor->pending_fmt_change = true; This causes the sensor to capture with the previous pixelcode. Also, changes might happen even for V4L2_SUBDEV_FORMAT_TRY, so fix that. Basically, revert back to the state before commit 071154499193 ("media: ov5640: Fix set format regression") as it was more clear, and then update format even when pixelcode does not change, as resolution might change. Fixes: 071154499193 ("media: ov5640: Fix set format regression") Fixes: 6949d864776e ("media: ov5640: do not change mode if format or frame interval is unchanged") Fixes: fb98e29ff1ea5 ("media: ov5640: fix mode change regression") Signed-off-by: Mirela Rabulea <mirela.rabulea@nxp.com> Reviewed-by: Jacopo Mondi <jacopo+renesas@jmondi.org> Acked-by: Hugues Fruchet <hugues.fruchet@st.com> Tested-by: Hugues Fruchet <hugues.fruchet@st.com> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
* | media: gpio-ir-tx: fix transmit with long spaces on Orange Pi PCSean Young2022-03-071-7/+21
| | | | | | | | | | | | | | | | | | | | Calling udelay for than 1000us does not always yield the correct results. Cc: stable@vger.kernel.org Reported-by: Михаил <vrserver1@gmail.com> Signed-off-by: Sean Young <sean@mess.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
* | Merge tag 'br-v5.18q' of git://linuxtv.org/hverkuil/media_tree into media_stageMauro Carvalho Chehab2022-03-0712-19/+163
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Tag branch * tag 'br-v5.18q' of git://linuxtv.org/hverkuil/media_tree: media: cec: seco: Drop pointless include media: hantro: sunxi: Fix VP9 steps media: imx: csis: Store pads format separately doc: media: Document VP9 reference_mode miss-placement doc: media: Document MM21 tiled format media: imx: imx8mq-mipi-csi2: Remove YUV422 2X8 media: v4l2-core: Initialize h264 scaling matrix media: imx: imx-mipi-csis: Add output format media: imx: imx-mipi-csis: Add BGR888 media: imx: imx-mipi-csis: Add RGB565_1X16 media: imx: imx-mipi-csis: Set PIXEL_MODE for YUV422 media: imx: imx7-media-csi: Use dual sampling for YUV 1X16 media: imx: Rename imx7-mipi-csis.c to imx-mipi-csis.c media: imx: De-stage imx7-mipi-csis Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
| * | media: cec: seco: Drop pointless includeLinus Walleij2022-02-231-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This driver uses GPIO descriptors not the old legacy GPIO API so stop including <linux/gpio.h>. Fix a bug using a completely unrelated legacy API flag GPIOF_IN by switching to the actually desired flag GPIOD_IN. Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
| * | media: hantro: sunxi: Fix VP9 stepsJernej Skrabec2022-02-231-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | It turns out that postproc on Allwinner H6 needs width and height to be multiple of 32. Fixes: 86790a4fdf4b ("media: hantro: Add support for Allwinner H6") Signed-off-by: Jernej Skrabec <jernej.skrabec@gmail.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
| * | media: imx: csis: Store pads format separatelyJacopo Mondi2022-02-231-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As the formats on the sink and source pad might be different store them separately. The pad format is used to configure the image width and height in mipi_csis_system_enable(). As the csis cannot downscale, using the sink or the source one isn't relevant. Signed-off-by: Jacopo Mondi <jacopo@jmondi.org> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
| * | media: imx: imx8mq-mipi-csi2: Remove YUV422 2X8Jacopo Mondi2022-02-231-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The 2X8 variants of MEDIA_BUS_FMT_YUYV8_2X8 does not apply to serial busses. Drop it and while at it also add the canonical UYVY wire format for packed YUV422 when transmitted on the CSI-2 serial bus. Also beautify a little the formats declaration list by putting the opening curly brace after the comment. Signed-off-by: Jacopo Mondi <jacopo@jmondi.org> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
| * | media: v4l2-core: Initialize h264 scaling matrixNicolas Dufresne2022-02-231-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In the final H264 API, it is not required to set scaling matrix if they are not present in the bitstream. A flag was added in order to let the driver know. The downside is that it leaves the default control value to 0, which isn't valid. As per the spec (see formulas 7-8/7-9), when the scaling matrix are absent from the bitstream, flat values of 16 should be used. This improves this control semantic in a way that the control value are always valid. Drivers can then use the scaling_matrix control values without having to check its presence. Same method was employed for MPEG2_QUANTISATION. This fixes issues with MTK VCODEC H264 decoder when using GStreamer. GStreamer does not set this control if its not present in the bitstream. As MTK VDCODEC was using the initialized to 0 values, the frames ended up completely gray. Fixes: 54889c51b833d236 ("media: uapi: h264: Rename and clarify PPS_FLAG_SCALING_MATRIX_PRESENT") Signed-off-by: Nicolas Dufresne <nicolas.dufresne@collabora.com> Tested-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
| * | media: imx: imx-mipi-csis: Add output formatJacopo Mondi2022-02-231-0/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Due to how pixel components are transmitted on the CSI-2 serial bus and how they are deserialized by the CSI-2 receiver, the component ordering might change and the image formats on the sink and source pads of the receiver should reflect it. For RGB24, in example, the component ordering on the wire as described by the CSI-2 specification matches the BGR888 format, while once deserialized by the CSIS receiver it matches the RGB888 format. Add an additional .output field to struct csis_pix_format to allow propagating the correct format to the source pad after a format configuration on the sink. The change is only relevant for RGB24 but paves the way for further format translations in future. Signed-off-by: Jacopo Mondi <jacopo@jmondi.org> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Acked-by: Rui Miguel Silva <rmfrfs@gmail.com> Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>