Lines Matching refs:pin
87 uint8_t pin; member
101 static bool pin_is_vci(uint16_t pin) in pin_is_vci() argument
104 if (pin == gpio_vci_table[i].pin) { in pin_is_vci()
111 static struct mec_gpio_vci_pin const *find_gpio_vci_info(uint16_t pin) in find_gpio_vci_info() argument
114 if (pin == gpio_vci_table[i].pin) { in find_gpio_vci_info()
123 static inline uint8_t pin_get_port(uint16_t pin) in pin_get_port() argument
125 return (uint8_t)(((pin & 0x1FFu) >> 5) & 0xffu); in pin_get_port()
128 static inline uint8_t pin_get_bitpos(uint16_t pin) in pin_get_bitpos() argument
130 return (uint8_t)(pin & 0x1Fu); in pin_get_bitpos()
169 static inline bool pin_is_valid(uint32_t pin) in pin_is_valid() argument
171 uint32_t port = pin_get_port((uint16_t)(pin & 0xffffu)); in pin_is_valid()
172 uint8_t bitpos = pin_get_bitpos((uint16_t)(pin & 0xffffu)); in pin_is_valid()
181 int mec_hal_gpio_pin_valid(uint32_t pin) in mec_hal_gpio_pin_valid() argument
183 if (pin_is_valid(pin)) { in mec_hal_gpio_pin_valid()
212 int mec_hal_gpio_pin_valid(uint32_t pin) in mec_hal_gpio_pin_valid() argument
250 #define MEC_GPIO_PIN_CTRL_ADDR(pin) \ argument
251 ((MEC_GPIO_CTRL_ADDR) + ((uint32_t)(pin) * 4u));
253 #define MEC_GPIO_PIN_CTRL2_ADDR(pin) \ argument
254 ((MEC_GPIO_CTRL2_ADDR) + ((uint32_t)(pin) * 4u));
266 static inline uintptr_t gpio_control_addr(uint32_t pin) in gpio_control_addr() argument
268 return (uintptr_t)(MEC_GPIO_CTRL_ADDR) + (uint32_t)(pin * 4U); in gpio_control_addr()
271 static inline uintptr_t gpio_control2_addr(uint16_t pin) in gpio_control2_addr() argument
273 return (uintptr_t)(MEC_GPIO_CTRL2_ADDR) + (uint32_t)(pin * 4U); in gpio_control2_addr()
288 uintptr_t mec_hal_gpio_ctrl_addr(uint32_t pin) in mec_hal_gpio_ctrl_addr() argument
291 if (!pin_is_valid(pin)) { in mec_hal_gpio_ctrl_addr()
295 return gpio_control_addr(pin); in mec_hal_gpio_ctrl_addr()
298 uintptr_t mec_hal_gpio_ctrl2_addr(uint32_t pin) in mec_hal_gpio_ctrl2_addr() argument
301 if (!pin_is_valid(pin)) { in mec_hal_gpio_ctrl2_addr()
305 return gpio_control2_addr(pin & 0xffffu); in mec_hal_gpio_ctrl2_addr()
308 int mec_hal_gpio_is_output(uint32_t pin) in mec_hal_gpio_is_output() argument
311 if (!pin_is_valid(pin)) { in mec_hal_gpio_is_output()
315 if (MEC_GPIO->CTRL[pin] & (MEC_GPIO_CTRL_DIR_OUTPUT << MEC_GPIO_CTRL_DIR_Pos)) { in mec_hal_gpio_is_output()
322 int mec_hal_gpio_disable_input_pad(uint32_t pin) in mec_hal_gpio_disable_input_pad() argument
325 if (!pin_is_valid(pin)) { in mec_hal_gpio_disable_input_pad()
330 MEC_GPIO->CTRL[pin] |= MEC_BIT(MEC_GPIO_CTRL_INPD_Pos); in mec_hal_gpio_disable_input_pad()
335 int mec_hal_gpio_enable_input_pad(uint32_t pin) in mec_hal_gpio_enable_input_pad() argument
338 if (!pin_is_valid(pin)) { in mec_hal_gpio_enable_input_pad()
343 MEC_GPIO->CTRL[pin] &= ~MEC_BIT(MEC_GPIO_CTRL_INPD_Pos); in mec_hal_gpio_enable_input_pad()
349 int mec_hal_gpio_is_locked(uint32_t pin) in mec_hal_gpio_is_locked() argument
352 if (!pin_is_valid(pin)) { in mec_hal_gpio_is_locked()
356 uint32_t bitpos = pin_get_bitpos(pin & 0xffffu); in mec_hal_gpio_is_locked()
357 uint32_t port = pin_get_port(pin & 0xffffu); in mec_hal_gpio_is_locked()
367 int mec_hal_gpio_get_config(uint32_t pin, uint32_t *config) in mec_hal_gpio_get_config() argument
370 if (!pin_is_valid(pin)) { in mec_hal_gpio_get_config()
378 *config = MEC_GPIO->CTRL[pin] & 0xffffu; in mec_hal_gpio_get_config()
383 int mec_hal_gpio_set_config(uint32_t pin, uint32_t cfg) in mec_hal_gpio_set_config() argument
386 if (!pin_is_valid(pin)) { in mec_hal_gpio_set_config()
391 MEC_MMCR16_WR(&MEC_GPIO->CTRL[pin], cfg & 0xffffu); in mec_hal_gpio_set_config()
396 int mec_hal_gpio_set_config_mask(uint32_t pin, uint32_t cfg, uint32_t mask) in mec_hal_gpio_set_config_mask() argument
399 if (!pin_is_valid(pin)) { in mec_hal_gpio_set_config_mask()
404 uint16_t pin_cfg = MEC_MMCR16_RD(&MEC_GPIO->CTRL[pin]) & (uint16_t)~mask; in mec_hal_gpio_set_config_mask()
407 MEC_MMCR16_WR(&MEC_GPIO->CTRL[pin], pin_cfg); in mec_hal_gpio_set_config_mask()
440 int mec_hal_gpio_get_property(uint32_t pin, uint8_t prop_id, uint8_t *prop) in mec_hal_gpio_get_property() argument
443 if (!pin_is_valid(pin)) { in mec_hal_gpio_get_property()
452 uintptr_t regaddr = (uintptr_t)&MEC_GPIO->CTRL[pin]; in mec_hal_gpio_get_property()
465 int mec_hal_gpio_set_property(uint32_t pin, uint8_t prop_id, uint8_t val) in mec_hal_gpio_set_property() argument
468 if (!pin_is_valid(pin)) { in mec_hal_gpio_set_property()
479 uintptr_t regaddr = (uintptr_t)&MEC_GPIO->CTRL[pin]; in mec_hal_gpio_set_property()
499 int mec_hal_gpio_set_props(uint32_t pin, const struct mec_gpio_props *gprops, size_t nprops) in mec_hal_gpio_set_props() argument
502 if (!pin_is_valid(pin)) { in mec_hal_gpio_set_props()
515 uint32_t ctrl = MEC_GPIO->CTRL[pin]; in mec_hal_gpio_set_props()
516 uint32_t ctrl2 = MEC_GPIO->CTL2[pin]; in mec_hal_gpio_set_props()
531 MEC_GPIO->CTL2[pin] = ctrl2; in mec_hal_gpio_set_props()
532 MEC_GPIO->CTRL[pin] = ctrl; in mec_hal_gpio_set_props()
615 int mec_hal_gpio_pin_config(uint32_t pin, uint32_t config) in mec_hal_gpio_pin_config() argument
620 if (!pin_is_valid(pin)) { in mec_hal_gpio_pin_config()
632 MEC_GPIO->CTL2[pin] = ctrl; in mec_hal_gpio_pin_config()
657 MEC_GPIO->CTRL[pin] = ctrl; in mec_hal_gpio_pin_config()
660 MEC_GPIO->CTRL[pin] |= MEC_BIT(MEC_GPIO_CTRL_PAREN_Pos); in mec_hal_gpio_pin_config()
666 uint32_t mec_hal_gpio_get_ctrl_nc(uint32_t pin) in mec_hal_gpio_get_ctrl_nc() argument
668 return MEC_GPIO->CTRL[pin]; in mec_hal_gpio_get_ctrl_nc()
671 void mec_hal_gpio_set_ctrl_nc(uint32_t pin, uint32_t ctrl_val) in mec_hal_gpio_set_ctrl_nc() argument
673 MEC_GPIO->CTRL[pin] = ctrl_val; in mec_hal_gpio_set_ctrl_nc()
678 uint32_t pin = mec_hal_gpio_pin_num_nc(port, port_pin_pos); in mec_hal_gpio_port_get_ctrl_nc() local
680 return MEC_GPIO->CTRL[pin]; in mec_hal_gpio_port_get_ctrl_nc()
686 uint32_t pin = mec_hal_gpio_pin_num_nc(port, port_pin_pos); in mec_hal_gpio_port_set_ctrl_nc() local
688 MEC_GPIO->CTRL[pin] = ctrl_val; in mec_hal_gpio_port_set_ctrl_nc()
691 int mec_hal_gpio_get_ctrl(uint32_t pin, uint32_t *ctrl) in mec_hal_gpio_get_ctrl() argument
694 if (!pin_is_valid(pin)) { in mec_hal_gpio_get_ctrl()
703 *ctrl = MEC_GPIO->CTRL[pin]; in mec_hal_gpio_get_ctrl()
708 int mec_hal_gpio_set_ctrl(uint32_t pin, uint32_t new_ctrl) in mec_hal_gpio_set_ctrl() argument
711 if (!pin_is_valid(pin)) { in mec_hal_gpio_set_ctrl()
716 MEC_GPIO->CTRL[pin] = new_ctrl; in mec_hal_gpio_set_ctrl()
721 int mec_hal_gpio_set_ctrl_mask(uint32_t pin, uint32_t val, uint32_t mask) in mec_hal_gpio_set_ctrl_mask() argument
724 if (!pin_is_valid(pin)) { in mec_hal_gpio_set_ctrl_mask()
728 MEC_GPIO->CTRL[pin] = (MEC_GPIO->CTRL[pin] & ~mask) | (val & mask); in mec_hal_gpio_set_ctrl_mask()
733 int mec_hal_gpio_get_ctrl2(uint32_t pin, uint32_t *ctrl2) in mec_hal_gpio_get_ctrl2() argument
736 if (!pin_is_valid(pin)) { in mec_hal_gpio_get_ctrl2()
745 *ctrl2 = MEC_GPIO->CTL2[pin]; in mec_hal_gpio_get_ctrl2()
750 int mec_hal_gpio_set_ctrl2(uint32_t pin, uint32_t new_ctrl2) in mec_hal_gpio_set_ctrl2() argument
753 if (!pin_is_valid(pin)) { in mec_hal_gpio_set_ctrl2()
758 MEC_GPIO->CTL2[pin] = new_ctrl2; in mec_hal_gpio_set_ctrl2()
763 int mec_hal_gpio_ctrl2_mask(const uint32_t pin, uint32_t val, uint32_t mask) in mec_hal_gpio_ctrl2_mask() argument
766 if (!pin_is_valid(pin)) { in mec_hal_gpio_ctrl2_mask()
770 MEC_GPIO->CTL2[pin] = (MEC_GPIO->CTL2[pin] & ~mask) | (val & mask); in mec_hal_gpio_ctrl2_mask()
775 int mec_hal_gpio_get_slew_rate(uint32_t pin) in mec_hal_gpio_get_slew_rate() argument
778 if (!pin_is_valid(pin)) { in mec_hal_gpio_get_slew_rate()
783 return (int)((MEC_GPIO->CTL2[pin] & MEC_GPIO_CTL2_SLR_Msk) >> MEC_GPIO_CTL2_SLR_Pos); in mec_hal_gpio_get_slew_rate()
786 int mec_hal_gpio_set_slew_rate(uint32_t pin, enum mec_gpio_slew_rate slew_rate) in mec_hal_gpio_set_slew_rate() argument
791 if (!pin_is_valid(pin)) { in mec_hal_gpio_set_slew_rate()
807 MEC_GPIO->CTL2[pin] = ((MEC_GPIO->CTL2[pin] & ~(MEC_GPIO_CTL2_SLR_Msk)) in mec_hal_gpio_set_slew_rate()
813 int mec_hal_gpio_get_drive_strength(uint32_t pin) in mec_hal_gpio_get_drive_strength() argument
816 if (!pin_is_valid(pin)) { in mec_hal_gpio_get_drive_strength()
821 return (int)((MEC_GPIO->CTL2[pin] & MEC_GPIO_CTL2_DRVSTR_Msk) >> MEC_GPIO_CTL2_DRVSTR_Pos); in mec_hal_gpio_get_drive_strength()
824 int mec_hal_gpio_set_drive_strength(uint32_t pin, enum mec_gpio_drive_str drive_str) in mec_hal_gpio_set_drive_strength() argument
829 if (!pin_is_valid(pin)) { in mec_hal_gpio_set_drive_strength()
851 MEC_GPIO->CTL2[pin] = ((MEC_GPIO->CTL2[pin] & ~(MEC_GPIO_CTL2_DRVSTR_Msk)) in mec_hal_gpio_set_drive_strength()
857 int mec_hal_gpio_alt_out(const uint32_t pin, uint8_t val) in mec_hal_gpio_alt_out() argument
860 if (!pin_is_valid(pin)) { in mec_hal_gpio_alt_out()
866 MEC_GPIO->CTRL[pin] |= MEC_BIT(MEC_GPIO_CTRL_ALTVAL_Pos); in mec_hal_gpio_alt_out()
868 MEC_GPIO->CTRL[pin] &= (uint32_t)~MEC_BIT(MEC_GPIO_CTRL_ALTVAL_Pos); in mec_hal_gpio_alt_out()
874 int mec_hal_gpio_alt_out_toggle(const uint32_t pin) in mec_hal_gpio_alt_out_toggle() argument
877 if (!pin_is_valid(pin)) { in mec_hal_gpio_alt_out_toggle()
882 MEC_GPIO->CTRL[pin] ^= MEC_BIT(MEC_GPIO_CTRL_ALTVAL_Pos); in mec_hal_gpio_alt_out_toggle()
887 int mec_hal_gpio_pad_in(const uint32_t pin, uint8_t *padin) in mec_hal_gpio_pad_in() argument
890 if (!pin_is_valid(pin)) { in mec_hal_gpio_pad_in()
898 *padin = (uint8_t)((MEC_GPIO->CTRL[pin] >> MEC_GPIO_CTRL_PADIN_Pos) & MEC_BIT(0)); in mec_hal_gpio_pad_in()
903 int mec_hal_gpio_par_in(const uint32_t pin, uint8_t *pinval) in mec_hal_gpio_par_in() argument
906 if (!pin_is_valid(pin)) { in mec_hal_gpio_par_in()
914 uint32_t bitpos = pin_get_bitpos(pin & 0xffffu); in mec_hal_gpio_par_in()
915 uint32_t port = pin_get_port(pin & 0xffffu); in mec_hal_gpio_par_in()
922 int mec_hal_gpio_par_out(const uint32_t pin, const uint8_t pin_state) in mec_hal_gpio_par_out() argument
925 if (!pin_is_valid(pin)) { in mec_hal_gpio_par_out()
929 uint32_t port = pin_get_port(pin & 0xffffu); in mec_hal_gpio_par_out()
930 uint32_t bitpos = pin_get_bitpos(pin & 0xffffu); in mec_hal_gpio_par_out()
960 int mec_hal_gpio_parin_by_pin(uint32_t pin, uint32_t *val) in mec_hal_gpio_parin_by_pin() argument
963 if (!pin_is_valid(pin)) { in mec_hal_gpio_parin_by_pin()
971 uint32_t port = pin_get_port(pin & 0xffffu); in mec_hal_gpio_parin_by_pin()
989 int mec_hal_gpio_parout_port_get_by_pin(uint32_t pin, uint32_t *val) in mec_hal_gpio_parout_port_get_by_pin() argument
992 if (!pin_is_valid(pin)) { in mec_hal_gpio_parout_port_get_by_pin()
1000 uint32_t port = pin_get_port(pin & 0xffffu); in mec_hal_gpio_parout_port_get_by_pin()
1086 int mec_hal_gpio_pin_ia_enable(uint8_t pin, uint8_t enable) in mec_hal_gpio_pin_ia_enable() argument
1089 if (!pin_is_valid(pin)) { in mec_hal_gpio_pin_ia_enable()
1093 const uint8_t port = pin_get_port(pin); in mec_hal_gpio_pin_ia_enable()
1094 const uint8_t bitpos = pin_get_bitpos(pin); in mec_hal_gpio_pin_ia_enable()
1112 int mec_hal_gpio_pin_ia_status_clr(uint8_t pin) in mec_hal_gpio_pin_ia_status_clr() argument
1115 if (!pin_is_valid(pin)) { in mec_hal_gpio_pin_ia_status_clr()
1119 const uint8_t port = pin_get_port(pin); in mec_hal_gpio_pin_ia_status_clr()
1120 const uint8_t bitpos = pin_get_bitpos(pin); in mec_hal_gpio_pin_ia_status_clr()
1151 bool mec_hal_gpio_pin_is_vci_capable(uint16_t pin) in mec_hal_gpio_pin_is_vci_capable() argument
1153 return pin_is_vci(pin); in mec_hal_gpio_pin_is_vci_capable()
1159 int mec_hal_gpio_vci_disable(uint16_t pin) in mec_hal_gpio_vci_disable() argument
1161 const struct mec_gpio_vci_pin *v = find_gpio_vci_info(pin); in mec_hal_gpio_vci_disable()
1172 int mec_hal_gpio_vci_get_func(uint16_t pin, uint8_t *func) in mec_hal_gpio_vci_get_func() argument
1174 const struct mec_gpio_vci_pin *v = find_gpio_vci_info(pin); in mec_hal_gpio_vci_get_func()