xref: /linux-6.15/include/linux/pse-pd/pse.h (revision 5385f1e1)
13114b075SOleksij Rempel // SPDX-License-Identifier: GPL-2.0-only
23114b075SOleksij Rempel /*
33114b075SOleksij Rempel // Copyright (c) 2022 Pengutronix, Oleksij Rempel <[email protected]>
43114b075SOleksij Rempel  */
53114b075SOleksij Rempel #ifndef _LINUX_PSE_CONTROLLER_H
63114b075SOleksij Rempel #define _LINUX_PSE_CONTROLLER_H
73114b075SOleksij Rempel 
83114b075SOleksij Rempel #include <linux/list.h>
93114b075SOleksij Rempel #include <uapi/linux/ethtool.h>
103114b075SOleksij Rempel 
114a83abceSKory Maincent (Dent Project) /* Maximum current in uA according to IEEE 802.3-2022 Table 145-1 */
124a83abceSKory Maincent (Dent Project) #define MAX_PI_CURRENT 1920000
136e56a6d4SKory Maincent /* Maximum power in mW according to IEEE 802.3-2022 Table 145-16 */
146e56a6d4SKory Maincent #define MAX_PI_PW 99900
154a83abceSKory Maincent (Dent Project) 
1618ff0bcdSOleksij Rempel struct phy_device;
1718ff0bcdSOleksij Rempel struct pse_controller_dev;
18*5385f1e1SKory Maincent struct netlink_ext_ack;
19*5385f1e1SKory Maincent 
20*5385f1e1SKory Maincent /* C33 PSE extended state and substate. */
21*5385f1e1SKory Maincent struct ethtool_c33_pse_ext_state_info {
22*5385f1e1SKory Maincent 	enum ethtool_c33_pse_ext_state c33_pse_ext_state;
23*5385f1e1SKory Maincent 	union {
24*5385f1e1SKory Maincent 		enum ethtool_c33_pse_ext_substate_error_condition error_condition;
25*5385f1e1SKory Maincent 		enum ethtool_c33_pse_ext_substate_mr_pse_enable mr_pse_enable;
26*5385f1e1SKory Maincent 		enum ethtool_c33_pse_ext_substate_option_detect_ted option_detect_ted;
27*5385f1e1SKory Maincent 		enum ethtool_c33_pse_ext_substate_option_vport_lim option_vport_lim;
28*5385f1e1SKory Maincent 		enum ethtool_c33_pse_ext_substate_ovld_detected ovld_detected;
29*5385f1e1SKory Maincent 		enum ethtool_c33_pse_ext_substate_power_not_available power_not_available;
30*5385f1e1SKory Maincent 		enum ethtool_c33_pse_ext_substate_short_detected short_detected;
31*5385f1e1SKory Maincent 		u32 __c33_pse_ext_substate;
32*5385f1e1SKory Maincent 	};
33*5385f1e1SKory Maincent };
34*5385f1e1SKory Maincent 
35*5385f1e1SKory Maincent struct ethtool_c33_pse_pw_limit_range {
36*5385f1e1SKory Maincent 	u32 min;
37*5385f1e1SKory Maincent 	u32 max;
38*5385f1e1SKory Maincent };
3918ff0bcdSOleksij Rempel 
4018ff0bcdSOleksij Rempel /**
4118ff0bcdSOleksij Rempel  * struct pse_control_config - PSE control/channel configuration.
4218ff0bcdSOleksij Rempel  *
43b010bf72SKory Maincent (Dent Project)  * @podl_admin_control: set PoDL PSE admin control as described in
4418ff0bcdSOleksij Rempel  *	IEEE 802.3-2018 30.15.1.2.1 acPoDLPSEAdminControl
45b58be8dbSKory Maincent (Dent Project)  * @c33_admin_control: set PSE admin control as described in
46b58be8dbSKory Maincent (Dent Project)  *	IEEE 802.3-2022 30.9.1.2.1 acPSEAdminControl
4718ff0bcdSOleksij Rempel  */
4818ff0bcdSOleksij Rempel struct pse_control_config {
49b010bf72SKory Maincent (Dent Project) 	enum ethtool_podl_pse_admin_state podl_admin_control;
50b58be8dbSKory Maincent (Dent Project) 	enum ethtool_c33_pse_admin_state c33_admin_control;
5118ff0bcdSOleksij Rempel };
5218ff0bcdSOleksij Rempel 
5318ff0bcdSOleksij Rempel /**
543e9dbfecSKory Maincent  * struct pse_admin_state - PSE operational state
553e9dbfecSKory Maincent  *
563e9dbfecSKory Maincent  * @podl_admin_state: operational state of the PoDL PSE
573e9dbfecSKory Maincent  *	functions. IEEE 802.3-2018 30.15.1.1.2 aPoDLPSEAdminState
583e9dbfecSKory Maincent  * @c33_admin_state: operational state of the PSE
593e9dbfecSKory Maincent  *	functions. IEEE 802.3-2022 30.9.1.1.2 aPSEAdminState
603e9dbfecSKory Maincent  */
613e9dbfecSKory Maincent struct pse_admin_state {
623e9dbfecSKory Maincent 	enum ethtool_podl_pse_admin_state podl_admin_state;
633e9dbfecSKory Maincent 	enum ethtool_c33_pse_admin_state c33_admin_state;
643e9dbfecSKory Maincent };
653e9dbfecSKory Maincent 
663e9dbfecSKory Maincent /**
673e9dbfecSKory Maincent  * struct pse_pw_status - PSE power detection status
683e9dbfecSKory Maincent  *
693e9dbfecSKory Maincent  * @podl_pw_status: power detection status of the PoDL PSE.
703e9dbfecSKory Maincent  *	IEEE 802.3-2018 30.15.1.1.3 aPoDLPSEPowerDetectionStatus:
713e9dbfecSKory Maincent  * @c33_pw_status: power detection status of the PSE.
723e9dbfecSKory Maincent  *	IEEE 802.3-2022 30.9.1.1.5 aPSEPowerDetectionStatus:
733e9dbfecSKory Maincent  */
743e9dbfecSKory Maincent struct pse_pw_status {
753e9dbfecSKory Maincent 	enum ethtool_podl_pse_pw_d_status podl_pw_status;
763e9dbfecSKory Maincent 	enum ethtool_c33_pse_pw_d_status c33_pw_status;
773e9dbfecSKory Maincent };
783e9dbfecSKory Maincent 
793e9dbfecSKory Maincent /**
803e9dbfecSKory Maincent  * struct pse_ext_state_info - PSE extended state information
813e9dbfecSKory Maincent  *
823e9dbfecSKory Maincent  * @c33_ext_state_info: extended state information of the PSE
833e9dbfecSKory Maincent  */
843e9dbfecSKory Maincent struct pse_ext_state_info {
853e9dbfecSKory Maincent 	struct ethtool_c33_pse_ext_state_info c33_ext_state_info;
863e9dbfecSKory Maincent };
873e9dbfecSKory Maincent 
883e9dbfecSKory Maincent /**
893e9dbfecSKory Maincent  * struct pse_pw_limit_ranges - PSE power limit configuration range
903e9dbfecSKory Maincent  *
913e9dbfecSKory Maincent  * @c33_pw_limit_ranges: supported power limit configuration range. The driver
923e9dbfecSKory Maincent  *			 is in charge of the memory allocation.
933e9dbfecSKory Maincent  */
943e9dbfecSKory Maincent struct pse_pw_limit_ranges {
953e9dbfecSKory Maincent 	struct ethtool_c33_pse_pw_limit_range *c33_pw_limit_ranges;
963e9dbfecSKory Maincent };
973e9dbfecSKory Maincent 
983e9dbfecSKory Maincent /**
993e9dbfecSKory Maincent  * struct ethtool_pse_control_status - PSE control/channel status.
10018ff0bcdSOleksij Rempel  *
10118ff0bcdSOleksij Rempel  * @podl_admin_state: operational state of the PoDL PSE
10218ff0bcdSOleksij Rempel  *	functions. IEEE 802.3-2018 30.15.1.1.2 aPoDLPSEAdminState
10318ff0bcdSOleksij Rempel  * @podl_pw_status: power detection status of the PoDL PSE.
10418ff0bcdSOleksij Rempel  *	IEEE 802.3-2018 30.15.1.1.3 aPoDLPSEPowerDetectionStatus:
105b58be8dbSKory Maincent (Dent Project)  * @c33_admin_state: operational state of the PSE
106b58be8dbSKory Maincent (Dent Project)  *	functions. IEEE 802.3-2022 30.9.1.1.2 aPSEAdminState
107b58be8dbSKory Maincent (Dent Project)  * @c33_pw_status: power detection status of the PSE.
108b58be8dbSKory Maincent (Dent Project)  *	IEEE 802.3-2022 30.9.1.1.5 aPSEPowerDetectionStatus:
109e4629600SKory Maincent (Dent Project)  * @c33_pw_class: detected class of a powered PD
110e4629600SKory Maincent (Dent Project)  *	IEEE 802.3-2022 30.9.1.1.8 aPSEPowerClassification
111e4629600SKory Maincent (Dent Project)  * @c33_actual_pw: power currently delivered by the PSE in mW
112e4629600SKory Maincent (Dent Project)  *	IEEE 802.3-2022 30.9.1.1.23 aPSEActualPower
113e4629600SKory Maincent (Dent Project)  * @c33_ext_state_info: extended state information of the PSE
1144a83abceSKory Maincent (Dent Project)  * @c33_avail_pw_limit: available power limit of the PSE in mW
1154a83abceSKory Maincent (Dent Project)  *	IEEE 802.3-2022 145.2.5.4 pse_avail_pwr
1164a83abceSKory Maincent (Dent Project)  * @c33_pw_limit_ranges: supported power limit configuration range. The driver
1173e9dbfecSKory Maincent  *	is in charge of the memory allocation
1184a83abceSKory Maincent (Dent Project)  * @c33_pw_limit_nb_ranges: number of supported power limit configuration
1194a83abceSKory Maincent (Dent Project)  *	ranges
12018ff0bcdSOleksij Rempel  */
1213e9dbfecSKory Maincent struct ethtool_pse_control_status {
12218ff0bcdSOleksij Rempel 	enum ethtool_podl_pse_admin_state podl_admin_state;
12318ff0bcdSOleksij Rempel 	enum ethtool_podl_pse_pw_d_status podl_pw_status;
124b58be8dbSKory Maincent (Dent Project) 	enum ethtool_c33_pse_admin_state c33_admin_state;
125b58be8dbSKory Maincent (Dent Project) 	enum ethtool_c33_pse_pw_d_status c33_pw_status;
126e4629600SKory Maincent (Dent Project) 	u32 c33_pw_class;
127e4629600SKory Maincent (Dent Project) 	u32 c33_actual_pw;
128e4629600SKory Maincent (Dent Project) 	struct ethtool_c33_pse_ext_state_info c33_ext_state_info;
1294a83abceSKory Maincent (Dent Project) 	u32 c33_avail_pw_limit;
1304a83abceSKory Maincent (Dent Project) 	struct ethtool_c33_pse_pw_limit_range *c33_pw_limit_ranges;
1314a83abceSKory Maincent (Dent Project) 	u32 c33_pw_limit_nb_ranges;
13218ff0bcdSOleksij Rempel };
13318ff0bcdSOleksij Rempel 
13418ff0bcdSOleksij Rempel /**
13518ff0bcdSOleksij Rempel  * struct pse_controller_ops - PSE controller driver callbacks
13618ff0bcdSOleksij Rempel  *
13729e28d1dSKory Maincent (Dent Project)  * @setup_pi_matrix: setup PI matrix of the PSE controller
1383e9dbfecSKory Maincent  * @pi_get_admin_state: Get the operational state of the PSE PI. This ops
1393e9dbfecSKory Maincent  *			is mandatory.
1403e9dbfecSKory Maincent  * @pi_get_pw_status: Get the power detection status of the PSE PI. This
1413e9dbfecSKory Maincent  *		      ops is mandatory.
1423e9dbfecSKory Maincent  * @pi_get_ext_state: Get the extended state of the PSE PI.
1433e9dbfecSKory Maincent  * @pi_get_pw_class: Get the power class of the PSE PI.
1443e9dbfecSKory Maincent  * @pi_get_actual_pw: Get actual power of the PSE PI in mW.
145d83e1376SKory Maincent (Dent Project)  * @pi_enable: Configure the PSE PI as enabled.
146d83e1376SKory Maincent (Dent Project)  * @pi_disable: Configure the PSE PI as disabled.
1474a83abceSKory Maincent (Dent Project)  * @pi_get_voltage: Return voltage similarly to get_voltage regulator
1483e9dbfecSKory Maincent  *		    callback in uV.
1493e9dbfecSKory Maincent  * @pi_get_pw_limit: Get the configured power limit of the PSE PI in mW.
1503e9dbfecSKory Maincent  * @pi_set_pw_limit: Configure the power limit of the PSE PI in mW.
1513e9dbfecSKory Maincent  * @pi_get_pw_limit_ranges: Get the supported power limit configuration
1523e9dbfecSKory Maincent  *			    range. The driver is in charge of the memory
1533e9dbfecSKory Maincent  *			    allocation and should return the number of
1543e9dbfecSKory Maincent  *			    ranges.
15518ff0bcdSOleksij Rempel  */
15618ff0bcdSOleksij Rempel struct pse_controller_ops {
15729e28d1dSKory Maincent (Dent Project) 	int (*setup_pi_matrix)(struct pse_controller_dev *pcdev);
1583e9dbfecSKory Maincent 	int (*pi_get_admin_state)(struct pse_controller_dev *pcdev, int id,
1593e9dbfecSKory Maincent 				  struct pse_admin_state *admin_state);
1603e9dbfecSKory Maincent 	int (*pi_get_pw_status)(struct pse_controller_dev *pcdev, int id,
1613e9dbfecSKory Maincent 				struct pse_pw_status *pw_status);
1623e9dbfecSKory Maincent 	int (*pi_get_ext_state)(struct pse_controller_dev *pcdev, int id,
1633e9dbfecSKory Maincent 				struct pse_ext_state_info *ext_state_info);
1643e9dbfecSKory Maincent 	int (*pi_get_pw_class)(struct pse_controller_dev *pcdev, int id);
1653e9dbfecSKory Maincent 	int (*pi_get_actual_pw)(struct pse_controller_dev *pcdev, int id);
166d83e1376SKory Maincent (Dent Project) 	int (*pi_enable)(struct pse_controller_dev *pcdev, int id);
167d83e1376SKory Maincent (Dent Project) 	int (*pi_disable)(struct pse_controller_dev *pcdev, int id);
1684a83abceSKory Maincent (Dent Project) 	int (*pi_get_voltage)(struct pse_controller_dev *pcdev, int id);
169e0a5e2bbSKory Maincent 	int (*pi_get_pw_limit)(struct pse_controller_dev *pcdev,
1704a83abceSKory Maincent (Dent Project) 			       int id);
171e0a5e2bbSKory Maincent 	int (*pi_set_pw_limit)(struct pse_controller_dev *pcdev,
172e0a5e2bbSKory Maincent 			       int id, int max_mW);
1733e9dbfecSKory Maincent 	int (*pi_get_pw_limit_ranges)(struct pse_controller_dev *pcdev, int id,
1743e9dbfecSKory Maincent 				      struct pse_pw_limit_ranges *pw_limit_ranges);
17518ff0bcdSOleksij Rempel };
17618ff0bcdSOleksij Rempel 
1773114b075SOleksij Rempel struct module;
1783114b075SOleksij Rempel struct device_node;
1793114b075SOleksij Rempel struct of_phandle_args;
1803114b075SOleksij Rempel struct pse_control;
1813e9dbfecSKory Maincent struct ethtool_pse_control_status;
1823114b075SOleksij Rempel 
1839be9567aSKory Maincent (Dent Project) /* PSE PI pairset pinout can either be Alternative A or Alternative B */
1849be9567aSKory Maincent (Dent Project) enum pse_pi_pairset_pinout {
1859be9567aSKory Maincent (Dent Project) 	ALTERNATIVE_A,
1869be9567aSKory Maincent (Dent Project) 	ALTERNATIVE_B,
1879be9567aSKory Maincent (Dent Project) };
1889be9567aSKory Maincent (Dent Project) 
1899be9567aSKory Maincent (Dent Project) /**
1909be9567aSKory Maincent (Dent Project)  * struct pse_pi_pairset - PSE PI pairset entity describing the pinout
1919be9567aSKory Maincent (Dent Project)  *			   alternative ant its phandle
1929be9567aSKory Maincent (Dent Project)  *
1939be9567aSKory Maincent (Dent Project)  * @pinout: description of the pinout alternative
1949be9567aSKory Maincent (Dent Project)  * @np: device node pointer describing the pairset phandle
1959be9567aSKory Maincent (Dent Project)  */
1969be9567aSKory Maincent (Dent Project) struct pse_pi_pairset {
1979be9567aSKory Maincent (Dent Project) 	enum pse_pi_pairset_pinout pinout;
1989be9567aSKory Maincent (Dent Project) 	struct device_node *np;
1999be9567aSKory Maincent (Dent Project) };
2009be9567aSKory Maincent (Dent Project) 
2019be9567aSKory Maincent (Dent Project) /**
2029be9567aSKory Maincent (Dent Project)  * struct pse_pi - PSE PI (Power Interface) entity as described in
2039be9567aSKory Maincent (Dent Project)  *		   IEEE 802.3-2022 145.2.4
2049be9567aSKory Maincent (Dent Project)  *
2059be9567aSKory Maincent (Dent Project)  * @pairset: table of the PSE PI pinout alternative for the two pairset
2069be9567aSKory Maincent (Dent Project)  * @np: device node pointer of the PSE PI node
207d83e1376SKory Maincent (Dent Project)  * @rdev: regulator represented by the PSE PI
208d83e1376SKory Maincent (Dent Project)  * @admin_state_enabled: PI enabled state
2099be9567aSKory Maincent (Dent Project)  */
2109be9567aSKory Maincent (Dent Project) struct pse_pi {
2119be9567aSKory Maincent (Dent Project) 	struct pse_pi_pairset pairset[2];
2129be9567aSKory Maincent (Dent Project) 	struct device_node *np;
213d83e1376SKory Maincent (Dent Project) 	struct regulator_dev *rdev;
214d83e1376SKory Maincent (Dent Project) 	bool admin_state_enabled;
2159be9567aSKory Maincent (Dent Project) };
2169be9567aSKory Maincent (Dent Project) 
2173114b075SOleksij Rempel /**
2183114b075SOleksij Rempel  * struct pse_controller_dev - PSE controller entity that might
2193114b075SOleksij Rempel  *                             provide multiple PSE controls
2203114b075SOleksij Rempel  * @ops: a pointer to device specific struct pse_controller_ops
2213114b075SOleksij Rempel  * @owner: kernel module of the PSE controller driver
2223114b075SOleksij Rempel  * @list: internal list of PSE controller devices
2233114b075SOleksij Rempel  * @pse_control_head: head of internal list of requested PSE controls
2243114b075SOleksij Rempel  * @dev: corresponding driver model device struct
2253114b075SOleksij Rempel  * @of_pse_n_cells: number of cells in PSE line specifiers
2263114b075SOleksij Rempel  * @nr_lines: number of PSE controls in this controller device
2273114b075SOleksij Rempel  * @lock: Mutex for serialization access to the PSE controller
22847e0dd53SKory Maincent (Dent Project)  * @types: types of the PSE controller
2299be9567aSKory Maincent (Dent Project)  * @pi: table of PSE PIs described in this controller device
2309be9567aSKory Maincent (Dent Project)  * @no_of_pse_pi: flag set if the pse_pis devicetree node is not used
2313114b075SOleksij Rempel  */
2323114b075SOleksij Rempel struct pse_controller_dev {
2333114b075SOleksij Rempel 	const struct pse_controller_ops *ops;
2343114b075SOleksij Rempel 	struct module *owner;
2353114b075SOleksij Rempel 	struct list_head list;
2363114b075SOleksij Rempel 	struct list_head pse_control_head;
2373114b075SOleksij Rempel 	struct device *dev;
2383114b075SOleksij Rempel 	int of_pse_n_cells;
2393114b075SOleksij Rempel 	unsigned int nr_lines;
2403114b075SOleksij Rempel 	struct mutex lock;
24147e0dd53SKory Maincent (Dent Project) 	enum ethtool_pse_types types;
2429be9567aSKory Maincent (Dent Project) 	struct pse_pi *pi;
2439be9567aSKory Maincent (Dent Project) 	bool no_of_pse_pi;
2443114b075SOleksij Rempel };
2453114b075SOleksij Rempel 
2463114b075SOleksij Rempel #if IS_ENABLED(CONFIG_PSE_CONTROLLER)
2473114b075SOleksij Rempel int pse_controller_register(struct pse_controller_dev *pcdev);
2483114b075SOleksij Rempel void pse_controller_unregister(struct pse_controller_dev *pcdev);
2493114b075SOleksij Rempel struct device;
2503114b075SOleksij Rempel int devm_pse_controller_register(struct device *dev,
2513114b075SOleksij Rempel 				 struct pse_controller_dev *pcdev);
2523114b075SOleksij Rempel 
2533114b075SOleksij Rempel struct pse_control *of_pse_control_get(struct device_node *node);
2543114b075SOleksij Rempel void pse_control_put(struct pse_control *psec);
2553114b075SOleksij Rempel 
25618ff0bcdSOleksij Rempel int pse_ethtool_get_status(struct pse_control *psec,
25718ff0bcdSOleksij Rempel 			   struct netlink_ext_ack *extack,
2583e9dbfecSKory Maincent 			   struct ethtool_pse_control_status *status);
25918ff0bcdSOleksij Rempel int pse_ethtool_set_config(struct pse_control *psec,
26018ff0bcdSOleksij Rempel 			   struct netlink_ext_ack *extack,
26118ff0bcdSOleksij Rempel 			   const struct pse_control_config *config);
2624a83abceSKory Maincent (Dent Project) int pse_ethtool_set_pw_limit(struct pse_control *psec,
2634a83abceSKory Maincent (Dent Project) 			     struct netlink_ext_ack *extack,
2644a83abceSKory Maincent (Dent Project) 			     const unsigned int pw_limit);
26518ff0bcdSOleksij Rempel 
26647e0dd53SKory Maincent (Dent Project) bool pse_has_podl(struct pse_control *psec);
26747e0dd53SKory Maincent (Dent Project) bool pse_has_c33(struct pse_control *psec);
26847e0dd53SKory Maincent (Dent Project) 
2693114b075SOleksij Rempel #else
2703114b075SOleksij Rempel 
of_pse_control_get(struct device_node * node)2713114b075SOleksij Rempel static inline struct pse_control *of_pse_control_get(struct device_node *node)
2723114b075SOleksij Rempel {
2733114b075SOleksij Rempel 	return ERR_PTR(-ENOENT);
2743114b075SOleksij Rempel }
2753114b075SOleksij Rempel 
pse_control_put(struct pse_control * psec)2763114b075SOleksij Rempel static inline void pse_control_put(struct pse_control *psec)
2773114b075SOleksij Rempel {
2783114b075SOleksij Rempel }
2793114b075SOleksij Rempel 
pse_ethtool_get_status(struct pse_control * psec,struct netlink_ext_ack * extack,struct ethtool_pse_control_status * status)280681bf011SJakub Kicinski static inline int pse_ethtool_get_status(struct pse_control *psec,
28118ff0bcdSOleksij Rempel 					 struct netlink_ext_ack *extack,
2823e9dbfecSKory Maincent 					 struct ethtool_pse_control_status *status)
28318ff0bcdSOleksij Rempel {
284144ba858SKory Maincent 	return -EOPNOTSUPP;
28518ff0bcdSOleksij Rempel }
28618ff0bcdSOleksij Rempel 
pse_ethtool_set_config(struct pse_control * psec,struct netlink_ext_ack * extack,const struct pse_control_config * config)287681bf011SJakub Kicinski static inline int pse_ethtool_set_config(struct pse_control *psec,
28818ff0bcdSOleksij Rempel 					 struct netlink_ext_ack *extack,
28918ff0bcdSOleksij Rempel 					 const struct pse_control_config *config)
29018ff0bcdSOleksij Rempel {
291144ba858SKory Maincent 	return -EOPNOTSUPP;
29218ff0bcdSOleksij Rempel }
29318ff0bcdSOleksij Rempel 
pse_ethtool_set_pw_limit(struct pse_control * psec,struct netlink_ext_ack * extack,const unsigned int pw_limit)2944a83abceSKory Maincent (Dent Project) static inline int pse_ethtool_set_pw_limit(struct pse_control *psec,
2954a83abceSKory Maincent (Dent Project) 					   struct netlink_ext_ack *extack,
2964a83abceSKory Maincent (Dent Project) 					   const unsigned int pw_limit)
2974a83abceSKory Maincent (Dent Project) {
2984a83abceSKory Maincent (Dent Project) 	return -EOPNOTSUPP;
2994a83abceSKory Maincent (Dent Project) }
3004a83abceSKory Maincent (Dent Project) 
pse_has_podl(struct pse_control * psec)30147e0dd53SKory Maincent (Dent Project) static inline bool pse_has_podl(struct pse_control *psec)
30247e0dd53SKory Maincent (Dent Project) {
30347e0dd53SKory Maincent (Dent Project) 	return false;
30447e0dd53SKory Maincent (Dent Project) }
30547e0dd53SKory Maincent (Dent Project) 
pse_has_c33(struct pse_control * psec)30647e0dd53SKory Maincent (Dent Project) static inline bool pse_has_c33(struct pse_control *psec)
30747e0dd53SKory Maincent (Dent Project) {
30847e0dd53SKory Maincent (Dent Project) 	return false;
30947e0dd53SKory Maincent (Dent Project) }
31047e0dd53SKory Maincent (Dent Project) 
3113114b075SOleksij Rempel #endif
3123114b075SOleksij Rempel 
3133114b075SOleksij Rempel #endif
314