.. SPDX-License-Identifier: GPL-2.0

=============
SoC Subsystem
=============

Overview
--------

The SoC subsystem is a place of aggregation for SoC-specific code.
The main components of the subsystem are:

* devicetrees (DTS) for 32- & 64-bit ARM and RISC-V
* 32-bit ARM board files (arch/arm/mach*)
* 32- & 64-bit ARM defconfigs
* SoC-specific drivers across architectures, in particular for 32- & 64-bit
  ARM, RISC-V and Loongarch

These "SoC-specific drivers" do not include clock, GPIO etc drivers that have
other top-level maintainers. The drivers/soc/ directory is generally meant
for kernel-internal drivers that are used by other drivers to provide SoC-
specific functionality like identifying an SoC revision or interfacing with
power domains.

The SoC subsystem also serves as an intermediate location for changes to
drivers/bus, drivers/firmware, drivers/reset and drivers/memory.  The addition
of new platforms, or the removal of existing ones, often go through the SoC
tree as a dedicated branch covering multiple subsystems.

The main SoC tree is housed on git.kernel.org:
  https://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git/

Maintainers
-----------

Clearly this is quite a wide range of topics, which no one person, or even
small group of people are capable of maintaining.  Instead, the SoC subsystem
is comprised of many submaintainers (platform maintainers), each taking care of
individual platforms and driver subdirectories.
In this regard, "platform" usually refers to a series of SoCs from a given
vendor, for example, Nvidia's series of Tegra SoCs.  Many submaintainers operate
on a vendor level, responsible for multiple product lines.  For several reasons,
including acquisitions/different business units in a company, things vary
significantly here.  The various submaintainers are documented in the
MAINTAINERS file.

Most of these submaintainers have their own trees where they stage patches,
sending pull requests to the main SoC tree.  These trees are usually, but not
always, listed in MAINTAINERS.

What the SoC tree is not, however, is a location for architecture-specific code
changes.  Each architecture has its own maintainers that are responsible for
architectural details, CPU errata and the like.

Submitting Patches for Given SoC
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

All typical platform related patches should be sent via SoC submaintainers
(platform-specific maintainers).  This includes also changes to per-platform or
shared defconfigs. Note that scripts/get_maintainer.pl might not provide
correct addresses for the shared defconfig, so ignore its output and manually
create CC-list based on MAINTAINERS file or use something like
``scripts/get_maintainer.pl -f drivers/soc/FOO/``.

Submitting Patches to the Main SoC Maintainers
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The main SoC maintainers can be reached via the alias soc@kernel.org only in
following cases:

1. There are no platform-specific maintainers.

2. Platform-specific maintainers are unresponsive.

3. Introducing a completely new SoC platform.  Such new SoC work should be sent
   first to common mailing lists, pointed out by scripts/get_maintainer.pl, for
   community review.  After positive community review, work should be sent to
   soc@kernel.org in one patchset containing new arch/foo/Kconfig entry, DTS
   files, MAINTAINERS file entry and optionally initial drivers with their
   Devicetree bindings.  The MAINTAINERS file entry should list new
   platform-specific maintainers, who are going to be responsible for handling
   patches for the platform from now on.

Note that the soc@kernel.org is usually not the place to discuss the patches,
thus work sent to this address should be already considered as acceptable by
the community.

Information for (new) Submaintainers
------------------------------------

As new platforms spring up, they often bring with them new submaintainers,
many of whom work for the silicon vendor, and may not be familiar with the
process.

Devicetree ABI Stability
~~~~~~~~~~~~~~~~~~~~~~~~

Perhaps one of the most important things to highlight is that dt-bindings
document the ABI between the devicetree and the kernel.
Please read Documentation/devicetree/bindings/ABI.rst.

If changes are being made to a DTS that are incompatible with old
kernels, the DTS patch should not be applied until the driver is, or an
appropriate time later.  Most importantly, any incompatible changes should be
clearly pointed out in the patch description and pull request, along with the
expected impact on existing users, such as bootloaders or other operating
systems.

Driver Branch Dependencies
~~~~~~~~~~~~~~~~~~~~~~~~~~

A common problem is synchronizing changes between device drivers and devicetree
files. Even if a change is compatible in both directions, this may require
coordinating how the changes get merged through different maintainer trees.

Usually the branch that includes a driver change will also include the
corresponding change to the devicetree binding description, to ensure they are
in fact compatible.  This means that the devicetree branch can end up causing
warnings in the ``make dtbs_check`` step.  If a devicetree change depends on
missing additions to a header file in include/dt-bindings/, it will fail the
``make dtbs`` step and not get merged.

There are multiple ways to deal with this:

* Avoid defining custom macros in include/dt-bindings/ for hardware constants
  that can be derived from a datasheet -- binding macros in header files should
  only be used as a last resort if there is no natural way to define a binding

* Use literal values in the devicetree file in place of macros even when a
  header is required, and change them to the named representation in a
  following release

* Defer the devicetree changes to a release after the binding and driver have
  already been merged

* Change the bindings in a shared immutable branch that is used as the base for
  both the driver change and the devicetree changes

* Add duplicate defines in the devicetree file guarded by an #ifndef section,
  removing them in a later release

Devicetree Naming Convention
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The general naming scheme for devicetree files is as follows.  The aspects of a
platform that are set at the SoC level, like CPU cores, are contained in a file
named $soc.dtsi, for example, jh7100.dtsi.  Integration details, that will vary
from board to board, are described in $soc-$board.dts.  An example of this is
jh7100-beaglev-starlight.dts.  Often many boards are variations on a theme, and
frequently there are intermediate files, such as jh7100-common.dtsi, which sit
between the $soc.dtsi and $soc-$board.dts files, containing the descriptions of
common hardware.

Some platforms also have System on Modules, containing an SoC, which are then
integrated into several different boards. For these platforms, $soc-$som.dtsi
and $soc-$som-$board.dts are typical.

Directories are usually named after the vendor of the SoC at the time of its
inclusion, leading to some historical directory names in the tree.

Validating Devicetree Files
~~~~~~~~~~~~~~~~~~~~~~~~~~~

``make dtbs_check`` can be used to validate that devicetree files are compliant
with the dt-bindings that describe the ABI.  Please read the section
"Running checks" of Documentation/devicetree/bindings/writing-schema.rst for
more information on the validation of devicetrees.

For new platforms, or additions to existing ones, ``make dtbs_check`` should not
add any new warnings.  For RISC-V and Samsung SoC, ``make dtbs_check W=1`` is
required to not add any new warnings.

Branches and Pull Requests
~~~~~~~~~~~~~~~~~~~~~~~~~~

Just as the main SoC tree has several branches, it is expected that
submaintainers will do the same. Driver, defconfig and devicetree changes should
all be split into separate branches and appear in separate pull requests to the
SoC maintainers.  Each branch should be usable by itself and avoid
regressions that originate from dependencies on other branches.

Small sets of patches can also be sent as separate emails to soc@kernel.org,
grouped into the same categories.

If changes do not fit into the normal patterns, there can be additional
top-level branches, e.g. for a treewide rework, or the addition of new SoC
platforms including dts files and drivers.

Branches with a lot of changes can benefit from getting split up into separate
topics branches, even if they end up getting merged into the same branch of the
SoC tree.  An example here would be one branch for devicetree warning fixes, one
for a rework and one for newly added boards.

Another common way to split up changes is to send an early pull request with the
majority of the changes at some point between rc1 and rc4, following up with one
or more smaller pull requests towards the end of the cycle that can add late
changes or address problems identified while testing the first set.

While there is no cut-off time for late pull requests, it helps to only send
small branches as time gets closer to the merge window.

Pull requests for bugfixes for the current release can be sent at any time, but
again having multiple smaller branches is better than trying to combine too many
patches into one pull request.

The subject line of a pull request should begin with "[GIT PULL]" and made using
a signed tag, rather than a branch.  This tag should contain a short description
summarising the changes in the pull request.  For more detail on sending pull
requests, please see Documentation/maintainer/pull-requests.rst.

Defconfigs purpose
~~~~~~~~~~~~~~~~~~

Defconfigs are primarily used by the kernel developers, because distros have
their own configs.  A change adding new CONFIG options to a defconfig should
explain why the kernel developers in general would want such option, e.g. by
providing a name of an upstream-supported machine/board using that new option.
This implies that enabling options in defconfig for non-upstream machines shall
not be accepted.
