On Tue, Mar 26, 2024 at 03:04:47PM +0100, Kory Maincent wrote: > From: Kory Maincent (Dent Project) <kory.maincent@xxxxxxxxxxx> > > The Power Sourcing Equipment Power Interface (PSE PI) plays a pivotal role > in the architecture of Power over Ethernet (PoE) systems. It is essentially > a blueprint that outlines how one or multiple power sources are connected > to the eight-pin modular jack, commonly known as the Ethernet RJ45 port. > This connection scheme is crucial for enabling the delivery of power > alongside data over Ethernet cables. > > This patch adds support for getting the PSE controller node through PSE PI > device subnode. > > This supports adds a way to get the PSE PI id from the pse_pi devicetree > subnode of a PSE controller node simply by reading the reg property. > > Signed-off-by: Kory Maincent <kory.maincent@xxxxxxxxxxx> Hi Kory, Some minor documentation nits from my side. > diff --git a/Documentation/networking/pse-pd/pse-pi.rst b/Documentation/networking/pse-pd/pse-pi.rst ... > +Table 145\u20133\u2014PSE Pinout Alternatives > +----------------------------------- When running make htmldocs I see the following warning: Table 145\u20133\u2014PSE Pinout Alternatives And the header is rendered as: Table 145u20133u2014PSE Pinout Alternatives I'm assuming my version of Sphinx doesn't understand the use of escape sequences for unicode characters here. I have observed this with (I assume this is the relevant command): $ sphinx-build --version sphinx-build 7.2.6 $ sphinx-build --version sphinx-build 6.2.1 ... > diff --git a/drivers/net/pse-pd/pse_core.c b/drivers/net/pse-pd/pse_core.c ... > /** > - * of_pse_zero_xlate - dummy function for controllers with one only control > - * @pcdev: a pointer to the PSE controller device > - * @pse_spec: PSE line specifier as found in the device tree > - * > - * This static translation function is used by default if of_xlate in > - * :c:type:`pse_controller_dev` is not set. It is useful for all PSE > - * controllers with #pse-cells = <0>. > + * of_load_pse_pi_pairset - load PSE PI pairsets pinout and polarity nit: of_load_pse_pi_pairsets > + * @node: a pointer of the device node > + * @pi: a pointer of the PSE PI to fill > + * @npairsets: the number of pairsets (1 or 2) used by the PI > */ > -static int of_pse_zero_xlate(struct pse_controller_dev *pcdev, > - const struct of_phandle_args *pse_spec) > +static int of_load_pse_pi_pairsets(struct device_node *node, > + struct pse_pi *pi, > + int npairsets) ... > diff --git a/include/linux/pse-pd/pse.h b/include/linux/pse-pd/pse.h ... > @@ -73,11 +103,11 @@ struct pse_control; > * @pse_control_head: head of internal list of requested PSE controls > * @dev: corresponding driver model device struct > * @of_pse_n_cells: number of cells in PSE line specifiers > - * @of_xlate: translation function to translate from specifier as found in the > - * 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 > + * @pi: table of PSE PIs described in this controller device > + * @of_legacy: flag set if the pse_pis devicetree node is not used nit: it looks line the documentation didn't keep up with the structure during development: @no_of_pse_pi should be documented instead of @of_legacy. > */ > struct pse_controller_dev { > const struct pse_controller_ops *ops; > @@ -86,11 +116,11 @@ struct pse_controller_dev { > struct list_head pse_control_head; > struct device *dev; > int of_pse_n_cells; > - int (*of_xlate)(struct pse_controller_dev *pcdev, > - const struct of_phandle_args *pse_spec); > unsigned int nr_lines; > struct mutex lock; > enum ethtool_pse_types types; > + struct pse_pi *pi; > + bool no_of_pse_pi; > }; ...