xref: /arm-trusted-firmware/docs/process/platform-ports-policy.rst (revision 91f16700b400a8c0651d24a598fc48ee2997a0d7)
1*91f16700SchasingluluPlatform Ports Policy
2*91f16700Schasinglulu=====================
3*91f16700Schasinglulu
4*91f16700SchasingluluThis document clarifies a couple of policy points around platform ports
5*91f16700Schasinglulumanagement.
6*91f16700Schasinglulu
7*91f16700SchasingluluPlatform compatibility policy
8*91f16700Schasinglulu-----------------------------
9*91f16700Schasinglulu
10*91f16700SchasingluluPlatform compatibility is mainly affected by changes to Platform APIs (as
11*91f16700Schasingluludocumented in the :ref:`Porting Guide`), driver APIs (like the GICv3 drivers) or
12*91f16700Schasinglululibrary interfaces (like xlat_table library). The project will try to maintain
13*91f16700Schasinglulucompatibility for upstream platforms.
14*91f16700Schasinglulu
15*91f16700SchasingluluDue to evolving requirements and enhancements, there might be changes affecting
16*91f16700Schasingluluplatform compatibility, which means the previous interface needs to be deprecated
17*91f16700Schasingluluand a new interface introduced to replace it. In case the migration to the new
18*91f16700Schasingluluinterface is trivial, the contributor of the change is expected to make good
19*91f16700Schasinglulueffort to migrate the upstream platforms to the new interface.
20*91f16700Schasinglulu
21*91f16700SchasingluluThe project will generally not take into account downstream platforms. If those
22*91f16700Schasingluluare affected by a deprecation / removal decision, we encourage their maintainers
23*91f16700Schasingluluto upstream their platform code or copy the latest version of the code being
24*91f16700Schasingluludeprecated into their downstream tree.
25*91f16700Schasinglulu
26*91f16700SchasingluluThe deprecated interfaces are listed inside :ref:`Release Processes` as well as
27*91f16700Schasingluluthe release after which each one will be removed. When an interface is
28*91f16700Schasingluludeprecated, the page must be updated to indicate the release after which the
29*91f16700Schasingluluinterface will be removed. This must be at least 1 full release cycle in future.
30*91f16700SchasingluluFor non-trivial interface changes, an email should be sent out to the `TF-A
31*91f16700Schasinglulupublic mailing list`_ to notify platforms that they should migrate away from the
32*91f16700Schasingluludeprecated interfaces. Platforms are expected to migrate before the removal of
33*91f16700Schasingluluthe deprecated interface.
34*91f16700Schasinglulu
35*91f16700SchasingluluDeprecation policy
36*91f16700Schasinglulu------------------
37*91f16700Schasinglulu
38*91f16700SchasingluluIf a platform, driver or library interface is no longer maintained, it is best
39*91f16700Schasingluluto deprecate it to keep the projects' source tree clean and healthy. Deprecation
40*91f16700Schasinglulucan be a 1-stage or 2-stage process (up to the maintainers).
41*91f16700Schasinglulu
42*91f16700Schasinglulu - *2-stage*: The source code can be kept in the repository for a cooling off
43*91f16700Schasinglulu   period before deleting it (typically 2 release cycles). In this case, we keep
44*91f16700Schasinglulu   track of the *Deprecated* version separately from the *Deleted* version.
45*91f16700Schasinglulu
46*91f16700Schasinglulu - *1-stage*: The source code can be deleted straight away. In this case, both
47*91f16700Schasinglulu   versions are the same.
48*91f16700Schasinglulu
49*91f16700SchasingluluThe :ref:`Platform Ports` page provides a list of all deprecated/deleted
50*91f16700Schasingluluplatform ports (or soon to be) to this day.
51*91f16700Schasinglulu
52*91f16700Schasinglulu--------------
53*91f16700Schasinglulu
54*91f16700Schasinglulu*Copyright (c) 2018-2023, Arm Limited and Contributors. All rights reserved.*
55*91f16700Schasinglulu
56*91f16700Schasinglulu.. _TF-A public mailing list: https://lists.trustedfirmware.org/mailman3/lists/tf-a.lists.trustedfirmware.org/
57