62 lines
956 B
C
62 lines
956 B
C
/* SPDX-License-Identifier: GPL-2.0-or-later
|
|
*
|
|
* Copyright (c) 2020 Artinchip Inc.
|
|
*/
|
|
|
|
#ifndef __GPIO_H__
|
|
#define __GPIO_H__
|
|
|
|
#define AIC_GPIOS_PER_BANK 32
|
|
#define AIC_MAX_PIN_BANKS 8
|
|
#define AIC_MAX_PINMUX_ENTRIES 32
|
|
|
|
enum aic_gpio_pupd {
|
|
AIC_GPIO_PUPD_NO = 0,
|
|
AIC_GPIO_PUPD_RSV,
|
|
AIC_GPIO_PUPD_DOWN,
|
|
AIC_GPIO_PUPD_UP
|
|
};
|
|
|
|
struct aic_gpio_regs {
|
|
u32 dat_in;
|
|
u32 dat_out;
|
|
u32 irq_en;
|
|
u32 irq_sta;
|
|
u32 grp_cfg;
|
|
u32 pin_cfg;
|
|
};
|
|
|
|
struct aic_pin_dsc {
|
|
int port;
|
|
int pin;
|
|
};
|
|
|
|
struct aic_pin_ctl {
|
|
int pinmux;
|
|
int drive;
|
|
enum aic_gpio_pupd pupd;
|
|
};
|
|
|
|
struct aic_pin_bank_dsc {
|
|
u16 offset;
|
|
u16 count;
|
|
int debounce;
|
|
struct udevice *dev;
|
|
struct aic_gpio_regs regs;
|
|
};
|
|
|
|
struct aic_pinctrl_priv {
|
|
void __iomem *base;
|
|
int gpio_cnt;
|
|
struct aic_pin_bank_dsc banks[AIC_MAX_PIN_BANKS];
|
|
};
|
|
|
|
struct aic_gpio_priv {
|
|
int index;
|
|
void __iomem *base;
|
|
unsigned int gpio_range;
|
|
struct aic_pin_bank_dsc *bank;
|
|
};
|
|
|
|
#endif /* __GPIO_H__ */
|