SemiDrive SSDK Appication Program Interface PTG3.0
sdrv_gpio.h
Go to the documentation of this file.
1
9#ifndef SDRV_GPIO_H_
10#define SDRV_GPIO_H_
11
12#include <sdrv_common.h>
13#include <sdrv_pinctrl.h>
14#include <types.h>
15
21 1), /* GPIO Pin Index Wrong. */
23 2), /* GPIO Controller is NULL. */
25 SDRV_STATUS_GROUP_GPIO, 3), /* GPIO Attach Irq failed. */
26};
27
31typedef enum gpio_direction {
35
39typedef enum gpio_interrupt {
40 GPIO_INTR_DISABLE, /* INPUT. Interrupt disable. */
41 GPIO_INTR_HIGH_LEVEL, /* INPUT. Interrupt on high level. */
42 GPIO_INTR_LOW_LEVEL, /* INPUT. Interrupt on low level. */
43 GPIO_INTR_RISING_EDGE, /* INPUT. Interrupt on rising edge. */
44 GPIO_INTR_FALLING_EDGE, /* INPUT. Interrupt on falling edge. */
45 GPIO_INTR_BOTH_EDGE, /* INPUT. Interrupt on both edges. */
47
59
64typedef struct sdrv_gpio {
65 paddr_t base;
66 uint32_t pin_start;
67 uint32_t pin_num;
69
77typedef void (*sdrv_gpio_interrupt_handler_t)(uint32_t irq, uint32_t pin,
78 void *arg);
79
91
101status_t sdrv_gpio_set_pin_output_level(uint32_t pin_index, bool level);
102
111bool sdrv_gpio_get_pin_output_level(uint32_t pin_index);
112
123
132bool sdrv_gpio_read_pin_input_level(uint32_t pin_index);
133
145
156
167
176bool sdrv_gpio_pin_interrupt_status(uint32_t pin_index);
177
188
201 gpio_interrupt_e intr);
202
213
224
235
246
260 uint32_t pin_index, sdrv_gpio_interrupt_handler_t handler, void *arg);
261
272
284status_t sdrv_gpio_interrupt_share_with(uint32_t pin_index, uint32_t mask);
285
296 uint32_t mask);
297
309 uint32_t pin_index,
310 gpio_direction_e dir);
311
323 uint32_t pin_index, bool level);
324
336 uint32_t pin_index);
337
348 uint32_t pin_index);
349
360 uint32_t pin_index);
361
374 uint32_t pin_index,
375 gpio_interrupt_e intr);
376
388 uint32_t pin_index);
389
401 uint32_t pin_index);
402
413 uint32_t pin_index);
414
426 uint32_t pin_index);
427
441 uint32_t pin_index,
442 gpio_interrupt_e intr);
443
455 uint32_t pin_index);
456
468 uint32_t pin_index);
469
481 uint32_t pin_index);
482
494 uint32_t pin_index);
495
496#endif /* SDRV_GPIO_H_ */
SemiDrive driver common header file.
@ SDRV_STATUS_GROUP_GPIO
Definition: sdrv_common.h:27
int32_t status_t
Type used for all status and error return values.
Definition: sdrv_common.h:82
#define SDRV_ERROR_STATUS(group, code)
Construct a status code value from a group and code number. All the error statuses are negetive numbe...
Definition: sdrv_common.h:17
status_t sdrv_gpio_pin_interrupt_disable(uint32_t pin_index)
Disable interrupt for specific pin.
void(* sdrv_gpio_interrupt_handler_t)(uint32_t irq, uint32_t pin, void *arg)
Function prototype for gpio interrupt callback.
Definition: sdrv_gpio.h:77
gpio_interrupt
Definition for gpio interrupt type.
Definition: sdrv_gpio.h:39
@ GPIO_INTR_RISING_EDGE
Definition: sdrv_gpio.h:43
@ GPIO_INTR_LOW_LEVEL
Definition: sdrv_gpio.h:42
@ GPIO_INTR_FALLING_EDGE
Definition: sdrv_gpio.h:44
@ GPIO_INTR_DISABLE
Definition: sdrv_gpio.h:40
@ GPIO_INTR_HIGH_LEVEL
Definition: sdrv_gpio.h:41
@ GPIO_INTR_BOTH_EDGE
Definition: sdrv_gpio.h:45
status_t sdrv_gpio_set_pin_interrupt(uint32_t pin_index, gpio_interrupt_e intr)
Config interrupt type for specific pin.
status_t sdrv_gpio_ctrl_pin_async_interrupt_enable(sdrv_gpio_t *gpio_ctrl, uint32_t pin_index)
Enable asynchronous interrupt for specific pin.
enum gpio_interrupt_share gpio_interrupt_share_e
Definition for gpio interrupt share with core bit mask.
bool sdrv_gpio_ctrl_pin_async_interrupt_status(sdrv_gpio_t *gpio_ctrl, uint32_t pin_index)
Get specific pin asynchronous interrupt status.
status_t sdrv_gpio_clear_pin_async_interrupt_status(uint32_t pin_index)
Clear specific pin asynchronous interrupt status.
status_t sdrv_gpio_ctrl_pin_interrupt_enable(sdrv_gpio_t *gpio_ctrl, uint32_t pin_index)
Enable interrupt for specific pin.
status_t sdrv_gpio_toggle_pin_output_level(uint32_t pin_index)
Toggle specific pin output level.
status_t sdrv_gpio_cancel_interrupt_share_with(uint32_t pin_index, uint32_t mask)
Cancel gpio interrupt share with other core.
status_t sdrv_gpio_ctrl_set_pin_async_interrupt(sdrv_gpio_t *gpio_ctrl, uint32_t pin_index, gpio_interrupt_e intr)
Config asynchronous interrupt type for specific pin.
status_t sdrv_gpio_ctrl_pin_interrupt_disable(sdrv_gpio_t *gpio_ctrl, uint32_t pin_index)
Disable interrupt for specific pin.
status_t sdrv_gpio_set_pin_async_interrupt(uint32_t pin_index, gpio_interrupt_e intr)
Config asynchronous interrupt type for specific pin.
enum gpio_direction gpio_direction_e
Definition for gpio direction.
bool sdrv_gpio_ctrl_read_pin_input_level(sdrv_gpio_t *gpio_ctrl, uint32_t pin_index)
Get specific pin input level.
status_t sdrv_gpio_ctrl_clear_pin_async_interrupt_status(sdrv_gpio_t *gpio_ctrl, uint32_t pin_index)
Clear specific pin asynchronous interrupt status.
status_t sdrv_gpio_ctrl_set_pin_output_level(sdrv_gpio_t *gpio_ctrl, uint32_t pin_index, bool level)
Config gpio output level.
struct sdrv_gpio sdrv_gpio_t
GPIO Controller Instance.
status_t sdrv_gpio_set_pin_direction(uint32_t pin_index, gpio_direction_e dir)
Config gpio direction.
status_t sdrv_gpio_ctrl_set_pin_interrupt(sdrv_gpio_t *gpio_ctrl, uint32_t pin_index, gpio_interrupt_e intr)
Config interrupt type for specific pin.
status_t sdrv_gpio_pin_async_interrupt_disable(uint32_t pin_index)
Disable asynchronous interrupt for specific pin.
status_t sdrv_gpio_ctrl_clear_pin_interrupt_status(sdrv_gpio_t *gpio_ctrl, uint32_t pin_index)
Clear specific pin interrupt status.
enum gpio_interrupt gpio_interrupt_e
Definition for gpio interrupt type.
bool sdrv_gpio_ctrl_pin_interrupt_status(sdrv_gpio_t *gpio_ctrl, uint32_t pin_index)
Get specific pin interrupt status.
status_t sdrv_gpio_ctrl_toggle_pin_output_level(sdrv_gpio_t *gpio_ctrl, uint32_t pin_index)
Toggle specific pin output level.
sdrv_gpio_error
GPIO status error code.
Definition: sdrv_gpio.h:19
@ SDRV_GPIO_CTRL_NULL
Definition: sdrv_gpio.h:22
@ SDRV_GPIO_BAD_PIN
Definition: sdrv_gpio.h:20
@ SDRV_GPIO_IRQ_ATTACH_FAIL
Definition: sdrv_gpio.h:24
status_t sdrv_gpio_set_pin_output_level(uint32_t pin_index, bool level)
Config gpio output level.
bool sdrv_gpio_get_pin_output_level(uint32_t pin_index)
Get gpio output level.
bool sdrv_gpio_pin_async_interrupt_status(uint32_t pin_index)
Get specific pin asynchronous interrupt status.
status_t sdrv_gpio_ctrl_set_pin_direction(sdrv_gpio_t *gpio_ctrl, uint32_t pin_index, gpio_direction_e dir)
Config gpio direction.
bool sdrv_gpio_pin_interrupt_status(uint32_t pin_index)
Get specific pin interrupt status.
gpio_direction
Definition for gpio direction.
Definition: sdrv_gpio.h:31
@ GPIO_DIR_IN
Definition: sdrv_gpio.h:33
@ GPIO_DIR_OUT
Definition: sdrv_gpio.h:32
gpio_interrupt_share
Definition for gpio interrupt share with core bit mask.
Definition: sdrv_gpio.h:52
@ GPIO_INTR_SX0
Definition: sdrv_gpio.h:56
@ GPIO_INTR_SF
Definition: sdrv_gpio.h:53
@ GPIO_INTR_SP0
Definition: sdrv_gpio.h:54
@ GPIO_INTR_SX1
Definition: sdrv_gpio.h:57
@ GPIO_INTR_SP1
Definition: sdrv_gpio.h:55
status_t sdrv_gpio_ctrl_pin_async_interrupt_disable(sdrv_gpio_t *gpio_ctrl, uint32_t pin_index)
Disable asynchronous interrupt for specific pin.
bool sdrv_gpio_read_pin_input_level(uint32_t pin_index)
Get specific pin input level.
status_t sdrv_gpio_clear_pin_interrupt_status(uint32_t pin_index)
Clear specific pin interrupt status.
status_t sdrv_gpio_pin_async_interrupt_enable(uint32_t pin_index)
Enable asynchronous interrupt for specific pin.
status_t sdrv_gpio_interrupt_share_with(uint32_t pin_index, uint32_t mask)
Set gpio interrupt share with other core.
status_t sdrv_gpio_register_interrupt_handler(uint32_t pin_index, sdrv_gpio_interrupt_handler_t handler, void *arg)
Register interrupt callback function for specific pin.
status_t sdrv_gpio_unregister_interrupt_handler(uint32_t pin_index)
Unregister interrupt callback function for specific pin.
status_t sdrv_gpio_pin_interrupt_enable(uint32_t pin_index)
Enable interrupt for specific pin.
bool sdrv_gpio_ctrl_get_pin_output_level(sdrv_gpio_t *gpio_ctrl, uint32_t pin_index)
Get gpio output level.
SemiDrive pinctrl device driver header.
GPIO Controller Instance.
Definition: sdrv_gpio.h:64
uint32_t pin_start
Definition: sdrv_gpio.h:66
uint32_t pin_num
Definition: sdrv_gpio.h:67
paddr_t base
Definition: sdrv_gpio.h:65