#ifndef __DAL_GPIO_TYPES_H__
#define __DAL_GPIO_TYPES_H__
#define BUNDLE_A_MASK 0x00FFF000L
#define BUNDLE_B_MASK 0x00000FFFL
enum gpio_result {
GPIO_RESULT_OK,
GPIO_RESULT_NULL_HANDLE,
GPIO_RESULT_INVALID_DATA,
GPIO_RESULT_DEVICE_BUSY,
GPIO_RESULT_OPEN_FAILED,
GPIO_RESULT_ALREADY_OPENED,
GPIO_RESULT_NON_SPECIFIC_ERROR
};
enum gpio_id {
GPIO_ID_UNKNOWN = (-1),
GPIO_ID_DDC_DATA,
GPIO_ID_DDC_CLOCK,
GPIO_ID_GENERIC,
GPIO_ID_HPD,
GPIO_ID_GPIO_PAD,
GPIO_ID_VIP_PAD,
GPIO_ID_SYNC,
GPIO_ID_GSL,
GPIO_ID_COUNT,
GPIO_ID_MIN = GPIO_ID_DDC_DATA,
GPIO_ID_MAX = GPIO_ID_GSL
};
#define GPIO_ENUM_UNKNOWN \
32
struct gpio_pin_info {
uint32_t offset;
uint32_t offset_y;
uint32_t offset_en;
uint32_t offset_mask;
uint32_t mask;
uint32_t mask_y;
uint32_t mask_en;
uint32_t mask_mask;
};
enum gpio_pin_output_state {
GPIO_PIN_OUTPUT_STATE_ACTIVE_LOW,
GPIO_PIN_OUTPUT_STATE_ACTIVE_HIGH,
GPIO_PIN_OUTPUT_STATE_DEFAULT = GPIO_PIN_OUTPUT_STATE_ACTIVE_LOW
};
enum gpio_generic {
GPIO_GENERIC_UNKNOWN = (-1),
GPIO_GENERIC_A,
GPIO_GENERIC_B,
GPIO_GENERIC_C,
GPIO_GENERIC_D,
GPIO_GENERIC_E,
GPIO_GENERIC_F,
GPIO_GENERIC_G,
GPIO_GENERIC_COUNT,
GPIO_GENERIC_MIN = GPIO_GENERIC_A,
GPIO_GENERIC_MAX = GPIO_GENERIC_B
};
enum gpio_hpd {
GPIO_HPD_UNKNOWN = (-1),
GPIO_HPD_1,
GPIO_HPD_2,
GPIO_HPD_3,
GPIO_HPD_4,
GPIO_HPD_5,
GPIO_HPD_6,
GPIO_HPD_COUNT,
GPIO_HPD_MIN = GPIO_HPD_1,
GPIO_HPD_MAX = GPIO_HPD_6
};
enum gpio_gpio_pad {
GPIO_GPIO_PAD_UNKNOWN = (-1),
GPIO_GPIO_PAD_0,
GPIO_GPIO_PAD_1,
GPIO_GPIO_PAD_2,
GPIO_GPIO_PAD_3,
GPIO_GPIO_PAD_4,
GPIO_GPIO_PAD_5,
GPIO_GPIO_PAD_6,
GPIO_GPIO_PAD_7,
GPIO_GPIO_PAD_8,
GPIO_GPIO_PAD_9,
GPIO_GPIO_PAD_10,
GPIO_GPIO_PAD_11,
GPIO_GPIO_PAD_12,
GPIO_GPIO_PAD_13,
GPIO_GPIO_PAD_14,
GPIO_GPIO_PAD_15,
GPIO_GPIO_PAD_16,
GPIO_GPIO_PAD_17,
GPIO_GPIO_PAD_18,
GPIO_GPIO_PAD_19,
GPIO_GPIO_PAD_20,
GPIO_GPIO_PAD_21,
GPIO_GPIO_PAD_22,
GPIO_GPIO_PAD_23,
GPIO_GPIO_PAD_24,
GPIO_GPIO_PAD_25,
GPIO_GPIO_PAD_26,
GPIO_GPIO_PAD_27,
GPIO_GPIO_PAD_28,
GPIO_GPIO_PAD_29,
GPIO_GPIO_PAD_30,
GPIO_GPIO_PAD_COUNT,
GPIO_GPIO_PAD_MIN = GPIO_GPIO_PAD_0,
GPIO_GPIO_PAD_MAX = GPIO_GPIO_PAD_30
};
enum gpio_vip_pad {
GPIO_VIP_PAD_UNKNOWN = (-1),
GPIO_VIP_PAD_SCL,
GPIO_VIP_PAD_SDA,
GPIO_VIP_PAD_VHAD,
GPIO_VIP_PAD_VPHCTL,
GPIO_VIP_PAD_VIPCLK,
GPIO_VIP_PAD_VID,
GPIO_VIP_PAD_VPCLK0,
GPIO_VIP_PAD_DVALID,
GPIO_VIP_PAD_PSYNC,
GPIO_VIP_PAD_COUNT,
GPIO_VIP_PAD_MIN = GPIO_VIP_PAD_SCL,
GPIO_VIP_PAD_MAX = GPIO_VIP_PAD_PSYNC
};
enum gpio_sync {
GPIO_SYNC_UNKNOWN = (-1),
GPIO_SYNC_HSYNC_A,
GPIO_SYNC_VSYNC_A,
GPIO_SYNC_HSYNC_B,
GPIO_SYNC_VSYNC_B,
GPIO_SYNC_COUNT,
GPIO_SYNC_MIN = GPIO_SYNC_HSYNC_A,
GPIO_SYNC_MAX = GPIO_SYNC_VSYNC_B
};
enum gpio_gsl {
GPIO_GSL_UNKNOWN = (-1),
GPIO_GSL_GENLOCK_CLOCK,
GPIO_GSL_GENLOCK_VSYNC,
GPIO_GSL_SWAPLOCK_A,
GPIO_GSL_SWAPLOCK_B,
GPIO_GSL_COUNT,
GPIO_GSL_MIN = GPIO_GSL_GENLOCK_CLOCK,
GPIO_GSL_MAX = GPIO_GSL_SWAPLOCK_B
};
enum gpio_ddc_line {
GPIO_DDC_LINE_UNKNOWN = (-1),
GPIO_DDC_LINE_DDC1,
GPIO_DDC_LINE_DDC2,
GPIO_DDC_LINE_DDC3,
GPIO_DDC_LINE_DDC4,
GPIO_DDC_LINE_DDC5,
GPIO_DDC_LINE_DDC6,
GPIO_DDC_LINE_DDC_VGA,
GPIO_DDC_LINE_VIP_PAD,
GPIO_DDC_LINE_I2C_PAD = GPIO_DDC_LINE_VIP_PAD,
GPIO_DDC_LINE_COUNT,
GPIO_DDC_LINE_MIN = GPIO_DDC_LINE_DDC1,
GPIO_DDC_LINE_MAX = GPIO_DDC_LINE_I2C_PAD
};
enum gpio_mode {
GPIO_MODE_UNKNOWN = (-1),
GPIO_MODE_INPUT,
GPIO_MODE_OUTPUT,
GPIO_MODE_FAST_OUTPUT,
GPIO_MODE_HARDWARE,
GPIO_MODE_INTERRUPT
};
enum gpio_signal_source {
GPIO_SIGNAL_SOURCE_UNKNOWN = (-1),
GPIO_SIGNAL_SOURCE_DACA_STEREO_SYNC,
GPIO_SIGNAL_SOURCE_PASS_THROUGH_STEREO_SYNC,
GPIO_SIGNAL_SOURCE_DACB_STEREO_SYNC,
GPIO_SIGNAL_SOURCE_DACA_HSYNC,
GPIO_SIGNAL_SOURCE_DACB_HSYNC,
GPIO_SIGNAL_SOURCE_DACA_VSYNC,
GPIO_SIGNAL_SOURCE_DACB_VSYNC,
};
enum gpio_stereo_source {
GPIO_STEREO_SOURCE_UNKNOWN = (-1),
GPIO_STEREO_SOURCE_D1,
GPIO_STEREO_SOURCE_D2,
GPIO_STEREO_SOURCE_D3,
GPIO_STEREO_SOURCE_D4,
GPIO_STEREO_SOURCE_D5,
GPIO_STEREO_SOURCE_D6
};
enum gpio_config_type {
GPIO_CONFIG_TYPE_NONE,
GPIO_CONFIG_TYPE_DDC,
GPIO_CONFIG_TYPE_HPD,
GPIO_CONFIG_TYPE_GENERIC_MUX,
GPIO_CONFIG_TYPE_GSL_MUX,
GPIO_CONFIG_TYPE_I2C_AUX_DUAL_MODE
};
enum gpio_ddc_config_type {
GPIO_DDC_CONFIG_TYPE_MODE_AUX,
GPIO_DDC_CONFIG_TYPE_MODE_I2C,
GPIO_DDC_CONFIG_TYPE_POLL_FOR_CONNECT,
GPIO_DDC_CONFIG_TYPE_POLL_FOR_DISCONNECT,
GPIO_DDC_CONFIG_TYPE_DISABLE_POLLING
};
struct gpio_ddc_config {
enum gpio_ddc_config_type type;
bool data_en_bit_present;
bool clock_en_bit_present;
};
struct gpio_hpd_config {
uint32_t delay_on_connect;
uint32_t delay_on_disconnect;
};
struct gpio_generic_mux_config {
bool enable_output_from_mux;
enum gpio_signal_source mux_select;
enum gpio_stereo_source stereo_select;
};
enum gpio_gsl_mux_config_type {
GPIO_GSL_MUX_CONFIG_TYPE_DISABLE,
GPIO_GSL_MUX_CONFIG_TYPE_TIMING_SYNC,
GPIO_GSL_MUX_CONFIG_TYPE_FLIP_SYNC
};
struct gpio_gsl_mux_config {
enum gpio_gsl_mux_config_type type;
uint32_t gsl_group;
};
struct gpio_config_data {
enum gpio_config_type type;
union {
struct gpio_ddc_config ddc;
struct gpio_hpd_config hpd;
struct gpio_generic_mux_config generic_mux;
struct gpio_gsl_mux_config gsl_mux;
} config;
};
#endif