Find a file
Gerard Marull-Paretas 90b247b90b lib: os: add support for system power off
Add a new API to perform an immediate system power off:
`sys_poweroff()`.

Until now, this functionality has been implemented via the system power
management module, but in a clunky fashion. The way system PM works is
by defining some idle states in devicetree, that, given some properties
(e.g. minimal residency, exit latency, etc.) are automatically selected
when system goes to idle based on the expected next wake-up. However,
system off is a power state that one typically wants to control manually
from the application because it implies state loss, and in most cases,
configuring some sort of wake-up source. So in general, it is not
desired to let the system enter this state automatically. This led to
the following stuff in-tree:

from `boards/arm/mimxrt595_evk/mimxrt595_evk_cm33.dts`:

```c
/*
 * Deep power-down mode is supported in this SoC through
 *  'PM_STATE_SOFT_OFF' state. There is no entry for this in device tree,
 *  user can call pm_state_force to enter this state.
 */
```

That is, state not being defined in devicetree so that PM subsystem
doesn't pick it automatically, but still implemented in in the PM hooks:

from `soc/arm/nxp_imx/rt5xx/power.c`, `pm_state_set()`:
```c
case PM_STATE_SOFT_OFF:
	set_deepsleep_pin_config();
	POWER_EnterDeepPowerDown(EXCLUDE_FROM_DEEP_POWERDOWN);
	break;
```

And to actually make use of this state, users had to do this kind of
abominations:

```c
pm_state_force(0u, &(struct pm_state_info){ PM_STATE_SOFT_OFF, 0, 0 });

/* Now we need to go sleep. This will let the idle thread runs and
 * the pm subsystem will use the forced state. To confirm that the
 * forced state is used, lets set the same timeout used previously.
 */
k_sleep(K_SECONDS(SLEEP_S));

printk("ERROR: System off failed\n");
while (true) {
	/* spin to avoid fall-off behavior */
}
```

Signed-off-by: Gerard Marull-Paretas <gerard@teslabs.com>
2023-08-04 16:59:36 +02:00
.github doc: move requirements to doc/ 2023-07-12 09:13:49 -04:00
arch arch: posix: break debugger on fatal error 2023-08-04 14:15:19 +02:00
boards boards: bt510, b610: move some gpio-keys entries zephyr,user 2023-08-04 14:33:58 +00:00
cmake gcc/target.cmake: fixup for #58408 (fix build with GCC 13) 2023-08-04 10:47:50 +02:00
doc lib: os: add support for system power off 2023-08-04 16:59:36 +02:00
drivers drivers: nxp_s32_netc: fix init priorities 2023-08-04 13:55:45 +00:00
dts drivers: led: lp50xx: add enable gpio 2023-08-04 13:18:01 +02:00
include/zephyr lib: os: add support for system power off 2023-08-04 16:59:36 +02:00
kernel kernel: Add support to override banner 2023-08-03 18:05:00 -04:00
lib lib: os: add support for system power off 2023-08-04 16:59:36 +02:00
misc
modules modules: add Kconfig for Ambiq HAL module 2023-08-04 10:48:58 +02:00
samples samples: led_lp50xx: fix color mapping and channel test 2023-08-04 13:18:01 +02:00
scripts llvm: Add support for selecting runtime library 2023-08-03 19:35:11 +02:00
share cmake: boards: Fix issue with relative paths 2023-06-15 05:10:42 -04:00
snippets snippets: support for EXTRA_DTC_OVERLAY_FILE and EXTRA_CONF_FILE 2023-05-25 13:31:53 +00:00
soc drivers: nxp_s32_netc: fix init priorities 2023-08-04 13:55:45 +00:00
submanifests
subsys Bluetooth: l2cap: add debug print for EATT 2023-08-04 15:06:05 +02:00
tests net: tcp: Implement TCP new Reno collision avoidance 2023-08-04 15:05:17 +02:00
.checkpatch.conf
.clang-format clang-format: flag *_SECTION_FOREACH as for loop 2023-05-26 11:04:54 -05:00
.codecov.yml
.editorconfig
.gitattributes
.gitignore scripts: ci: check_compliance: add a no-modules Kconfig check 2023-07-05 09:11:02 +02:00
.gitlint
.mailmap
.yamllint
CMakeLists.txt cmake/compiler: Add linker_script compiler property 2023-07-06 11:43:09 +02:00
CODE_OF_CONDUCT.md
CODEOWNERS CODEOWNERS: add codeowner of regulator_rpi_pico 2023-08-03 08:27:30 +00:00
CONTRIBUTING.rst
Kconfig
Kconfig.zephyr Kconfig: Provide name to orphan configuration choice symbol 2023-07-27 13:59:49 +00:00
LICENSE
MAINTAINERS.yml MAINTAINERS: Add entry for Ambiq platforms 2023-08-04 10:48:58 +02:00
README.rst
VERSION release: bump main to v3.4.99 2023-06-16 13:29:34 -04:00
version.h.in cmake: generalize VERSION infrastructure for better reuse 2023-05-17 13:56:58 +02:00
west.yml west.yml: add Ambiq HAL module 2023-08-04 10:48:58 +02:00
zephyr-env.cmd
zephyr-env.sh

.. raw:: html

   <a href="https://www.zephyrproject.org">
     <p align="center">
       <picture>
         <source media="(prefers-color-scheme: dark)" srcset="doc/_static/images/logo-readme-dark.svg">
         <source media="(prefers-color-scheme: light)" srcset="doc/_static/images/logo-readme-light.svg">
         <img src="doc/_static/images/logo-readme-light.svg">
       </picture>
     </p>
   </a>

   <a href="https://bestpractices.coreinfrastructure.org/projects/74"><img
   src="https://bestpractices.coreinfrastructure.org/projects/74/badge"></a>
   <a
   href="https://github.com/zephyrproject-rtos/zephyr/actions/workflows/twister.yaml?query=branch%3Amain">
   <img
   src="https://github.com/zephyrproject-rtos/zephyr/actions/workflows/twister.yaml/badge.svg?event=push"></a>


The Zephyr Project is a scalable real-time operating system (RTOS) supporting
multiple hardware architectures, optimized for resource constrained devices,
and built with security in mind.

The Zephyr OS is based on a small-footprint kernel designed for use on
resource-constrained systems: from simple embedded environmental sensors and
LED wearables to sophisticated smart watches and IoT wireless gateways.

The Zephyr kernel supports multiple architectures, including ARM (Cortex-A,
Cortex-R, Cortex-M), Intel x86, ARC, Nios II, Tensilica Xtensa, and RISC-V,
SPARC, MIPS, and a large number of `supported boards`_.

.. below included in doc/introduction/introduction.rst


Getting Started
***************

Welcome to Zephyr! See the `Introduction to Zephyr`_ for a high-level overview,
and the documentation's `Getting Started Guide`_ to start developing.

.. start_include_here

Community Support
*****************

Community support is provided via mailing lists and Discord; see the Resources
below for details.

.. _project-resources:

Resources
*********

Here's a quick summary of resources to help you find your way around:

* **Help**: `Asking for Help Tips`_
* **Documentation**: http://docs.zephyrproject.org (`Getting Started Guide`_)
* **Source Code**: https://github.com/zephyrproject-rtos/zephyr is the main
  repository; https://elixir.bootlin.com/zephyr/latest/source contains a
  searchable index
* **Releases**: https://github.com/zephyrproject-rtos/zephyr/releases
* **Samples and example code**: see `Sample and Demo Code Examples`_
* **Mailing Lists**: users@lists.zephyrproject.org and
  devel@lists.zephyrproject.org are the main user and developer mailing lists,
  respectively. You can join the developer's list and search its archives at
  `Zephyr Development mailing list`_. The other `Zephyr mailing list
  subgroups`_ have their own archives and sign-up pages.
* **Nightly CI Build Status**: https://lists.zephyrproject.org/g/builds
  The builds@lists.zephyrproject.org mailing list archives the CI nightly build results.
* **Chat**: Real-time chat happens in Zephyr's Discord Server. Use
  this `Discord Invite`_ to register.
* **Contributing**: see the `Contribution Guide`_
* **Wiki**: `Zephyr GitHub wiki`_
* **Issues**: https://github.com/zephyrproject-rtos/zephyr/issues
* **Security Issues**: Email vulnerabilities@zephyrproject.org to report
  security issues; also see our `Security`_ documentation. Security issues are
  tracked separately at https://zephyrprojectsec.atlassian.net.
* **Zephyr Project Website**: https://zephyrproject.org

.. _Discord Invite: https://chat.zephyrproject.org
.. _supported boards: http://docs.zephyrproject.org/latest/boards/index.html
.. _Zephyr Documentation: http://docs.zephyrproject.org
.. _Introduction to Zephyr: http://docs.zephyrproject.org/latest/introduction/index.html
.. _Getting Started Guide: http://docs.zephyrproject.org/latest/develop/getting_started/index.html
.. _Contribution Guide: http://docs.zephyrproject.org/latest/contribute/index.html
.. _Zephyr GitHub wiki: https://github.com/zephyrproject-rtos/zephyr/wiki
.. _Zephyr Development mailing list: https://lists.zephyrproject.org/g/devel
.. _Zephyr mailing list subgroups: https://lists.zephyrproject.org/g/main/subgroups
.. _Sample and Demo Code Examples: http://docs.zephyrproject.org/latest/samples/index.html
.. _Security: http://docs.zephyrproject.org/latest/security/index.html
.. _Asking for Help Tips: https://docs.zephyrproject.org/latest/develop/getting_started/index.html#asking-for-help