51 lines
1.5 KiB
C
51 lines
1.5 KiB
C
/*
|
|
* Copyright (c) 2018 Phytec Messtechnik GmbH
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#include <init.h>
|
|
#include <soc.h>
|
|
|
|
/* Peripheral voltage ON/OFF GPIO */
|
|
#define PERIPH_PON_PIN 0
|
|
|
|
static int board_reel_board_init(const struct device *dev)
|
|
{
|
|
ARG_UNUSED(dev);
|
|
volatile NRF_GPIO_Type *gpio = NRF_P1;
|
|
|
|
/*
|
|
* Workaround to enable peripheral voltage.
|
|
*/
|
|
gpio->PIN_CNF[PERIPH_PON_PIN] =
|
|
(GPIO_PIN_CNF_INPUT_Disconnect << GPIO_PIN_CNF_INPUT_Pos) |
|
|
(GPIO_PIN_CNF_DIR_Output << GPIO_PIN_CNF_DIR_Pos);
|
|
|
|
gpio->OUTSET = BIT(PERIPH_PON_PIN);
|
|
|
|
/*
|
|
* Enable pull-up on UART RX pin to reduce power consumption.
|
|
* If the board is powered by battery and the debugger is
|
|
* not connected via USB to the host, the SoC consumes up
|
|
* to 2mA more than expected.
|
|
* The consumption increases because RX pin is floating
|
|
* (High-Impedance state of pin B from Dual-Supply Bus Transceiver).
|
|
*/
|
|
gpio = NRF_P0;
|
|
gpio->PIN_CNF[DT_PROP(DT_INST(0, nordic_nrf_uart), rx_pin)] =
|
|
(GPIO_PIN_CNF_INPUT_Disconnect << GPIO_PIN_CNF_INPUT_Pos) |
|
|
(GPIO_PIN_CNF_PULL_Pullup << GPIO_PIN_CNF_PULL_Pos) |
|
|
(GPIO_PIN_CNF_DIR_Input << GPIO_PIN_CNF_DIR_Pos);
|
|
gpio->PIN_CNF[DT_PROP(DT_INST(0, nordic_nrf_uart), tx_pin)] =
|
|
(GPIO_PIN_CNF_INPUT_Disconnect << GPIO_PIN_CNF_INPUT_Pos) |
|
|
(GPIO_PIN_CNF_PULL_Pullup << GPIO_PIN_CNF_PULL_Pos) |
|
|
(GPIO_PIN_CNF_DIR_Input << GPIO_PIN_CNF_DIR_Pos);
|
|
|
|
|
|
return 0;
|
|
}
|
|
|
|
SYS_INIT(board_reel_board_init, PRE_KERNEL_2,
|
|
CONFIG_KERNEL_INIT_PRIORITY_DEFAULT);
|