| #
d1b5ada8 |
| 19-Jul-2023 |
Manish V Badarkhe <manish.badarkhe@arm.com> |
Merge changes from topic "msm8916-plats" into integration
* changes: docs(msm8916): document new platforms feat(msm8916): add port for MDM9607 refactor(msm8916): handle single core platforms
Merge changes from topic "msm8916-plats" into integration
* changes: docs(msm8916): document new platforms feat(msm8916): add port for MDM9607 refactor(msm8916): handle single core platforms feat(msm8916): add port for MSM8939 feat(msm8916): power on L2 caches for secondary clusters feat(msm8916): initialize CCI-400 for multiple clusters refactor(msm8916): handle multiple CPU clusters feat(msm8916): add port for MSM8909 feat(msm8916): clear CACHE_LOCK for MMU-500 r2p0+ style(msm8916): add missing braces to while statements
show more ...
|
| #
d9e565ea |
| 16-Sep-2022 |
Stephan Gerhold <stephan@gerhold.net> |
refactor(msm8916): handle single core platforms
Some Qualcomm modem platforms (MDM*) are quite similar to MSM8916 except that there is just a single CPU core. This requires some special handling:
refactor(msm8916): handle single core platforms
Some Qualcomm modem platforms (MDM*) are quite similar to MSM8916 except that there is just a single CPU core. This requires some special handling:
- There is no GPU so the GPU SMMU also does not exist. - Looking closely at dumps of the MMIO register regions reveals that some of the register addresses are slightly different.
Add the necessary checks for this to allow building for those platforms.
No functional change for existing platforms.
Change-Id: I0380ac3734876243e970a55d8bec5a8247175343 Signed-off-by: Stephan Gerhold <stephan@gerhold.net>
show more ...
|
| #
1240dc7e |
| 16-Sep-2022 |
Stephan Gerhold <stephan@gerhold.net> |
feat(msm8916): initialize CCI-400 for multiple clusters
The MSM8939 SoC is very similar to MSM8916 but uses an ARM CCI-400 for cache coherence between the two CPU clusters. Add the necessary code to
feat(msm8916): initialize CCI-400 for multiple clusters
The MSM8939 SoC is very similar to MSM8916 but uses an ARM CCI-400 for cache coherence between the two CPU clusters. Add the necessary code to initialize it with the existing driver.
No functional change for platforms with a single cluster. The CCI related code is discarded entirely in this case.
Change-Id: I041d60222d8d2aeca53b392934c87280c66b0db0 Signed-off-by: Stephan Gerhold <stephan@gerhold.net>
show more ...
|
| #
1d7ed58f |
| 16-Sep-2022 |
Stephan Gerhold <stephan@gerhold.net> |
refactor(msm8916): handle multiple CPU clusters
Some Qualcomm platforms similar to MSM8916 have multiple CPU clusters. In this case, some of the hardware blocks are duplicated and must be configured
refactor(msm8916): handle multiple CPU clusters
Some Qualcomm platforms similar to MSM8916 have multiple CPU clusters. In this case, some of the hardware blocks are duplicated and must be configured separately.
Refactor the code to handle additional clusters by introducing loops and some conditionals.
No functional change for existing single cluster platforms.
Change-Id: I5b4b1ad2a1adde559d5b79b7698afe73733b2e90 Signed-off-by: Stephan Gerhold <stephan@gerhold.net>
show more ...
|
| #
d9b04423 |
| 15-Mar-2023 |
Stephan Gerhold <stephan@gerhold.net> |
feat(msm8916): clear CACHE_LOCK for MMU-500 r2p0+
Newer Qualcomm platforms similar to MSM8916 use MMU-500 r2p0+ instead of MMU-500 r0p0. On these versions it is necessary to clear the SMMU_sACR.CACH
feat(msm8916): clear CACHE_LOCK for MMU-500 r2p0+
Newer Qualcomm platforms similar to MSM8916 use MMU-500 r2p0+ instead of MMU-500 r0p0. On these versions it is necessary to clear the SMMU_sACR.CACHE_LOCK bit to allow the normal world to write to SMMU_CBn_ACTLR. Without this Linux shows a warning and is unable to workaround the errata in MMU-500:
arm-smmu 1e00000.iommu: Failed to disable prefetcher [errata #841119 and #826419], check ACR.CACHE_LOCK
Handle this dynamically at runtime by enabling all the necessary SMMU clocks and check the IDR7 register for MMU-500 r2p0+. This must be applied to both SMMUs on the platform: APPS and GPU.
While at it clean up the clock handling: Leave the SMMU clocks on because the normal world will need it again while booting. But make sure the vote register of the RPM co-processor does not keep these clocks always-on. For some reasons some platforms seem to have a non-zero reset value for GCC_RPM_SMMU_CLOCK_BRANCH_ENA_VOTE.
Change-Id: I34cf7d3f2db977b0930eb6e64a870ecaf02a7573 Signed-off-by: Stephan Gerhold <stephan@gerhold.net>
show more ...
|
| #
b9072a34 |
| 17-Jul-2023 |
Stephan Gerhold <stephan@gerhold.net> |
style(msm8916): add missing braces to while statements
According to the coding style all conditional statements (such as if, for, while, do) must use braces regardless of the number of the statement
style(msm8916): add missing braces to while statements
According to the coding style all conditional statements (such as if, for, while, do) must use braces regardless of the number of the statements in the body [1].
Fix this for the code inside plat/qti/msm8916.
[1]: https://trustedfirmware-a.readthedocs.io/en/latest/process/coding-style.html#conditional-statement-bodies
Change-Id: I74f2e65aa2b3a65899e37dfd3f481d90fb15531c Signed-off-by: Stephan Gerhold <stephan@gerhold.net>
show more ...
|
| #
c4c7efe7 |
| 22-Jun-2023 |
Manish V Badarkhe <manish.badarkhe@arm.com> |
Merge changes from topic "msm8916-spmin" into integration
* changes: docs(msm8916): document new build options feat(msm8916): allow selecting which UART to use feat(msm8916): add SP_MIN port f
Merge changes from topic "msm8916-spmin" into integration
* changes: docs(msm8916): document new build options feat(msm8916): allow selecting which UART to use feat(msm8916): add SP_MIN port for AArch32 refactor(msm8916): detect cold boot in plat_get_my_entrypoint feat(msm8916): add Test Secure Payload (TSP) port build(msm8916): place bl32 directly after bl31 refactor(msm8916): separate common platform setup code
show more ...
|
| #
45b2bd0a |
| 28-Aug-2022 |
Stephan Gerhold <stephan@gerhold.net> |
feat(msm8916): add SP_MIN port for AArch32
Use the new shared msm8916 setup code to allow compiling the minimal AArch32 Secure Payload (SP_MIN) as simple PSCI implementation.
AArch64 is preferred f
feat(msm8916): add SP_MIN port for AArch32
Use the new shared msm8916 setup code to allow compiling the minimal AArch32 Secure Payload (SP_MIN) as simple PSCI implementation.
AArch64 is preferred for the Cortex-A53 cores in MSM8916 but there are some similar platforms with AArch32-only Cortex-A7 cores that can benefit from this in future changes.
The AArch32 assembly implementation for msm8916_helpers.S and uartdm_console.S is a direct port of the AArch64 implementation. Only plat_get_my_entrypoint is slightly different because there is no need to handle the "boot remapper" on cold boot for AArch32.
Change-Id: Idf160e86fb3e685fcedec3e051400e6273997b74 Signed-off-by: Stephan Gerhold <stephan@gerhold.net>
show more ...
|
| #
840831b2 |
| 28-Aug-2022 |
Stephan Gerhold <stephan@gerhold.net> |
refactor(msm8916): separate common platform setup code
In preparation of adding BL32 support for the msm8916 platform (AArch32/SP_MIN and TSP), separate the common platform setup code into shared ms
refactor(msm8916): separate common platform setup code
In preparation of adding BL32 support for the msm8916 platform (AArch32/SP_MIN and TSP), separate the common platform setup code into shared msm8916_setup.c and msm8916_config.c files which can be called from both BL31 and BL32.
msm8916_setup.c contains the relevant shared code for BL31/SP_MIN/TSP, while msm8916_config.c is cold boot configuration code that is only relevant for BL31 and SP_MIN (but not TSP).
No functional change.
Change-Id: I055522d5ad8c03dfb8e09236dc47dd383a480e95 Signed-off-by: Stephan Gerhold <stephan@gerhold.net>
show more ...
|