Azure Sphere MT3620 M4 API Reference Manual
 All Data Structures Functions Variables Typedefs Enumerations Enumerator Groups Pages
os_hal_gpioif.h
1 /*
2  * (C) 2005-2020 MediaTek Inc. All rights reserved.
3  *
4  * Copyright Statement:
5  *
6  * This MT3620 driver software/firmware and related documentation
7  * ("MediaTek Software") are protected under relevant copyright laws.
8  * The information contained herein is confidential and proprietary to
9  * MediaTek Inc. ("MediaTek"). You may only use, reproduce, modify, or
10  * distribute (as applicable) MediaTek Software if you have agreed to and been
11  * bound by this Statement and the applicable license agreement with MediaTek
12  * ("License Agreement") and been granted explicit permission to do so within
13  * the License Agreement ("Permitted User"). If you are not a Permitted User,
14  * please cease any access or use of MediaTek Software immediately.
15  *
16  * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
17  * THAT MEDIATEK SOFTWARE RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE
18  * PROVIDED TO RECEIVER ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS
19  * ANY AND ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
20  * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
21  * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH
22  * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY,
23  * INCORPORATED IN, OR SUPPLIED WITH MEDIATEK SOFTWARE, AND RECEIVER AGREES TO
24  * LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO.
25  * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO
26  * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK
27  * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE
28  * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
29  * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S
30  * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO MEDIATEK SOFTWARE RELEASED
31  * HEREUNDER WILL BE ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY
32  * RECEIVER TO MEDIATEK DURING THE PRECEDING TWELVE (12) MONTHS FOR SUCH
33  * MEDIATEK SOFTWARE AT ISSUE.
34  */
35 
36 #ifndef __OS_HAL_GPIOIF_H__
37 #define __OS_HAL_GPIOIF_H__
38 
39 #include "mhal_osai.h"
40 #include "mhal_gpioif.h"
41 
189 #define MTK_GPIOIF_MAX_GRP_NUM 6
190 
204 typedef enum {
217 } gpioif_group;
218 
222 typedef enum {
232 
236 typedef enum {
248 
253 typedef enum {
267 
272 typedef enum {
286 
310 typedef int (*gpioif_int_callback) (void *user_data);
311 
321 #ifdef __cplusplus
322 extern "C" {
323 #endif
324 
334 
345 
368  gpioif_group group, u8 control_setting, u32 low_limit,
369  u32 high_limit, u32 reset_value, gpioif_source_clock clock_source);
370 
393  gpioif_group group, u8 control_setting, u32 low_limit,
394  u32 high_limit, u32 reset_value, gpioif_source_clock clock_source);
395 
418  gpioif_group group, u8 control_setting, u32 low_limit,
419  u32 high_limit, u32 reset_value, gpioif_source_clock clock_source);
420 
437  gpioif_group group, u8 edge_type_gpio_0, u8 edge_type_gpio_1,
438  gpioif_source_clock clock_source);
439 
456  gpioif_group group, u8 enable, u8 clear, u32 bit);
457 
476  gpioif_group group, gpioif_sa_mode_limit_select sa_limit_v,
477  gpioif_interrupt_limit_select interrupt_limit_v);
478 
498  gpioif_group group, u8 gpio, u8 enable, u32 min_p, u32 init_v);
499 
514  gpioif_group group, u8 control_setting, u32 low_limit, u32 high_limit,
515  u32 reset_value, u8 event_cnt_mode);
516 
531 
547  mtk_os_gpioif_mode mode, u8 active_reset);
548 
562 
575 
589 
604 
619 int mtk_os_hal_gpioif_read_reset_val(gpioif_group group, u32 *pvalue);
620 
635 int mtk_os_hal_gpioif_read_low_limit_val(gpioif_group group, u32 *pvalue);
636 
652 
667  gpioif_source_clock clock_source);
668 
683 
699  mtk_os_gpioif_mode mode);
700 
714 
728 
742 
754  gpioif_group group, u32 *pvalue);
755 
767  gpioif_group group, u32 *pvalue);
768 
779 
790 
803 
816 
829 
842 
855 
868 
881 
892 
903 
914 
925 
938  u32 bit, u8 enable);
939 
950 
961 
973 
985 
1005  gpioif_int_callback callback, void *user_data);
1006 
1007 #ifdef __cplusplus
1008 }
1009 #endif
1010 
1019 #endif
Back to reset value when the counter reaches high limit value.
Definition: os_hal_gpioif.h:263
GPIOIF Event Counter Mode.
Definition: os_hal_gpioif.h:224
mtk_os_gpioif_mode
This enum defines GPIOIF counter mode which can support.
Definition: os_hal_gpioif.h:222
GPIOIF group2(gpio8~11)
Definition: os_hal_gpioif.h:210
int mtk_os_hal_gpioif_get_cap_fifo1_val(gpioif_group group, u32 idex)
This function is used to get capture fifo1 value.
gpioif_group
This enum defines GPIOIF group selection.
Definition: os_hal_gpioif.h:204
GPIOIF maximum interrupt mode limit selection <invalid>
Definition: os_hal_gpioif.h:284
Interrupt issued when the counter reaches high limit value.
Definition: os_hal_gpioif.h:278
GPIOIF group4(gpio16~19)
Definition: os_hal_gpioif.h:214
int mtk_os_hal_gpioif_enable_event_counter(gpioif_group group)
This function is used to enable event counter mode.
int mtk_os_hal_gpioif_event_counter_setting(gpioif_group group, u8 control_setting, u32 low_limit, u32 high_limit, u32 reset_value, u8 event_cnt_mode)
This function is used to set event counter mode setting.
int mtk_os_hal_gpioif_get_cap_fifo0_count(gpioif_group group)
This function is used to get capture fifo0 count.
int mtk_os_hal_gpioif_read_gpio_cap_fifo0_value(gpioif_group group, u32 *pvalue)
This function is used to read capture fifo0 value.
int mtk_os_hal_gpioif_get_int_event_over_count(gpioif_group group)
This function is used to get GPIOIF interrupt event overflow count value.
GPIOIF group3(gpio12~15)
Definition: os_hal_gpioif.h:212
int mtk_os_hal_gpioif_read_gpio_event_count(gpioif_group group, u32 *pvalue)
This function is used to read gpio event counter value.
int mtk_os_hal_gpioif_get_int_cap_f0_p_count(gpioif_group group)
This function is used to get capture fifo0 empty count value.
int mtk_os_hal_gpioif_get_int_event_high_count(gpioif_group group)
This function is used to get GPIOIF interrupt event high count value.
int mtk_os_hal_gpioif_read_gpio_cap_fifo1_value(gpioif_group group, u32 *pvalue)
This function is used to read capture fifo1 value.
Saturare on low limit value.
Definition: os_hal_gpioif.h:257
int mtk_os_hal_gpioif_read_reset_val(gpioif_group group, u32 *pvalue)
This function is used to read reset value of GPIOIF Event Counter.
int mtk_os_hal_gpioif_ctlr_init(gpioif_group group)
Init GPIOIF controller.
int mtk_os_hal_gpioif_ctlr_deinit(gpioif_group group)
Deinit GPIOIF controller.
int mtk_os_hal_gpioif_limit_comparator(gpioif_group group, gpioif_sa_mode_limit_select sa_limit_v, gpioif_interrupt_limit_select interrupt_limit_v)
This function is used to set interrupt mode or saturation mode of the GPIO event counter.
Saturare on high limit value.
Definition: os_hal_gpioif.h:259
GPIOIF Both Event Counter Mode and Capture Counter Mode.
Definition: os_hal_gpioif.h:228
int mtk_os_hal_gpioif_interrupt_bit_wise(gpioif_group group, u32 bit, u8 enable)
This function is used to enable/disable interrupt.
Not saturare on limit value.
Definition: os_hal_gpioif.h:255
GPIOIF 200MHz clock source.
Definition: os_hal_gpioif.h:244
int mtk_os_hal_gpioif_get_int_cap_f1_full_count(gpioif_group group)
This function is used to get GPIOIF interrupt capture fifo1 count value.
int mtk_os_hal_gpioif_dump_int(gpioif_group group)
This function is used to dump all software counter in interrupt function.
GPIOIF Embedded XTAL KHz(26MHz) clock source.
Definition: os_hal_gpioif.h:238
int mtk_os_hal_gpioif_hardware_reset(gpioif_group group, mtk_os_gpioif_mode mode, u8 active_reset)
This function uses GPIO_2 pin to reset GPIOIF event counter.
int mtk_os_hal_gpioif_interrupt_count_init(gpioif_group group)
This function is used to initialize all software counter in interrupt function.
GPIOIF Embedded 32KHz clock source.
Definition: os_hal_gpioif.h:240
GPIOIF maximum supported Mode <invalid>
Definition: os_hal_gpioif.h:230
gpioif_interrupt_limit_select
This enum defines GPIOIF interrupt mode selection of GPIO event counter.
Definition: os_hal_gpioif.h:272
int mtk_os_hal_gpioif_get_int_cap_f1_p_count(gpioif_group group)
This function is used to get capture fifo1 empty count value.
int mtk_os_hal_gpioif_counter_clock_setting(gpioif_group group, u8 enable)
This function is used to enable/disable GPIOIF source clock.
GPIOIF group0(gpio0~3)
Definition: os_hal_gpioif.h:206
int mtk_os_hal_gpioif_global_cr_reset(gpioif_group group)
This function is used to reset all GPIOIF group globally and make the register of the GPIOIF group to...
int mtk_os_hal_gpioif_select_clock_source(gpioif_group group, gpioif_source_clock clock_source)
This function is used to select the GPIOIF clock source.
GPIOIF maximum saturare mode limit selection <invalid>
Definition: os_hal_gpioif.h:265
int mtk_os_hal_gpioif_get_int_gpio2_rst_done_count(gpioif_group group)
This function is used to get GPIOIF gpio2 interrupt reset done count value.
GPIOIF Capture Counter Mode.
Definition: os_hal_gpioif.h:226
int mtk_os_hal_gpioif_get_int_cap_f1_np_count(gpioif_group group)
This function is used to get capture fifo1 not empty count value.
int mtk_os_hal_gpioif_software_reset(gpioif_group group, mtk_os_gpioif_mode mode)
This function is used to perform software reset of the GPIO event counter.
int mtk_os_hal_gpioif_disable_capture_counter(gpioif_group group)
This function is used to disable capture counter mode.
int mtk_os_hal_gpioif_get_int_cap_f0_full_count(gpioif_group group)
This function is used to get GPIOIF interrupt capture fifo0 count value.
int mtk_os_hal_gpioif_read_low_limit_val(gpioif_group group, u32 *pvalue)
This function is used to read low limit value of GPIOIF Event Counter.
int mtk_os_hal_gpioif_set_direction_mode(gpioif_group group, u8 control_setting, u32 low_limit, u32 high_limit, u32 reset_value, gpioif_source_clock clock_source)
This function is used to set GPIOIF direction mode.
int mtk_os_hal_gpioif_get_int_cap_f0_np_count(gpioif_group group)
This function is used to get capture fifo0 not empty count value.
Interrupt issued when the counter reaches both low and high limit value.
Definition: os_hal_gpioif.h:282
int mtk_os_hal_gpioif_disable_event_counter(gpioif_group group)
This function is used to disable event counter mode.
int mtk_os_hal_gpioif_set_quadrature_mode(gpioif_group group, u8 control_setting, u32 low_limit, u32 high_limit, u32 reset_value, gpioif_source_clock clock_source)
This function is used to set GPIOIF quadrature mode.
int(* gpioif_int_callback)(void *user_data)
This defines the callback function prototype.
Definition: os_hal_gpioif.h:310
int mtk_os_hal_gpioif_get_int_event_uf_count(gpioif_group group)
This function is used to get GPIOIF interrupt event underflow count value.
GPIOIF group5(gpio20~23)
Definition: os_hal_gpioif.h:216
int mtk_os_hal_gpioif_get_cap_fifo1_count(gpioif_group group)
This function is used to get capture fifo1 count.
int mtk_os_hal_gpioif_de_glitch(gpioif_group group, u8 gpio, u8 enable, u32 min_p, u32 init_v)
This function is used to set GPIOIF de-glitch setting.
GPIOIF AXI1 MHz(125MHz) clock source.
Definition: os_hal_gpioif.h:242
int mtk_os_hal_gpioif_read_high_limit_val(gpioif_group group, u32 *pvalue)
This function is used to read high limit value of GPIOIF Event Counter.
int mtk_os_hal_gpioif_set_capture_mode(gpioif_group group, u8 edge_type_gpio_0, u8 edge_type_gpio_1, gpioif_source_clock clock_source)
This function is used to set GPIOIF capture mode.
gpioif_sa_mode_limit_select
This enum defines GPIOIF saturation mode selection of GPIO event counter when reaching limit value ...
Definition: os_hal_gpioif.h:253
Back to reset value when the counter reaches low limit value.
Definition: os_hal_gpioif.h:261
int mtk_os_hal_gpioif_set_updown_mode(gpioif_group group, u8 control_setting, u32 low_limit, u32 high_limit, u32 reset_value, gpioif_source_clock clock_source)
This function is used to set GPIOIF updown mode.
Interrupt issued when the counter reaches low limit value.
Definition: os_hal_gpioif.h:276
int mtk_os_hal_gpioif_get_int_reset_cap_f0_full_count(gpioif_group group)
This function is used to get GPIOIF interrupt reset capture fifo0 count value.
gpioif_source_clock
This enum defines GPIOIF clock source selection.
Definition: os_hal_gpioif.h:236
Not interrupt.
Definition: os_hal_gpioif.h:274
int mtk_os_hal_gpioif_get_cap_fifo0_val(gpioif_group group, u32 idex)
This function is used to get capture fifo0 value.
int mtk_os_hal_gpioif_capture_fifo_init(gpioif_group group)
This function is used to initialize software capture fifo counter.
int mtk_os_hal_gpioif_interrupt_control(gpioif_group group, u8 enable, u8 clear, u32 bit)
This function is used to control interrupt.
int mtk_os_hal_gpioif_int_callback_register(gpioif_group group, gpioif_int_callback callback, void *user_data)
This function is used to register user's interrupt callback.
int mtk_os_hal_gpioif_get_int_reset_cap_f1_full_count(gpioif_group group)
This function is used to get GPIOIF interrupt reset capture fifo1 count value.
GPIOIF maximum clock source <invalid>
Definition: os_hal_gpioif.h:246
GPIOIF group1(gpio4~7)
Definition: os_hal_gpioif.h:208
int mtk_os_hal_gpioif_get_int_event_low_count(gpioif_group group)
This function is used to get GPIOIF interrupt event low count value.