added prescaler for 16 bit pwm in LPC1347 target

Fork of mbed-dev by mbed official

Committer:
<>
Date:
Fri Sep 02 15:07:44 2016 +0100
Revision:
144:ef7eb2e8f9f7
This updates the lib to the mbed lib v125

Who changed what in which revision?

UserRevisionLine numberNew contents of line
<> 144:ef7eb2e8f9f7 1 /*
<> 144:ef7eb2e8f9f7 2 * Copyright (c) 2015, Freescale Semiconductor, Inc.
<> 144:ef7eb2e8f9f7 3 * All rights reserved.
<> 144:ef7eb2e8f9f7 4 *
<> 144:ef7eb2e8f9f7 5 * Redistribution and use in source and binary forms, with or without modification,
<> 144:ef7eb2e8f9f7 6 * are permitted provided that the following conditions are met:
<> 144:ef7eb2e8f9f7 7 *
<> 144:ef7eb2e8f9f7 8 * o Redistributions of source code must retain the above copyright notice, this list
<> 144:ef7eb2e8f9f7 9 * of conditions and the following disclaimer.
<> 144:ef7eb2e8f9f7 10 *
<> 144:ef7eb2e8f9f7 11 * o Redistributions in binary form must reproduce the above copyright notice, this
<> 144:ef7eb2e8f9f7 12 * list of conditions and the following disclaimer in the documentation and/or
<> 144:ef7eb2e8f9f7 13 * other materials provided with the distribution.
<> 144:ef7eb2e8f9f7 14 *
<> 144:ef7eb2e8f9f7 15 * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
<> 144:ef7eb2e8f9f7 16 * contributors may be used to endorse or promote products derived from this
<> 144:ef7eb2e8f9f7 17 * software without specific prior written permission.
<> 144:ef7eb2e8f9f7 18 *
<> 144:ef7eb2e8f9f7 19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
<> 144:ef7eb2e8f9f7 20 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
<> 144:ef7eb2e8f9f7 21 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
<> 144:ef7eb2e8f9f7 22 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
<> 144:ef7eb2e8f9f7 23 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
<> 144:ef7eb2e8f9f7 24 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
<> 144:ef7eb2e8f9f7 25 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
<> 144:ef7eb2e8f9f7 26 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
<> 144:ef7eb2e8f9f7 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
<> 144:ef7eb2e8f9f7 28 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<> 144:ef7eb2e8f9f7 29 */
<> 144:ef7eb2e8f9f7 30
<> 144:ef7eb2e8f9f7 31 #include "fsl_slcd.h"
<> 144:ef7eb2e8f9f7 32
<> 144:ef7eb2e8f9f7 33 /*******************************************************************************
<> 144:ef7eb2e8f9f7 34 * Definitions
<> 144:ef7eb2e8f9f7 35 ******************************************************************************/
<> 144:ef7eb2e8f9f7 36
<> 144:ef7eb2e8f9f7 37 #define SLCD_WAVEFORM_CONFIG_NUM 16
<> 144:ef7eb2e8f9f7 38
<> 144:ef7eb2e8f9f7 39 /*******************************************************************************
<> 144:ef7eb2e8f9f7 40 * Prototypes
<> 144:ef7eb2e8f9f7 41 ******************************************************************************/
<> 144:ef7eb2e8f9f7 42
<> 144:ef7eb2e8f9f7 43 /*!
<> 144:ef7eb2e8f9f7 44 * @brief Get the SLCD instance from peripheral base address.
<> 144:ef7eb2e8f9f7 45 *
<> 144:ef7eb2e8f9f7 46 * @param base SLCD peripheral base address.
<> 144:ef7eb2e8f9f7 47 * @return SLCD instance.
<> 144:ef7eb2e8f9f7 48 */
<> 144:ef7eb2e8f9f7 49 static uint32_t SLCD_GetInstance(LCD_Type *base);
<> 144:ef7eb2e8f9f7 50
<> 144:ef7eb2e8f9f7 51 /*******************************************************************************
<> 144:ef7eb2e8f9f7 52 * Variables
<> 144:ef7eb2e8f9f7 53 ******************************************************************************/
<> 144:ef7eb2e8f9f7 54
<> 144:ef7eb2e8f9f7 55 /*! @brief Pointers to slcd clocks for each instance. */
<> 144:ef7eb2e8f9f7 56 const clock_ip_name_t s_slcdClock[FSL_FEATURE_SOC_SLCD_COUNT] = SLCD_CLOCKS;
<> 144:ef7eb2e8f9f7 57
<> 144:ef7eb2e8f9f7 58 /*! @brief Pointers to slcd bases for each instance. */
<> 144:ef7eb2e8f9f7 59 static LCD_Type *const s_slcdBases[] = LCD_BASE_PTRS;
<> 144:ef7eb2e8f9f7 60
<> 144:ef7eb2e8f9f7 61 /*******************************************************************************
<> 144:ef7eb2e8f9f7 62 * Code
<> 144:ef7eb2e8f9f7 63 ******************************************************************************/
<> 144:ef7eb2e8f9f7 64
<> 144:ef7eb2e8f9f7 65 static uint32_t SLCD_GetInstance(LCD_Type *base)
<> 144:ef7eb2e8f9f7 66 {
<> 144:ef7eb2e8f9f7 67 uint32_t instance;
<> 144:ef7eb2e8f9f7 68
<> 144:ef7eb2e8f9f7 69 /* Find the instance index from base address mappings. */
<> 144:ef7eb2e8f9f7 70 for (instance = 0; instance < FSL_FEATURE_SOC_SLCD_COUNT; instance++)
<> 144:ef7eb2e8f9f7 71 {
<> 144:ef7eb2e8f9f7 72 if (s_slcdBases[instance] == base)
<> 144:ef7eb2e8f9f7 73 {
<> 144:ef7eb2e8f9f7 74 break;
<> 144:ef7eb2e8f9f7 75 }
<> 144:ef7eb2e8f9f7 76 }
<> 144:ef7eb2e8f9f7 77
<> 144:ef7eb2e8f9f7 78 assert(instance < FSL_FEATURE_SOC_SLCD_COUNT);
<> 144:ef7eb2e8f9f7 79
<> 144:ef7eb2e8f9f7 80 return instance;
<> 144:ef7eb2e8f9f7 81 }
<> 144:ef7eb2e8f9f7 82
<> 144:ef7eb2e8f9f7 83 void SLCD_Init(LCD_Type *base, slcd_config_t *configure)
<> 144:ef7eb2e8f9f7 84 {
<> 144:ef7eb2e8f9f7 85 assert(configure);
<> 144:ef7eb2e8f9f7 86 assert(configure->clkConfig);
<> 144:ef7eb2e8f9f7 87
<> 144:ef7eb2e8f9f7 88 uint32_t gcrReg = 0;
<> 144:ef7eb2e8f9f7 89 bool intEnabled = false;
<> 144:ef7eb2e8f9f7 90 uint32_t regNum = 0;
<> 144:ef7eb2e8f9f7 91 uint32_t instance = SLCD_GetInstance(base);
<> 144:ef7eb2e8f9f7 92
<> 144:ef7eb2e8f9f7 93 /* Un-gate the SLCD clock. */
<> 144:ef7eb2e8f9f7 94 CLOCK_EnableClock(s_slcdClock[instance]);
<> 144:ef7eb2e8f9f7 95
<> 144:ef7eb2e8f9f7 96 /* Configure general setting: power supply. */
<> 144:ef7eb2e8f9f7 97 gcrReg = LCD_GCR_RVEN(configure->powerSupply & 0x1U) | LCD_GCR_CPSEL((configure->powerSupply >> 1U) & 0x1U) |
<> 144:ef7eb2e8f9f7 98 LCD_GCR_VSUPPLY((configure->powerSupply >> 2U) & 0x1U) | LCD_GCR_LADJ(configure->loadAdjust);
<> 144:ef7eb2e8f9f7 99 /* Configure general setting: clock source. */
<> 144:ef7eb2e8f9f7 100 gcrReg |= LCD_GCR_SOURCE((configure->clkConfig->clkSource) & 0x1U) |
<> 144:ef7eb2e8f9f7 101 LCD_GCR_LCLK(configure->clkConfig->clkPrescaler) | LCD_GCR_ALTDIV(configure->clkConfig->altClkDivider);
<> 144:ef7eb2e8f9f7 102 /* Configure the duty and set the work for low power wait and stop mode. */
<> 144:ef7eb2e8f9f7 103 gcrReg |= LCD_GCR_DUTY(configure->dutyCycle) | LCD_GCR_LCDSTP(configure->lowPowerBehavior & 0x1U);
<> 144:ef7eb2e8f9f7 104 #if FSL_FEATURE_SLCD_HAS_LCD_WAIT
<> 144:ef7eb2e8f9f7 105 gcrReg |= LCD_GCR_LCDWAIT((configure->lowPowerBehavior >> 1U) & 0x1U);
<> 144:ef7eb2e8f9f7 106 #endif
<> 144:ef7eb2e8f9f7 107 #if FSL_FEATURE_SLCD_HAS_LCD_DOZE_ENABLE
<> 144:ef7eb2e8f9f7 108 gcrReg |= LCD_GCR_LCDDOZE((configure->lowPowerBehavior >> 1U) & 0x1U);
<> 144:ef7eb2e8f9f7 109 #endif
<> 144:ef7eb2e8f9f7 110 #if FSL_FEATURE_SLCD_HAS_FRAME_FREQUENCY_INTERRUPT
<> 144:ef7eb2e8f9f7 111 /* Configure for frame frequency interrupt. */
<> 144:ef7eb2e8f9f7 112 gcrReg |= LCD_GCR_LCDIEN(configure->frameFreqIntEnable);
<> 144:ef7eb2e8f9f7 113 #endif /* FSL_FEATURE_SLCD_HAS_FRAME_FREQUENCY_INTERRUPT */
<> 144:ef7eb2e8f9f7 114 #if FSL_FEATURE_SLCD_HAS_MULTI_ALTERNATE_CLOCK_SOURCE
<> 144:ef7eb2e8f9f7 115 /* Select the alternate clock for alternate clock source. */
<> 144:ef7eb2e8f9f7 116 gcrReg |= LCD_GCR_ALTSOURCE(((configure->clkConfig->clkSource) >> 1U) & 0x1U);
<> 144:ef7eb2e8f9f7 117 #endif /* FSL_FEATURE_SLCD_HAS_MULTI_ALTERNATE_CLOCK_SOURCE */
<> 144:ef7eb2e8f9f7 118 #if FSL_FEATURE_SLCD_HAS_FAST_FRAME_RATE
<> 144:ef7eb2e8f9f7 119 /* Configure the for fast frame rate. */
<> 144:ef7eb2e8f9f7 120 gcrReg |= LCD_GCR_FFR(configure->clkConfig->fastFrameRateEnable ? 1U : 0U);
<> 144:ef7eb2e8f9f7 121 #endif /* FSL_FEATURE_SLCD_HAS_FAST_FRAME_RATE */
<> 144:ef7eb2e8f9f7 122
<> 144:ef7eb2e8f9f7 123 if (configure->powerSupply & 0x1U)
<> 144:ef7eb2e8f9f7 124 {
<> 144:ef7eb2e8f9f7 125 gcrReg |= LCD_GCR_RVTRIM(configure->voltageTrim);
<> 144:ef7eb2e8f9f7 126 }
<> 144:ef7eb2e8f9f7 127 base->GCR = gcrReg;
<> 144:ef7eb2e8f9f7 128
<> 144:ef7eb2e8f9f7 129 /* Set display mode. */
<> 144:ef7eb2e8f9f7 130 base->AR = LCD_AR_ALT(configure->displayMode & 0x1U) | LCD_AR_BLANK((configure->displayMode >> 1U) & 0x1U);
<> 144:ef7eb2e8f9f7 131
<> 144:ef7eb2e8f9f7 132 /* Configure the front plane and back plane pin setting. */
<> 144:ef7eb2e8f9f7 133 base->BPEN[0] = configure->backPlaneLowPin;
<> 144:ef7eb2e8f9f7 134 base->BPEN[1] = configure->backPlaneHighPin;
<> 144:ef7eb2e8f9f7 135 base->PEN[0] = configure->slcdLowPinEnabled;
<> 144:ef7eb2e8f9f7 136 base->PEN[1] = configure->slcdHighPinEnabled;
<> 144:ef7eb2e8f9f7 137
<> 144:ef7eb2e8f9f7 138 /* Set the fault frame detection. */
<> 144:ef7eb2e8f9f7 139 base->FDCR = 0;
<> 144:ef7eb2e8f9f7 140 if (configure->faultConfig)
<> 144:ef7eb2e8f9f7 141 {
<> 144:ef7eb2e8f9f7 142 /* If fault configure structure is not NULL, the fault detection is enabled. */
<> 144:ef7eb2e8f9f7 143 base->FDCR = LCD_FDCR_FDPRS(configure->faultConfig->faultPrescaler) |
<> 144:ef7eb2e8f9f7 144 LCD_FDCR_FDSWW(configure->faultConfig->width) |
<> 144:ef7eb2e8f9f7 145 LCD_FDCR_FDBPEN(configure->faultConfig->faultDetectBackPlaneEnable ? 1U : 0U) |
<> 144:ef7eb2e8f9f7 146 LCD_FDCR_FDPINID(configure->faultConfig->faultDetectPinIndex) | LCD_FDCR_FDEN_MASK;
<> 144:ef7eb2e8f9f7 147 if (configure->faultConfig->faultDetectIntEnable)
<> 144:ef7eb2e8f9f7 148 {
<> 144:ef7eb2e8f9f7 149 base->GCR |= LCD_GCR_FDCIEN_MASK;
<> 144:ef7eb2e8f9f7 150 intEnabled = true;
<> 144:ef7eb2e8f9f7 151 }
<> 144:ef7eb2e8f9f7 152 }
<> 144:ef7eb2e8f9f7 153
<> 144:ef7eb2e8f9f7 154 /* Initialize the Waveform. */
<> 144:ef7eb2e8f9f7 155 for (regNum = 0; regNum < SLCD_WAVEFORM_CONFIG_NUM; regNum++)
<> 144:ef7eb2e8f9f7 156 {
<> 144:ef7eb2e8f9f7 157 base->WF[regNum] = 0;
<> 144:ef7eb2e8f9f7 158 }
<> 144:ef7eb2e8f9f7 159
<> 144:ef7eb2e8f9f7 160 /* Enable the NVIC. */
<> 144:ef7eb2e8f9f7 161 #if FSL_FEATURE_SLCD_HAS_FRAME_FREQUENCY_INTERRUPT
<> 144:ef7eb2e8f9f7 162 if (configure->frameFreqIntEnable)
<> 144:ef7eb2e8f9f7 163 {
<> 144:ef7eb2e8f9f7 164 intEnabled = true;
<> 144:ef7eb2e8f9f7 165 }
<> 144:ef7eb2e8f9f7 166 #endif /* FSL_FEATURE_SLCD_HAS_FRAME_FREQUENCY_INTERRUPT */
<> 144:ef7eb2e8f9f7 167 if (intEnabled)
<> 144:ef7eb2e8f9f7 168 {
<> 144:ef7eb2e8f9f7 169 EnableIRQ(LCD_IRQn);
<> 144:ef7eb2e8f9f7 170 }
<> 144:ef7eb2e8f9f7 171 }
<> 144:ef7eb2e8f9f7 172
<> 144:ef7eb2e8f9f7 173 void SLCD_Deinit(LCD_Type *base)
<> 144:ef7eb2e8f9f7 174 {
<> 144:ef7eb2e8f9f7 175 uint32_t instance = SLCD_GetInstance(base);
<> 144:ef7eb2e8f9f7 176
<> 144:ef7eb2e8f9f7 177 /* Stop SLCD display. */
<> 144:ef7eb2e8f9f7 178 SLCD_StopDisplay(base);
<> 144:ef7eb2e8f9f7 179
<> 144:ef7eb2e8f9f7 180 /* Gate the SLCD clock. */
<> 144:ef7eb2e8f9f7 181 CLOCK_DisableClock(s_slcdClock[instance]);
<> 144:ef7eb2e8f9f7 182
<> 144:ef7eb2e8f9f7 183 /* Disable NVIC. */
<> 144:ef7eb2e8f9f7 184 DisableIRQ(LCD_IRQn);
<> 144:ef7eb2e8f9f7 185 }
<> 144:ef7eb2e8f9f7 186
<> 144:ef7eb2e8f9f7 187 void SLCD_GetDefaultConfig(slcd_config_t *configure)
<> 144:ef7eb2e8f9f7 188 {
<> 144:ef7eb2e8f9f7 189 assert(configure);
<> 144:ef7eb2e8f9f7 190
<> 144:ef7eb2e8f9f7 191 /* Get Default parameters for the configuration structure. */
<> 144:ef7eb2e8f9f7 192 /* SLCD in normal mode. */
<> 144:ef7eb2e8f9f7 193 configure->displayMode = kSLCD_NormalMode;
<> 144:ef7eb2e8f9f7 194 /* Power supply default: use charge pump to generate VLL1 and VLL2, VLL3 connected to VDD internally. */
<> 144:ef7eb2e8f9f7 195 configure->powerSupply = kSLCD_InternalVll3UseChargePump;
<> 144:ef7eb2e8f9f7 196 configure->voltageTrim = kSLCD_RegulatedVolatgeTrim00;
<> 144:ef7eb2e8f9f7 197 /* Work in low power mode. */
<> 144:ef7eb2e8f9f7 198 configure->lowPowerBehavior = kSLCD_EnabledInWaitStop;
<> 144:ef7eb2e8f9f7 199 #if FSL_FEATURE_SLCD_HAS_FRAME_FREQUENCY_INTERRUPT
<> 144:ef7eb2e8f9f7 200 /* No interrupt source is enabled. */
<> 144:ef7eb2e8f9f7 201 configure->frameFreqIntEnable = false;
<> 144:ef7eb2e8f9f7 202 #endif /* FSL_FEATURE_SLCD_HAS_FRAME_FREQUENCY_INTERRUPT */
<> 144:ef7eb2e8f9f7 203 /* Fault detection is disabled. */
<> 144:ef7eb2e8f9f7 204 configure->faultConfig = NULL;
<> 144:ef7eb2e8f9f7 205 }
<> 144:ef7eb2e8f9f7 206
<> 144:ef7eb2e8f9f7 207 void SLCD_StartBlinkMode(LCD_Type *base, slcd_blink_mode_t mode, slcd_blink_rate_t rate)
<> 144:ef7eb2e8f9f7 208 {
<> 144:ef7eb2e8f9f7 209 base->AR &= ~(LCD_AR_BMODE_MASK | LCD_AR_BRATE_MASK);
<> 144:ef7eb2e8f9f7 210 /* Set blink mode and blink rate. */
<> 144:ef7eb2e8f9f7 211 base->AR |= LCD_AR_BMODE(mode) | LCD_AR_BRATE(rate);
<> 144:ef7eb2e8f9f7 212
<> 144:ef7eb2e8f9f7 213 /* Enable Blink mode. */
<> 144:ef7eb2e8f9f7 214 base->AR |= LCD_AR_BLINK_MASK;
<> 144:ef7eb2e8f9f7 215 }
<> 144:ef7eb2e8f9f7 216
<> 144:ef7eb2e8f9f7 217 void SLCD_EnableInterrupts(LCD_Type *base, uint32_t mask)
<> 144:ef7eb2e8f9f7 218 {
<> 144:ef7eb2e8f9f7 219 uint32_t gcReg = base->GCR;
<> 144:ef7eb2e8f9f7 220
<> 144:ef7eb2e8f9f7 221 gcReg |= LCD_GCR_FDCIEN(mask & 0x1U);
<> 144:ef7eb2e8f9f7 222 #if FSL_FEATURE_SLCD_HAS_FRAME_FREQUENCY_INTERRUPT
<> 144:ef7eb2e8f9f7 223 gcReg |= LCD_GCR_LCDEN((mask >> 1U) & 0x1U);
<> 144:ef7eb2e8f9f7 224 #endif /* FSL_FEATURE_SLCD_HAS_FRAME_FREQUENCY_INTERRUPT */
<> 144:ef7eb2e8f9f7 225
<> 144:ef7eb2e8f9f7 226 base->GCR = gcReg;
<> 144:ef7eb2e8f9f7 227 }
<> 144:ef7eb2e8f9f7 228
<> 144:ef7eb2e8f9f7 229 void SLCD_DisableInterrupts(LCD_Type *base, uint32_t mask)
<> 144:ef7eb2e8f9f7 230 {
<> 144:ef7eb2e8f9f7 231 uint32_t gcrReg = base->GCR;
<> 144:ef7eb2e8f9f7 232
<> 144:ef7eb2e8f9f7 233 /*!< SLCD fault detection complete interrupt source. */
<> 144:ef7eb2e8f9f7 234 if (mask & kSLCD_FaultDetectCompleteInterrupt)
<> 144:ef7eb2e8f9f7 235 {
<> 144:ef7eb2e8f9f7 236 gcrReg &= ~LCD_GCR_FDCIEN_MASK;
<> 144:ef7eb2e8f9f7 237 }
<> 144:ef7eb2e8f9f7 238 /*!< SLCD frame frequency interrupt source. */
<> 144:ef7eb2e8f9f7 239 #if FSL_FEATURE_SLCD_HAS_FRAME_FREQUENCY_INTERRUPT
<> 144:ef7eb2e8f9f7 240 if (mask & kSLCD_FrameFreqInterrupt)
<> 144:ef7eb2e8f9f7 241 {
<> 144:ef7eb2e8f9f7 242 gcrReg &= ~LCD_GCR_LCDIEN_MASK;
<> 144:ef7eb2e8f9f7 243 }
<> 144:ef7eb2e8f9f7 244 #endif /* FSL_FEATURE_SLCD_HAS_FRAME_FREQUENCY_INTERRUPT */
<> 144:ef7eb2e8f9f7 245
<> 144:ef7eb2e8f9f7 246 base->GCR = gcrReg;
<> 144:ef7eb2e8f9f7 247 }
<> 144:ef7eb2e8f9f7 248
<> 144:ef7eb2e8f9f7 249 void SLCD_ClearInterruptStatus(LCD_Type *base, uint32_t mask)
<> 144:ef7eb2e8f9f7 250 {
<> 144:ef7eb2e8f9f7 251 /*!< SLCD fault detection complete interrupt source. */
<> 144:ef7eb2e8f9f7 252 if (mask & kSLCD_FaultDetectCompleteInterrupt)
<> 144:ef7eb2e8f9f7 253 {
<> 144:ef7eb2e8f9f7 254 base->FDSR |= LCD_FDSR_FDCF_MASK;
<> 144:ef7eb2e8f9f7 255 }
<> 144:ef7eb2e8f9f7 256 /*!< SLCD frame frequency interrupt source. */
<> 144:ef7eb2e8f9f7 257 #if FSL_FEATURE_SLCD_HAS_FRAME_FREQUENCY_INTERRUPT
<> 144:ef7eb2e8f9f7 258 if (mask & kSLCD_FrameFreqInterrupt)
<> 144:ef7eb2e8f9f7 259 {
<> 144:ef7eb2e8f9f7 260 base->AR |= LCD_AR_LCDIF_MASK;
<> 144:ef7eb2e8f9f7 261 }
<> 144:ef7eb2e8f9f7 262 #endif /* FSL_FEATURE_SLCD_HAS_FRAME_FREQUENCY_INTERRUPT */
<> 144:ef7eb2e8f9f7 263 }
<> 144:ef7eb2e8f9f7 264
<> 144:ef7eb2e8f9f7 265 uint32_t SLCD_GetInterruptStatus(LCD_Type *base)
<> 144:ef7eb2e8f9f7 266 {
<> 144:ef7eb2e8f9f7 267 uint32_t status = 0;
<> 144:ef7eb2e8f9f7 268
<> 144:ef7eb2e8f9f7 269 /* Get the frame detect complete interrupt status. */
<> 144:ef7eb2e8f9f7 270 status = ((base->FDSR & LCD_FDSR_FDCF_MASK) >> LCD_FDSR_FDCF_SHIFT);
<> 144:ef7eb2e8f9f7 271
<> 144:ef7eb2e8f9f7 272 #if FSL_FEATURE_SLCD_HAS_FRAME_FREQUENCY_INTERRUPT
<> 144:ef7eb2e8f9f7 273 /* Get the frame frequency interrupt status. */
<> 144:ef7eb2e8f9f7 274 status |= ((base->AR & LCD_AR_LCDIF_MASK) >> (LCD_AR_LCDIF_SHIFT - 1));
<> 144:ef7eb2e8f9f7 275 #endif /* FSL_FEATURE_SLCD_HAS_FRAME_FREQUENCY_INTERRUPT */
<> 144:ef7eb2e8f9f7 276
<> 144:ef7eb2e8f9f7 277 return status;
<> 144:ef7eb2e8f9f7 278 }