drivers: uart: Enable rx byte counting timer only in active power state
Nrfx_uarte uses a hardware timer/counter to count received bytes. Keeping this timer enabled increases power consumption for some SoCs. This change disables the timer when an inactive power state is set. Signed-off-by: Audun Korneliussen <audun.korneliussen@nordicsemi.no>
This commit is contained in:
parent
0039fb86e7
commit
a68ef65bc4
1 changed files with 6 additions and 0 deletions
|
@ -1266,6 +1266,9 @@ static void uarte_nrfx_set_power_state(struct device *dev, u32_t new_state)
|
||||||
uarte_nrfx_pins_enable(dev, true);
|
uarte_nrfx_pins_enable(dev, true);
|
||||||
nrf_uarte_enable(uarte);
|
nrf_uarte_enable(uarte);
|
||||||
#ifdef CONFIG_UART_ASYNC_API
|
#ifdef CONFIG_UART_ASYNC_API
|
||||||
|
if (hw_rx_counting_enabled(get_dev_data(dev))) {
|
||||||
|
nrfx_timer_enable(&get_dev_config(dev)->timer);
|
||||||
|
}
|
||||||
if (get_dev_data(dev)->async) {
|
if (get_dev_data(dev)->async) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1287,6 +1290,9 @@ static void uarte_nrfx_set_power_state(struct device *dev, u32_t new_state)
|
||||||
* only sent after each RX if async UART API is used.
|
* only sent after each RX if async UART API is used.
|
||||||
*/
|
*/
|
||||||
#ifdef CONFIG_UART_ASYNC_API
|
#ifdef CONFIG_UART_ASYNC_API
|
||||||
|
if (hw_rx_counting_enabled(get_dev_data(dev))) {
|
||||||
|
nrfx_timer_disable(&get_dev_config(dev)->timer);
|
||||||
|
}
|
||||||
if (get_dev_data(dev)->async) {
|
if (get_dev_data(dev)->async) {
|
||||||
nrf_uarte_disable(uarte);
|
nrf_uarte_disable(uarte);
|
||||||
uarte_nrfx_pins_enable(dev, false);
|
uarte_nrfx_pins_enable(dev, false);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue