| Media Subsystem Profile | 
 | ======================= | 
 |  | 
 | Overview | 
 | -------- | 
 |  | 
 | The media subsystem covers support for a variety of devices: stream | 
 | capture, analog and digital TV streams, cameras, remote controllers, HDMI CEC | 
 | and media pipeline control. | 
 |  | 
 | It covers, mainly, the contents of those directories: | 
 |  | 
 |   - drivers/media | 
 |   - drivers/staging/media | 
 |   - Documentation/admin-guide/media | 
 |   - Documentation/driver-api/media | 
 |   - Documentation/userspace-api/media | 
 |   - Documentation/devicetree/bindings/media/\ [1]_ | 
 |   - include/media | 
 |  | 
 | .. [1] Device tree bindings are maintained by the | 
 |        OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS maintainers | 
 |        (see the MAINTAINERS file). So, changes there must be reviewed | 
 |        by them before being merged via the media subsystem's development | 
 |        tree. | 
 |  | 
 | Both media userspace and Kernel APIs are documented and the documentation | 
 | must be kept in sync with the API changes. It means that all patches that | 
 | add new features to the subsystem must also bring changes to the | 
 | corresponding API files. | 
 |  | 
 | Due to the size and wide scope of the media subsystem, media's | 
 | maintainership model is to have sub-maintainers that have a broad | 
 | knowledge of a specific aspect of the subsystem. It is the sub-maintainers' | 
 | task to review the patches, providing feedback to users if the patches are | 
 | following the subsystem rules and are properly using the media kernel and | 
 | userspace APIs. | 
 |  | 
 | Patches for the media subsystem must be sent to the media mailing list | 
 | at linux-media@vger.kernel.org as plain text only e-mail. Emails with | 
 | HTML will be automatically rejected by the mail server. It could be wise | 
 | to also copy the sub-maintainer(s). | 
 |  | 
 | Media's workflow is heavily based on Patchwork, meaning that, once a patch | 
 | is submitted, the e-mail will first be accepted by the mailing list | 
 | server, and, after a while, it should appear at: | 
 |  | 
 |    - https://patchwork.linuxtv.org/project/linux-media/list/ | 
 |  | 
 | If it doesn't automatically appear there after a few minutes, then | 
 | probably something went wrong on your submission. Please check if the | 
 | email is in plain text\ [2]_ only and if your emailer is not mangling | 
 | whitespaces before complaining or submitting them again. | 
 |  | 
 | You can check if the mailing list server accepted your patch, by looking at: | 
 |  | 
 |    - https://lore.kernel.org/linux-media/ | 
 |  | 
 | .. [2] If your email contains HTML, the mailing list server will simply | 
 |        drop it, without any further notice. | 
 |  | 
 |  | 
 | Media maintainers | 
 | +++++++++++++++++ | 
 |  | 
 | At the media subsystem, we have a group of senior developers that | 
 | are responsible for doing the code reviews at the drivers (also known as | 
 | sub-maintainers), and another senior developer responsible for the | 
 | subsystem as a whole. For core changes, whenever possible, multiple | 
 | media maintainers do the review. | 
 |  | 
 | The media maintainers that work on specific areas of the subsystem are: | 
 |  | 
 | - Remote Controllers (infrared): | 
 |     Sean Young <sean@mess.org> | 
 |  | 
 | - HDMI CEC: | 
 |     Hans Verkuil <hverkuil@xs4all.nl> | 
 |  | 
 | - Media controller drivers: | 
 |     Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 
 |  | 
 | - ISP, v4l2-async, v4l2-fwnode, v4l2-flash-led-class and Sensor drivers: | 
 |     Sakari Ailus <sakari.ailus@linux.intel.com> | 
 |  | 
 | - V4L2 drivers and core V4L2 frameworks: | 
 |     Hans Verkuil <hverkuil@xs4all.nl> | 
 |  | 
 | The subsystem maintainer is: | 
 |   Mauro Carvalho Chehab <mchehab@kernel.org> | 
 |  | 
 | Media maintainers may delegate a patch to other media maintainers as needed. | 
 | On such case, checkpatch's ``delegate`` field indicates who's currently | 
 | responsible for reviewing a patch. | 
 |  | 
 | Submit Checklist Addendum | 
 | ------------------------- | 
 |  | 
 | Patches that change the Open Firmware/Device Tree bindings must be | 
 | reviewed by the Device Tree maintainers. So, DT maintainers should be | 
 | Cc:ed when those are submitted via devicetree@vger.kernel.org mailing | 
 | list. | 
 |  | 
 | There is a set of compliance tools at https://git.linuxtv.org/v4l-utils.git/ | 
 | that should be used in order to check if the drivers are properly | 
 | implementing the media APIs: | 
 |  | 
 | ====================	======================================================= | 
 | Type			Tool | 
 | ====================	======================================================= | 
 | V4L2 drivers\ [3]_	``v4l2-compliance`` | 
 | V4L2 virtual drivers	``contrib/test/test-media`` | 
 | CEC drivers		``cec-compliance`` | 
 | ====================	======================================================= | 
 |  | 
 | .. [3] The ``v4l2-compliance`` also covers the media controller usage inside | 
 |        V4L2 drivers. | 
 |  | 
 | Other compilance tools are under development to check other parts of the | 
 | subsystem. | 
 |  | 
 | Those tests need to pass before the patches go upstream. | 
 |  | 
 | Also, please notice that we build the Kernel with:: | 
 |  | 
 | 	make CF=-D__CHECK_ENDIAN__ CONFIG_DEBUG_SECTION_MISMATCH=y C=1 W=1 CHECK=check_script | 
 |  | 
 | Where the check script is:: | 
 |  | 
 | 	#!/bin/bash | 
 | 	/devel/smatch/smatch -p=kernel $@ >&2 | 
 | 	/devel/sparse/sparse $@ >&2 | 
 |  | 
 | Be sure to not introduce new warnings on your patches without a | 
 | very good reason. | 
 |  | 
 | Style Cleanup Patches | 
 | +++++++++++++++++++++ | 
 |  | 
 | Style cleanups are welcome when they come together with other changes | 
 | at the files where the style changes will affect. | 
 |  | 
 | We may accept pure standalone style cleanups, but they should ideally | 
 | be one patch for the whole subsystem (if the cleanup is low volume), | 
 | or at least be grouped per directory. So, for example, if you're doing a | 
 | big cleanup change set at drivers under drivers/media, please send a single | 
 | patch for all drivers under drivers/media/pci, another one for | 
 | drivers/media/usb and so on. | 
 |  | 
 | Coding Style Addendum | 
 | +++++++++++++++++++++ | 
 |  | 
 | Media development uses ``checkpatch.pl`` on strict mode to verify the code | 
 | style, e.g.:: | 
 |  | 
 | 	$ ./scripts/checkpatch.pl --strict --max-line-length=80 | 
 |  | 
 | In principle, patches should follow the coding style rules, but exceptions | 
 | are allowed if there are good reasons. On such case, maintainers and reviewers | 
 | may question about the rationale for not addressing the ``checkpatch.pl``. | 
 |  | 
 | Please notice that the goal here is to improve code readability. On | 
 | a few cases, ``checkpatch.pl`` may actually point to something that would | 
 | look worse. So, you should use good sense. | 
 |  | 
 | Note that addressing one ``checkpatch.pl`` issue (of any kind) alone may lead | 
 | to having longer lines than 80 characters per line. While this is not | 
 | strictly prohibited, efforts should be made towards staying within 80 | 
 | characters per line. This could include using re-factoring code that leads | 
 | to less indentation, shorter variable or function names and last but not | 
 | least, simply wrapping the lines. | 
 |  | 
 | In particular, we accept lines with more than 80 columns: | 
 |  | 
 |     - on strings, as they shouldn't be broken due to line length limits; | 
 |     - when a function or variable name need to have a big identifier name, | 
 |       which keeps hard to honor the 80 columns limit; | 
 |     - on arithmetic expressions, when breaking lines makes them harder to | 
 |       read; | 
 |     - when they avoid a line to end with an open parenthesis or an open | 
 |       bracket. | 
 |  | 
 | Key Cycle Dates | 
 | --------------- | 
 |  | 
 | New submissions can be sent at any time, but if they intend to hit the | 
 | next merge window they should be sent before -rc5, and ideally stabilized | 
 | in the linux-media branch by -rc6. | 
 |  | 
 | Review Cadence | 
 | -------------- | 
 |  | 
 | Provided that your patch is at https://patchwork.linuxtv.org, it should | 
 | be sooner or later handled, so you don't need to re-submit a patch. | 
 |  | 
 | Except for bug fixes, we don't usually add new patches to the development | 
 | tree between -rc6 and the next -rc1. | 
 |  | 
 | Please notice that the media subsystem is a high traffic one, so it | 
 | could take a while for us to be able to review your patches. Feel free | 
 | to ping if you don't get a feedback in a couple of weeks or to ask | 
 | other developers to publicly add Reviewed-by and, more importantly, | 
 | ``Tested-by:`` tags. | 
 |  | 
 | Please note that we expect a detailed description for ``Tested-by:``, | 
 | identifying what boards were used at the test and what it was tested. |