/*
 * Copyright (c) 2018-2019 Nordic Semiconductor ASA
 *
 * SPDX-License-Identifier: Apache-2.0
 */

int lll_periph_init(void);
int lll_periph_reset(void);
void lll_periph_prepare(void *param);
