75 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2/*3 * Pinctrl / GPIO driver for StarFive JH7110 SoC4 *5 * Copyright (C) 2022 StarFive Technology Co., Ltd.6 */7 8#ifndef __PINCTRL_STARFIVE_JH7110_H__9#define __PINCTRL_STARFIVE_JH7110_H__10 11#include <linux/pinctrl/pinconf-generic.h>12#include <linux/pinctrl/pinmux.h>13 14struct jh7110_pinctrl {15 struct device *dev;16 struct gpio_chip gc;17 struct pinctrl_gpio_range gpios;18 raw_spinlock_t lock;19 void __iomem *base;20 struct pinctrl_dev *pctl;21 /* register read/write mutex */22 struct mutex mutex;23 const struct jh7110_pinctrl_soc_info *info;24 u32 *saved_regs;25};26 27struct jh7110_gpio_irq_reg {28 unsigned int is_reg_base;29 unsigned int ic_reg_base;30 unsigned int ibe_reg_base;31 unsigned int iev_reg_base;32 unsigned int ie_reg_base;33 unsigned int ris_reg_base;34 unsigned int mis_reg_base;35};36 37struct jh7110_pinctrl_soc_info {38 const struct pinctrl_pin_desc *pins;39 unsigned int npins;40 unsigned int ngpios;41 unsigned int gc_base;42 43 /* gpio dout/doen/din/gpioinput register */44 unsigned int dout_reg_base;45 unsigned int dout_mask;46 unsigned int doen_reg_base;47 unsigned int doen_mask;48 unsigned int gpi_reg_base;49 unsigned int gpi_mask;50 unsigned int gpioin_reg_base;51 52 const struct jh7110_gpio_irq_reg *irq_reg;53 54 unsigned int nsaved_regs;55 56 /* generic pinmux */57 int (*jh7110_set_one_pin_mux)(struct jh7110_pinctrl *sfp,58 unsigned int pin,59 unsigned int din, u32 dout,60 u32 doen, u32 func);61 /* gpio chip */62 int (*jh7110_get_padcfg_base)(struct jh7110_pinctrl *sfp,63 unsigned int pin);64 void (*jh7110_gpio_irq_handler)(struct irq_desc *desc);65 int (*jh7110_gpio_init_hw)(struct gpio_chip *gc);66};67 68void jh7110_set_gpiomux(struct jh7110_pinctrl *sfp, unsigned int pin,69 unsigned int din, u32 dout, u32 doen);70int jh7110_pinctrl_probe(struct platform_device *pdev);71struct jh7110_pinctrl *jh7110_from_irq_desc(struct irq_desc *desc);72extern const struct dev_pm_ops jh7110_pinctrl_pm_ops;73 74#endif /* __PINCTRL_STARFIVE_JH7110_H__ */75