Find a file
Erwan Gouriou a3de3df5dc drivers/uart: stm32: Fix pm_constraint handling
Introduce new logic to set/release pm_constraint during serial TX
transactions.

First change is to introduce an internal flag and utility functions
to control the set/release constraint balancing per uart device.
This way, whatever the mix of transactions or API calls, we
ensure a single uart device can only do 1 or 0 to the PM state
constraint. Constraint can't then be set more than once, released w/o
having been set or released more than it was set.

The last part of the change reworks the triggers for constraints
set/release operations.
In order not to disturb driver operations, if irq driven mode or PM is
enabled, don't enable TC interrupt handling by default.
Instead, map the pm_constraint setting to the way TC flag is handled
in normal mode of operations (irq driven or async).
As a consequence, in irq driven mode, pm_constraint is set/released on
tx_enable/tx_disable api calls, which gives API user full control
on transaction protection vs low power operations.
Finally, we emulate the same behavior on TX poll transaction, by
enabling TC irq at the start of a stream and disabling TC irq once
stream is completed. This is controlled with a dedicated device flag.


Signed-off-by: Erwan Gouriou <erwan.gouriou@linaro.org>
2021-09-21 10:47:56 -04:00
.buildkite ci: adjust number of builds for daily CI 2021-09-10 11:06:10 -05:00
.github actions: run get_maintainer.py to validate paths 2021-09-16 09:13:01 -04:00
arch arch: xtensa: add workaround for small vector table entries 2021-09-10 10:59:44 -04:00
boards board: doc: Update H3ULCB doc for v2.7 2021-09-21 06:29:09 -04:00
cmake cmake: fixing toolchain_parse_make_rule to correctly handle \ files 2021-09-11 04:49:38 -04:00
doc Bluetooth: controller: Replace slave with peripheral 2021-09-21 13:01:29 +02:00
drivers drivers/uart: stm32: Fix pm_constraint handling 2021-09-21 10:47:56 -04:00
dts drivers: i2c_nrfx_twim: Add handling of buffers located in flash 2021-09-21 13:44:06 +02:00
include Bluetooth: hci: Align terms with the Bluetooth v5.3 spec 2021-09-17 16:05:01 +02:00
kernel cmsis_rtos_v1: fix thread instances management. 2021-09-09 12:01:06 -04:00
lib lib: timeutil: fix implicit conversions from float to double 2021-09-20 19:47:57 -04:00
misc toolchain: add GEN_ABSOLUTE_SYM_KCONFIG() 2021-02-02 09:23:45 -05:00
modules stm32: Add FMAC support to Kconfig 2021-09-15 22:36:49 -04:00
samples samples/littlefs: Remove FIXME with PRIxPTR usage 2021-09-21 06:21:59 -04:00
scripts twister: fix json reporting of build only tests 2021-09-17 08:11:01 -04:00
share cmake: check zephyr version if specified and ZEPHYR_BASE is set 2021-05-25 16:48:35 -05:00
soc soc: stl32l0: Enable DMA clock instead of DBGMCU clock 2021-09-21 10:45:57 -04:00
subsys net: lwm2m: Fix Registration failue reporting 2021-09-21 09:32:31 -05:00
tests Bluetooth: controller: Replace slave with peripheral 2021-09-21 13:01:29 +02:00
.checkpatch.conf checkpatch: ignore linux specific ENOSYS warning 2021-03-30 10:50:14 -05:00
.clang-format clang-format: Change lines length limit from 80 to 100 2021-05-06 08:13:32 -05:00
.codecov.yml ci: add .codecov.yml for codecov.io configuration 2018-01-03 13:12:03 -05:00
.editorconfig editorconfig: indent Kconfig files with tabs 2020-07-08 21:30:38 -04:00
.gitattributes gitattributes: Tell linguist to ignore test pattern files 2020-04-23 14:07:57 -04:00
.gitignore gitignore: add common Python venv directories 2021-04-20 11:30:40 -05:00
.gitlint gitlint: match max title length restriction with checkpatch 2019-05-29 14:43:16 -04:00
.mailmap mailmap: update mailmap file with some stray emails 2021-06-17 14:15:41 -04:00
.uncrustify.cfg uncrustify: Add a rule to remove space inside function argument 2018-10-16 09:50:03 -04:00
CMakeLists.txt cmake: Do not include zephyr_stdint.h for native POSIX archs 2021-09-20 19:34:18 -04:00
CODE_OF_CONDUCT.md coc: move to markdown format 2019-01-24 15:37:15 -05:00
CODEOWNERS MAINTAINERS: Update NXP platforms maintainer 2021-09-17 20:09:49 -04:00
CONTRIBUTING.rst doc: Fixed a link in CONTRIBUTING.rst 2019-02-28 12:46:04 -08:00
Kconfig kconfig: Clean up header comments and make them consistent 2019-11-04 17:31:27 -05:00
Kconfig.zephyr armclang: ARM Compiler C library support 2021-08-30 08:54:23 -04:00
LICENSE add top level Apache 2.0 license file 2016-02-05 20:24:37 -05:00
MAINTAINERS.yml MAINTAINERS: Add modem maintainer 2021-09-20 19:29:13 -04:00
README.rst doc: Document the switch from Slack to Discord 2021-09-03 08:11:15 -04:00
VERSION release: Zephyr 2.7.0-rc2 2021-09-17 20:49:03 -04:00
version.h.in cmake: explain BUILD_VERSION and KERNEL_VERSION_* 2019-05-09 11:52:05 +02:00
west.yml tracing: percepio: update to v4.5.1 2021-09-17 20:21:16 -04:00
zephyr-env.cmd scripts: remove west from scripts/ 2019-01-29 10:15:01 +01:00
zephyr-env.sh zephyr_env.sh: Remove semicolons at ends of lines 2019-12-10 14:34:46 -08:00

.. raw:: html

   <a href="https://www.zephyrproject.org">
     <p align="center">
       <img src="doc/_static/images/logo-readme.png">
     </p>
   </a>

   <a href="https://bestpractices.coreinfrastructure.org/projects/74"><img
   src="https://bestpractices.coreinfrastructure.org/projects/74/badge"></a>
   <a href="https://buildkite.com/zephyr/zephyr">
   <img
   src="https://badge.buildkite.com/f5bd0dc88306cee17c9b38e78d11bb74a6291e3f40e7d13f31.svg?branch=main"></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-M,
Intel x86, ARC, Nios II, Tensilica Xtensa, and RISC-V, 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
  (buildkite) 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/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/getting_started/index.html#asking-for-help