xref: /OK3568_Linux_fs/kernel/include/linux/pinctrl/devinfo.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * Per-device information from the pin control system.
4*4882a593Smuzhiyun  * This is the stuff that get included into the device
5*4882a593Smuzhiyun  * core.
6*4882a593Smuzhiyun  *
7*4882a593Smuzhiyun  * Copyright (C) 2012 ST-Ericsson SA
8*4882a593Smuzhiyun  * Written on behalf of Linaro for ST-Ericsson
9*4882a593Smuzhiyun  * This interface is used in the core to keep track of pins.
10*4882a593Smuzhiyun  *
11*4882a593Smuzhiyun  * Author: Linus Walleij <linus.walleij@linaro.org>
12*4882a593Smuzhiyun  */
13*4882a593Smuzhiyun 
14*4882a593Smuzhiyun #ifndef PINCTRL_DEVINFO_H
15*4882a593Smuzhiyun #define PINCTRL_DEVINFO_H
16*4882a593Smuzhiyun 
17*4882a593Smuzhiyun #ifdef CONFIG_PINCTRL
18*4882a593Smuzhiyun 
19*4882a593Smuzhiyun /* The device core acts as a consumer toward pinctrl */
20*4882a593Smuzhiyun #include <linux/pinctrl/consumer.h>
21*4882a593Smuzhiyun 
22*4882a593Smuzhiyun /**
23*4882a593Smuzhiyun  * struct dev_pin_info - pin state container for devices
24*4882a593Smuzhiyun  * @p: pinctrl handle for the containing device
25*4882a593Smuzhiyun  * @default_state: the default state for the handle, if found
26*4882a593Smuzhiyun  * @init_state: the state at probe time, if found
27*4882a593Smuzhiyun  * @sleep_state: the state at suspend time, if found
28*4882a593Smuzhiyun  * @idle_state: the state at idle (runtime suspend) time, if found
29*4882a593Smuzhiyun  */
30*4882a593Smuzhiyun struct dev_pin_info {
31*4882a593Smuzhiyun 	struct pinctrl *p;
32*4882a593Smuzhiyun 	struct pinctrl_state *default_state;
33*4882a593Smuzhiyun 	struct pinctrl_state *init_state;
34*4882a593Smuzhiyun #ifdef CONFIG_PM
35*4882a593Smuzhiyun 	struct pinctrl_state *sleep_state;
36*4882a593Smuzhiyun 	struct pinctrl_state *idle_state;
37*4882a593Smuzhiyun #endif
38*4882a593Smuzhiyun };
39*4882a593Smuzhiyun 
40*4882a593Smuzhiyun extern int pinctrl_bind_pins(struct device *dev);
41*4882a593Smuzhiyun extern int pinctrl_init_done(struct device *dev);
42*4882a593Smuzhiyun 
43*4882a593Smuzhiyun #else
44*4882a593Smuzhiyun 
45*4882a593Smuzhiyun struct device;
46*4882a593Smuzhiyun 
47*4882a593Smuzhiyun /* Stubs if we're not using pinctrl */
48*4882a593Smuzhiyun 
pinctrl_bind_pins(struct device * dev)49*4882a593Smuzhiyun static inline int pinctrl_bind_pins(struct device *dev)
50*4882a593Smuzhiyun {
51*4882a593Smuzhiyun 	return 0;
52*4882a593Smuzhiyun }
53*4882a593Smuzhiyun 
pinctrl_init_done(struct device * dev)54*4882a593Smuzhiyun static inline int pinctrl_init_done(struct device *dev)
55*4882a593Smuzhiyun {
56*4882a593Smuzhiyun 	return 0;
57*4882a593Smuzhiyun }
58*4882a593Smuzhiyun 
59*4882a593Smuzhiyun #endif /* CONFIG_PINCTRL */
60*4882a593Smuzhiyun #endif /* PINCTRL_DEVINFO_H */
61