HPM SDK
HPMicro Software Development Kit
hpm_gpiom_drv.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2021 HPMicro
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 
8 #ifndef HPM_GPIOM_DRV_H
9 #define HPM_GPIOM_DRV_H
10 
11 #include "hpm_gpiom_regs.h"
12 #include "hpm_gpiom_soc_drv.h"
13 
22 /* @brief pin visibility */
23 typedef enum gpiom_pin_visibility {
27 
28 #ifdef __cplusplus
29 extern "C" {
30 #endif
31 
42  uint8_t gpio_index,
43  uint8_t pin_index)
44 {
45  return (gpiom_gpio_t)((ptr->ASSIGN[gpio_index].PIN[pin_index]
47 }
48 
57 static inline void gpiom_set_pin_controller(GPIOM_Type *ptr,
58  uint8_t gpio_index,
59  uint8_t pin_index,
60  gpiom_gpio_t gpio)
61 {
62  ptr->ASSIGN[gpio_index].PIN[pin_index] =
63  (ptr->ASSIGN[gpio_index].PIN[pin_index] & ~(GPIOM_ASSIGN_PIN_SELECT_MASK))
65 }
66 
78 static inline bool gpiom_check_pin_visibility(GPIOM_Type *ptr,
79  uint8_t gpio_index,
80  uint8_t pin_index,
81  gpiom_gpio_t gpio)
82 {
83  return (ptr->ASSIGN[gpio_index].PIN[pin_index] & ((1 << gpio) << GPIOM_ASSIGN_PIN_HIDE_SHIFT))
85 }
86 
95 static inline void gpiom_enable_pin_visibility(GPIOM_Type *ptr,
96  uint8_t gpio_index,
97  uint8_t pin_index,
98  gpiom_gpio_t gpio)
99 {
100  ptr->ASSIGN[gpio_index].PIN[pin_index] =
101  (ptr->ASSIGN[gpio_index].PIN[pin_index] & ~((1 << gpio) << GPIOM_ASSIGN_PIN_HIDE_SHIFT));
102 }
103 
112 static inline void gpiom_disable_pin_visibility(GPIOM_Type *ptr,
113  uint8_t gpio_index,
114  uint8_t pin_index,
115  gpiom_gpio_t gpio)
116 {
117  ptr->ASSIGN[gpio_index].PIN[pin_index] =
118  (ptr->ASSIGN[gpio_index].PIN[pin_index] & ~((1 << gpio) << GPIOM_ASSIGN_PIN_HIDE_SHIFT))
119  | GPIOM_ASSIGN_PIN_HIDE_SET(1 << gpio);
120 }
121 
132 static inline bool gpiom_pin_is_locked(GPIOM_Type *ptr,
133  uint8_t gpio_index,
134  uint8_t pin_index)
135 {
136  return (ptr->ASSIGN[gpio_index].PIN[pin_index] & GPIOM_ASSIGN_PIN_LOCK_MASK)
138 }
139 
147 static inline void gpiom_lock_pin(GPIOM_Type *ptr,
148  uint8_t gpio_index,
149  uint8_t pin_index)
150 {
151  ptr->ASSIGN[gpio_index].PIN[pin_index] |= GPIOM_ASSIGN_PIN_LOCK_MASK;
152 }
153 
154 #ifdef __cplusplus
155 }
156 #endif
161 #endif /* HPM_GPIOM_DRV_H */
162 
#define GPIOM_ASSIGN_PIN_LOCK_MASK
Definition: hpm_gpiom_regs.h:27
#define GPIOM_ASSIGN_PIN_SELECT_SHIFT
Definition: hpm_gpiom_regs.h:52
#define GPIOM_ASSIGN_PIN_SELECT_SET(x)
Definition: hpm_gpiom_regs.h:53
#define GPIOM_ASSIGN_PIN_HIDE_SHIFT
Definition: hpm_gpiom_regs.h:40
#define GPIOM_ASSIGN_PIN_HIDE_SET(x)
Definition: hpm_gpiom_regs.h:41
#define GPIOM_ASSIGN_PIN_SELECT_MASK
Definition: hpm_gpiom_regs.h:51
static void gpiom_disable_pin_visibility(GPIOM_Type *ptr, uint8_t gpio_index, uint8_t pin_index, gpiom_gpio_t gpio)
disable pin visibility for specified module
Definition: hpm_gpiom_drv.h:112
enum gpiom_pin_visibility gpiom_pin_visibility_t
static void gpiom_enable_pin_visibility(GPIOM_Type *ptr, uint8_t gpio_index, uint8_t pin_index, gpiom_gpio_t gpio)
enable pin visibility for specified module
Definition: hpm_gpiom_drv.h:95
static void gpiom_set_pin_controller(GPIOM_Type *ptr, uint8_t gpio_index, uint8_t pin_index, gpiom_gpio_t gpio)
set pin's controller
Definition: hpm_gpiom_drv.h:57
static gpiom_gpio_t gpiom_get_pin_controller(GPIOM_Type *ptr, uint8_t gpio_index, uint8_t pin_index)
Get pin's controller.
Definition: hpm_gpiom_drv.h:41
static bool gpiom_pin_is_locked(GPIOM_Type *ptr, uint8_t gpio_index, uint8_t pin_index)
Check if pin management is locked.
Definition: hpm_gpiom_drv.h:132
static void gpiom_lock_pin(GPIOM_Type *ptr, uint8_t gpio_index, uint8_t pin_index)
lock pin management
Definition: hpm_gpiom_drv.h:147
enum gpiom_gpio gpiom_gpio_t
gpiom_pin_visibility
Definition: hpm_gpiom_drv.h:23
static bool gpiom_check_pin_visibility(GPIOM_Type *ptr, uint8_t gpio_index, uint8_t pin_index, gpiom_gpio_t gpio)
Check if pin is visibility for specified module.
Definition: hpm_gpiom_drv.h:78
@ gpiom_pin_invisible
Definition: hpm_gpiom_drv.h:25
@ gpiom_pin_visible
Definition: hpm_gpiom_drv.h:24
Definition: hpm_gpiom_regs.h:12
struct GPIOM_Type::@302 ASSIGN[15]
__RW uint32_t PIN[32]
Definition: hpm_gpiom_regs.h:14