-uint32_t rpp_gio_get_pin_cnt();
-
-int8_t rpp_gio_get_pin_names(const char** pin_names, uint8_t max_names_cnt);
-
-int8_t rpp_port_set_val(const char* port_name, uint8_t port_num_vals, const uint32_t* values);
-
-int8_t rpp_port_get_val(const char* port_name, uint8_t port_num_vals, uint32_t* values);
-
-int32_t rpp_port_get_pin_cnt(const char* port_name);
-
-int32_t rpp_port_get_port_cnt();
-
-int8_t rpp_port_get_port_names(const char** port_names, uint8_t max_names_cnt);
-
-int8_t rpp_port_get_interface_type(const char* port_name);
+/**
+ * Configure GIO pin
+ *
+ * @param pin Pin to configure
+ * @param io Configure the pin as input or output.
+ * @param in_mode Input settings. Ignored when pin is configured as
+ * output.
+ * @param open_drain Output is open drain when TRUE, pull/push when
+ * FALSE. Ignored when pin is configured as input.
+ *
+ * @return SUCCESS or FAILURE.
+ */
+int8_t rpp_gio_setup(enum pin_name pin,
+ enum rpp_gio_io io,
+ enum rpp_gio_in_mode in_mode,
+ boolean_t open_drain);