-
Notifications
You must be signed in to change notification settings - Fork 6.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
soc: stm32: PM: Disable jtag port pins if no debug
At chip startup, jtag pins are configured by default to enable debug. This configuration adds consumption and when using PM profile, we can save ~40uA by resetting this configuration and setting pins to analog mode. Signed-off-by: Erwan Gouriou <erwan.gouriou@st.com>
- Loading branch information
Showing
4 changed files
with
51 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
description: Serial Wire - JTAG Connector | ||
|
||
compatible: "swj-connector" | ||
|
||
include: pinctrl-device.yaml |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
/* | ||
* Copyright (c) 2023 STMicroelectronics | ||
* | ||
* SPDX-License-Identifier: Apache-2.0 | ||
*/ | ||
|
||
#include <zephyr/drivers/pinctrl.h> | ||
#include <zephyr/init.h> | ||
|
||
#define SWJ_NODE DT_NODELABEL(swj_port) | ||
|
||
PINCTRL_DT_DEFINE(SWJ_NODE); | ||
|
||
const struct pinctrl_dev_config *swj_pcfg = PINCTRL_DT_DEV_CONFIG_GET(SWJ_NODE); | ||
|
||
/* | ||
* Serial Wire / JTAG port pins are enabled as part of SoC default configuration. | ||
* When debug access is not needed and in case power consumption performance is | ||
* expected, configure matching pins to analog in order to save power. | ||
*/ | ||
|
||
static int swj_to_analog(void) | ||
{ | ||
int err; | ||
|
||
/* Set Serial Wire / JTAG port pins to analog mode */ | ||
err = pinctrl_apply_state(swj_pcfg, PINCTRL_STATE_SLEEP); | ||
if (err < 0) { | ||
__ASSERT(0, "SWJ pinctrl setup failed"); | ||
return err; | ||
} | ||
|
||
return 0; | ||
} | ||
|
||
SYS_INIT(swj_to_analog, POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEVICE); |