mirror of
https://github.com/torvalds/linux.git
synced 2024-10-23 05:30:55 +00:00
net: pse-pd: Introduce PSE types enumeration
Introduce an enumeration to define PSE types (C33 or PoDL), utilizing a bitfield for potential future support of both types. Include 'pse_get_types' helper for external access to PSE type info. Reviewed-by: Andrew Lunn <andrew@lunn.ch> Signed-off-by: Kory Maincent <kory.maincent@bootlin.com> Link: https://lore.kernel.org/r/20240417-feature_poe-v9-2-242293fd1900@bootlin.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
b58be8db63
commit
47e0dd53c5
|
@ -312,3 +312,15 @@ int pse_ethtool_set_config(struct pse_control *psec,
|
|||
return err;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(pse_ethtool_set_config);
|
||||
|
||||
bool pse_has_podl(struct pse_control *psec)
|
||||
{
|
||||
return psec->pcdev->types & ETHTOOL_PSE_PODL;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(pse_has_podl);
|
||||
|
||||
bool pse_has_c33(struct pse_control *psec)
|
||||
{
|
||||
return psec->pcdev->types & ETHTOOL_PSE_C33;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(pse_has_c33);
|
||||
|
|
|
@ -116,6 +116,7 @@ pse_reg_probe(struct platform_device *pdev)
|
|||
priv->pcdev.owner = THIS_MODULE;
|
||||
priv->pcdev.ops = &pse_reg_ops;
|
||||
priv->pcdev.dev = dev;
|
||||
priv->pcdev.types = ETHTOOL_PSE_PODL;
|
||||
ret = devm_pse_controller_register(dev, &priv->pcdev);
|
||||
if (ret) {
|
||||
dev_err(dev, "failed to register PSE controller (%pe)\n",
|
||||
|
|
|
@ -77,6 +77,7 @@ struct pse_control;
|
|||
* device tree to id as given to the PSE control ops
|
||||
* @nr_lines: number of PSE controls in this controller device
|
||||
* @lock: Mutex for serialization access to the PSE controller
|
||||
* @types: types of the PSE controller
|
||||
*/
|
||||
struct pse_controller_dev {
|
||||
const struct pse_controller_ops *ops;
|
||||
|
@ -89,6 +90,7 @@ struct pse_controller_dev {
|
|||
const struct of_phandle_args *pse_spec);
|
||||
unsigned int nr_lines;
|
||||
struct mutex lock;
|
||||
enum ethtool_pse_types types;
|
||||
};
|
||||
|
||||
#if IS_ENABLED(CONFIG_PSE_CONTROLLER)
|
||||
|
@ -108,6 +110,9 @@ int pse_ethtool_set_config(struct pse_control *psec,
|
|||
struct netlink_ext_ack *extack,
|
||||
const struct pse_control_config *config);
|
||||
|
||||
bool pse_has_podl(struct pse_control *psec);
|
||||
bool pse_has_c33(struct pse_control *psec);
|
||||
|
||||
#else
|
||||
|
||||
static inline struct pse_control *of_pse_control_get(struct device_node *node)
|
||||
|
@ -133,6 +138,16 @@ static inline int pse_ethtool_set_config(struct pse_control *psec,
|
|||
return -ENOTSUPP;
|
||||
}
|
||||
|
||||
static inline bool pse_has_podl(struct pse_control *psec)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
static inline bool pse_has_c33(struct pse_control *psec)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
@ -752,6 +752,18 @@ enum ethtool_module_power_mode {
|
|||
ETHTOOL_MODULE_POWER_MODE_HIGH,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum ethtool_pse_types - Types of PSE controller.
|
||||
* @ETHTOOL_PSE_UNKNOWN: Type of PSE controller is unknown
|
||||
* @ETHTOOL_PSE_PODL: PSE controller which support PoDL
|
||||
* @ETHTOOL_PSE_C33: PSE controller which support Clause 33 (PoE)
|
||||
*/
|
||||
enum ethtool_pse_types {
|
||||
ETHTOOL_PSE_UNKNOWN = 1 << 0,
|
||||
ETHTOOL_PSE_PODL = 1 << 1,
|
||||
ETHTOOL_PSE_C33 = 1 << 2,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum ethtool_c33_pse_admin_state - operational state of the PoDL PSE
|
||||
* functions. IEEE 802.3-2022 30.9.1.1.2 aPSEAdminState
|
||||
|
|
Loading…
Reference in New Issue
Block a user