/* SPDX-License-Identifier: GPL-2.0-only */ /* * Intel Tangier pinctrl functions * * Copyright (C) 2016, 2023 Intel Corporation * * Authors: Andy Shevchenko <[email protected]> * Raag Jadav <[email protected]> */ #ifndef PINCTRL_TANGIER_H #define PINCTRL_TANGIER_H #include <linux/spinlock_types.h> #include <linux/types.h> #include <linux/pinctrl/pinctrl.h> #include "pinctrl-intel.h" struct device; struct platform_device; #define TNG_FAMILY_NR … #define TNG_FAMILY_LEN … /** * struct tng_family - Tangier pin family description * @barno: MMIO BAR number where registers for this family reside * @pin_base: Starting pin of pins in this family * @npins: Number of pins in this family * @protected: True if family is protected by access * @regs: Family specific common registers */ struct tng_family { … }; #define TNG_FAMILY(b, s, e) … #define TNG_FAMILY_PROTECTED(b, s, e) … /** * struct tng_pinctrl - Tangier pinctrl private structure * @dev: Pointer to the device structure * @lock: Lock to serialize register access * @pctldesc: Pin controller description * @pctldev: Pointer to the pin controller device * @families: Array of families this pinctrl handles * @nfamilies: Number of families in the array * @functions: Array of functions * @nfunctions: Number of functions in the array * @groups: Array of pin groups * @ngroups: Number of groups in the array * @pins: Array of pins this pinctrl controls * @npins: Number of pins in the array */ struct tng_pinctrl { … }; int devm_tng_pinctrl_probe(struct platform_device *pdev); #endif /* PINCTRL_TANGIER_H */