| /* 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 */ |