/* SPDX-License-Identifier: GPL-2.0-or-later * * S32 pinmux core definitions * * Copyright 2016-2020, 2022 NXP * Copyright (C) 2022 SUSE LLC * Copyright 2015-2016 Freescale Semiconductor, Inc. * Copyright (C) 2012 Linaro Ltd. */ #ifndef __DRIVERS_PINCTRL_S32_H #define __DRIVERS_PINCTRL_S32_H struct platform_device; /** * struct s32_pin_group - describes an S32 pin group * @data: generic data describes group name, number of pins, and a pin array in this group. * @pin_sss: an array of source signal select configs paired with pin array. */ struct s32_pin_group { struct pingroup data; unsigned int *pin_sss; }; /** * struct s32_pin_range - pin ID range for each memory region. * @start: start pin ID * @end: end pin ID */ struct s32_pin_range { unsigned int start; unsigned int end; }; struct s32_pinctrl_soc_data { const struct pinctrl_pin_desc *pins; unsigned int npins; const struct s32_pin_range *mem_pin_ranges; unsigned int mem_regions; }; struct s32_pinctrl_soc_info { struct device *dev; const struct s32_pinctrl_soc_data *soc_data; struct s32_pin_group *groups; unsigned int ngroups; struct pinfunction *functions; unsigned int nfunctions; unsigned int grp_index; }; #define S32_PINCTRL_PIN(pin) PINCTRL_PIN(pin, #pin) #define S32_PIN_RANGE(_start, _end) { .start = _start, .end = _end } int s32_pinctrl_probe(struct platform_device *pdev, const struct s32_pinctrl_soc_data *soc_data); int s32_pinctrl_resume(struct device *dev); int s32_pinctrl_suspend(struct device *dev); #endif /* __DRIVERS_PINCTRL_S32_H */