1 /* 2 * Copyright (c) 2015, Freescale Semiconductor, Inc. 3 * Copyright 2016-2017 NXP 4 * All rights reserved. 5 * 6 * SPDX-License-Identifier: BSD-3-Clause 7 */ 8 9 #include "fsl_dmamux.h" 10 11 /******************************************************************************* 12 * Definitions 13 ******************************************************************************/ 14 15 /******************************************************************************* 16 * Prototypes 17 ******************************************************************************/ 18 19 /*! 20 * @brief Get instance number for DMAMUX. 21 * 22 * @param base DMAMUX peripheral base address. 23 */ 24 static uint32_t DMAMUX_GetInstance(DMAMUX_Type *base); 25 26 /******************************************************************************* 27 * Variables 28 ******************************************************************************/ 29 30 /*! @brief Array to map DMAMUX instance number to base pointer. */ 31 static DMAMUX_Type *const s_dmamuxBases[] = DMAMUX_BASE_PTRS; 32 33 #if !(defined(FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL) && FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL) 34 /*! @brief Array to map DMAMUX instance number to clock name. */ 35 static const clock_ip_name_t s_dmamuxClockName[] = DMAMUX_CLOCKS; 36 #endif /* FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL */ 37 38 /******************************************************************************* 39 * Code 40 ******************************************************************************/ DMAMUX_GetInstance(DMAMUX_Type * base)41static uint32_t DMAMUX_GetInstance(DMAMUX_Type *base) 42 { 43 uint32_t instance; 44 45 /* Find the instance index from base address mappings. */ 46 for (instance = 0; instance < ARRAY_SIZE(s_dmamuxBases); instance++) 47 { 48 if (s_dmamuxBases[instance] == base) 49 { 50 break; 51 } 52 } 53 54 assert(instance < ARRAY_SIZE(s_dmamuxBases)); 55 56 return instance; 57 } 58 DMAMUX_Init(DMAMUX_Type * base)59void DMAMUX_Init(DMAMUX_Type *base) 60 { 61 #if !(defined(FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL) && FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL) 62 CLOCK_EnableClock(s_dmamuxClockName[DMAMUX_GetInstance(base)]); 63 #endif /* FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL */ 64 } 65 DMAMUX_Deinit(DMAMUX_Type * base)66void DMAMUX_Deinit(DMAMUX_Type *base) 67 { 68 #if !(defined(FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL) && FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL) 69 CLOCK_DisableClock(s_dmamuxClockName[DMAMUX_GetInstance(base)]); 70 #endif /* FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL */ 71 } 72