1SCP-firmware Change Log 2======================= 3 4Copyright (c) 2019-2022, Arm Limited and Contributors. All rights reserved. 5 6SCP-firmware - version 2.11 7============================ 8 9New features 10------------ 11 12- Architecture: 13 - ARMv8-M support and V8 MPU support 14 15- New modules: 16 - SCMI requester core module support 17 - SCMI Sensor requester module 18 - Transport module 19 - MHUv3 support 20 21- Platforms: 22 - TC2 platform support 23 - rdfremont: Add new plaform (initial support) 24 25- Tools: 26 - Update CMSIS to newer version 5.8.0 27 - Unit Test framework and Mocking 28 29Changed 30------- 31 32- Build system: 33 - ci: Print build output/information 34 - cmake: update LLVM to ver 13 35 36- Framework: 37 - fwk: Add support of OS interrupt operation 38 - fwk: Add stop sequence 39 40- Platforms: 41 - n1sdp: Introduce trusted board boot 42 - n1sdp: Replace sensor library with a dummy source file 43 - product/rdn2: add support for rdn2 platform variant 2 44 - product/rdn2: Update configuration data for SCMI perf 45 - product/rdv1mc: Update configuration data for SCMI perf 46 - product/rdv1: Update configuration data for SCMI perf 47 - rdn2: Add variant 1 and 2 48 - product/rdn2: enable sp805 watchdog module 49 - product/tc2: Add support for TC2/RSS boot flow 50 51- Modules: 52 - scmi: separate scmi base protocol 53 - fip: extend fip module to accept custom uuid through module config 54 - scmi-perf: move fast channel alarm to event context 55 - thermal-mgmt: Move power allocation to a separate file 56 - sensor: typedef included to give signed or unsigned value options 57 - power-mgmt: add per-domain control loop 58 - thermal-mgmt: add temperature protection functionality 59 - SCMI: Rename BUILD_HAS_FAST_CHANNELS with _SCMI_PERF_ 60 - scmi: add unit tests 61 - scmi_clock: add unit test 62 - module/mhu2: add support for transport module and in-band messages 63 - scmi_perf: Add initial unit tests 64 65Resolved issues 66--------------- 67 68- Build system: 69 - ci_cmake: Add flag to skip container execution 70 - cmake: Fix ArmClang generated images 71 - ci: fix pycodestyle violations in ci_cmake.py 72 - CMake: Add elf extension to firmware target 73 74- Modules: 75 - modules: Compile without notifications 76 - scmi_clock: fix set_rate flag mask defect 77 - cmn700: fix SYS_CACHE_GRP_SN_NODEID calculation 78 - cmn700: ccg: various fixes 79 80- Platforms: 81 - morello: fix timestamp in debug logs 82 - product/morello: align DVFS frequency values of FVP with SoC 83 - juno: Fix the number of rates returns for triplet rate array format 84 85- CLI: 86 - cli: stop alarm when cli is open 87 88Remarks 89------- 90 91The codebase attempts to follow MISRA-2012 rules to the extent detailed in 92doc/code_rules.md. 93 94The maintainers are gradually introducing tools in the attempt to improve the 95overall robustness of the codebase. Since v.2.10, Unit Testing has been 96introduced on a module-level. The final aim is to run unit tests for any new 97modules and any new additions to modules. To allow contributors to some time to 98familiarise with the tool and to avoid imposing additional efforts 99out-of-the-blue, in this release we ask contributors to provide basic unit tests 100for new modules and new additions. This can be done by adding unit tests on the 101same patches adding new features or in separate patches, but need to be within 102the same PR. For work that is already in the RFC in PR, we may make an exception 103to the request. 104We foresee that once the unit test framework support is consolidated, it will be 105possible to contribute to the project only if unit test is also included in the 106contributions. 107 108SCP-firmware - version 2.10 109============================ 110 111New features 112------------ 113 114- Build system: 115 - Stable CMake support has been added 116 - Make build system is being deprecated in this release, and in a future 117 release will be removed completely. No further patches related to the old 118 make build system will be accepted. 119 - LLVM support for armv7-m platforms 120 121- New modules: 122 - Max Power Mitigation Mechanism (MPMM) (initial support) 123 - Traffic Cop performance plugin (initial support) 124 - Added Thermal management (initial support) 125 126- Platforms: 127 - Morello platform support 128 129- Framework: 130 - Removed multi-threading feature, all platforms are now single threaded 131 There is no longer any thread concept, please see relevant commits for 132 details. 133 - framework: Add fwk_string interface 134 135Changed 136------- 137 138Arm is committed to making the language we use inclusive, meaningful, and 139respectful. Offensive terminology has been replaced with more inclusive 140terms throughout the codebase. 141 142The codebase now follows MISRA-2012 rules to the extent detailed in 143doc/code_rules.md. 144 145- Build system: 146 - Add target "doc" to cmake build system 147 148- Framework: 149 - fwk: Remove deprecated function put_event_and_wait 150 - fwk: Reduce SCP power consumption by suspending execution 151 152- Platforms: 153 - tc0: Add cmake support for plugins handler 154 - tc0: Add Power Model 155 - tc0: Add support for Build Variants 156 - tc0: Add PLATFORM_VARIANT feature flag 157 - sgi575/rdn1e1/rdv1/rdv1mc: add cmn650 mapping for 64-bit pcie mmio address space 158 - rdn1e1/rdv1/rdv1mc/rdn2/sgi575: fix gtimer module config in mcp ramfw 159 - synquacer: implement system power-off 160 - rdn2: add mapping for cmn700 address space 161 162- Modules: 163 - scmi_perf: clean up scmi_perf_notify_limits_updated() 164 - scmi_pd: Add power domain set state sync request handling 165 - scmi_sensor/sensor: Multi axis support 166` - scmi_sensor/sensor: add timestamp support 167 - scmi_sensor/sensor: Extended Attributes Support 168 - perf_plugins_handler: Allow multiple plugins 169 - perf_plugins_handler: Add support for full data snapshot 170 - gtimer: add new flag for CNTCONTROL register initialization 171 172Resolved issues 173--------------- 174 175- Build system: 176 - Fix SCP_ENABLE_DEBUGGER feature flag 177 178- Modules: 179 - scmi: shrink log strings to fix error messages 180 - plugins_handler: fix cmake build 181 182- Platforms: 183 - tc0: Fix Voltage Domain configuration 184 - synquacer: enable DDR DQS gate training workaround 185 - synquacer: fix spi nor flash software reset handling 186 187SCP-firmware - version 2.9.0 188============================ 189 190New features 191------------ 192 193- Framework: 194 - Add light events 195 - fwk_log: Add option for minimal banner 196 197- New modules: 198 - Mock Voltage Domain driver 199 - PMI and DWT PMI driver 200 - PCIE integration control register 201 - CMN Skeena 202 - Cadence I2C 203 204- SCMI: 205 - scmi_perf: Add performance plugins handler extension 206 207- Build system: 208 - CMake: Add support for parallel build 209 - CMake: Add support for framework tests 210 211Changed 212------- 213 214- Documentation: 215 - clock: Add documentation for Clock Management Framework 216 217- Arch: 218 - arm: Add interrupt disable/enable inline calls 219 220- Framework: 221 - Remove Signals 222 - Remove module name parameter 223 224- Modules: 225 - clock: Add Clock Management Framework 226 - mod_resource_perms: Fix recursion on mod_res_message_id_to_index 227 - cmn700: Add support to configure additional non-hash mem regions 228 - cmn700: Update root node offset calculation for bigger mesh 229 - cmn700: Add hierarchical hashing support with 3 SN mode 230 - psu: Add error return from mod_psu_process_bind_request 231 - sds: Clear data valid flag after SCP RAM FW has been transferred 232 233- Platforms: 234 - juno/scmi_perf: Simplify configuration of FastChannels 235 - juno/software_mmap: Remove unused SCMI_FAST_CHANNEL_SIZE 236 - juno: Provide PMI and DWT PMI config 237 - n1sdp: Enable non-secure CoreSight access in C2C setup 238 - n1sdp: Add dynamic calculations of PLL parameters 239 - morello: Restructure dmc_bing module 240 - rdv1mc, sgi575: Add config for MCP 241 - Add support for tc1 242 - tc0: Add SCMI FastChannels configuration 243 - tc0: Use separate PLLs for seperate core types 244 - tc0: Add example configuration for Voltage Domain 245 - tc0: Enable DVFS for Matterhorn ELP Arm cores 246 - tc0: Update SCP PIK 247 - rdv1mc: Add support for DVFS and SCMI Perf 248 - rdv1mc: Enable fast channel 249 - rdv1mc: Add mock PSU for dvfs 250 - rdn2: Update register layout for pik's in rdn2 platform 251 - rdn2: Disable NEWLIB_NANO for RD-N2 platform 252 - rdn2: Add support for variant 1 of rdn2 platform 253 - rdn2: Add ecam and mmio memory regions in cmn700 config 254 - rdn2: Update NCI GPV region 0 in cmn700 config 255 - rdn2: Add all NCI GPV regions in cmn700 config 256 - rdn2: Add config data for pcie integ control module 257 - rdn2: Add support for mcp ramfw 258 - rdv1: Add config data for mcp romfw bootloader module 259 - rdv1: Add config data for clock module in MCP RAM firmware 260 - rdv1: Add config data for pl011 UART module in mcp ramfw 261 - rdv1: Add configuration data for MPU module in mcp ramfw 262 - rdv1: Add generic timer config data for mcp ramfw 263 - rdv1: Add timer HAL config data for mcp ramfw 264 - rdv1: Add platform specific definitions for rtx 265 - rdv1: Add mcp_platform module for rdv1 266 - rdv1: Add build support for mcp ram firmware 267 - rdv1: Add debugger CLI module config data for mcp ramfw 268 - synquacer: Add shutdown handler in ppu_v0_synquacer module 269 270- MISRA C:2012: 271 - SCMI, Framework: Fix rule 9.5 violations 272 - mod_resource_perms: Fix rule 16.5 violations 273 - fwk: Fix rules 11.9, 16.3 and 17.7 violations 274 - arch: Fix rule 15.6 violations 275 - arch/armv7-m: Fix rules 10.1 and 17.7 violations 276 277SCP-firmware - version 2.8.0 278============================ 279 280New features 281------------ 282 283- Support for the following platforms has been added: 284 - Morello platform 285 - RD-N2 platform (initial support) 286 287- New modules: 288 - apremap (AP remap) 289 - CMN-700 interconnect 290 - mock_clock 291 292- Framework: 293 - fwk: Add fwk_thread_signal API 294 - fwk: Add MT fwk_thread_put_signal API 295 - framework: add optional identifier support 296 297- Renamings: 298 - RD-Daniel is now RD-V1 299 - RD-Daniel Config-XLR is now RD-V1-MC 300 - module: rename cmn_rhodes to cmn-650 301 302- MISRA C:2012 303 - Mandatory fixes have been resolved 304 305- SCMI: 306 - Sensor protocol: Add support for SENSOR_TRIP_POINT_CONFIG 307 - Sensor protocol: Add support for SENSOR_TRIP_POINT_NOTIFY 308 309- Build system: 310 - Support for CMake has been added. 311 312- Doc: 313 - Add cmake_readme.md 314 315Changed 316------- 317 318- Documentation: 319 - doc: SCP Firmware Threat Model 320 - user_guide: Add LLVM instructions 321 - user_guide: Update prerequisite of TF-A version 322 - maintainers: Update maintainers and codeowners 323 324- Framework: 325 - fwk_multi_thread: Minor optimisation in MT fwk_thread_put_event 326 - fwk sub-element index to identifier getter 327 - fwk: Add a check for valid fwk_id type to the framework 328 - fwk_thread: Log allocated event instead of submitted event 329 - fwk_multi_thread: Log allocated event instead of submitted event 330 331- Modules: 332 - bootloader: ensure module config is provided 333 - cmn-650: Add support for port aggregation 334 - dvfs: Add signal_handler to DVFS 335 - isys_rom: idle on failure to boot from ram firmware 336 - fip: move fip config parameters to caller module 337 - ppu_v1: Assigning opmode from product configurations 338 - isys_rom: use fwk_trap() for idling 339 - scmi: Deny access for PSCI agent for configured protocols 340 - scmi_system_power/boards: Add default timer_id and add extra check 341 - scmi: Assorted fixes for SCMI 2.0 compliance 342 343- Platforms: 344 - juno: Disable Resource Permissions for juno 345 - juno: Disable Debug Module by default 346 - juno/sensor: Rename sensors 347 - n1sdp: Separated Driver code from mod_n1sdp_sensor.c 348 - n1sdp:Enable L3 cache from BOOTGPR1 reg 349 - rcar: Various additions for timers, power domain, dvfs, system power 350 - sgm775: Enable access to CLOCK_CONFIG_SET command 351 - RD-X platforms: migrate to isys_rom 352 - sgi575/rdn1e1: Add disabled PSCI protocols without resource permissions 353 - sgm775/sgm776/tc0: Add disabled PSCI protocols without resource 354 permissions 355 - tc0: Add support for Theodul cluster 356 - tc0: add clock and dvfs support for all cores 357 - product/rdv1mc: add port aggregation related config data 358 359Notes 360----- 361CMake: please note that cmake is consolidation phase and the current make build 362system is still supported. We strongly encourage contributors to move to cmake. 363 364SCP-firmware - version 2.7.0 365============================ 366 367New features 368------------ 369 370- Support for the following platforms has been added: 371 - Total Compute (tc0) platform 372 - Renesas R-Car 373 - RD-Daniel Config-XLR 374 375- Support for interactive debugger and CLI has been added. 376 377- New modules: 378 - Voltage Domain driver and related SCMIv3 protocol driver 379 - gtimer: Add framework time driver implementation 380 - module: statistics: add basic functionality 381 - fip: Introduce 'fip' parser module 382 383- SCMI Enhancements: 384 - SCMI: Resource Permissions Module 385 - SCMIv2: Implement SCMIv2 fast channels performance protocol API 386 - SCMIv2: Implement notifications for SCMIv2 387 - scmi_perf: Add support for performance statistics 388 - SCMI: Clock Protocol policy handler 389 - SCMI: Performance Protocol policy handler 390 - SCMI: Power Domain Protocol policy handler 391 - SCMI: System Power Protocol policy handler 392 - SCMI: Reset Domain Protocol policy handler 393 - SCMI: Base Protocol Permissions 394 - SCMI: Clock Protocol Permissions 395 - SCMI: System Power Protocol Permissions 396 - SCMI: Power Domain Protocol Permissions 397 - SCMI: Performance Protocol Permissions 398 - SCMI: Sensor Protocol Permissions 399 - SCMI: Reset Domain Protocol Permissions 400 - SCMI: Device permissions 401 402- Framework: 403 - fwk: Use standard library memory allocator 404 - fwk: Integrate logging functionality into the framework 405 - fwk/thread: Single-threaded mode for blocking events 406 - fwk: Introduce input/output component 407 408Changed 409------- 410 411- Documentation: 412 - doc: SCP Firmware Threat Model 413 - doc: Add clang-format configuration 414 - doc: Recreate Doxyfile with Doxywizard 415 416- Framework: 417 - fwk: Remove dependency on RTX threads 418 - fwk: Add support for static element tables 419 - fwk: Rework assertion logic 420 - fwk: Initialize module context structures early 421 422- Modules: 423 - bootloader: Add support for SDS-less boot 424 - DVFS: Allow inexact performance levels 425 - DVFS/SCMI-perf: Abstract performance levels 426 - scmi_system_power: Add graceful system power support 427 - bootloader: Unify bootloader messages 428 - module/scmi: Add SCMI notifications handling APIs 429 430Notes 431----- 432 433This release implements full SCMI v2 support but we do not guarantee complete 434compliance with the SCMI v2.0 specification at the moment. 435 436SCP-firmware - version 2.6.0 437============================ 438 439New features 440------------ 441 442- Support for the following platforms has been added :- 443 - Juno Arm Development Platform 444 - Neoverse N1 Software Development Platform 445 - SGM-776 446 - RD-N1-Edge 447 - RD-N1-Edge Dual-Chip 448 - RD-Daniel Config-M 449 450- New modules: 451 - DMC500 452 - XRP7724 453 - CDCEL937 454 - I2C 455 - dw_apb_i2c (Synopsis DesignWare I2C controller) 456 - mock_sensor 457 - Debug Module 458 - System Info 459 460Changed 461------- 462 463- Build System: 464 static analysis: Add suppression list for Cppcheck Static Code Analysis 465 tools: Add script to check usage of banned functions 466 build: enhance entry guards in internal header files 467 468- Documentation: 469 DVFS: Document DVFS architecture 470 doc: Fix link location for Cppcheck suppression list 471 doc: Correct Cppcheck invocation description 472 doc: Add notification information to the documentation 473 doc: Clarify contributors' and Maintainers' responsibilities 474 doc: Update list of maintainers for SCP-firmware 475 doc: Add documentation for deferred responses 476 doc: Add glossary to Doxygen configuration input 477 478- Framework: 479 fwk/notification: Allow use of provided source_id for notify 480 thread: Get head of delayed response list 481 module: Add FWK_ID_NONE source_id for notifications 482 fwk: Delete fwk_module_check_call implementation 483 fwk: Extend delayed response support 484 fwk: Split delayed response from fwk_multi_thread 485 fwk_interrupt: add missing declaration of exported functions 486 fwk_thread: Clarify support for delayed responses 487 fwk: Rename fwk_errno.h to fwk_status.h 488 fwk_errno: Add FWK_PENDING return value 489 fwk_module: Extend fwk_module_get_data for sub-elements 490 framework: allow product to define notification count 491 492- Modules: 493 DVFS: Add support for pending requests 494 clock: Add full support for asynchronous drivers 495 scmi_clock: Add support for pending requests 496 scmi_sensor: Add support for pending responses 497 sensor: Add support for asynchronous drivers 498 arch/armv7-m: Split exception table from handlers 499 arm7-m: Add support for custom default exception handler 500 501SCP-firmware - version 2.5.0 502============================ 503 504New features 505------------ 506 507- Modules: 508 - CMN600 support 509 - DMC620 support 510 - apcontext: New module to zero the AP context area 511 512- Platforms: 513 - Support for the SGI-575 platform 514 - Support for the Neoverse N1 reference design 515 516Note: Juno, Neoverse N1 SDP, Neoverse E1 reference design and SynQuacer products 517are NOT part of this release. 518 519Changed 520------- 521 522- Build System: 523 - Name firmware bin and elf file by the name of the firmware 524 525- Documentation: 526 - Emphasized that the order of the modules in the BS_FIRMWARE_MODULES list 527 in the firmware definition makefiles is the order in which the modules 528 are initialized, bound and started during the pre-runtime phase. 529 - Expand Doxygen use of param [out] 530 - Improve coding style and rules 531 532- Framework: 533 - Improve error codes and their documentation 534 - Add fwk_module_get_sub_element_count API 535 - Improve unit testing of fwk_module.c 536 - Replace base alignment reference type with `max_align_t` 537 538- Modules: 539 - sds: Make initialization deferring optional 540 - sds: Send notification once SDS is initialized 541 - scmi: Subscribe to SMT ready notifications and send notification when 542 service is initialized 543 - smt: Add logging on mailbox ownership error 544 - smt: Send notification when each SMT mailbox is initialized 545 - sid: Move to an always available interface 546 - system_power: Introduce platform interrupts and enable a configurable 547 number of system PPUs 548 - cmn600: Add the ccix programming for cmn600 549 550Resolved issues 551--------------- 552 553- Build System: 554 - Disable generation of unaligned accesses 555 556- Framework: 557 - list: Always zero list nodes when removed from a list 558 - Zero event list node when duplicating an event 559 560- Modules: 561 - cmn600: Fix inappropriately-initialised global state 562 - cmn600: Stop checking type of external nodes 563 - ppu_v0: Ensure bound_id is set when bound by system_power 564 - system_power: Fix extented PPU support 565 566SCP-firmware - version 2.4.0 567============================ 568 569New features 570------------ 571 572- Module-based architecture with an event-driven execution model: 573 - Firmware code is organized into modules, where a module fulfills a well- 574 defined role (driver HAL, driver, protocol or service). 575 - A framework drives the initialization, orchestration of, and interactions 576 between modules. 577 578- Processor-agnostic module code enables firmware portability across systems: 579 - Processor-dependent features (e.g. interrupt handling) are abstracted from 580 the modules by the framework. 581 - The framework relies on an interface whose implementation is processor- 582 dependent to provide these features. 583 584- Module configurability easing the re-use of modules on different platforms: 585 - Strict split between the hardware and software feature configuration data 586 and module code. 587 588- A native framework test suite provides rapid development and validation of the 589 core framework implementation. 590 591- Support for Armv7-M control processor architecture based on CMSIS v5 and Keil 592 RTX 5. 593 594- Provides system initialization support to enable boot of the application 595 cores. 596 597- Provides the following runtime services: 598 - Power domain management 599 - System power management 600 - Performance domain management (Dynamic voltage and frequency scaling) 601 - Clock management 602 - Sensor management 603 604- Provides a reference implementation of the System Control and Management 605 Interface v1.0 (SCMI, platform-side). The SCMI specification can be found 606 [here](http://infocenter.arm.com/help/topic/com.arm.doc.den0056a/DEN0056A_System_Control_and_Management_Interface.pdf). 607 608- Provides a build system supporting: 609 - The GNU Arm Embedded and Arm Compiler 6 toolchains 610 - Platforms with multiple firmware images 611 612- In-source Doxygen documentation 613 614- Support for the SGM-775 platform 615 616Known issues 617------------ 618 619- The Juno platform is extremely limited with regards to available memory. 620 As a result the debug experience is poor, and the ability to add new 621 features severely restricted. 622- arm-compiler-6 does not support LTO with our build system. No runs 623 can be done when the SCP-firmware is built with arm-compiler-6 due 624 to space limitations. 625