sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget=/translations/zh_CN/driver-api/media/maintainer-entry-profilemodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget=/translations/zh_TW/driver-api/media/maintainer-entry-profilemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget=/translations/it_IT/driver-api/media/maintainer-entry-profilemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget=/translations/ja_JP/driver-api/media/maintainer-entry-profilemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget=/translations/ko_KR/driver-api/media/maintainer-entry-profilemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hPortuguese (Brazilian)}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget=/translations/pt_BR/driver-api/media/maintainer-entry-profilemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget=/translations/sp_SP/driver-api/media/maintainer-entry-profilemodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhcomment)}(h SPDX-License-Identifier: GPL-2.0h]h SPDX-License-Identifier: GPL-2.0}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhhW/var/lib/git/docbuild/linux/Documentation/driver-api/media/maintainer-entry-profile.rsthKubhsection)}(hhh](htitle)}(hMedia Subsystem Profileh]hMedia Subsystem Profile}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hOverviewh]hOverview}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh paragraph)}(hThe Linux Media Community (aka: the LinuxTV Community) is formed by developers working on Linux Kernel Media Subsystem, together with users who also play an important role in testing the code.h]hThe Linux Media Community (aka: the LinuxTV Community) is formed by developers working on Linux Kernel Media Subsystem, together with users who also play an important role in testing the code.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hhhhubh)}(hThe Media Subsystem has code to support a wide variety of media-related devices: stream capture, analog and digital TV streams, cameras, video codecs, video processing (resizers, etc.), radio, remote controllers, HDMI CEC and media pipeline control.h]hThe Media Subsystem has code to support a wide variety of media-related devices: stream capture, analog and digital TV streams, cameras, video codecs, video processing (resizers, etc.), radio, remote controllers, HDMI CEC and media pipeline control.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hhhhubh)}(hMThe Media Subsystem consists of the following directories in the kernel tree:h]hMThe Media Subsystem consists of the following directories in the kernel tree:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh block_quote)}(h- drivers/media - drivers/staging/media - include/media - Documentation/devicetree/bindings/media/\ [1]_ - Documentation/admin-guide/media - Documentation/driver-api/media - Documentation/userspace-api/media h]h bullet_list)}(hhh](h list_item)}(h drivers/mediah]h)}(hj)h]h drivers/media}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj'ubah}(h]h ]h"]h$]h&]uh1j%hj"ubj&)}(hdrivers/staging/mediah]h)}(hj@h]hdrivers/staging/media}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj>ubah}(h]h ]h"]h$]h&]uh1j%hj"ubj&)}(h include/mediah]h)}(hjWh]h include/media}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjUubah}(h]h ]h"]h$]h&]uh1j%hj"ubj&)}(h.Documentation/devicetree/bindings/media/\ [1]_h]h)}(hjnh](h*Documentation/devicetree/bindings/media/ }(hjphhhNhNubhfootnote_reference)}(h[1]_h]h1}(hjyhhhNhNubah}(h]id1ah ]h"]h$]h&]refidid2docname)driver-api/media/maintainer-entry-profileuh1jwhjpresolvedKubeh}(h]h ]h"]h$]h&]uh1hhhhKhjlubah}(h]h ]h"]h$]h&]uh1j%hj"ubj&)}(hDocumentation/admin-guide/mediah]h)}(hjh]hDocumentation/admin-guide/media}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j%hj"ubj&)}(hDocumentation/driver-api/mediah]h)}(hjh]hDocumentation/driver-api/media}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j%hj"ubj&)}(h"Documentation/userspace-api/media h]h)}(h!Documentation/userspace-api/mediah]h!Documentation/userspace-api/media}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j%hj"ubeh}(h]h ]h"]h$]h&]bullet-uh1j hhhKhjubah}(h]h ]h"]h$]h&]uh1jhhhKhhhhubhfootnote)}(hDevice 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 into the media subsystem's development tree. h](hlabel)}(h1h]h1}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh)}(hDevice 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 into the media subsystem's development tree.h]hDevice 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 into the media subsystem’s development tree.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubeh}(h]jah ]h"]1ah$]h&]jajjuh1jhhhKhhhhjKubh)}(hBoth 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 documentation.h]hBoth 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 documentation.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK#hhhhubeh}(h]overviewah ]h"]overviewah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hMedia Maintainersh]hMedia Maintainers}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj.hhhhhK)ubh)}(hXMedia Maintainers are not just people capable of writing code, but they are developers who have demonstrated their ability to collaborate with the team, get the most knowledgeable people to review code, contribute high-quality code, and follow through to fix issues (in code or tests).h]hXMedia Maintainers are not just people capable of writing code, but they are developers who have demonstrated their ability to collaborate with the team, get the most knowledgeable people to review code, contribute high-quality code, and follow through to fix issues (in code or tests).}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK+hj.hhubh)}(hDue to the size and wide scope of the media subsystem, multiple layers of maintainers are required, each with their own areas of expertise:h]hDue to the size and wide scope of the media subsystem, multiple layers of maintainers are required, each with their own areas of expertise:}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK0hj.hhubj!)}(hhh](j&)}(hX<**Media Driver Maintainer**: Responsible for one or more drivers within the Media Subsystem. They are listed in the MAINTAINERS file as maintainer for those drivers. Media Driver Maintainers review patches for those drivers, provide feedback if patches do not follow the subsystem rules, or are not using the media kernel or userspace APIs correctly, or if they have poor code quality. If you are the patch author, you work with other Media Maintainers to ensure your patches are reviewed. Some Media Driver Maintainers have additional responsibilities. They have been granted Patchwork access and keep `Patchwork `_ up to date, decide when patches are ready for merging, and create Pull Requests for the Media Subsystem Maintainers to merge. h]hdefinition_list)}(hhh]hdefinition_list_item)}(hX"**Media Driver Maintainer**: Responsible for one or more drivers within the Media Subsystem. They are listed in the MAINTAINERS file as maintainer for those drivers. Media Driver Maintainers review patches for those drivers, provide feedback if patches do not follow the subsystem rules, or are not using the media kernel or userspace APIs correctly, or if they have poor code quality. If you are the patch author, you work with other Media Maintainers to ensure your patches are reviewed. Some Media Driver Maintainers have additional responsibilities. They have been granted Patchwork access and keep `Patchwork `_ up to date, decide when patches are ready for merging, and create Pull Requests for the Media Subsystem Maintainers to merge. h](hterm)}(h**Media Driver Maintainer**:h](hstrong)}(h**Media Driver Maintainer**h]hMedia Driver Maintainer}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jshjoubh:}(hjohhhNhNubeh}(h]h ]h"]h$]h&]uh1jmhhhKBhjiubh definition)}(hhh](h)}(hXdResponsible for one or more drivers within the Media Subsystem. They are listed in the MAINTAINERS file as maintainer for those drivers. Media Driver Maintainers review patches for those drivers, provide feedback if patches do not follow the subsystem rules, or are not using the media kernel or userspace APIs correctly, or if they have poor code quality.h]hXdResponsible for one or more drivers within the Media Subsystem. They are listed in the MAINTAINERS file as maintainer for those drivers. Media Driver Maintainers review patches for those drivers, provide feedback if patches do not follow the subsystem rules, or are not using the media kernel or userspace APIs correctly, or if they have poor code quality.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK4hjubh)}(hgIf you are the patch author, you work with other Media Maintainers to ensure your patches are reviewed.h]hgIf you are the patch author, you work with other Media Maintainers to ensure your patches are reviewed.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK;hjubh)}(hX5Some Media Driver Maintainers have additional responsibilities. They have been granted Patchwork access and keep `Patchwork `_ up to date, decide when patches are ready for merging, and create Pull Requests for the Media Subsystem Maintainers to merge.h](hqSome Media Driver Maintainers have additional responsibilities. They have been granted Patchwork access and keep }(hjhhhNhNubh reference)}(hF`Patchwork `_h]h Patchwork}(hjhhhNhNubah}(h]h ]h"]h$]h&]name Patchworkrefuri7https://patchwork.linuxtv.org/project/linux-media/list/uh1jhjubhtarget)}(h: h]h}(h] patchworkah ]h"] patchworkah$]h&]refurijuh1j referencedKhjubh~ up to date, decide when patches are ready for merging, and create Pull Requests for the Media Subsystem Maintainers to merge.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK>hjubeh}(h]h ]h"]h$]h&]uh1jhjiubeh}(h]h ]h"]h$]h&]uh1jghhhKBhjdubah}(h]h ]h"]h$]h&]uh1jbhj^ubah}(h]h ]h"]h$]h&]uh1j%hj[hhhNhNubj&)}(hX}**Media Core Maintainer**: Media Driver Maintainers with Patchwork access who are also responsible for one or more media core frameworks. Core framework changes are done via consensus between the relevant Media Core Maintainers. Media Maintainers may include core framework changes in their Pull Requests if they are signed off by the relevant Media Core Maintainers. h]jc)}(hhh]jh)}(hXq**Media Core Maintainer**: Media Driver Maintainers with Patchwork access who are also responsible for one or more media core frameworks. Core framework changes are done via consensus between the relevant Media Core Maintainers. Media Maintainers may include core framework changes in their Pull Requests if they are signed off by the relevant Media Core Maintainers. h](jn)}(h**Media Core Maintainer**:h](jt)}(h**Media Core Maintainer**h]hMedia Core Maintainer}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jshjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jmhhhKKhjubj)}(hhh](h)}(hnMedia Driver Maintainers with Patchwork access who are also responsible for one or more media core frameworks.h]hnMedia Driver Maintainers with Patchwork access who are also responsible for one or more media core frameworks.}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKEhj#ubh)}(hCore framework changes are done via consensus between the relevant Media Core Maintainers. Media Maintainers may include core framework changes in their Pull Requests if they are signed off by the relevant Media Core Maintainers.h]hCore framework changes are done via consensus between the relevant Media Core Maintainers. Media Maintainers may include core framework changes in their Pull Requests if they are signed off by the relevant Media Core Maintainers.}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKHhj#ubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jghhhKKhjubah}(h]h ]h"]h$]h&]uh1jbhjubah}(h]h ]h"]h$]h&]uh1j%hj[hhhNhNubj&)}(hX**Media Subsystem Maintainers**: Media Core Maintainers who are also responsible for the subsystem as a whole, with access to the entire subsystem. Responsible for merging Pull Requests from other Media Maintainers. Userspace API/ABI changes are made via consensus among Media Subsystem Maintainers\ [2]_. Media Maintainers may include API/ABI changes in their Pull Requests if they are signed off by all Media Subsystem Maintainers. h]jc)}(hhh]jh)}(hX**Media Subsystem Maintainers**: Media Core Maintainers who are also responsible for the subsystem as a whole, with access to the entire subsystem. Responsible for merging Pull Requests from other Media Maintainers. Userspace API/ABI changes are made via consensus among Media Subsystem Maintainers\ [2]_. Media Maintainers may include API/ABI changes in their Pull Requests if they are signed off by all Media Subsystem Maintainers. h](jn)}(h **Media Subsystem Maintainers**:h](jt)}(h**Media Subsystem Maintainers**h]hMedia Subsystem Maintainers}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jshjeubh:}(hjehhhNhNubeh}(h]h ]h"]h$]h&]uh1jmhhhKUhjaubj)}(hhh](h)}(hMedia Core Maintainers who are also responsible for the subsystem as a whole, with access to the entire subsystem. Responsible for merging Pull Requests from other Media Maintainers.h]hMedia Core Maintainers who are also responsible for the subsystem as a whole, with access to the entire subsystem. Responsible for merging Pull Requests from other Media Maintainers.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKNhjubh)}(hUserspace API/ABI changes are made via consensus among Media Subsystem Maintainers\ [2]_. Media Maintainers may include API/ABI changes in their Pull Requests if they are signed off by all Media Subsystem Maintainers.h](hTUserspace API/ABI changes are made via consensus among Media Subsystem Maintainers }(hjhhhNhNubjx)}(h[2]_h]h2}(hjhhhNhNubah}(h]id3ah ]h"]h$]h&]jid4jjuh1jwhjjKubh. Media Maintainers may include API/ABI changes in their Pull Requests if they are signed off by all Media Subsystem Maintainers.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKRhjubeh}(h]h ]h"]h$]h&]uh1jhjaubeh}(h]h ]h"]h$]h&]uh1jghhhKUhj^ubah}(h]h ]h"]h$]h&]uh1jbhjZubah}(h]h ]h"]h$]h&]uh1j%hj[hhhNhNubeh}(h]h ]h"]h$]h&]jjuh1j hhhK3hj.hhubh)}(hAll Media Maintainers shall agree with the Kernel development process as described in Documentation/process/index.rst and with the Kernel development rules in the Kernel documentation, including its code of conduct.h]hAll Media Maintainers shall agree with the Kernel development process as described in Documentation/process/index.rst and with the Kernel development rules in the Kernel documentation, including its code of conduct.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKWhj.hhubh)}(hOMedia Maintainers are often reachable via the #linux-media IRC channel at OFTC.h]hOMedia Maintainers are often reachable via the #linux-media IRC channel at OFTC.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK[hj.hhubj)}(hEverything that would break backward compatibility with existing non-kernel code are API/ABI changes. This includes ioctl and sysfs interfaces, v4l2 controls, and their behaviors. h](j)}(h2h]h2}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh)}(hEverything that would break backward compatibility with existing non-kernel code are API/ABI changes. This includes ioctl and sysfs interfaces, v4l2 controls, and their behaviors.h]hEverything that would break backward compatibility with existing non-kernel code are API/ABI changes. This includes ioctl and sysfs interfaces, v4l2 controls, and their behaviors.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK]hjubeh}(h]jah ]h"]2ah$]h&]jajjuh1jhhhK]hj.hhjKubeh}(h]media-maintainersah ]h"]media maintainersah$]h&]uh1hhhhhhhhK)ubh)}(hhh](h)}(hPatchwork Accessh]hPatchwork Access}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKbubh)}(hXCAll Media Maintainers who have been granted Patchwork access shall ensure that `Patchwork `_ will reflect the current status, e.g. patches shall be delegated to the Media Maintainer who is handling them and the patch status shall be updated according to these rules:h](hOAll Media Maintainers who have been granted Patchwork access shall ensure that }(hj.hhhNhNubj)}(hF`Patchwork `_h]h Patchwork}(hj6hhhNhNubah}(h]h ]h"]h$]h&]name Patchworkj7https://patchwork.linuxtv.org/project/linux-media/list/uh1jhj.ubj)}(h: h]h}(h]id5ah ]h"]h$] patchworkah&]refurijFuh1jjKhj.ubh will reflect the current status, e.g. patches shall be delegated to the Media Maintainer who is handling them and the patch status shall be updated according to these rules:}(hj.hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKdhjhhubj!)}(hhh](j&)}(hc``Under Review``: Used if the patch requires a second opinion or when it is part of a Pull Request;h]h)}(hc``Under Review``: Used if the patch requires a second opinion or when it is part of a Pull Request;h](hliteral)}(h``Under Review``h]h Under Review}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjeubhS: Used if the patch requires a second opinion or when it is part of a Pull Request;}(hjehhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKjhjaubah}(h]h ]h"]h$]h&]uh1j%hj^hhhhhNubj&)}(hQ``Superseded``: There is a newer version of the patch posted to the mailing list.h]h)}(hQ``Superseded``: There is a newer version of the patch posted to the mailing list.h](jj)}(h``Superseded``h]h Superseded}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubhC: There is a newer version of the patch posted to the mailing list.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKlhjubah}(h]h ]h"]h$]h&]uh1j%hj^hhhhhNubj&)}(ha``Duplicated``: There was another patch doing the same thing from someone else that was accepted.h]h)}(ha``Duplicated``: There was another patch doing the same thing from someone else that was accepted.h](jj)}(h``Duplicated``h]h Duplicated}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubhS: There was another patch doing the same thing from someone else that was accepted.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKnhjubah}(h]h ]h"]h$]h&]uh1j%hj^hhhhhNubj&)}(h``Not Applicable``: Use for patch series that are not merged at media.git tree (e.g. drm, dmabuf, upstream merge, etc.) but were cross-posted to the linux-media mailing list.h]h)}(h``Not Applicable``: Use for patch series that are not merged at media.git tree (e.g. drm, dmabuf, upstream merge, etc.) but were cross-posted to the linux-media mailing list.h](jj)}(h``Not Applicable``h]hNot Applicable}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubh: Use for patch series that are not merged at media.git tree (e.g. drm, dmabuf, upstream merge, etc.) but were cross-posted to the linux-media mailing list.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKphjubah}(h]h ]h"]h$]h&]uh1j%hj^hhhhhNubj&)}(h``Accepted``: Once a patch is merged in the multi-committer tree. Only Media Maintainers with commit rights are allowed to set this state. h]h)}(h``Accepted``: Once a patch is merged in the multi-committer tree. Only Media Maintainers with commit rights are allowed to set this state.h](jj)}(h ``Accepted``h]hAccepted}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubh~: Once a patch is merged in the multi-committer tree. Only Media Maintainers with commit rights are allowed to set this state.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKshjubah}(h]h ]h"]h$]h&]uh1j%hj^hhhhhNubeh}(h]h ]h"]h$]h&]jjuh1j hhhKjhjhhubh)}(hX If Media Maintainers decide not to accept a patch, they should reply to the patch authors by e‑mail, explaining why it is not accepted, and update `Patchwork `_ accordingly with one of the following statuses:h](hIf Media Maintainers decide not to accept a patch, they should reply to the patch authors by e‑mail, explaining why it is not accepted, and update }(hj'hhhNhNubj)}(hF`Patchwork `_h]h Patchwork}(hj/hhhNhNubah}(h]h ]h"]h$]h&]name Patchworkj7https://patchwork.linuxtv.org/project/linux-media/list/uh1jhj'ubj)}(h: h]h}(h]id6ah ]h"]h$] patchworkah&]refurij?uh1jjKhj'ubh0 accordingly with one of the following statuses:}(hj'hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKvhjhhubj!)}(hhh](j&)}(h7``Changes Requested``: if a new revision was requested;h]h)}(hj\h](jj)}(h``Changes Requested``h]hChanges Requested}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jihj^ubh": if a new revision was requested;}(hj^hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK{hjZubah}(h]h ]h"]h$]h&]uh1j%hjWhhhhhNubj&)}(h?``Rejected``: if the proposed change is not acceptable at all. h]h)}(h>``Rejected``: if the proposed change is not acceptable at all.h](jj)}(h ``Rejected``h]hRejected}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubh2: if the proposed change is not acceptable at all.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK|hjubah}(h]h ]h"]h$]h&]uh1j%hjWhhhhhNubeh}(h]h ]h"]h$]h&]jjuh1j hhhK{hjhhubhnote)}(hPatchwork supports a couple of clients to help semi-automate status updates via its REST interface: https://patchwork.readthedocs.io/en/latest/usage/clients/h](h)}(hcPatchwork supports a couple of clients to help semi-automate status updates via its REST interface:h]hcPatchwork supports a couple of clients to help semi-automate status updates via its REST interface:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubh)}(h9https://patchwork.readthedocs.io/en/latest/usage/clients/h]j)}(hjh]h9https://patchwork.readthedocs.io/en/latest/usage/clients/}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurijuh1jhjubah}(h]h ]h"]h$]h&]uh1hhhhKhjubeh}(h]h ]h"]h$]h&]uh1jhjhhhhhNubh)}(hFor patches that fall within their area of responsibility a Media Maintainer also decides when those patches are ready for merging, and create Pull Requests for the Media Subsystem Maintainers to merge.h]hFor patches that fall within their area of responsibility a Media Maintainer also decides when those patches are ready for merging, and create Pull Requests for the Media Subsystem Maintainers to merge.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hThe most important aspect of becoming a Media Maintainer with Patchwork access is that you have demonstrated an ability to give good code reviews. We value your ability to deliver thorough, constructive code reviews.h]hThe most important aspect of becoming a Media Maintainer with Patchwork access is that you have demonstrated an ability to give good code reviews. We value your ability to deliver thorough, constructive code reviews.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hXAs such, potential maintainers must earn enough credibility and trust from the Linux Media Community. To do that, developers shall be familiar with the open source model and have been active in the Linux Kernel community for some time, and, in particular, in the media subsystem.h]hXAs such, potential maintainers must earn enough credibility and trust from the Linux Media Community. To do that, developers shall be familiar with the open source model and have been active in the Linux Kernel community for some time, and, in particular, in the media subsystem.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hVIn addition to actually making the code changes, you are basically demonstrating your:h]hVIn addition to actually making the code changes, you are basically demonstrating your:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubj!)}(hhh](j&)}(hcommitment to the project;h]h)}(hjh]hcommitment to the project;}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j%hjhhhhhNubj&)}(h:ability to collaborate with the team and communicate well;h]h)}(hj1h]h:ability to collaborate with the team and communicate well;}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj/ubah}(h]h ]h"]h$]h&]uh1j%hjhhhhhNubj&)}(htunderstanding of how upstream and the Linux Media Community work (policies, processes for testing, code review, ...)h]h)}(htunderstanding of how upstream and the Linux Media Community work (policies, processes for testing, code review, ...)h]htunderstanding of how upstream and the Linux Media Community work (policies, processes for testing, code review, ...)}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjFubah}(h]h ]h"]h$]h&]uh1j%hjhhhhhNubj&)}(hreasonable knowledge about: - the Kernel development process: Documentation/process/index.rst - the Media development profile: Documentation/driver-api/media/maintainer-entry-profile.rst h](h)}(hreasonable knowledge about:h]hreasonable knowledge about:}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj^ubj!)}(hhh](j&)}(h@the Kernel development process: Documentation/process/index.rst h]h)}(h?the Kernel development process: Documentation/process/index.rsth]h?the Kernel development process: Documentation/process/index.rst}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjsubah}(h]h ]h"]h$]h&]uh1j%hjpubj&)}(h[the Media development profile: Documentation/driver-api/media/maintainer-entry-profile.rst h]h)}(hZthe Media development profile: Documentation/driver-api/media/maintainer-entry-profile.rsth]hZthe Media development profile: Documentation/driver-api/media/maintainer-entry-profile.rst}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j%hjpubeh}(h]h ]h"]h$]h&]jjuh1j hhhKhj^ubeh}(h]h ]h"]h$]h&]uh1j%hjhhhNhNubj&)}(h:understanding of the projects' code base and coding style;h]h)}(hjh]h`_ web site hosts news about the subsystem, together with:h](hThe }(hjhhhNhNubj)}(h!`LinuxTV `_h]hLinuxTV}(hjhhhNhNubah}(h]h ]h"]h$]h&]nameLinuxTVjhttps://linuxtv.org/uh1jhjubj)}(h h]h}(h]linuxtvah ]h"]linuxtvah$]h&]refurijuh1jjKhjubh8 web site hosts news about the subsystem, together with:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubj!)}(hhh](j&)}(hA`Wiki pages `_;h]h)}(hjh](j)}(h@`Wiki pages `_h]h Wiki pages}(hjhhhNhNubah}(h]h ]h"]h$]h&]name Wiki pagesj0https://www.linuxtv.org/wiki/index.php/Main_Pageuh1jhjubj)}(h3 h]h}(h] wiki-pagesah ]h"] wiki pagesah$]h&]refurijuh1jjKhjubh;}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j%hjhhhhhNubj&)}(hG`Patchwork `_;h]h)}(hjh](j)}(hF`Patchwork `_h]h Patchwork}(hj!hhhNhNubah}(h]h ]h"]h$]h&]name Patchworkj7https://patchwork.linuxtv.org/project/linux-media/list/uh1jhjubj)}(h: h]h}(h]id7ah ]h"]h$] patchworkah&]refurij1uh1jjKhjubh;}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j%hjhhhhhNubj&)}(h<`Linux Media documentation `_;h]h)}(hjQh](j)}(h;`Linux Media documentation `_h]hLinux Media documentation}(hjVhhhNhNubah}(h]h ]h"]h$]h&]nameLinux Media documentationjhttps://linuxtv.org/docs.phpuh1jhjSubj)}(h h]h}(h]linux-media-documentationah ]h"]linux media documentationah$]h&]refurijfuh1jjKhjSubh;}(hjShhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjOubah}(h]h ]h"]h$]h&]uh1j%hjhhhhhNubj&)}(h and more. h]h)}(h and more.h]h and more.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j%hjhhhhhNubeh}(h]h ]h"]h$]h&]jjuh1j hhhKhjhhubh)}(h>The main development trees used by the media subsystem are at:h]h>The main development trees used by the media subsystem are at:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubj!)}(hhh](j&)}(h2Stable tree: - https://git.linuxtv.org/media.git/ h]h)}(h1Stable tree: - https://git.linuxtv.org/media.git/h](hStable tree: - }(hjhhhNhNubj)}(h"https://git.linuxtv.org/media.git/h]h"https://git.linuxtv.org/media.git/}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurijuh1jhjubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j%hjhhhhhNubj&)}(hMedia committers tree: - https://gitlab.freedesktop.org/linux-media/media-committers.git Please note that it can be rebased, although only as a last resort. h](h)}(hXMedia committers tree: - https://gitlab.freedesktop.org/linux-media/media-committers.gith](hMedia committers tree: - }(hjhhhNhNubj)}(h?https://gitlab.freedesktop.org/linux-media/media-committers.gith]h?https://gitlab.freedesktop.org/linux-media/media-committers.git}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurijuh1jhjubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubj)}(hDPlease note that it can be rebased, although only as a last resort. h]h)}(hCPlease note that it can be rebased, although only as a last resort.h]hCPlease note that it can be rebased, although only as a last resort.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhhhKhjubeh}(h]h ]h"]h$]h&]uh1j%hjhhhhhNubj&)}(h{Media development trees, including apps and CI: - https://git.linuxtv.org/ - https://gitlab.freedesktop.org/linux-media/ h](h)}(h/Media development trees, including apps and CI:h]h/Media development trees, including apps and CI:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubj!)}(hhh](j&)}(hhttps://git.linuxtv.org/h]h)}(hj0 h]j)}(hj0 h]hhttps://git.linuxtv.org/}(hj5 hhhNhNubah}(h]h ]h"]h$]h&]refurij0 uh1jhj2 ubah}(h]h ]h"]h$]h&]uh1hhhhKhj. ubah}(h]h ]h"]h$]h&]uh1j%hj+ ubj&)}(h-https://gitlab.freedesktop.org/linux-media/ h]h)}(h+https://gitlab.freedesktop.org/linux-media/h]j)}(hjU h]h+https://gitlab.freedesktop.org/linux-media/}(hjW hhhNhNubah}(h]h ]h"]h$]h&]refurijU uh1jhjS ubah}(h]h ]h"]h$]h&]uh1hhhhKhjO ubah}(h]h ]h"]h$]h&]uh1j%hj+ ubeh}(h]h ]h"]h$]h&]jjuh1j hhhKhj ubeh}(h]h ]h"]h$]h&]uh1j%hjhhhNhNubeh}(h]h ]h"]h$]h&]jjuh1j hhhKhjhhubj)}(h.. _Media development workflow:h]h}(h]h ]h"]h$]h&]jmedia-development-workflowuh1jhKhjhhhhjKubh)}(hhh](h)}(hMedia development workflowh]hMedia development workflow}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhKubh)}(hAll changes for the media subsystem shall be sent first as e-mails to the media mailing list, following the process documented at Documentation/process/index.rst.h]hAll changes for the media subsystem shall be sent first as e-mails to the media mailing list, following the process documented at Documentation/process/index.rst.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj hhubh)}(hIt means that patches shall be submitted as plain text only via e-mail to linux-media@vger.kernel.org (aka: LMML). While subscription is not mandatory, you can find details about how to subscribe to it and to see its archives at:h](hJIt means that patches shall be submitted as plain text only via e-mail to }(hj hhhNhNubj)}(hlinux-media@vger.kernel.orgh]hlinux-media@vger.kernel.org}(hj hhhNhNubah}(h]h ]h"]h$]h&]refuri"mailto:linux-media@vger.kernel.orguh1jhj ubh (aka: LMML). While subscription is not mandatory, you can find details about how to subscribe to it and to see its archives at:}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj hhubj)}(h1https://subspace.kernel.org/vger.kernel.org.html h]h)}(h0https://subspace.kernel.org/vger.kernel.org.htmlh]j)}(hj h]h0https://subspace.kernel.org/vger.kernel.org.html}(hj hhhNhNubah}(h]h ]h"]h$]h&]refurij uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhhhKhj hhubh)}(hCEmails with HTML will be automatically rejected by the mail server.h]hCEmails with HTML will be automatically rejected by the mail server.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj hhubh)}(hIt could be wise to also copy the relevant Media Maintainer(s). You should use ``scripts/get_maintainers.pl`` to identify whom else needs to be copied. Please always copy driver's authors and maintainers.h](hOIt could be wise to also copy the relevant Media Maintainer(s). You should use }(hj hhhNhNubjj)}(h``scripts/get_maintainers.pl``h]hscripts/get_maintainers.pl}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj ubha to identify whom else needs to be copied. Please always copy driver’s authors and maintainers.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj hhubh)}(hTo minimize the chance of merge conflicts for your patch series, and make it easier to backport patches to stable Kernels, we recommend that you use the following baseline for your patch series:h]hTo minimize the chance of merge conflicts for your patch series, and make it easier to backport patches to stable Kernels, we recommend that you use the following baseline for your patch series:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj hhubhenumerated_list)}(hhh](j&)}(hgFeatures for the next mainline release: - baseline shall be the ``media-committers.git next`` branch; h](h)}(h'Features for the next mainline release:h]h'Features for the next mainline release:}(hj6 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj2 ubj!)}(hhh]j&)}(h uh1jhj4 ubh, for an overview about Kernel release types.}(hj4 hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj0 ubah}(h]h ]h"]h$]h&]uh1jhj hhhhhNubh)}(hPatches with fixes shall have:h]hPatches with fixes shall have:}(hj[ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubj!)}(hhh](j&)}(hFa ``Fixes:`` tag pointing to the first commit that introduced the bug;h]h)}(hjn h](ha }(hjp hhhNhNubjj)}(h ``Fixes:``h]hFixes:}(hjw hhhNhNubah}(h]h ]h"]h$]h&]uh1jihjp ubh: tag pointing to the first commit that introduced the bug;}(hjp hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhM hjl ubah}(h]h ]h"]h$]h&]uh1j%hji hhhhhNubj&)}(h3when applicable, a ``Cc: stable@vger.kernel.org``. h]h)}(h2when applicable, a ``Cc: stable@vger.kernel.org``.h](hwhen applicable, a }(hj hhhNhNubjj)}(h``Cc: stable@vger.kernel.org``h]hCc: stable@vger.kernel.org}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj ubh.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhM hj ubah}(h]h ]h"]h$]h&]uh1j%hji hhhhhNubeh}(h]h ]h"]h$]h&]jjuh1j hhhM hj hhubh)}(hvPatches that were fixing bugs publicly reported by someone at the linux-media@vger.kernel.org mailing list shall have:h](hBPatches that were fixing bugs publicly reported by someone at the }(hj hhhNhNubj)}(hlinux-media@vger.kernel.orgh]hlinux-media@vger.kernel.org}(hj hhhNhNubah}(h]h ]h"]h$]h&]refuri"mailto:linux-media@vger.kernel.orguh1jhj ubh mailing list shall have:}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhM hj hhubj!)}(hhh]j&)}(hBa ``Reported-by:`` tag immediately followed by a ``Closes:`` tag. h]h)}(hAa ``Reported-by:`` tag immediately followed by a ``Closes:`` tag.h](ha }(hj hhhNhNubjj)}(h``Reported-by:``h]h Reported-by:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj ubh tag immediately followed by a }(hj hhhNhNubjj)}(h ``Closes:``h]hCloses:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj ubh tag.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj ubah}(h]h ]h"]h$]h&]uh1j%hj hhhhhNubah}(h]h ]h"]h$]h&]jjuh1j hhhMhj hhubh)}(hXPatches that change API shall update documentation accordingly at the same patch series.h]hXPatches that change API shall update documentation accordingly at the same patch series.}(hj, hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubh)}(hMSee Documentation/process/index.rst for more details about e-mail submission.h]hMSee Documentation/process/index.rst for more details about e-mail submission.}(hj: hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubh)}(hOOnce a patch is submitted, it may follow either one of the following workflows:h]hOOnce a patch is submitted, it may follow either one of the following workflows:}(hjH hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubj. )}(hhh](j&)}(hXMedia Maintainers' workflow: Media Maintainers post the Pull Requests, which are handled by the Media Subsystem Maintainers:: +-------+ +------------+ +------+ +-------+ +---------------------+ |e-mail |-->|picked up by|-->|code |-->|pull |-->|Subsystem Maintainers| |to LMML| |Patchwork | |review| |request| |merge in | | | | | | | | | |media-committers.git | +-------+ +------------+ +------+ +-------+ +---------------------+ For this workflow, Pull Requests are generated by Media Maintainers with Patchwork access. If you do not have Patchwork access, then please don't submit Pull Requests, as they will not be processed. h](h)}(h}Media Maintainers' workflow: Media Maintainers post the Pull Requests, which are handled by the Media Subsystem Maintainers::h]h~Media Maintainers’ workflow: Media Maintainers post the Pull Requests, which are handled by the Media Subsystem Maintainers:}(hj] hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjY ubh literal_block)}(hX{+-------+ +------------+ +------+ +-------+ +---------------------+ |e-mail |-->|picked up by|-->|code |-->|pull |-->|Subsystem Maintainers| |to LMML| |Patchwork | |review| |request| |merge in | | | | | | | | | |media-committers.git | +-------+ +------------+ +------+ +-------+ +---------------------+h]hX{+-------+ +------------+ +------+ +-------+ +---------------------+ |e-mail |-->|picked up by|-->|code |-->|pull |-->|Subsystem Maintainers| |to LMML| |Patchwork | |review| |request| |merge in | | | | | | | | | |media-committers.git | +-------+ +------------+ +------+ +-------+ +---------------------+}hjm sbah}(h]h ]h"]h$]h&]hhuh1jk hhhMhjY ubh)}(hFor this workflow, Pull Requests are generated by Media Maintainers with Patchwork access. If you do not have Patchwork access, then please don't submit Pull Requests, as they will not be processed.h]hFor this workflow, Pull Requests are generated by Media Maintainers with Patchwork access. If you do not have Patchwork access, then please don’t submit Pull Requests, as they will not be processed.}(hj{ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM"hjY ubeh}(h]h ]h"]h$]h&]uh1j%hjV hhhhhNubj&)}(hXwMedia Committers' workflow: patches are handled by Media Maintainers with commit rights:: +-------+ +------------+ +------+ +--------------------------+ |e-mail |-->|picked up by|-->|code |-->|Media Committers merge in | |to LMML| |Patchwork | |review| |media-committers.git | +-------+ +------------+ +------+ +--------------------------+ h](h)}(hYMedia Committers' workflow: patches are handled by Media Maintainers with commit rights::h]hZMedia Committers’ workflow: patches are handled by Media Maintainers with commit rights:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM&hj ubjl )}(hX+-------+ +------------+ +------+ +--------------------------+ |e-mail |-->|picked up by|-->|code |-->|Media Committers merge in | |to LMML| |Patchwork | |review| |media-committers.git | +-------+ +------------+ +------+ +--------------------------+h]hX+-------+ +------------+ +------+ +--------------------------+ |e-mail |-->|picked up by|-->|code |-->|Media Committers merge in | |to LMML| |Patchwork | |review| |media-committers.git | +-------+ +------------+ +------+ +--------------------------+}hj sbah}(h]h ]h"]h$]h&]hhuh1jk hhhM)hj ubeh}(h]h ]h"]h$]h&]uh1j%hjV hhhhhNubeh}(h]h ]h"]h$]h&]j+ loweralphaj- hj. j/ uh1j- hj hhhhhMubh)}(hXGWhen patches are picked up by `Patchwork `_ and when merged at media-committers, Media CI bots will check for errors and may provide e-mail feedback about patch problems. When this happens, the patch submitter must fix them or explain why the errors are false positives.h](hWhen patches are picked up by }(hj hhhNhNubj)}(hF`Patchwork `_h]h Patchwork}(hj hhhNhNubah}(h]h ]h"]h$]h&]name Patchworkj7https://patchwork.linuxtv.org/project/linux-media/list/uh1jhj ubj)}(h: h]h}(h]id9ah ]h"]h$] patchworkah&]refurij uh1jjKhj ubh and when merged at media-committers, Media CI bots will check for errors and may provide e-mail feedback about patch problems. When this happens, the patch submitter must fix them or explain why the errors are false positives.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhM.hj hhubh)}(hPatches will only be moved to the next stage in these two workflows if they pass on Media CI or if there are false-positives in the Media CI reports.h]hPatches will only be moved to the next stage in these two workflows if they pass on Media CI or if there are false-positives in the Media CI reports.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM4hj hhubh)}(hXFor both workflows, all patches shall be properly reviewed at linux-media@vger.kernel.org (LMML) before being merged in ``media-committers.git``. Media patches will be reviewed in a timely manner by the maintainers and reviewers as listed in the MAINTAINERS file.h](h>For both workflows, all patches shall be properly reviewed at }(hj hhhNhNubj)}(hlinux-media@vger.kernel.orgh]hlinux-media@vger.kernel.org}(hj hhhNhNubah}(h]h ]h"]h$]h&]refuri"mailto:linux-media@vger.kernel.orguh1jhj ubh (LMML) before being merged in }(hj hhhNhNubjj)}(h``media-committers.git``h]hmedia-committers.git}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj ubhw. Media patches will be reviewed in a timely manner by the maintainers and reviewers as listed in the MAINTAINERS file.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhM7hj hhubh)}(hMedia Maintainers shall request reviews from other Media Maintainers and developers where applicable, i.e. because those developers have more knowledge about some areas that are changed by a patch.h]hMedia Maintainers shall request reviews from other Media Maintainers and developers where applicable, i.e. because those developers have more knowledge about some areas that are changed by a patch.}(hj. hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM<hj hhubh)}(hThere shall be no open issues or unresolved or conflicting feedback from anyone. Clear them up first. Defer to the Media Subsystem Maintainers if needed.h]hThere shall be no open issues or unresolved or conflicting feedback from anyone. Clear them up first. Defer to the Media Subsystem Maintainers if needed.}(hj< hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM@hj hhubeh}(h](j id8eh ]h"]media development workflowah$]media development workflowah&]uh1hhjhhhhhKjKexpect_referenced_by_name}jO j sexpect_referenced_by_id}j j subh)}(hhh](h)}(h!Failures during e-mail submissionh]h!Failures during e-mail submission}(hjZ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjW hhhhhMEubh)}(hMedia'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:h]hMedia’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:}(hjh hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMGhjW hhubj)}(h:- https://patchwork.linuxtv.org/project/linux-media/list/ h]j!)}(hhh]j&)}(h8https://patchwork.linuxtv.org/project/linux-media/list/ h]h)}(h7https://patchwork.linuxtv.org/project/linux-media/list/h]j)}(hj h]h7https://patchwork.linuxtv.org/project/linux-media/list/}(hj hhhNhNubah}(h]h ]h"]h$]h&]refurij uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhhhMKhj} ubah}(h]h ]h"]h$]h&]uh1j%hjz ubah}(h]h ]h"]h$]h&]jjuh1j hhhMKhjv ubah}(h]h ]h"]h$]h&]uh1jhhhMKhjW hhubh)}(hXIf it doesn't automatically appear there after some time [3]_, then probably something went wrong on your submission. Please check if the email is in plain text\ [4]_ only and if your emailer is not mangling whitespaces before complaining or submitting them again.h](h;If it doesn’t automatically appear there after some time }(hj hhhNhNubjx)}(h[3]_h]h3}(hj hhhNhNubah}(h]id10ah ]h"]h$]h&]jid14jjuh1jwhj jKubhe, then probably something went wrong on your submission. Please check if the email is in plain text }(hj hhhNhNubjx)}(h[4]_h]h4}(hj hhhNhNubah}(h]id11ah ]h"]h$]h&]jid16jjuh1jwhj jKubhb only and if your emailer is not mangling whitespaces before complaining or submitting them again.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMMhjW hhubh)}(hsTo troubleshoot problems, you should first check if the mailing list server has accepted your patch, by looking at:h]hsTo troubleshoot problems, you should first check if the mailing list server has accepted your patch, by looking at:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMRhjW hhubj)}(h'- https://lore.kernel.org/linux-media/ h]j!)}(hhh]j&)}(h%https://lore.kernel.org/linux-media/ h]h)}(h$https://lore.kernel.org/linux-media/h]j)}(hj h]h$https://lore.kernel.org/linux-media/}(hj hhhNhNubah}(h]h ]h"]h$]h&]refurij uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhhhMUhj ubah}(h]h ]h"]h$]h&]uh1j%hj ubah}(h]h ]h"]h$]h&]jjuh1j hhhMUhj ubah}(h]h ]h"]h$]h&]uh1jhhhMUhjW hhubh)}(hXIf the patch is there and not at `Patchwork `_, it is likely that your e-mailer mangled the patch. Patchwork internally has logic that checks if the received e-mail contains a valid patch. Any whitespace and new line breakages mangling the patch won't be recognized by `Patchwork `_, and such a patch will be rejected.h](h!If the patch is there and not at }(hj$hhhNhNubj)}(hF`Patchwork `_h]h Patchwork}(hj,hhhNhNubah}(h]h ]h"]h$]h&]name Patchworkj7https://patchwork.linuxtv.org/project/linux-media/list/uh1jhj$ubj)}(h: h]h}(h]id12ah ]h"]h$] patchworkah&]refurij<uh1jjKhj$ubh, it is likely that your e-mailer mangled the patch. Patchwork internally has logic that checks if the received e-mail contains a valid patch. Any whitespace and new line breakages mangling the patch won’t be recognized by }(hj$hhhNhNubj)}(hF`Patchwork `_h]h Patchwork}(hjNhhhNhNubah}(h]h ]h"]h$]h&]name Patchworkj7https://patchwork.linuxtv.org/project/linux-media/list/uh1jhj$ubj)}(h: h]h}(h]id13ah ]h"]h$] patchworkah&]refurij^uh1jjKhj$ubh$, and such a patch will be rejected.}(hj$hhhN(hNubeh}(h]h ]h"]h$]h&]uh1hhhhMWhjW hhubj)}(hIt usually takes a few minutes for the patch to arrive, but the e-mail server may be busy, so it may take a longer time for a patch to be picked by `Patchwork `_. h](j)}(h3h]h3}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjvubh)}(hIt usually takes a few minutes for the patch to arrive, but the e-mail server may be busy, so it may take a longer time for a patch to be picked by `Patchwork `_.h](hIt usually takes a few minutes for the patch to arrive, but the e-mail server may be busy, so it may take a longer time for a patch to be picked by }(hjhhhNhNubj)}(hF`Patchwork `_h]h Patchwork}(hjhhhNhNubah}(h]h ]h"]h$]h&]name Patchworkj7https://patchwork.linuxtv.org/project/linux-media/list/uh1jhjubj)}(h: h]h}(h]id15ah ]h"]h$] patchworkah&]refurijuh1jjKhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhM_hjvubeh}(h]j ah ]h"]3ah$]h&]j ajjuh1jhhhM_hjW hhjKubj)}(hfIf your email contains HTML, the mailing list server will simply drop it, without any further notice. h](j)}(h4h]h4}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh)}(heIf your email contains HTML, the mailing list server will simply drop it, without any further notice.h]heIf your email contains HTML, the mailing list server will simply drop it, without any further notice.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMdhjubeh}(h]j ah ]h"]4ah$]h&]j ajjuh1jhhhMdhjW hhjKubj)}(h.. _media-developers-gpg:h]h}(h]h ]h"]h$]h&]jmedia-developers-gpguh1jhMghjW hhhhubeh}(h]!failures-during-e-mail-submissionah ]h"]!failures during e-mail submissionah$]h&]uh1hhjhhhhhMEubh)}(hhh](h)}(h*Authentication for pull and merge requestsh]h*Authentication for pull and merge requests}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhMjubh)}(hThe authenticity of developers submitting Pull Requests and merge requests shall be validated by using the Linux Kernel Web of Trust, with PGP signing at some moment. See: :ref:`kernel_org_trust_repository`.h](hThe authenticity of developers submitting Pull Requests and merge requests shall be validated by using the Linux Kernel Web of Trust, with PGP signing at some moment. See: }(hj hhhNhNubh)}(h":ref:`kernel_org_trust_repository`h]jp)}(hjh]hkernel_org_trust_repository}(hjhhhNhNubah}(h]h ](j{stdstd-refeh"]h$]h&]uh1johjubah}(h]h ]h"]h$]h&]refdocj refdomainj reftyperef refexplicitrefwarnjkernel_org_trust_repositoryuh1hhhhMlhj ubh.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMlhjhhubh)}(hHWith the Pull Request workflow, Pull Requests shall use PGP-signed tags.h]hHWith the Pull Request workflow, Pull Requests shall use PGP-signed tags.}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMphjhhubh)}(hWith the committers' workflow, this is ensured at the time merge request rights will be granted to the gitlab instance used by the media-committers.git tree, after receiving the e-mail documented in :ref:`media-committer-agreement`.h](hWith the committers’ workflow, this is ensured at the time merge request rights will be granted to the gitlab instance used by the media-committers.git tree, after receiving the e-mail documented in }(hjJhhhNhNubh)}(h :ref:`media-committer-agreement`h]jp)}(hjTh]hmedia-committer-agreement}(hjVhhhNhNubah}(h]h ](j{stdstd-refeh"]h$]h&]uh1johjRubah}(h]h ]h"]h$]h&]refdocj refdomainj`reftyperef refexplicitrefwarnjmedia-committer-agreementuh1hhhhMrhjJubh.}(hjJhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMrhjhhubh)}(h_For more details about PGP signing, please read Documentation/process/maintainer-pgp-guide.rst.h]h_For more details about PGP signing, please read Documentation/process/maintainer-pgp-guide.rst.}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMwhjhhubeh}(h](*authentication-for-pull-and-merge-requestsjeh ]h"](*authentication for pull and merge requestsmedia-developers-gpgeh$]h&]uh1hhjhhhhhMjjS }jjsjU }jjsubeh}(h]media-development-sitesah ]h"]media development sitesah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h#Maintaining media maintainer statush]h#Maintaining media maintainer status}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhM{ubh)}(h!See :ref:`Maintain Media Status`.h](hSee }(hjhhhNhNubh)}(h:ref:`Maintain Media Status`h]jp)}(hjh]hMaintain Media Status}(hjhhhNhNubah}(h]h ](j{stdstd-refeh"]h$]h&]uh1johjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftyperef refexplicitrefwarnjmaintain media statusuh1hhhhM}hjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhM}hjhhubeh}(h]#maintaining-media-maintainer-statusah ]h"]#maintaining media maintainer statusah$]h&]uh1hhhhhhhhM{ubh)}(hhh](h)}(hList of Media Maintainersh]hList of Media Maintainers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhMubh)}(hmThe Media Maintainers listed here all have patchwork access and can make Pull Requests or have commit rights.h]hmThe Media Maintainers listed here all have patchwork access and can make Pull Requests or have commit rights.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjhhubjc)}(hhh](jh)}(hwThe Media Subsystem Maintainers are: - Mauro Carvalho Chehab - Hans Verkuil h](jn)}(h$The Media Subsystem Maintainers are:h]h$The Media Subsystem Maintainers are:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jmhhhMhj ubj)}(hhh]j!)}(hhh](j&)}(h*Mauro Carvalho Chehab h]h)}(hj$h](hMauro Carvalho Chehab <}(hj&hhhNhNubj)}(hmchehab@kernel.orgh]hmchehab@kernel.org}(hj-hhhNhNubah}(h]h ]h"]h$]h&]refurimailto:mchehab@kernel.orguh1jhj&ubh>}(hj&hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj"ubah}(h]h ]h"]h$]h&]uh1j%hjubj&)}(h#Hans Verkuil h]h)}(h"Hans Verkuil h](hHans Verkuil <}(hjQhhhNhNubj)}(hhverkuil@kernel.orgh]hhverkuil@kernel.org}(hjYhhhNhNubah}(h]h ]h"]h$]h&]refurimailto:hverkuil@kernel.orguh1jhjQubh>}(hjQhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjMubah}(h]h ]h"]h$]h&]uh1j%hjubeh}(h]h ]h"]h$]h&]jjuh1j hhhMhjubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jghhhMhjubjh)}(hXThe Media Core Maintainers are: - Sakari Ailus - Media controller drivers - Core media controller framework - ISP - sensor drivers - v4l2-async and v4l2-fwnode core frameworks - v4l2-flash-led-class core framework - Mauro Carvalho Chehab - DVB - Laurent Pinchart - Media controller drivers - Core media controller framework - ISP - Hans Verkuil - V4L2 drivers - V4L2 and videobuf2 core frameworks - HDMI CEC drivers - HDMI CEC core framework - Sean Young - Remote Controller (infrared) drivers - Remote Controller (infrared) core framework h](jn)}(hThe Media Core Maintainers are:h]hThe Media Core Maintainers are:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jmhhhMhjubj)}(hhh]j!)}(hhh](j&)}(hSakari Ailus - Media controller drivers - Core media controller framework - ISP - sensor drivers - v4l2-async and v4l2-fwnode core frameworks - v4l2-flash-led-class core framework h](h)}(h+Sakari Ailus h](hSakari Ailus <}(hjhhhNhNubj)}(hsakari.ailus@linux.intel.comh]hsakari.ailus@linux.intel.com}(hjhhhNhNubah}(h]h ]h"]h$]h&]refuri#mailto:sakari.ailus@linux.intel.comuh1jhjubh>}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjubj!)}(hhh](j&)}(hMedia controller driversh]h)}(hjh]hMedia controller drivers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1j%hjubj&)}(hCore media controller frameworkh]h)}(hjh]hCore media controller framework}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1j%hjubj&)}(hISPh]h)}(hjh]hISP}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1j%hjubj&)}(hsensor driversh]h)}(hjh]hsensor drivers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1j%hjubj&)}(h*v4l2-async and v4l2-fwnode core frameworksh]h)}(hj*h]h*v4l2-async and v4l2-fwnode core frameworks}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj(ubah}(h]h ]h"]h$]h&]uh1j%hjubj&)}(h$v4l2-flash-led-class core framework h]h)}(h#v4l2-flash-led-class core frameworkh]h#v4l2-flash-led-class core framework}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj?ubah}(h]h ]h"]h$]h&]uh1j%hjubeh}(h]h ]h"]h$]h&]jjuh1j hhhMhjubeh}(h]h ]h"]h$]h&]uh1j%hjubj&)}(h2Mauro Carvalho Chehab - DVB h](h)}(h*Mauro Carvalho Chehab h](hMauro Carvalho Chehab <}(hjghhhNhNubj)}(hmchehab@kernel.orgh]hmchehab@kernel.org}(hjohhhNhNubah}(h]h ]h"]h$]h&]refurimailto:mchehab@kernel.orguh1jhjgubh>}(hjghhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjcubj!)}(hhh]j&)}(hDVB h]h)}(hDVBh]hDVB}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]jjuh1j hhhMhjcubeh}(h]h ]h"]h$]h&]uh1j%hjubj&)}(hyLaurent Pinchart - Media controller drivers - Core media controller framework - ISP h](h)}(h4Laurent Pinchart h](hLaurent Pinchart <}(hjhhhNhNubj)}(h!laurent.pinchart@ideasonboard.comh]h!laurent.pinchart@ideasonboard.com}(hjhhhNhNubah}(h]h ]h"]h$]h&]refuri(mailto:laurent.pinchart@ideasonboard.comuh1jhjubh>}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjubj!)}(hhh](j&)}(hMedia controller driversh]h)}(hjh]hMedia controller drivers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1j%hjubj&)}(hCore media controller frameworkh]h)}(hjh]hCore media controller framework}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1j%hjubj&)}(hISP h]h)}(hISPh]hISP}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1j%hjubeh}(h]h ]h"]h$]h&]jjuh1j hhhMhjubeh}(h]h ]h"]h$]h&]uh1j%hjubj&)}(hHans Verkuil - V4L2 drivers - V4L2 and videobuf2 core frameworks - HDMI CEC drivers - HDMI CEC core framework h](h)}(h"Hans Verkuil h](hHans Verkuil <}(hj/hhhNhNubj)}(hhverkuil@kernel.orgh]hhverkuil@kernel.org}(hj7hhhNhNubah}(h]h ]h"]h$]h&]refurimailto:hverkuil@kernel.orguh1jhj/ubh>}(hj/hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj+ubj!)}(hhh](j&)}(h V4L2 driversh]h)}(hjVh]h V4L2 drivers}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjTubah}(h]h ]h"]h$]h&]uh1j%hjQubj&)}(h"V4L2 and videobuf2 core frameworksh]h)}(hjmh]h"V4L2 and videobuf2 core frameworks}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjkubah}(h]h ]h"]h$]h&]uh1j%hjQubj&)}(hHDMI CEC driversh]h)}(hjh]hHDMI CEC drivers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1j%hjQubj&)}(hHDMI CEC core framework h]h)}(hHDMI CEC core frameworkh]hHDMI CEC core framework}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1j%hjQubeh}(h]h ]h"]h$]h&]jjuh1j hhhMhj+ubeh}(h]h ]h"]h$]h&]uh1j%hjubj&)}(hqSean Young - Remote Controller (infrared) drivers - Remote Controller (infrared) core framework h](h)}(hSean Young h](h Sean Young <}(hjhhhNhNubj)}(h sean@mess.orgh]h sean@mess.org}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurimailto:sean@mess.orguh1jhjubh>}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjubj!)}(hhh](j&)}(h$Remote Controller (infrared) driversh]h)}(hjh]h$Remote Controller (infrared) drivers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1j%hjubj&)}(h,Remote Controller (infrared) core framework h]h)}(h+Remote Controller (infrared) core frameworkh]h+Remote Controller (infrared) core framework}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1j%hjubeh}(h]h ]h"]h$]h&]jjuh1j hhhMhjubeh}(h]h ]h"]h$]h&]uh1j%hjubeh}(h]h ]h"]h$]h&]jjuh1j hhhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jghhhMhjhhubjh)}(hThe Media Driver Maintainers responsible for specific areas are: - Nicolas Dufresne - Codec drivers - M2M driver not otherwise delegated - Bryan O'Donoghue - Qualcomm drivers h](jn)}(h@The Media Driver Maintainers responsible for specific areas are:h]h@The Media Driver Maintainers responsible for specific areas are:}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jmhhhMhj3ubj)}(hhh]j!)}(hhh](j&)}(hhNicolas Dufresne - Codec drivers - M2M driver not otherwise delegated h](h)}(h1Nicolas Dufresne h](hNicolas Dufresne <}(hjOhhhNhNubj)}(hnicolas.dufresne@collabora.comh]hnicolas.dufresne@collabora.com}(hjWhhhNhNubah}(h]h ]h"]h$]h&]refuri%mailto:nicolas.dufresne@collabora.comuh1jhjOubh>}(hjOhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjKubj!)}(hhh](j&)}(h Codec driversh]h)}(hjvh]h Codec drivers}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjtubah}(h]h ]h"]h$]h&]uh1j%hjqubj&)}(h#M2M driver not otherwise delegated h]h)}(h"M2M driver not otherwise delegatedh]h"M2M driver not otherwise delegated}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1j%hjqubeh}(h]h ]h"]h$]h&]jjuh1j hhhMhjKubeh}(h]h ]h"]h$]h&]uh1j%hjHubj&)}(hBBryan O'Donoghue - Qualcomm drivers h](h)}(h-Bryan O'Donoghue h](hBryan O’Donoghue <}(hjhhhNhNubj)}(hbryan.odonoghue@linaro.orgh]hbryan.odonoghue@linaro.org}(hjhhhNhNubah}(h]h ]h"]h$]h&]refuri!mailto:bryan.odonoghue@linaro.orguh1jhjubh>}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjubj!)}(hhh]j&)}(hQualcomm drivers h]h)}(hQualcomm driversh]hQualcomm drivers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]jjuh1j hhhMhjubeh}(h]h ]h"]h$]h&]uh1j%hjHubeh}(h]h ]h"]h$]h&]jjuh1j hhhMhjEubah}(h]h ]h"]h$]h&]uh1jhj3ubeh}(h]h ]h"]h$]h&]uh1jghhhMhjhhubeh}(h]h ]h"]h$]h&]uh1jbhjhhhNhNubeh}(h]list-of-media-maintainersah ]h"]list of media maintainersah$]h&]uh1hhhhhhhhMubh)}(hhh](h)}(hSubmit Checklist Addendumh]hSubmit Checklist Addendum}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhMubh)}(hPatches 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.h]hPatches 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.}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjhhubh)}(hThere 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:h](h&There is a set of compliance tools at }(hj;hhhNhNubj)}(h&https://git.linuxtv.org/v4l-utils.git/h]h&https://git.linuxtv.org/v4l-utils.git/}(hjChhhNhNubah}(h]h ]h"]h$]h&]refurijEuh1jhj;ubh_ that should be used in order to check if the drivers are properly implementing the media APIs:}(hj;hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjhhubhtable)}(hhh]htgroup)}(hhh](hcolspec)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jfhjcubjg)}(hhh]h}(h]h ]h"]h$]h&]colwidthK7uh1jfhjcubhthead)}(hhh]hrow)}(hhh](hentry)}(hhh]h)}(hTypeh]hType}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hUtilityh]hUtility}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj~ubah}(h]h ]h"]h$]h&]uh1j|hjcubhtbody)}(hhh](j)}(hhh](j)}(hhh]h)}(hV4L2 drivers\ [5]_h](hV4L2 drivers }(hjhhhNhNubjx)}(h[5]_h]h5}(hjhhhNhNubah}(h]id17ah ]h"]h$]h&]jid18jjuh1jwhjjKubeh}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h``v4l2-compliance``h]jj)}(hjh]hv4l2-compliance}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hV4L2 virtual driversh]hV4L2 virtual drivers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h``contrib/test/test-media``h]jj)}(hj6h]hcontrib/test/test-media}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj4ubah}(h]h ]h"]h$]h&]uh1hhhhMhj1ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(h CEC driversh]h CEC drivers}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjZubah}(h]h ]h"]h$]h&]uh1jhjWubj)}(hhh]h)}(h``cec-compliance``h]jj)}(hjvh]hcec-compliance}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjtubah}(h]h ]h"]h$]h&]uh1hhhhMhjqubah}(h]h ]h"]h$]h&]uh1jhjWubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjcubeh}(h]h ]h"]h$]h&]colsKuh1jahj^ubah}(h]h ]h"]h$]h&]uh1j\hjhhhhhNubj)}(h\The ``v4l2-compliance`` utility also covers the media controller usage inside V4L2 drivers. h](j)}(h5h]h5}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh)}(h[The ``v4l2-compliance`` utility also covers the media controller usage inside V4L2 drivers.h](hThe }(hjhhhNhNubjj)}(h``v4l2-compliance``h]hv4l2-compliance}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubhD utility also covers the media controller usage inside V4L2 drivers.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjubeh}(h]jah ]h"]5ah$]h&]jajjuh1jhhhMhjhhjKubh)}(h8Those tests need to pass before the patches go upstream.h]h8Those tests need to pass before the patches go upstream.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjhhubh)}(h3Also, please notice that we build the Kernel with::h]h2Also, please notice that we build the Kernel with:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjhhubjl )}(hUmake CF=-D__CHECK_ENDIAN__ CONFIG_DEBUG_SECTION_MISMATCH=y C=1 W=1 CHECK=check_scripth]hUmake CF=-D__CHECK_ENDIAN__ CONFIG_DEBUG_SECTION_MISMATCH=y C=1 W=1 CHECK=check_script}hjsbah}(h]h ]h"]h$]h&]hhuh1jk hhhMhjhhubh)}(hWhere the check script is::h]hWhere the check script is:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjhhubjl )}(hM#!/bin/bash /devel/smatch/smatch -p=kernel $@ >&2 /devel/sparse/sparse $@ >&2h]hM#!/bin/bash /devel/smatch/smatch -p=kernel $@ >&2 /devel/sparse/sparse $@ >&2}hjsbah}(h]h ]h"]h$]h&]hhuh1jk hhhMhjhhubh)}(hQBe sure to not introduce new warnings on your patches without a very good reason.h]hQBe sure to not introduce new warnings on your patches without a very good reason.}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjhhubh)}(hEPlease see `Media development workflow`_ for e-mail submission rules.h](h Please see }(hj7hhhNhNubj)}(h`Media development workflow`_h]hMedia development workflow}(hj?hhhNhNubah}(h]h ]h"]h$]h&]nameMedia development workflowjj uh1jhj7jKubh for e-mail submission rules.}(hj7hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjhhubh)}(hhh](h)}(hStyle Cleanup Patchesh]hStyle Cleanup Patches}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjYhhhhhMubh)}(hwStyle cleanups are welcome when they come together with other changes at the files where the style changes will affect.h]hwStyle cleanups are welcome when they come together with other changes at the files where the style changes will affect.}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjYhhubh)}(hX{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.h]hX}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.}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjYhhubeh}(h]style-cleanup-patchesah ]h"]style cleanup patchesah$]h&]uh1hhjhhhhhMubh)}(hhh](h)}(hCoding Style Addendumh]hCoding Style Addendum}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhMubh)}(hXMedia development uses ``checkpatch.pl`` on strict mode to verify the code style, e.g.::h](hMedia development uses }(hjhhhNhNubjj)}(h``checkpatch.pl``h]h checkpatch.pl}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubh/ on strict mode to verify the code style, e.g.:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjhhubjl )}(h7$ ./scripts/checkpatch.pl --strict --max-line-length=80h]h7$ ./scripts/checkpatch.pl --strict --max-line-length=80}hjsbah}(h]h ]h"]h$]h&]hhuh1jk hhhMhjhhubh)}(hIn 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``.h](hIn 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 }(hjhhhNhNubjj)}(h``checkpatch.pl``h]h checkpatch.pl}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjhhubh)}(hPlease 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.h](hQPlease notice that the goal here is to improve code readability. On a few cases, }(hjhhhNhNubjj)}(h``checkpatch.pl``h]h checkpatch.pl}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubhV may actually point to something that would look worse. So, you should use good sense.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjhhubh)}(hXNote 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.h](hNote that addressing one }(hj hhhNhNubjj)}(h``checkpatch.pl``h]h checkpatch.pl}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihj ubhXe 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.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjhhubh)}(h9In particular, we accept lines with more than 80 columns:h]h9In particular, we accept lines with more than 80 columns:}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjhhubj)}(hX]- on strings, as they shouldn't be broken due to line length limits; - when a function or variable name needs to have a long identifier name, which makes hard to honor the 80 columns limit; - on arithmetic expressions, when breaking lines makes them harder to read; - when they avoid a line ending with an open parenthesis or an open bracket. h]j!)}(hhh](j&)}(hBon strings, as they shouldn't be broken due to line length limits;h]h)}(hjDh]hDon strings, as they shouldn’t be broken due to line length limits;}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjBubah}(h]h ]h"]h$]h&]uh1j%hj?ubj&)}(hvwhen a function or variable name needs to have a long identifier name, which makes hard to honor the 80 columns limit;h]h)}(hvwhen a function or variable name needs to have a long identifier name, which makes hard to honor the 80 columns limit;h]hvwhen a function or variable name needs to have a long identifier name, which makes hard to honor the 80 columns limit;}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjYubah}(h]h ]h"]h$]h&]uh1j%hj?ubj&)}(hIon arithmetic expressions, when breaking lines makes them harder to read;h]h)}(hIon arithmetic expressions, when breaking lines makes them harder to read;h]hIon arithmetic expressions, when breaking lines makes them harder to read;}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjqubah}(h]h ]h"]h$]h&]uh1j%hj?ubj&)}(hKwhen they avoid a line ending with an open parenthesis or an open bracket. h]h)}(hJwhen they avoid a line ending with an open parenthesis or an open bracket.h]hJwhen they avoid a line ending with an open parenthesis or an open bracket.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjubah}(h]h ]h"]h$]h&]uh1j%hj?ubeh}(h]h ]h"]h$]h&]jjuh1j hhhMhj;ubah}(h]h ]h"]h$]h&]uh1jhhhMhjhhubeh}(h]coding-style-addendumah ]h"]coding style addendumah$]h&]uh1hhjhhhhhMubeh}(h]submit-checklist-addendumah ]h"]submit checklist addendumah$]h&]uh1hhhhhhhhMubh)}(hhh](h)}(hKey Cycle Datesh]hKey Cycle Dates}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhM ubh)}(hNew submissions can be sent at any time, but if they are intended to hit the next merge window they should be sent before -rc5, and ideally stabilized in the linux-media branch by -rc6.h]hNew submissions can be sent at any time, but if they are intended to hit the next merge window they should be sent before -rc5, and ideally stabilized in the linux-media branch by -rc6.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM hjhhubeh}(h]key-cycle-datesah ]h"]key cycle datesah$]h&]uh1hhhhhhhhM ubh)}(hhh](h)}(hReview Cadenceh]hReview Cadence}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhMubh)}(hProvided that your patch has landed in `Patchwork `_, it should be sooner or later handled, so you don't need to re-submit a patch.h](h'Provided that your patch has landed in }(hjhhhNhNubj)}(hF`Patchwork `_h]h Patchwork}(hjhhhNhNubah}(h]h ]h"]h$]h&]name Patchworkj7https://patchwork.linuxtv.org/project/linux-media/list/uh1jhjubj)}(h: h]h}(h]id19ah ]h"]h$] patchworkah&]refurij uh1jjKhjubhQ, it should be sooner or later handled, so you don’t need to re-submit a patch.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjhhubh)}(hxExcept for important bug fixes, we don't usually add new patches to the development tree between -rc6 and the next -rc1.h]hzExcept for important bug fixes, we don’t usually add new patches to the development tree between -rc6 and the next -rc1.}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhjhhubh)}(hX+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.h](hPlease 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 }(hj3hhhNhNubjj)}(h``Reviewed-by:``h]h Reviewed-by:}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj3ubh and, more importantly, }(hj3hhhNhNubjj)}(h``Tested-by:``h]h Tested-by:}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jihj3ubh tags.}(hj3hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhjhhubh)}(hPlease note that we expect a detailed description for ``Tested-by:``, identifying what boards were used during the test and what it was tested.h](h6Please note that we expect a detailed description for }(hjehhhNhNubjj)}(h``Tested-by:``h]h Tested-by:}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjeubhK, identifying what boards were used during the test and what it was tested.}(hjehhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhM hjhhubeh}(h]review-cadenceah ]h"]review cadenceah$]h&]uh1hhhhhhhhMubeh}(h]media-subsystem-profileah ]h"]media subsystem profileah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksjfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjerror_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourcehnj _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}(1]jya2]ja3]j a4]j a5]jamedia development workflow]j?aurefids}(j ]j aj]jaunameids}(jjj+j(jjjjjjjjjAj>jjjjjjjjjpjmjO j jjjj jj jjjjjjjjjjjjjjjjjjjju nametypes}(jj+jjjjjAjjjjjpjO jjjjjjjjjjjjjuh}(jhj(hjjyjjjj.jjjjjjj>jjMjGjFj@jjDjjjjjjj8j2jmjgj j jL j j j jjW j j j j jCj=jej_j jvjjj jjjjjjjjjjjjjjjjjYjjjjjjjju footnote_refs}(j]jyaj]jaj]j aj]j aj]jau citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes](jjjvjje citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}jKsRparse_messages](hsystem_message)}(hhh]h)}(h,Duplicate explicit target name: "patchwork".h]h0Duplicate explicit target name: “patchwork”.}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj.ubah}(h]h ]h"]h$]h&]jMalevelKtypeINFOsourcehnjlineKuh1j,hjhhhhhKhubj-)}(hhh]h)}(h,Duplicate explicit target name: "patchwork".h]h0Duplicate explicit target name: “patchwork”.}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJubah}(h]h ]h"]h$]h&]jFalevelKtypejGsourcehnjlineKuh1j,hjhhhhhKyubj-)}(hhh]h)}(h,Duplicate explicit target name: "patchwork".h]h0Duplicate explicit target name: “patchwork”.}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjeubah}(h]h ]h"]h$]h&]j8alevelKtypejGsourcehnjlineKuh1j,hjubj-)}(hhh]h)}(h=Duplicate implicit target name: "media development workflow".h]hADuplicate implicit target name: “media development workflow”.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]jL alevelKtypejGsourcehnjlineKuh1j,hj hhhhhKubj-)}(hhh]h)}(h,Duplicate explicit target name: "patchwork".h]h0Duplicate explicit target name: “patchwork”.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]j alevelKtypejGsourcehnjlineKuh1j,hj hhhhhM2ubj-)}(hhh]h)}(h,Duplicate explicit target name: "patchwork".h]h0Duplicate explicit target name: “patchwork”.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]jCalevelKtypejGsourcehnjlineKuh1j,hjW hhhhhM]ubj-)}(hhh]h)}(h,Duplicate explicit target name: "patchwork".h]h0Duplicate explicit target name: “patchwork”.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]jealevelKtypejGsourcehnjlineKuh1j,hjW hhhhhM]ubj-)}(hhh]h)}(h,Duplicate explicit target name: "patchwork".h]h0Duplicate explicit target name: “patchwork”.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]jalevelKtypejGsourcehnjlineKuh1j,hjvubj-)}(hhh]h)}(h,Duplicate explicit target name: "patchwork".h]h0Duplicate explicit target name: “patchwork”.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]jalevelKtypejGsourcehnjlineKuh1j,hjhhhhhMubetransform_messages]j-)}(hhh]h)}(hhh]h:Hyperlink target "media-developers-gpg" is not referenced.}hj'sbah}(h]h ]h"]h$]h&]uh1hhj$ubah}(h]h ]h"]h$]h&]levelKtypejGsourcehnjlineMguh1j,uba transformerN include_log] decorationNhhub.