linux/Documentation/driver-api
Laurent Pinchart ae21987283 media: mc: entity: Rewrite media_pipeline_start()
[Note: the code is mostly from Laurent but the patch description is from Tomi]

The media_pipeline_start() and media_pipeline_stop() functions use the
media graph walk API to traverse the graph and validate the pipeline.
The graph walk traverses the media graph following links between the
entities.

Also, while the pipeline can't change between the start and stop calls,
the graph is walked again from scratch at stop time, or any time a
driver needs to inspect the pipeline.

With the upcoming multiplexed streams support we will need a bit more
intelligent pipeline construction, as e.g. two independent streams may
be passing through a single entity via separate pads in which case
those pads should not be part of the same pipeline.

This patch essentially rewrites the media_pipeline_start/stop so that
a pipeline is defined as a set of pads instead of entities and the media
graph traversal considers the pad interdependencies when choosing which
links to follow.

Currently all the entity's pads are considered as interdependent. This
means that the behavior with all the current drivers stays the same, but
in the future we can define a more fine-grained pipeline construction.

Additionally the media pipeline's pads are cached at
media_pipeline_start() time, and re-used at media_pipeline_stop() which
avoid the need to re-walk the whole graph as the previous implementation
did.

Also, caching pads in the pipeline can serve in the future as the
foundation to provide a better API than the media graph walk to drivers
to iterate over pads and entities in the pipeline.

Note that the old media_pipeline_start/stop used the media graph walk
API. The new version does not use the media graph walk API, but instead
a new implementation.

There are two reasons for not changing the graph walk: it proved to be
rather difficult to change the graph walk to have the features
implemented in this patch, and second, this keeps the backward
compatibility of the graph walk as there are users of the graph walk API

The long term plan is that all the existing code would be converted to
use the new cached pipeline, thus allowing us to remove the graph walk.

Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
2022-09-24 09:19:42 +02:00
..
80211
acpi Documentation: ACPI: fix error script name 2021-06-17 13:21:48 -06:00
backlight
cxl Documentation: cxl: remove dangling kernel-doc reference 2022-08-05 08:41:02 -07:00
dmaengine dmaengine: remove DMA_MEMCPY_SG once again 2022-06-27 12:01:40 +05:30
driver-model gpiolib: devres: Get rid of unused devm_gpio_free() 2022-07-19 09:56:34 +02:00
early-userspace Documentation: Fix intiramfs script name 2021-07-18 23:48:14 +09:00
firmware Driver core / kernfs changes for 6.0-rc1 2022-08-04 11:31:20 -07:00
fpga docs: fpga: mgr: document parse_header() callback 2022-06-24 12:12:24 +08:00
gpio This was a moderately busy cycle for documentation, but nothing all that 2022-08-02 19:24:24 -07:00
hte tegra194-hte.rst: fix reference to its binding 2022-07-07 13:10:00 -06:00
i3c
iio docs: iio: mark "repeat" sysfs attribute as optional 2021-03-11 20:47:08 +00:00
md
media media: mc: entity: Rewrite media_pipeline_start() 2022-09-24 09:19:42 +02:00
mei docs updates for v5.10-rc1 2020-10-16 15:02:21 -07:00
memory-devices
mmc docs: mmc: update maintainer name and URL 2021-10-28 11:54:54 +02:00
mtd Documentation / MTD: Rename the intel-spi driver 2022-02-14 12:53:10 +00:00
nfc nfc: constify nfc_llc_ops 2021-07-25 09:21:21 +01:00
nvdimm nvdimm/blk: Fix title level 2022-03-23 17:52:33 -07:00
pci PCI/MSI: Move code into a separate directory 2021-12-09 11:52:22 +01:00
phy
pldmfw
pm docs: devices.rst: better reference documentation docs 2021-06-17 13:24:36 -06:00
rapidio
serial tty: serial: document uart_get_console() 2022-07-28 10:37:42 +02:00
soundwire
surface_aggregator platform/surface: aggregator: Allow notifiers to avoid communication on unregistering 2022-06-13 17:25:07 +02:00
thermal docs: driver-api/thermal/intel_dptf: Use copyright symbol 2022-04-05 09:46:06 -06:00
tty Documentation: tty: n_gsm, use power of ReST 2022-04-14 18:24:24 +02:00
usb Docs: usb: update writesize, copy_from_user, usb_fill_bulk_urb, usb_submit_urb 2021-11-17 14:54:58 +01:00
xilinx firmware: xilinx: Remove zynqmp_pm_get_eemi_ops() in IS_REACHABLE(CONFIG_ZYNQMP_FIRMWARE) 2021-03-01 12:52:07 +01:00
aperture.rst drm: Implement DRM aperture helpers under video/ 2022-06-27 11:07:55 +02:00
auxiliary_bus.rst Documentation/auxiliary_bus: Move the text into the code 2021-12-03 16:41:50 +01:00
basics.rst docs: basics.rst: avoid duplicated C function declaration 2020-10-15 07:49:45 +02:00
clk.rst
component.rst
connector.rst net/connector: Add const qualifier to cb_id 2020-12-16 11:06:49 -08:00
console.rst
dcdbas.rst
devfreq.rst
device-io.rst dma-buf-map: Rename to iosys-map 2022-02-07 16:35:35 -08:00
device_link.rst docs: device_link.rst: remove duplicated kernel-doc include 2020-10-15 07:49:42 +02:00
dma-buf.rst dma-buf: add dma_fence_unwrap v2 2022-03-25 14:18:28 +01:00
edac.rst
eisa.rst
firewire.rst Documentation: fix firewire.rst ABI file path error 2022-01-20 17:01:32 -07:00
frame-buffer.rst
generic-counter.rst counter: Update documentation for new counter registration functions 2021-12-30 17:44:06 +01:00
hsi.rst
i2c.rst
index.rst drm: Implement DRM aperture helpers under video/ 2022-06-27 11:07:55 +02:00
infiniband.rst
infrastructure.rst docs: infrastructure.rst: exclude device_link_state from device.h 2020-10-15 07:49:46 +02:00
input.rst Input: remove input_polled_dev implementation 2020-12-02 12:35:14 -08:00
interconnect.rst
io-mapping.rst io-mapping: Provide iomap_local variant 2020-11-24 14:42:09 +01:00
io_ordering.rst
ioctl.rst docs: driver-api: avoid using ReST :doc:`foo` markup 2021-06-17 13:24:37 -06:00
ipmb.rst
ipmi.rst ipmi: Add docs for the IPMI IPMB driver 2021-10-05 06:54:17 -05:00
isa.rst
isapnp.rst
libata.rst libata: Improve ATA queued command allocation 2022-04-11 09:27:44 +09:00
mailbox.rst
men-chameleon-bus.rst Documentation: document dma device use for mcb 2021-01-11 13:26:13 -07:00
message-based.rst
misc_devices.rst
miscellaneous.rst
mtdnand.rst docs: mtd: Avoid htmldocs warnings 2020-12-10 22:37:32 +01:00
ntb.rst
nvmem.rst doc: nvmem: Update example 2022-02-21 18:00:30 +01:00
parport-lowlevel.rst
pin-control.rst docs/pinctrl: fix the reference to the u300 platform 2021-05-28 02:59:40 +02:00
pps.rst
ptp.rst
pwm.rst pwm: Document that the pinstate of a disabled PWM isn't reliable 2022-05-20 16:36:07 +02:00
regulator.rst
reset.rst docs: add a reset controller chapter to the driver API docs 2020-12-08 10:48:04 -07:00
rfkill.rst
s390-drivers.rst
scsi.rst
slimbus.rst
sm501.rst
spi.rst
switchtec.rst
sync_file.rst
target.rst docs: scsi: target.rst: remove iSCSI transport class kernel-doc markup 2020-10-15 07:49:42 +02:00
uio-howto.rst
vfio-mediated-device.rst VFIO updates for v6.0-rc1 2022-08-06 08:59:35 -07:00
vfio-pci-device-specific-driver-acceptance.rst vfio-pci: Provide reviewers and acceptance criteria for variant drivers 2022-03-17 09:57:11 -06:00
vfio.rst vfio: Introduce a vfio_uninit_group_dev() API call 2021-08-11 09:50:10 -06:00
vme.rst vme: move back to staging 2022-06-10 15:38:14 +02:00
w1.rst
xillybus.rst
zorro.rst