Age | Commit message (Collapse) | Author | Files | Lines |
|
The routing parameter of v4l2_subdev_set_routing_with_fmt() is missing
'const'. Add it.
Signed-off-by: Tomi Valkeinen <[email protected]>
Reviewed-by: Jacopo Mondi <[email protected]>
Signed-off-by: Sakari Ailus <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
Now that the kernel drivers have been fixed to initialize the stream
field, and we have the client capability which the userspace uses to say
it has initialized the stream field, we can drop the implicit zeroing of
the stream field in the various check functions.
Signed-off-by: Tomi Valkeinen <[email protected]>
Reviewed-by: Jacopo Mondi <[email protected]>
Signed-off-by: Sakari Ailus <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
Define one uncompressed capture format V4L2_PIX_FMT_MT2110R in order to
support 10bit for H264 in mt8195.
Signed-off-by: Mingjia Zhang <[email protected]>
Co-developed-by: Yunfei Dong <[email protected]>
Signed-off-by: Yunfei Dong <[email protected]>
Signed-off-by: Hans Verkuil <[email protected]>
|
|
Define one uncompressed capture format V4L2_PIX_FMT_MT2110T in order to
support 10bit for AV1/VP9/HEVC in mt8195.
Signed-off-by: Mingjia Zhang <[email protected]>
Co-developed-by: Yunfei Dong <[email protected]>
Signed-off-by: Yunfei Dong <[email protected]>
Signed-off-by: Hans Verkuil <[email protected]>
|
|
Set the v4l2_device already in async notifier init, so struct device
related to it will be available before the notifier is registered. This
requires separating notifier initialisation into two functions, one that
takes v4l2_device as its argument, v4l2_async_nf_init and
v4l2_async_subdev_nf_init, for sub-device notifiers. Registering the
notifier will use a single function, v4l2_async_nf_register.
This is done in order to make struct device available earlier, during
construction of the async connections, for sensible debug prints.
Signed-off-by: Sakari Ailus <[email protected]>
Tested-by: Philipp Zabel <[email protected]> # imx6qp
Tested-by: Niklas Söderlund <[email protected]> # rcar + adv746x
Tested-by: Aishwarya Kothari <[email protected]> # Apalis i.MX6Q with TC358743
Tested-by: Lad Prabhakar <[email protected]> # Renesas RZ/G2L SMARC
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
Support matching V4L2 async sub-devices based on particular fwnode
endpoint. This makes it possible to instantiate multiple V4L2 sub-devices
based on given fwnode endpoints from a single device, based on driver
needs.
Signed-off-by: Sakari Ailus <[email protected]>
Tested-by: Philipp Zabel <[email protected]> # imx6qp
Tested-by: Niklas Söderlund <[email protected]> # rcar + adv746x
Tested-by: Aishwarya Kothari <[email protected]> # Apalis i.MX6Q with TC358743
Tested-by: Lad Prabhakar <[email protected]> # Renesas RZ/G2L SMARC
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
When an async sub-device is registered, it used to be that the first one
of its connections were matched when found. Continue looking for matches
until a notifier no longer has any.
Signed-off-by: Sakari Ailus <[email protected]>
Tested-by: Philipp Zabel <[email protected]> # imx6qp
Tested-by: Niklas Söderlund <[email protected]> # rcar + adv746x
Tested-by: Aishwarya Kothari <[email protected]> # Apalis i.MX6Q with TC358743
Tested-by: Lad Prabhakar <[email protected]> # Renesas RZ/G2L SMARC
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
The list entry is initialised as a head in v4l2_async_register_subdev()
just before being added to the list. This isn't needed, drop the
initialisation.
Signed-off-by: Sakari Ailus <[email protected]>
Tested-by: Philipp Zabel <[email protected]> # imx6qp
Tested-by: Niklas Söderlund <[email protected]> # rcar + adv746x
Tested-by: Aishwarya Kothari <[email protected]> # Apalis i.MX6Q with TC358743
Tested-by: Lad Prabhakar <[email protected]> # Renesas RZ/G2L SMARC
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
When the v4l2-async framework was introduced, the use case for it was to
connect a camera sensor with a parallel receiver. Both tended to be rather
simple devices with a single connection between them.
The framework has been since improved in multiple ways but there are
limitations that have remained, for instance the assumption an async
sub-device is connected towards a single notifier and via a single link
only.
This patch enables connecting a sub-device to one or more notifiers
simultaneously, with one or more connections per notifier. The notifier
information is moved from the sub-device to the connection and the
connections in sub-device are no longer a pointer but a linked list.
Signed-off-by: Sakari Ailus <[email protected]>
Tested-by: Philipp Zabel <[email protected]> # imx6qp
Tested-by: Niklas Söderlund <[email protected]> # rcar + adv746x
Tested-by: Aishwarya Kothari <[email protected]> # Apalis i.MX6Q with TC358743
Tested-by: Lad Prabhakar <[email protected]> # Renesas RZ/G2L SMARC
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
Add v4l2_async_connection_unique() function for obtaining a struct
v4l2_async_connection, typically allocated by drivers together with their
own information on an external sub-device.
The relation between connections and sub-devices still remains 1:1 but
this code becomes more complex when the relation soon changes.
Signed-off-by: Sakari Ailus <[email protected]>
Tested-by: Philipp Zabel <[email protected]> # imx6qp
Tested-by: Niklas Söderlund <[email protected]> # rcar + adv746x
Tested-by: Aishwarya Kothari <[email protected]> # Apalis i.MX6Q with TC358743
Tested-by: Lad Prabhakar <[email protected]> # Renesas RZ/G2L SMARC
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
This patch re-arranges internal V4L2 async lists for preparation of
supporting multiple connections per sub-device as well as cleaning up used
lists.
The list of unbound V4L2 sub-devices shall be maintained for the purpose of
listing those sub-devices only, not for their bindin status. Also, the V4L2
async connections now have, instead of two list entries, a single list
entry in the notifier's list, be that either waiting or done lists, while
the notifier's asc_list is removed.
The one-to-one relation between a sub-device and a connection is still
maintained in this patch.
Signed-off-by: Sakari Ailus <[email protected]>
Tested-by: Philipp Zabel <[email protected]> # imx6qp
Tested-by: Niklas Söderlund <[email protected]> # rcar + adv746x
Tested-by: Aishwarya Kothari <[email protected]> # Apalis i.MX6Q with TC358743
Tested-by: Lad Prabhakar <[email protected]> # Renesas RZ/G2L SMARC
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
The connections are checked for duplicates already when the notifier is
registered. This is effectively a sanity check for driver (and possibly
obscure firmware) bugs. Don't do this when adding the connection.
Retain the int return type for now. It'll be needed very soon again.
Signed-off-by: Sakari Ailus <[email protected]>
Tested-by: Philipp Zabel <[email protected]> # imx6qp
Tested-by: Niklas Söderlund <[email protected]> # rcar + adv746x
Tested-by: Aishwarya Kothari <[email protected]> # Apalis i.MX6Q with TC358743
Tested-by: Lad Prabhakar <[email protected]> # Renesas RZ/G2L SMARC
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
Add labels for error handling instead of doing it all in individual cases.
Prepare for more functionality in this function.
Signed-off-by: Sakari Ailus <[email protected]>
Tested-by: Philipp Zabel <[email protected]> # imx6qp
Tested-by: Niklas Söderlund <[email protected]> # rcar + adv746x
Reviewed-by: Laurent Pinchart <[email protected]>
Tested-by: Aishwarya Kothari <[email protected]> # Apalis i.MX6Q with TC358743
Tested-by: Lad Prabhakar <[email protected]> # Renesas RZ/G2L SMARC
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
Rename v4l2_async_subdev as v4l2_async_connection, in order to
differentiate between the sub-devices and their connections: one
sub-device can have many connections but the V4L2 async framework has so
far allowed just a single one. Connections in this context will later
translate into either MC ancillary or data links.
This patch prepares changing that relation by changing existing users of
v4l2_async_subdev to switch to v4l2_async_connection. Async sub-devices
themselves will not be needed anymore
Additionally, __v4l2_async_nf_add_subdev() has been renamed
__v4l2_async_nf_add_connection().
Signed-off-by: Sakari Ailus <[email protected]>
Tested-by: Philipp Zabel <[email protected]> # imx6qp
Tested-by: Niklas Söderlund <[email protected]> # rcar + adv746x
Tested-by: Aishwarya Kothari <[email protected]> # Apalis i.MX6Q with TC358743
Tested-by: Lad Prabhakar <[email protected]> # Renesas RZ/G2L SMARC
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
V4L2 async sub-device matching originally used the device nodes only.
Endpoint nodes were taken into use instead as using the device nodes was
problematic for it was in some cases ambiguous which link might have been
in question.
There is however no need to use endpoint nodes on both sides, as the async
sub-device's fwnode can always be trivially obtained using
fwnode_graph_get_remote_endpoint() when needed while what counts is
whether or not the link is between two device nodes, i.e. the device nodes
match.
This will briefly break the adv748x driver but it will be fixed later in
the set, by patch "media: adv748x: Return to endpoint matching".
Signed-off-by: Sakari Ailus <[email protected]>
Tested-by: Philipp Zabel <[email protected]> # imx6qp
Tested-by: Niklas Söderlund <[email protected]> # rcar + adv746x
Tested-by: Aishwarya Kothari <[email protected]> # Apalis i.MX6Q with TC358743
Tested-by: Lad Prabhakar <[email protected]> # Renesas RZ/G2L SMARC
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
The naming of list heads and list entries is confusing as they're named
similarly. Use _list for list head and _entry for list entries.
Signed-off-by: Sakari Ailus <[email protected]>
Tested-by: Philipp Zabel <[email protected]> # imx6qp
Tested-by: Niklas Söderlund <[email protected]> # rcar + adv746x
Tested-by: Aishwarya Kothari <[email protected]> # Apalis i.MX6Q with TC358743
Tested-by: Lad Prabhakar <[email protected]> # Renesas RZ/G2L SMARC
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
Pass only information required for sub-device matching to functions
checking whether the async sub-device already exists. Do the same for
debug message printing. This makes further changes to other aspects of
async sub-devices easier.
Accordingly, also perform further renames:
asd_equal as v4l2_async_match_equal,
v4l2_async_nf_has_async_subdev as v4l2_async_nf_has_async_match,
__v4l2_async_nf_has_async_subdev as
v4l2_async_nf_has_async_subdev_entry and
v4l2_async_nf_asd_valid as v4l2_async_nf_match_valid.
Signed-off-by: Sakari Ailus <[email protected]>
Tested-by: Philipp Zabel <[email protected]> # imx6qp
Tested-by: Niklas Söderlund <[email protected]> # rcar + adv746x
Reviewed-by: Laurent Pinchart <[email protected]>
Tested-by: Aishwarya Kothari <[email protected]> # Apalis i.MX6Q with TC358743
Tested-by: Lad Prabhakar <[email protected]> # Renesas RZ/G2L SMARC
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
The async match type is a struct field now, rename V4L2_ASYNC_MATCH_*
macros as V4L2_ASYNC_MATCH_TYPE_* instead.
This patch has been produced by:
git grep -l V4L2_ASYNC_MATCH_ -- drivers/media/ drivers/staging/media/ \
include/ Documentation/|xargs perl -i -pe \
's/V4L2_ASYNC_MATCH_\K/TYPE_/g'
so it must be correct.
Signed-off-by: Sakari Ailus <[email protected]>
Tested-by: Philipp Zabel <[email protected]> # imx6qp
Tested-by: Niklas Söderlund <[email protected]> # rcar + adv746x
Reviewed-by: Laurent Pinchart <[email protected]>
Tested-by: Aishwarya Kothari <[email protected]> # Apalis i.MX6Q with TC358743
Tested-by: Lad Prabhakar <[email protected]> # Renesas RZ/G2L SMARC
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
Make V4L2 async match information a struct, making it easier to use it
elsewhere outside the scope of struct v4l2_async_subdev.
Also remove an obsolete comment --- none of these fields are supposed to
be touched by drivers.
Signed-off-by: Sakari Ailus <[email protected]>
Tested-by: Philipp Zabel <[email protected]> # imx6qp
Tested-by: Niklas Söderlund <[email protected]> # rcar + adv746x
Reviewed-by: Laurent Pinchart <[email protected]>
Tested-by: Aishwarya Kothari <[email protected]> # Apalis i.MX6Q with TC358743
Tested-by: Lad Prabhakar <[email protected]> # Renesas RZ/G2L SMARC
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
The callers do pass a non-NULL asd to v4l2_async_nf_asd_valid() already.
There's no need for the NULL check here.
Signed-off-by: Sakari Ailus <[email protected]>
Tested-by: Philipp Zabel <[email protected]> # imx6qp
Tested-by: Niklas Söderlund <[email protected]> # rcar + adv746x
Reviewed-by: Laurent Pinchart <[email protected]>
Tested-by: Aishwarya Kothari <[email protected]> # Apalis i.MX6Q with TC358743
Tested-by: Lad Prabhakar <[email protected]> # Renesas RZ/G2L SMARC
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
There's a need to verify that a single async sub-device isn't being added
multiple times, this would be an error. This takes place at the time of
adding the async sub-device to the notifier's list as well as when the
notifier is added to the global notifier's list.
Use the pointer to the sub-device for testing this instead of an index to
an array that is long gone. (There was an array of async sub-devices in
the notifier before it was converted to a linked list by commit
66beb323e4a0 ("media: v4l2: async: Remove notifier subdevs array").)
Signed-off-by: Sakari Ailus <[email protected]>
Tested-by: Philipp Zabel <[email protected]> # imx6qp
Tested-by: Niklas Söderlund <[email protected]> # rcar + adv746x
Tested-by: Aishwarya Kothari <[email protected]> # Apalis i.MX6Q with TC358743
Tested-by: Lad Prabhakar <[email protected]> # Renesas RZ/G2L SMARC
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
Just add some debug prints for V4L2 async sub-device matching process.
These might come useful in figuring out why things don't work as expected.
Signed-off-by: Sakari Ailus <[email protected]>
Tested-by: Philipp Zabel <[email protected]> # imx6qp
Tested-by: Niklas Söderlund <[email protected]> # rcar + adv746x
Tested-by: Aishwarya Kothari <[email protected]> # Apalis i.MX6Q with TC358743
Tested-by: Lad Prabhakar <[email protected]> # Renesas RZ/G2L SMARC
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
The v4l2_async_nf_parse_fwnode_endpoints() function, part of
v4l2-fwnode.c, was a helper meant to register one async sub-dev for each
fwnode endpoint of a device.
The function is marked as deprecated in the documentation and is actually
not used anywhere anymore. Drop it and remove the helper function
v4l2_async_nf_fwnode_parse_endpoint() from v4l2-fwnode.c.
This change allows to make the helper function
__v4l2_async_nf_add_connection() visibility private to v4l2-async.c so
that there is no risk drivers can mistakenly use it.
[Sakari Ailus: Small fixups on top.]
Signed-off-by: Jacopo Mondi <[email protected]>
Signed-off-by: Sakari Ailus <[email protected]>
Tested-by: Philipp Zabel <[email protected]> # imx6qp
Tested-by: Niklas Söderlund <[email protected]> # rcar + adv746x
Reviewed-by: Laurent Pinchart <[email protected]>
Tested-by: Aishwarya Kothari <[email protected]> # Apalis i.MX6Q with TC358743
Tested-by: Lad Prabhakar <[email protected]> # Renesas RZ/G2L SMARC
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
If fwnode_graph_get_remote_endpoint() fails, 'fwnode' is known to be NULL,
so fwnode_handle_put() is a no-op.
Release the reference taken from a previous fwnode_graph_get_port_parent()
call instead.
Also handle fwnode_graph_get_port_parent() failures.
In order to fix these issues, add an error handling path to the function
and the needed gotos.
Fixes: ca50c197bd96 ("[media] v4l: fwnode: Support generic fwnode for parsing standardised properties")
Signed-off-by: Christophe JAILLET <[email protected]>
Signed-off-by: Sakari Ailus <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media
Pull media updates from Mauro Carvalho Chehab:
- Lots of improvement at atomisp driver, which is starting to look in
good shape
- Mediatek vcodec driver has gained support for av1 and hevc stateless
codecs
- New sensor driver: ov01a10
- verisilicon driver has gained AV1 entropy helpers
- tegra-video has gained support for Tegra20 parallel input
- dvb core has gained an extra property to better support DVB-S2X
- as usual, lots of cleanups, fixes and improvements on media drivers
* tag 'media/v6.5-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (253 commits)
media: wl128x: fix a clang warning
media: dvb: mb86a20s: get rid of a clang-15 warning
media: cec: i2c: ch7322: also select REGMAP
media: add HAS_IOPORT dependencies
media: tc358746: select CONFIG_GENERIC_PHY
media: mediatek: vcodec: Add dbgfs help function
media: mediatek: vcodec: Add encode to support dbgfs
media: mediatek: vcodec: Change dbgfs interface to support encode
media: mediatek: vcodec: Get each instance format type
media: mediatek: vcodec: Get each context resolution information
media: mediatek: vcodec: Add a debugfs file to get different useful information
media: mediatek: vcodec: Add debug params to control different log level
media: mediatek: vcodec: Add debugfs interface to get debug information
media: mediatek: vcodec: support stateless AV1 decoder
media: verisilicon: Conditionally ignore native formats
media: verisilicon: Enable AV1 decoder on rk3588
media: verisilicon: Add film grain feature to AV1 driver
media: verisilicon: Add Rockchip AV1 decoder
media: verisilicon: Add AV1 entropy helpers
media: verisilicon: Compute motion vectors size for AV1 frames
...
|
|
git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
Pull mm updates from Andrew Morton:
- Yosry Ahmed brought back some cgroup v1 stats in OOM logs
- Yosry has also eliminated cgroup's atomic rstat flushing
- Nhat Pham adds the new cachestat() syscall. It provides userspace
with the ability to query pagecache status - a similar concept to
mincore() but more powerful and with improved usability
- Mel Gorman provides more optimizations for compaction, reducing the
prevalence of page rescanning
- Lorenzo Stoakes has done some maintanance work on the
get_user_pages() interface
- Liam Howlett continues with cleanups and maintenance work to the
maple tree code. Peng Zhang also does some work on maple tree
- Johannes Weiner has done some cleanup work on the compaction code
- David Hildenbrand has contributed additional selftests for
get_user_pages()
- Thomas Gleixner has contributed some maintenance and optimization
work for the vmalloc code
- Baolin Wang has provided some compaction cleanups,
- SeongJae Park continues maintenance work on the DAMON code
- Huang Ying has done some maintenance on the swap code's usage of
device refcounting
- Christoph Hellwig has some cleanups for the filemap/directio code
- Ryan Roberts provides two patch series which yield some
rationalization of the kernel's access to pte entries - use the
provided APIs rather than open-coding accesses
- Lorenzo Stoakes has some fixes to the interaction between pagecache
and directio access to file mappings
- John Hubbard has a series of fixes to the MM selftesting code
- ZhangPeng continues the folio conversion campaign
- Hugh Dickins has been working on the pagetable handling code, mainly
with a view to reducing the load on the mmap_lock
- Catalin Marinas has reduced the arm64 kmalloc() minimum alignment
from 128 to 8
- Domenico Cerasuolo has improved the zswap reclaim mechanism by
reorganizing the LRU management
- Matthew Wilcox provides some fixups to make gfs2 work better with the
buffer_head code
- Vishal Moola also has done some folio conversion work
- Matthew Wilcox has removed the remnants of the pagevec code - their
functionality is migrated over to struct folio_batch
* tag 'mm-stable-2023-06-24-19-15' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm: (380 commits)
mm/hugetlb: remove hugetlb_set_page_subpool()
mm: nommu: correct the range of mmap_sem_read_lock in task_mem()
hugetlb: revert use of page_cache_next_miss()
Revert "page cache: fix page_cache_next/prev_miss off by one"
mm/vmscan: fix root proactive reclaim unthrottling unbalanced node
mm: memcg: rename and document global_reclaim()
mm: kill [add|del]_page_to_lru_list()
mm: compaction: convert to use a folio in isolate_migratepages_block()
mm: zswap: fix double invalidate with exclusive loads
mm: remove unnecessary pagevec includes
mm: remove references to pagevec
mm: rename invalidate_mapping_pagevec to mapping_try_invalidate
mm: remove struct pagevec
net: convert sunrpc from pagevec to folio_batch
i915: convert i915_gpu_error to use a folio_batch
pagevec: rename fbatch_count()
mm: remove check_move_unevictable_pages()
drm: convert drm_gem_put_pages() to use a folio_batch
i915: convert shmem_sg_free_table() to use a folio_batch
scatterlist: add sg_set_folio()
...
|
|
We are now in a position where no caller of pin_user_pages() requires the
vmas parameter at all, so eliminate this parameter from the function and
all callers.
This clears the way to removing the vmas parameter from GUP altogether.
Link: https://lkml.kernel.org/r/195a99ae949c9f5cb589d2222b736ced96ec199a.1684350871.git.lstoakes@gmail.com
Signed-off-by: Lorenzo Stoakes <[email protected]>
Acked-by: David Hildenbrand <[email protected]>
Acked-by: Dennis Dalessandro <[email protected]> [qib]
Reviewed-by: Christoph Hellwig <[email protected]>
Acked-by: Sakari Ailus <[email protected]> [drivers/media]
Cc: Catalin Marinas <[email protected]>
Cc: Christian König <[email protected]>
Cc: Greg Kroah-Hartman <[email protected]>
Cc: Janosch Frank <[email protected]>
Cc: Jarkko Sakkinen <[email protected]>
Cc: Jason Gunthorpe <[email protected]>
Cc: Jens Axboe <[email protected]>
Cc: Matthew Wilcox (Oracle) <[email protected]>
Cc: Sean Christopherson <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
|
|
NV15_4L4 is the 10-bits per component 4x4 tiled format.
Signed-off-by: Benjamin Gaignard <[email protected]>
Signed-off-by: Nicolas Dufresne <[email protected]>
Signed-off-by: Hans Verkuil <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
Fraction bytes-per-pixel exist for some packed format. You will find
notably on Rockhip platform that 10bit data is stored fully packed,
meaning that there is 1.25 pixels per bytes. This can be represented
with the fraction 5/4 and can be used to scale the width into a
bytesperline.
Signed-off-by: Nicolas Dufresne <[email protected]>
Signed-off-by: Benjamin Gaignard <[email protected]>
Signed-off-by: Hans Verkuil <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
Make sure that bit_depth field of V4L2_CTRL_TYPE_AV1_SEQUENCE
is initialized correctly before using it.
Signed-off-by: Benjamin Gaignard <[email protected]>
Reviewed-by: Nicolas Dufresne <[email protected]>
Signed-off-by: Hans Verkuil <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
This patch adds the AOMedia Video 1 (AV1) kernel uAPI.
This design is based on currently available AV1 API implementations and
aims to support the development of AV1 stateless video codecs
on Linux.
Signed-off-by: Daniel Almeida <[email protected]>
Co-developed-by: Nicolas Dufresne <[email protected]>
Signed-off-by: Nicolas Dufresne <[email protected]>
Signed-off-by: Hans Verkuil <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
While updating v4l2_create_fwnode_links_to_pad() to accept non-subdev
sinks, the check is_media_entity_v4l2_subdev() was not removed which
prevented the function from being used with non-subdev sinks, Drop the
unnecessary check.
Fixes: bd5a03bc5be8 ("media: Accept non-subdev sinks in v4l2_create_fwnode_links_to_pad()")
Signed-off-by: Vaishnav Achath <[email protected]>
Reviewed-by: Laurent Pinchart <[email protected]>
Signed-off-by: Sakari Ailus <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
While updating v4l2_create_fwnode_links_to_pad() to accept non-subdev
sinks, the check is_media_entity_v4l2_subdev() was not removed which
prevented the function from being used with non-subdev sinks, Drop the
unnecessary check.
Fixes: bd5a03bc5be8 ("media: Accept non-subdev sinks in v4l2_create_fwnode_links_to_pad()")
Signed-off-by: Vaishnav Achath <[email protected]>
Reviewed-by: Laurent Pinchart <[email protected]>
Signed-off-by: Sakari Ailus <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
Use the pad flag specifying the pad type instead of a boolean in
preparation for internal source pads.
Also make the loop variable unsigned.
Signed-off-by: Sakari Ailus <[email protected]>
Reviewed-by: Laurent Pinchart <[email protected]>
Signed-off-by: Hans Verkuil <[email protected]>
|
|
After commit b8a1a4cd5a98 ("i2c: Provide a temporary .probe_new()
call-back type"), all drivers being converted to .probe_new() and then
commit 03c835f498b5 ("i2c: Switch .probe() to not take an id parameter")
convert back to (the new) .probe() to be able to eventually drop
.probe_new() from struct i2c_driver.
Signed-off-by: Uwe Kleine-König <[email protected]>
Signed-off-by: Hans Verkuil <[email protected]>
|
|
ABGR64_12 is a reversed RGB format with alpha channel last,
12 bits per component like ABGR32,
expanded to 16bits.
Data in the 12 high bits, zeros in the 4 low bits,
arranged in little endian order.
Signed-off-by: Ming Qian <[email protected]>
Signed-off-by: Hans Verkuil <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
BGR48_12 is a reversed RGB format with 12 bits per component like BGR24,
expanded to 16bits.
Data in the 12 high bits, zeros in the 4 low bits,
arranged in little endian order.
Signed-off-by: Ming Qian <[email protected]>
Signed-off-by: Hans Verkuil <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
YUV48_12 is a YUV format with 12-bits per component like YUV24,
expanded to 16bits.
Data in the 12 high bits, zeros in the 4 low bits,
arranged in little endian order.
[hverkuil: replaced a . by ,]
Signed-off-by: Ming Qian <[email protected]>
Signed-off-by: Hans Verkuil <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
Y212 is a YUV format with 12-bits per component like YUYV,
expanded to 16bits.
Data in the 12 high bits, zeros in the 4 low bits,
arranged in little endian order.
Add the missing v4l2 foramt info of Y212
Signed-off-by: Ming Qian <[email protected]>
Signed-off-by: Hans Verkuil <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
Y012 is a luma-only formats with 12-bits per pixel,
expanded to 16bits.
Data in the 12 high bits, zeros in the 4 low bits,
arranged in little endian order.
Signed-off-by: Ming Qian <[email protected]>
Signed-off-by: Hans Verkuil <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
P012 is a YUV format with 12-bits per component with interleaved UV,
like NV12, expanded to 16 bits.
Data in the 12 high bits, zeros in the 4 low bits,
arranged in little endian order.
And P012M has two non contiguous planes.
Signed-off-by: Ming Qian <[email protected]>
Signed-off-by: Hans Verkuil <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
Add new ioctls to set and get subdev client capabilities. Client in this
context means the userspace application which opens the subdev device
node. The client capabilities are stored in the file handle of the
opened subdev device node, and the client must set the capabilities for
each opened subdev.
For now we only add a single flag, V4L2_SUBDEV_CLIENT_CAP_STREAMS, which
indicates that the client is streams-aware.
The reason for needing such a flag is as follows:
Many structs passed via ioctls, e.g. struct v4l2_subdev_format, contain
reserved fields (usually a single array field). These reserved fields
can be used to extend the ioctl. The userspace is required to zero the
reserved fields.
We recently added a new 'stream' field to many of these structs, and the
space for the field was taken from these reserved arrays. The assumption
was that these new 'stream' fields are always initialized to zero if the
userspace does not use them. This was a mistake, as, as mentioned above,
the userspace is required to zero the _reserved_ fields. In other words,
there is no requirement to zero this new stream field, and if the
userspace doesn't use the field (which is the case for all userspace
applications at the moment), the field may contain random data.
This shows that the way the reserved fields are defined in v4l2 is, in
my opinion, somewhat broken, but there is nothing to do about that.
To fix this issue we need a way for the userspace to tell the kernel
that the userspace has indeed set the 'stream' field, and it's fine for
the kernel to access it. This is achieved with the new ioctl, which the
userspace should usually use right after opening the subdev device node.
Signed-off-by: Tomi Valkeinen <[email protected]>
Reviewed-by: Laurent Pinchart <[email protected]>
Signed-off-by: Sakari Ailus <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
The v4l2_create_fwnode_links_to_pad() helper requires the sink pad
passed to it to belong to a subdev. This requirement can be lifted
easily. Make the function usable for non-subdev sinks, which allows
using it with video_device sinks.
Signed-off-by: Laurent Pinchart <[email protected]>
Signed-off-by: Sakari Ailus <[email protected]>
Signed-off-by: Hans Verkuil <[email protected]>
|
|
When an async notifier is unregistered, the async sub-devices in the
notifier's done list will disappear with the notifier. However this is
currently also done to the sub-notifiers that remain registered. Their
sub-devices only need to be unbound while the async sub-devices themselves
need to be returned to the sub-notifier's waiting list. Do this now.
Fixes: 2cab00bb076b ("media: v4l: async: Allow binding notifiers to sub-devices")
Signed-off-by: Sakari Ailus <[email protected]>
Signed-off-by: Hans Verkuil <[email protected]>
|
|
RealVideo, or also spelled as Real Video, is a suite of proprietary
video compression formats developed by RealNetworks -
the specific format changes with the version.
RealVideo codecs are identified by four-character codes.
RV30 and RV40 are RealNetworks' proprietary H.264-based codecs.
Reviewed-by: Nicolas Dufresne <[email protected]>
Signed-off-by: Ming Qian <[email protected]>
Signed-off-by: Hans Verkuil <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
Sorenson Spark is an implementation of H.263 for use
in Flash Video and Adobe Flash files.
Sorenson Spark is an incomplete implementation of H.263.
It differs mostly in header structure and ranges of the coefficients.
Signed-off-by: Ming Qian <[email protected]>
Reviewed-by: Nicolas Dufresne <[email protected]>
Signed-off-by: Hans Verkuil <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
A common case with subdev routing is that on the subdevice just before
the DMA engines (video nodes), no multiplexing is allowed on the source
pads, as the DMA engine can only handle a single stream.
In some other situations one might also want to do the same check on the
sink side.
Add new routing validation flags to check these:
V4L2_SUBDEV_ROUTING_NO_SINK_MULTIPLEXING and
V4L2_SUBDEV_ROUTING_NO_SOURCE_MULTIPLEXING.
Signed-off-by: Tomi Valkeinen <[email protected]>
Reviewed-by: Jacopo Mondi <[email protected]>
Signed-off-by: Sakari Ailus <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
V4L2_SUBDEV_ROUTING_NO_STREAM_MIX routing validation flag means that all
routes from a sink pad must go to the same source pad and all routes
going to the same source pad must originate from the same sink pad.
This does not cover all use cases. For example, if a device routes
all streams from a single sink pad to any of the source pads, but
streams from multiple sink pads can go to the same source pad, the
current flag is too restrictive.
Split the flag into two parts, V4L2_SUBDEV_ROUTING_NO_SINK_STREAM_MIX
and V4L2_SUBDEV_ROUTING_NO_SOURCE_STREAM_MIX, which add the restriction
only on one side of the device. Together they mean the same as
V4L2_SUBDEV_ROUTING_NO_STREAM_MIX.
Signed-off-by: Tomi Valkeinen <[email protected]>
Reviewed-by: Andy Shevchenko <[email protected]>
Reviewed-by: Jacopo Mondi <[email protected]>
Signed-off-by: Sakari Ailus <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
Route validation docs use the word 'may'. Change that to 'shall' for
emphasis.
Signed-off-by: Tomi Valkeinen <[email protected]>
Reviewed-by: Jacopo Mondi <[email protected]>
Signed-off-by: Sakari Ailus <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|
|
Make sure this field is always 0 since destructive overlays
are no longer supported.
Signed-off-by: Hans Verkuil <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
|