162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0+
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright (C) 2021 Álvaro Fernández Rojas <noltari@gmail.com>
462306a36Sopenharmony_ci * Copyright (C) 2016 Jonas Gorski <jonas.gorski@gmail.com>
562306a36Sopenharmony_ci */
662306a36Sopenharmony_ci
762306a36Sopenharmony_ci#ifndef __PINCTRL_BCM63XX_H__
862306a36Sopenharmony_ci#define __PINCTRL_BCM63XX_H__
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ci#include <linux/pinctrl/pinctrl.h>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ci#define BCM63XX_BANK_GPIOS 32
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_cistruct bcm63xx_pinctrl_soc {
1562306a36Sopenharmony_ci	const struct pinctrl_ops *pctl_ops;
1662306a36Sopenharmony_ci	const struct pinmux_ops *pmx_ops;
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci	const struct pinctrl_pin_desc *pins;
1962306a36Sopenharmony_ci	unsigned npins;
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ci	unsigned int ngpios;
2262306a36Sopenharmony_ci};
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ci#define BCM_PIN_GROUP(n)	PINCTRL_PINGROUP(#n, n##_pins, ARRAY_SIZE(n##_pins))
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_cistruct bcm63xx_pinctrl {
2762306a36Sopenharmony_ci	struct device *dev;
2862306a36Sopenharmony_ci	struct regmap *regs;
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ci	struct pinctrl_desc pctl_desc;
3162306a36Sopenharmony_ci	struct pinctrl_dev *pctl_dev;
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ci	void *driver_data;
3462306a36Sopenharmony_ci};
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_cistatic inline unsigned int bcm63xx_bank_pin(unsigned int pin)
3762306a36Sopenharmony_ci{
3862306a36Sopenharmony_ci	return pin % BCM63XX_BANK_GPIOS;
3962306a36Sopenharmony_ci}
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_ciint bcm63xx_pinctrl_probe(struct platform_device *pdev,
4262306a36Sopenharmony_ci			  const struct bcm63xx_pinctrl_soc *soc,
4362306a36Sopenharmony_ci			  void *driver_data);
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_ci#endif /* __PINCTRL_BCM63XX_H__ */
46