cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

pinctrl-stm32.h (1737B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2/*
      3 * Copyright (C) Maxime Coquelin 2015
      4 * Copyright (C) STMicroelectronics 2017
      5 * Author:  Maxime Coquelin <mcoquelin.stm32@gmail.com>
      6 */
      7#ifndef __PINCTRL_STM32_H
      8#define __PINCTRL_STM32_H
      9
     10#include <linux/pinctrl/pinctrl.h>
     11#include <linux/pinctrl/pinconf-generic.h>
     12
     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)
     16
     17#define STM32_PIN_GPIO		0
     18#define STM32_PIN_AF(x)		((x) + 1)
     19#define STM32_PIN_ANALOG	(STM32_PIN_AF(15) + 1)
     20#define STM32_CONFIG_NUM	(STM32_PIN_ANALOG + 1)
     21
     22/*  package information */
     23#define STM32MP_PKG_AA		BIT(0)
     24#define STM32MP_PKG_AB		BIT(1)
     25#define STM32MP_PKG_AC		BIT(2)
     26#define STM32MP_PKG_AD		BIT(3)
     27
     28struct stm32_desc_function {
     29	const char *name;
     30	const unsigned char num;
     31};
     32
     33struct stm32_desc_pin {
     34	struct pinctrl_pin_desc pin;
     35	const struct stm32_desc_function functions[STM32_CONFIG_NUM];
     36	const unsigned int pkg;
     37};
     38
     39#define STM32_PIN(_pin, ...)					\
     40	{							\
     41		.pin = _pin,					\
     42		.functions = {	\
     43			__VA_ARGS__},			\
     44	}
     45
     46#define STM32_PIN_PKG(_pin, _pkg, ...)					\
     47	{							\
     48		.pin = _pin,					\
     49		.pkg  = _pkg,				\
     50		.functions = {	\
     51			__VA_ARGS__},			\
     52	}
     53#define STM32_FUNCTION(_num, _name)		\
     54	[_num] = {						\
     55		.num = _num,					\
     56		.name = _name,					\
     57	}
     58
     59struct stm32_pinctrl_match_data {
     60	const struct stm32_desc_pin *pins;
     61	const unsigned int npins;
     62	bool secure_control;
     63};
     64
     65struct stm32_gpio_bank;
     66
     67int stm32_pctl_probe(struct platform_device *pdev);
     68void stm32_pmx_get_mode(struct stm32_gpio_bank *bank,
     69			int pin, u32 *mode, u32 *alt);
     70int stm32_pinctrl_suspend(struct device *dev);
     71int stm32_pinctrl_resume(struct device *dev);
     72
     73#endif /* __PINCTRL_STM32_H */
     74