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