Files
kunlun/driver/inc/gpio_mtx.h
2024-09-28 14:24:04 +08:00

86 lines
2.6 KiB
C
Executable File

/****************************************************************************
Copyright(c) 2019 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED.
This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics and MAY NOT
be copied by any method or incorporated into another program without
the express written consent of Aerospace C.Power. This Information or any portion
thereof remains the property of Aerospace C.Power. The Information contained herein
is believed to be accurate and Aerospace C.Power assumes no responsibility or
liability for its use in any way and conveys no license or title under
any patent or copyright and makes no representation or warranty that this
Information is free from patent or copyright infringement.
****************************************************************************/
#ifndef _GPIO_MTX_H
#define _GPIO_MTX_H
#include "gpio_mtx_sig.h"
#ifdef __cplusplus
extern "C" {
#endif
#define DEV_PIN_MAX 8
#define GPIO_MTX_SIG_INVALID 0xff
typedef enum {
IO_TYPE_NONE = 0,
IO_TYPE_IN = 1,
IO_TYPE_OUT = 2,
IO_TYPE_IO = 3
} pin_type_t;
typedef enum {
GPIO_MTX_MODE_CORE = 0,
GPIO_MTX_MODE_MATRIX = 1,
GPIO_MTX_MODE_MAX =1,
} gpio_mtx_mode_t;
typedef struct {
uint8_t type;
uint8_t func;
uint8_t gpio;
uint8_t inid;
uint8_t outid;
} gpio_sig_t;
typedef struct {
uint8_t sig_type;
gpio_sig_t CFG[DEV_PIN_MAX];
} gpio_sig_info_t;
void gpio_pin_iinv(uint32_t pin, uint32_t val);
void gpio_pin_oinv(uint32_t pin, uint32_t val);
void gpio_pin_wpu(uint32_t pin, uint32_t val);
void gpio_pin_wpd(uint32_t pin, uint32_t val);
void gpio_pin_select(uint32_t pin, uint32_t func);
uint8_t gpio_pin_func_get(uint32_t gpio);
uint8_t gpio_pin_get_select(uint32_t pin);
void gpio_mtx_sig_in_set_core(uint32_t offset, uint32_t val);
void gpio_mtx_sig_in_set_def(uint32_t offset, uint32_t val);
void gpio_mtx_sig_in_set_gpio(uint32_t offset, uint32_t val);
uint8_t gpio_mtx_sig_in_get_gpio(uint8_t sig_id);
uint8_t gpio_mtx_gpio_get_sig_out(uint8_t gpio);
void gpio_mtx_sig_out_set_sel(uint32_t offset, uint32_t val);
void gpio_mtx_sig_out_set_sel(uint32_t offset, uint32_t val);
void gpio_mtx_sig_in(uint8_t id, uint8_t gpio, uint32_t mode);
void gpio_mtx_sig_in_default(uint8_t id);
void gpio_mtx_sig_out(uint8_t id, uint8_t gpio);
void gpio_mtx_sig_out_default(uint8_t id, uint8_t gpio);
void gpio_mtx_enable();
void gpio_module_pin_select(gpio_sig_info_t *info);
void gpio_module_sig_select(gpio_sig_info_t *info, uint32_t mode);
#ifdef __cplusplus
}
#endif
#endif //_GPIO_MTX_H