NHS31xx SW API
gpio_nss.h
1 /*
2  * Copyright 2014-2018,2020 NXP
3  * This software is owned or controlled by NXP and may only be used strictly
4  * in accordance with the applicable license terms. By expressly accepting
5  * such terms or by downloading, installing, activating and/or otherwise using
6  * the software, you are agreeing that you have read, and that you agree to
7  * comply with and are bound by, such license terms. If you do not agree to
8  * be bound by the applicable license terms, then you may not retain, install,
9  * activate or otherwise use the software.
10  */
11 
12 #ifndef __GPIO_NSS_H_
13 #define __GPIO_NSS_H_
14 
97 typedef struct NSS_GPIO_S {
98  __IO uint32_t DATA[4096];
99  uint32_t RESERVED1[4096];
100  __IO uint32_t DIR;
101  __IO uint32_t IS;
102  __IO uint32_t IBE;
103  __IO uint32_t IEV;
104  __IO uint32_t IE;
105  __I uint32_t RIS;
106  __I uint32_t MIS;
107  __O uint32_t IC;
108  uint32_t RESERVED2[8184]; /* Padding added for aligning contiguous GPIO blocks */
109 } NSS_GPIO_T;
110 
112 #define NSS_GPIOn_PINMASK(x) (1<<(x))
113 
115 typedef enum GPIO_INT_MODE {
122 
127 void Chip_GPIO_Init(NSS_GPIO_T *pGPIO);
128 
133 void Chip_GPIO_DeInit(NSS_GPIO_T *pGPIO);
134 
142 static inline void Chip_GPIO_SetPinState(NSS_GPIO_T *pGPIO, uint8_t port, uint8_t pin, bool setting)
143 {
144  pGPIO[port].DATA[1 << pin] = (uint32_t)setting << pin;
145 }
146 
154 static inline bool Chip_GPIO_GetPinState(NSS_GPIO_T *pGPIO, uint8_t port, uint8_t pin)
155 {
156  return (pGPIO[port].DATA[1 << pin]) != 0;
157 }
158 
165 static inline void Chip_GPIO_SetPinDIROutput(NSS_GPIO_T *pGPIO, uint8_t port, uint8_t pin)
166 {
167  pGPIO[port].DIR |= (1UL << pin);
168 }
169 
176 static inline void Chip_GPIO_SetPinDIRInput(NSS_GPIO_T *pGPIO, uint8_t port, uint8_t pin)
177 {
178  pGPIO[port].DIR &= ~(1UL << pin);
179 }
180 
188 void Chip_GPIO_SetPinDIR(NSS_GPIO_T *pGPIO, uint8_t port, uint8_t pin, bool output);
189 
197 static inline bool Chip_GPIO_GetPinDIR(NSS_GPIO_T *pGPIO, uint8_t port, uint8_t pin)
198 {
199  return (bool)((pGPIO[port].DIR >> pin) & 1);
200 }
201 
210 static inline void Chip_GPIO_SetPortDIROutput(NSS_GPIO_T *pGPIO, uint8_t port, uint32_t pinMask)
211 {
212  pGPIO[port].DIR |= pinMask;
213 }
214 
223 static inline void Chip_GPIO_SetPortDIRInput(NSS_GPIO_T *pGPIO, uint8_t port, uint32_t pinMask)
224 {
225  pGPIO[port].DIR &= ~pinMask;
226 }
227 
237 void Chip_GPIO_SetPortDIR(NSS_GPIO_T *pGPIO, uint8_t port, uint32_t pinMask, bool outSet);
238 
247 static inline uint32_t Chip_GPIO_GetPortDIR(NSS_GPIO_T *pGPIO, uint8_t port)
248 {
249  return pGPIO[port].DIR;
250 }
251 
258 static inline void Chip_GPIO_SetPortValue(NSS_GPIO_T *pGPIO, uint8_t port, uint32_t value)
259 {
260  pGPIO[port].DATA[0xFFF] = value;
261 }
262 
269 static inline uint32_t Chip_GPIO_GetPortValue(NSS_GPIO_T *pGPIO, uint8_t port)
270 {
271  return pGPIO[port].DATA[0xFFF];
272 }
273 
282 static inline void Chip_GPIO_SetPortOutHigh(NSS_GPIO_T *pGPIO, uint8_t port, uint32_t pinMask)
283 {
284  pGPIO[port].DATA[pinMask] = 0xFFF;
285 }
286 
294 static inline void Chip_GPIO_SetPinOutHigh(NSS_GPIO_T *pGPIO, uint8_t port, uint8_t pin)
295 {
296  pGPIO[port].DATA[1 << pin] = (1u << pin);
297 }
298 
307 static inline void Chip_GPIO_SetPortOutLow(NSS_GPIO_T *pGPIO, uint8_t port, uint32_t pinMask)
308 {
309  pGPIO[port].DATA[pinMask] = 0;
310 }
311 
319 static inline void Chip_GPIO_SetPinOutLow(NSS_GPIO_T *pGPIO, uint8_t port, uint8_t pin)
320 {
321  pGPIO[port].DATA[1 << pin] = 0;
322 }
323 
332 static inline void Chip_GPIO_SetPortToggle(NSS_GPIO_T *pGPIO, uint8_t port, uint32_t pinMask)
333 {
334  pGPIO[port].DATA[pinMask] ^= 0xFFF;
335 }
336 
344 static inline void Chip_GPIO_SetPinToggle(NSS_GPIO_T *pGPIO, uint8_t port, uint8_t pin)
345 {
346  pGPIO[port].DATA[1 << pin] ^= (1u << pin);
347 }
348 
355 static inline void Chip_GPIO_SetPinModeEdge(NSS_GPIO_T *pGPIO, uint8_t port, uint32_t pinmask)
356 {
357  pGPIO[port].IS &= ~pinmask;
358 }
359 
366 static inline void Chip_GPIO_SetPinModeLevel(NSS_GPIO_T *pGPIO, uint8_t port, uint32_t pinmask)
367 {
368  pGPIO[port].IS |= pinmask;
369 }
370 
380 static inline uint32_t Chip_GPIO_IsLevelEnabled(NSS_GPIO_T *pGPIO, uint8_t port)
381 {
382  return pGPIO[port].IS;
383 }
384 
391 static inline void Chip_GPIO_SetEdgeModeBoth(NSS_GPIO_T *pGPIO, uint8_t port, uint32_t pinmask)
392 {
393  pGPIO[port].IBE |= pinmask;
394 }
395 
402 static inline void Chip_GPIO_SetEdgeModeSingle(NSS_GPIO_T *pGPIO, uint8_t port, uint32_t pinmask)
403 {
404  pGPIO[port].IBE &= ~pinmask;
405 }
406 
417 static inline uint32_t Chip_GPIO_GetEdgeModeDir(NSS_GPIO_T *pGPIO, uint8_t port)
418 {
419  return pGPIO[port].IBE;
420 }
421 
430 static inline void Chip_GPIO_SetModeHigh(NSS_GPIO_T *pGPIO, uint8_t port, uint32_t pinmask)
431 {
432  pGPIO[port].IEV |= pinmask;
433 }
434 
443 static inline void Chip_GPIO_SetModeLow(NSS_GPIO_T *pGPIO, uint8_t port, uint32_t pinmask)
444 {
445  pGPIO[port].IEV &= ~pinmask;
446 }
447 
457 static inline uint32_t Chip_GPIO_GetModeHighLow(NSS_GPIO_T *pGPIO, uint8_t port)
458 {
459  return pGPIO[port].IEV;
460 }
461 
468 static inline void Chip_GPIO_EnableInt(NSS_GPIO_T *pGPIO, uint8_t port, uint32_t pinmask)
469 {
470  pGPIO[port].IE |= pinmask;
471 }
472 
479 static inline void Chip_GPIO_DisableInt(NSS_GPIO_T *pGPIO, uint8_t port, uint32_t pinmask)
480 {
481  pGPIO[port].IE &= ~pinmask;
482 }
483 
490 static inline uint32_t Chip_GPIO_GetEnabledInts(NSS_GPIO_T *pGPIO, uint8_t port)
491 {
492  return pGPIO[port].IE;
493 }
494 
501 static inline uint32_t Chip_GPIO_GetRawInts(NSS_GPIO_T *pGPIO, uint8_t port)
502 {
503  return pGPIO[port].RIS;
504 }
505 
512 static inline uint32_t Chip_GPIO_GetMaskedInts(NSS_GPIO_T *pGPIO, uint8_t port)
513 {
514  return pGPIO[port].MIS;
515 }
516 
523 static inline void Chip_GPIO_ClearInts(NSS_GPIO_T *pGPIO, uint8_t port, uint32_t pinmask)
524 {
525  pGPIO[port].IC = pinmask;
526 }
527 
535 void Chip_GPIO_SetupPinInt(NSS_GPIO_T *pGPIO, uint8_t port, uint8_t pin, GPIO_INT_MODE_T mode);
536 
537 #endif
static void Chip_GPIO_SetPinDIRInput(NSS_GPIO_T *pGPIO, uint8_t port, uint8_t pin)
Definition: gpio_nss.h:176
static uint32_t Chip_GPIO_GetEnabledInts(NSS_GPIO_T *pGPIO, uint8_t port)
Definition: gpio_nss.h:490
Definition: gpio_nss.h:119
static void Chip_GPIO_SetPortOutHigh(NSS_GPIO_T *pGPIO, uint8_t port, uint32_t pinMask)
Definition: gpio_nss.h:282
Definition: gpio_nss.h:118
static void Chip_GPIO_SetPortToggle(NSS_GPIO_T *pGPIO, uint8_t port, uint32_t pinMask)
Definition: gpio_nss.h:332
void Chip_GPIO_SetPortDIR(NSS_GPIO_T *pGPIO, uint8_t port, uint32_t pinMask, bool outSet)
static void Chip_GPIO_SetPinDIROutput(NSS_GPIO_T *pGPIO, uint8_t port, uint8_t pin)
Definition: gpio_nss.h:165
static uint32_t Chip_GPIO_GetPortDIR(NSS_GPIO_T *pGPIO, uint8_t port)
Definition: gpio_nss.h:247
__I uint32_t RIS
Definition: gpio_nss.h:105
static uint32_t Chip_GPIO_GetModeHighLow(NSS_GPIO_T *pGPIO, uint8_t port)
Definition: gpio_nss.h:457
__IO uint32_t IBE
Definition: gpio_nss.h:102
static void Chip_GPIO_SetPortDIROutput(NSS_GPIO_T *pGPIO, uint8_t port, uint32_t pinMask)
Definition: gpio_nss.h:210
#define __IO
Definition: core_cm0plus.h:167
static void Chip_GPIO_SetPortValue(NSS_GPIO_T *pGPIO, uint8_t port, uint32_t value)
Definition: gpio_nss.h:258
#define __I
Definition: core_cm0plus.h:164
static void Chip_GPIO_SetPinOutHigh(NSS_GPIO_T *pGPIO, uint8_t port, uint8_t pin)
Definition: gpio_nss.h:294
static void Chip_GPIO_DisableInt(NSS_GPIO_T *pGPIO, uint8_t port, uint32_t pinmask)
Definition: gpio_nss.h:479
__I uint32_t MIS
Definition: gpio_nss.h:106
static void Chip_GPIO_SetModeHigh(NSS_GPIO_T *pGPIO, uint8_t port, uint32_t pinmask)
Definition: gpio_nss.h:430
static void Chip_GPIO_SetPinToggle(NSS_GPIO_T *pGPIO, uint8_t port, uint8_t pin)
Definition: gpio_nss.h:344
static void Chip_GPIO_SetPinModeLevel(NSS_GPIO_T *pGPIO, uint8_t port, uint32_t pinmask)
Definition: gpio_nss.h:366
static void Chip_GPIO_SetModeLow(NSS_GPIO_T *pGPIO, uint8_t port, uint32_t pinmask)
Definition: gpio_nss.h:443
static bool Chip_GPIO_GetPinDIR(NSS_GPIO_T *pGPIO, uint8_t port, uint8_t pin)
Definition: gpio_nss.h:197
static bool Chip_GPIO_GetPinState(NSS_GPIO_T *pGPIO, uint8_t port, uint8_t pin)
Definition: gpio_nss.h:154
__IO uint32_t IS
Definition: gpio_nss.h:101
static uint32_t Chip_GPIO_GetPortValue(NSS_GPIO_T *pGPIO, uint8_t port)
Definition: gpio_nss.h:269
void Chip_GPIO_SetPinDIR(NSS_GPIO_T *pGPIO, uint8_t port, uint8_t pin, bool output)
static void Chip_GPIO_ClearInts(NSS_GPIO_T *pGPIO, uint8_t port, uint32_t pinmask)
Definition: gpio_nss.h:523
Definition: gpio_nss.h:116
__O uint32_t IC
Definition: gpio_nss.h:107
GPIO_INT_MODE_T
Definition: gpio_nss.h:115
void Chip_GPIO_SetupPinInt(NSS_GPIO_T *pGPIO, uint8_t port, uint8_t pin, GPIO_INT_MODE_T mode)
static void Chip_GPIO_SetPinState(NSS_GPIO_T *pGPIO, uint8_t port, uint8_t pin, bool setting)
Definition: gpio_nss.h:142
__IO uint32_t IEV
Definition: gpio_nss.h:103
Definition: gpio_nss.h:117
#define __O
Definition: core_cm0plus.h:166
__IO uint32_t DATA[4096]
Definition: gpio_nss.h:98
Definition: gpio_nss.h:97
static uint32_t Chip_GPIO_GetEdgeModeDir(NSS_GPIO_T *pGPIO, uint8_t port)
Definition: gpio_nss.h:417
static void Chip_GPIO_EnableInt(NSS_GPIO_T *pGPIO, uint8_t port, uint32_t pinmask)
Definition: gpio_nss.h:468
static uint32_t Chip_GPIO_GetRawInts(NSS_GPIO_T *pGPIO, uint8_t port)
Definition: gpio_nss.h:501
void Chip_GPIO_DeInit(NSS_GPIO_T *pGPIO)
static void Chip_GPIO_SetPinOutLow(NSS_GPIO_T *pGPIO, uint8_t port, uint8_t pin)
Definition: gpio_nss.h:319
static uint32_t Chip_GPIO_GetMaskedInts(NSS_GPIO_T *pGPIO, uint8_t port)
Definition: gpio_nss.h:512
Definition: gpio_nss.h:120
__IO uint32_t DIR
Definition: gpio_nss.h:100
void Chip_GPIO_Init(NSS_GPIO_T *pGPIO)
static uint32_t Chip_GPIO_IsLevelEnabled(NSS_GPIO_T *pGPIO, uint8_t port)
Definition: gpio_nss.h:380
static void Chip_GPIO_SetEdgeModeSingle(NSS_GPIO_T *pGPIO, uint8_t port, uint32_t pinmask)
Definition: gpio_nss.h:402
static void Chip_GPIO_SetPortDIRInput(NSS_GPIO_T *pGPIO, uint8_t port, uint32_t pinMask)
Definition: gpio_nss.h:223
static void Chip_GPIO_SetEdgeModeBoth(NSS_GPIO_T *pGPIO, uint8_t port, uint32_t pinmask)
Definition: gpio_nss.h:391
static void Chip_GPIO_SetPortOutLow(NSS_GPIO_T *pGPIO, uint8_t port, uint32_t pinMask)
Definition: gpio_nss.h:307
__IO uint32_t IE
Definition: gpio_nss.h:104
static void Chip_GPIO_SetPinModeEdge(NSS_GPIO_T *pGPIO, uint8_t port, uint32_t pinmask)
Definition: gpio_nss.h:355