The latest development version of this page may be more current than this released 2.3-beta.1 version.

GPIO API Reference

GPIO

typedef void (*wm_drv_gpio_isr_t)(void *arg)

GPIO interrupt handler.

Param arg:

User registered data

wm_drv_gpio_fast_write(pin, value)

Fast write gpio with value 0 or 1, Please note that it is not thread safe.

wm_device_t *wm_drv_gpio_init(char *dev_name)

Initialize gpio dev, and configure gpio based on the device tree.

Parameters:

dev_name[in] like “gpio”, if device tree set

Returns:

  • device handle: device handle, used wm_device_t

  • NULL: failed

int wm_drv_gpio_deinit(wm_device_t *dev)

Deinitialize gpio dev.

Parameters:

dev[in] use

  • wm_device_t

Returns:

  • WM_ERR_SUCCESS: succeed

  • others: failed

int wm_drv_gpio_set_dir(wm_gpio_num_t pin, wm_gpio_dir_t dir)

Set gpio dir.

Parameters:
  • pin[in] use

    • wm_gpio_pin_num_t

  • dir[in] use

    • wm_gpio_dir_t

Returns:

  • WM_ERR_SUCCESS: succeed

  • others: failed

int wm_drv_gpio_set_pullmode(wm_gpio_num_t pin, wm_gpio_pupd_t pullmode)

Set gpio pullmode.

Parameters:
  • pin[in] use

    • wm_gpio_pin_num_t

  • pullmode[in] use

    • wm_gpio_pupd_t

Returns:

  • WM_ERR_SUCCESS: succeed

  • others: failed

int wm_drv_gpio_data_set(wm_gpio_num_t pin)

Write gpio with value 1.

Warning

You should use this API after calling wm_drv_gpio_init.

Parameters:

pin[in] use

  • wm_gpio_num_t

Returns:

  • WM_ERR_SUCCESS: succeed

  • others: failed

int wm_drv_gpio_data_reset(wm_gpio_num_t pin)

Write gpio with value 0.

Warning

You should use this API after calling wm_drv_gpio_init.

Parameters:

pin[in] use

  • wm_gpio_num_t

Returns:

  • WM_ERR_SUCCESS: succeed

  • others: failed

int wm_drv_gpio_data_get(wm_gpio_num_t pin)

Read gpio.

Warning

You should use this API after calling wm_drv_gpio_init.

Parameters:

pin[in] use

  • wm_gpio_num_t

Returns:

  • gpio value: 1 or 0

  • others: failed

int wm_drv_gpio_iomux_func_sel(wm_gpio_num_t pin, wm_gpio_pin_mux_t func)

Select iomux. please read wm_io_mux.h for pinmux cfg.

Parameters:
  • pin[in] use

    • wm_gpio_num_t

  • func[in] use

    • wm_gpio_pin_mux_t

Returns:

  • WM_ERR_SUCCESS: succeed

  • others: failed

int wm_drv_gpio_enable_isr(wm_gpio_num_t pin)

Enable gpio irq.

Parameters:

pin[in] use

  • wm_gpio_num_t

Returns:

  • WM_ERR_SUCCESS: succeed

  • others: failed

int wm_drv_gpio_disable_isr(wm_gpio_num_t pin)

Disable gpio irq.

Parameters:

pin[in] use

  • wm_gpio_num_t

Returns:

  • WM_ERR_SUCCESS: succeed

  • others: failed

int wm_drv_gpio_set_intr_mode(wm_gpio_num_t pin, wm_gpio_intr_mode_t mode)

Set gpio intr mode.

Parameters:
  • pin[in] use

    • wm_gpio_num_t

  • mode[in] use

    • wm_gpio_intr_mode_t

Returns:

  • WM_ERR_SUCCESS: succeed

  • others: failed

int wm_drv_gpio_add_isr_callback(wm_gpio_num_t gpio_num, wm_drv_gpio_isr_t isr_callback, void *args)

Add ISR handler for the corresponding GPIO pin.

Warning

You should use this API after calling wm_drv_gpio_init.

Parameters:
  • gpio_num – GPIO number, If this pin is not set in the device tree, you need to initialize it separately

  • isr_callback – ISR handler function for the corresponding GPIO number.

  • args – parameter for ISR handler.

Returns:

  • WM_ERR_SUCCESS: succeed

  • others: failed

int wm_drv_gpio_remove_isr_callback(wm_gpio_num_t gpio_num)

Remove ISR handler for the corresponding GPIO pin.

Warning

You should use this API after calling wm_drv_gpio_init.

Parameters:

gpio_num – GPIO number

Returns:

  • WM_ERR_SUCCESS: succeed

  • others: failed