brintos

brintos / linux-shallow public Read only

0
0
Text · 2.0 KiB · a33d0d4 Raw
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