1 /*
2 * Copyright (c) 2015, Freescale Semiconductor, Inc.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without modification,
6 * are permitted provided that the following conditions are met:
7 *
8 * o Redistributions of source code must retain the above copyright notice, this list
9 * of conditions and the following disclaimer.
10 *
11 * o Redistributions in binary form must reproduce the above copyright notice, this
12 * list of conditions and the following disclaimer in the documentation and/or
13 * other materials provided with the distribution.
14 *
15 * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
16 * contributors may be used to endorse or promote products derived from this
17 * software without specific prior written permission.
18 *
19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
23 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
24 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
26 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 */
30
31 #include "gpt.h"
32
33 /*******************************************************************************
34 * Code
35 ******************************************************************************/
36
37 /*FUNCTION**********************************************************************
38 *
39 * Function Name : GPT_Init
40 * Description : Initialize GPT to reset state and initialize running mode
41 *
42 *END**************************************************************************/
GPT_Init(GPT_Type * base,const gpt_init_config_t * initConfig)43 void GPT_Init(GPT_Type* base, const gpt_init_config_t* initConfig)
44 {
45 assert(initConfig);
46
47 base->CR = 0;
48
49 GPT_SoftReset(base);
50
51 base->CR = (initConfig->freeRun ? GPT_CR_FRR_MASK : 0) |
52 (initConfig->waitEnable ? GPT_CR_WAITEN_MASK : 0) |
53 (initConfig->stopEnable ? GPT_CR_STOPEN_MASK : 0) |
54 (initConfig->dozeEnable ? GPT_CR_DOZEEN_MASK : 0) |
55 (initConfig->dbgEnable ? GPT_CR_DBGEN_MASK : 0) |
56 (initConfig->enableMode ? GPT_CR_ENMOD_MASK : 0);
57 }
58
59 /*FUNCTION**********************************************************************
60 *
61 * Function Name : GPT_SetClockSource
62 * Description : Set clock source of GPT
63 *
64 *END**************************************************************************/
GPT_SetClockSource(GPT_Type * base,uint32_t source)65 void GPT_SetClockSource(GPT_Type* base, uint32_t source)
66 {
67 assert(source <= gptClockSourceOsc);
68
69 if (source == gptClockSourceOsc)
70 base->CR = (base->CR & ~GPT_CR_CLKSRC_MASK) | GPT_CR_EN_24M_MASK | GPT_CR_CLKSRC(source);
71 else
72 base->CR = (base->CR & ~(GPT_CR_CLKSRC_MASK | GPT_CR_EN_24M_MASK)) | GPT_CR_CLKSRC(source);
73 }
74
75 /*FUNCTION**********************************************************************
76 *
77 * Function Name : GPT_SetIntCmd
78 * Description : Enable or disable GPT interrupts
79 *
80 *END**************************************************************************/
GPT_SetIntCmd(GPT_Type * base,uint32_t flags,bool enable)81 void GPT_SetIntCmd(GPT_Type* base, uint32_t flags, bool enable)
82 {
83 if (enable)
84 base->IR |= flags;
85 else
86 base->IR &= ~flags;
87 }
88
89 /*******************************************************************************
90 * EOF
91 ******************************************************************************/
92