Tags: crust-firmware/crust
Tags
Sixth released version * Improve compatibility with newer versions of binutils and GCC. * Fix a bug where the suspend debug log was clobbered by cpuidle. * Use CNT64 or the global timestamp counter as a 24 MHz time reference, instead of the trusted watchdog. * Use R_WDOG instead of R_TWD as the firmware watchdog when possible. This avoids problems caused by Linux gating the R_TWD clock. * Add initial support for the A23/A33 SoCs and their associated PMICs. * Add defconfigs for NanoPi M1 Plus and the Olimex TERES-I and A64-OLinuXino boards. Thank you to Nathan Rennie-Waldock, Corentin Labbe, and Rudi Heitbaum for their contributions to this release.
Fifth released version * Switch H6 boards to use RSB for PMIC access (requires Linux v5.13). * Remove GPIO polling functionality (obsolete after Linux v5.13). * Fix a bug where GPIO-controlled regulators could be disabled temporarily during resume, even if they were left on during suspend. * Fix a bug where the 24 MHz crystal could be disabled temporarily during resume, even if it was left on during suspend. * Finish support for the H3 SoC by implementing clock, CPU subsystem, and DRAM controller suspend, and by adding CPU idle support. * Add the ability to use HDMI CEC as a wakeup source. * Add defconfigs for a few A64 boards: NanoPi A64, Pine A64-LTS, and PineTab. Thank you to Jernej Skrabec, Arnaud Ferraris, and Sergey Suloev for their contributions to this release.
Fourth released version * Improve the reliability of firmware crash recovery. * Perform enough power state coordination to support a "thin" PSCI implementation as an SCPI client. * Add support for the RSB controller/bus on H6. * Improve the efficiency and reliability of the existing CSS, DRAM, and PRCM drivers. This reduces the chance of suspend/resume failure by over 100x on A64/H5. * Implement the cluster and CSS suspend levels on H6. * Implement DRAM self-refresh and DRAM controller clock gating on H6. * Fix the pinmux for UARTs 2 and 3 on H5. * Add minimal support for the H3 SoC. * Support receiving key presses from an IR remote control while asleep. * Several variants of the NEC and RC6 protocols are implemented. * Wakeup is triggered by a specific scan code, chosen at build time. * Add support for GPIO-controlled voltage regulators. These can be hooked up to the CPU, DRAM, VCC-PLL, or VDD-SYS power domains. * Automatically select the suspend depth at runtime based on the enabled wakeup sources. (In other words, disable as much hardware as possible, but never power off any hardware that could wake up the system.) * Fix failure to resume when CPU0 was offline before suspending. * Add support for runtime CPU idle states on A64/H5/H6. * Optionally record debugging data to the RTC for postmortem analysis. * Add defconfigs for several H3, H5, and H6 boards. Thank you to Jernej Skrabec and Ryan Finnie for their contributions to this release.
Third released version * Enforce that all data is const or BSS, so the firmware can be restarted cleanly without reprogramming SRAM A2. * Add support for the H6 SoC and the Pine H64 and Orange Pi 3 boards. * Switch to using OSC16M as the AR100 clock source. * Add support for alternate UARTs and I2C pinmuxes. * Add an option for reporting battery consumption during suspend. * On A64 and H5, switch to DRAM self-refresn and disable the DRAM controller during suspend. * On A64 and H5, disable PLLs and OSC24M during suspend when possible. * Add support for polling GPIO external interrupt status. * Reduce system bus clock rates during suspend for improved power usage. * Support X-Powers PMICs on either RSB or I2C. * Add a power-optimized defconfig for the PinePhone, while also allowing modem wakeup from suspend. * Many bug fixes.
Second released version * Redesigned to coexist with Linux drivers, not replace them. * Most SCPI commands except CSS/System Power are removed. * PMIC communication now happens over RSB, matching Linux. * Replaced timer/callback architecture with a main loop. * The entire firmware now runs with interrupts disabled. * Exceptions are handled by restarting from the entry point. * Integrated a Kbuild-inspired build system. * Integrated the Kconfig configuration system.