1 // SPDX-License-Identifier: GPL-2.0
3 * Copyright (C) Maxime Coquelin 2015
4 * Copyright (C) STMicroelectronics 2017
5 * Author: Maxime Coquelin <mcoquelin.stm32@gmail.com>
7 #ifndef __PINCTRL_STM32_H
8 #define __PINCTRL_STM32_H
10 #include <linux/pinctrl/pinctrl.h>
11 #include <linux/pinctrl/pinconf-generic.h>
13 #define STM32_PIN_NO(x) ((x) << 8)
14 #define STM32_GET_PIN_NO(x) ((x) >> 8)
15 #define STM32_GET_PIN_FUNC(x) ((x) & 0xff)
17 #define STM32_PIN_GPIO 0
18 #define STM32_PIN_AF(x) ((x) + 1)
19 #define STM32_PIN_ANALOG (STM32_PIN_AF(15) + 1)
21 struct stm32_desc_function
{
23 const unsigned char num
;
26 struct stm32_desc_pin
{
27 struct pinctrl_pin_desc pin
;
28 const struct stm32_desc_function
*functions
;
31 #define STM32_PIN(_pin, ...) \
34 .functions = (struct stm32_desc_function[]){ \
38 #define STM32_FUNCTION(_num, _name) \
44 struct stm32_pinctrl_match_data
{
45 const struct stm32_desc_pin
*pins
;
46 const unsigned int npins
;
49 struct stm32_gpio_bank
;
51 int stm32_pctl_probe(struct platform_device
*pdev
);
52 void stm32_pmx_get_mode(struct stm32_gpio_bank
*bank
,
53 int pin
, u32
*mode
, u32
*alt
);
54 #endif /* __PINCTRL_STM32_H */