Branch data Line data Source code
1 : : /* 2 : : * Copyright (c) 2015 - 2022, Nordic Semiconductor ASA 3 : : * All rights reserved. 4 : : * 5 : : * SPDX-License-Identifier: BSD-3-Clause 6 : : * 7 : : * Redistribution and use in source and binary forms, with or without 8 : : * modification, are permitted provided that the following conditions are met: 9 : : * 10 : : * 1. Redistributions of source code must retain the above copyright notice, this 11 : : * list of conditions and the following disclaimer. 12 : : * 13 : : * 2. Redistributions in binary form must reproduce the above copyright 14 : : * notice, this list of conditions and the following disclaimer in the 15 : : * documentation and/or other materials provided with the distribution. 16 : : * 17 : : * 3. Neither the name of the copyright holder nor the names of its 18 : : * contributors may be used to endorse or promote products derived from this 19 : : * software without specific prior written permission. 20 : : * 21 : : * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 22 : : * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23 : : * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 24 : : * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 25 : : * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 26 : : * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 27 : : * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 28 : : * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 29 : : * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 30 : : * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 31 : : * POSSIBILITY OF SUCH DAMAGE. 32 : : */ 33 : : 34 : : #ifndef NRFX_POWER_CLOCK_H__ 35 : : #define NRFX_POWER_CLOCK_H__ 36 : : 37 : : #include <nrfx.h> 38 : : 39 : : #ifdef __cplusplus 40 : : extern "C" { 41 : : #endif 42 : : 43 : : 44 : 1 : __STATIC_INLINE void nrfx_power_clock_irq_init(void) 45 : : { 46 : : uint8_t priority; 47 : : #if NRFX_CHECK(NRFX_POWER_ENABLED) && NRFX_CHECK(NRFX_CLOCK_ENABLED) 48 : : #if NRFX_POWER_DEFAULT_CONFIG_IRQ_PRIORITY != NRFX_CLOCK_DEFAULT_CONFIG_IRQ_PRIORITY 49 : : #error "IRQ priorities for POWER and CLOCK must be the same. Check <nrfx_config.h>." 50 : : #endif 51 : : priority = NRFX_POWER_DEFAULT_CONFIG_IRQ_PRIORITY; 52 : : #elif NRFX_CHECK(NRFX_POWER_ENABLED) 53 : : priority = NRFX_POWER_DEFAULT_CONFIG_IRQ_PRIORITY; 54 : : #elif NRFX_CHECK(NRFX_CLOCK_ENABLED) 55 : 1 : priority = NRFX_CLOCK_DEFAULT_CONFIG_IRQ_PRIORITY; 56 : : #else 57 : : #error "This code is not supposed to be compiled when neither POWER nor CLOCK is enabled." 58 : : #endif 59 : : 60 [ + - ]: 1 : if (!NRFX_IRQ_IS_ENABLED(nrfx_get_irq_number(NRF_CLOCK))) 61 : : { 62 : : NRFX_IRQ_PRIORITY_SET(nrfx_get_irq_number(NRF_CLOCK), priority); 63 : 1 : NRFX_IRQ_ENABLE(nrfx_get_irq_number(NRF_CLOCK)); 64 : : } 65 : 1 : } 66 : : 67 : : #if NRFX_CHECK(NRFX_POWER_ENABLED) && NRFX_CHECK(NRFX_CLOCK_ENABLED) 68 : : void nrfx_power_clock_irq_handler(void); 69 : : #elif NRFX_CHECK(NRFX_POWER_ENABLED) 70 : : #define nrfx_power_irq_handler nrfx_power_clock_irq_handler 71 : : #elif NRFX_CHECK(NRFX_CLOCK_ENABLED) 72 : : #define nrfx_clock_irq_handler nrfx_power_clock_irq_handler 73 : : #endif 74 : : 75 : : 76 : : #ifdef __cplusplus 77 : : } 78 : : #endif 79 : : 80 : : #endif // NRFX_POWER_CLOCK_H__