All of lore.kernel.org
 help / color / mirror / Atom feed
From: Oleksij Rempel <o.rempel@pengutronix.de>
To: "Köry Maincent" <kory.maincent@bootlin.com>
Cc: "David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Luis Chamberlain <mcgrof@kernel.org>,
	Russ Weight <russ.weight@linux.dev>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	"Rafael J. Wysocki" <rafael@kernel.org>,
	Rob Herring <robh+dt@kernel.org>,
	Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
	Conor Dooley <conor+dt@kernel.org>,
	Mark Brown <broonie@kernel.org>,
	Frank Rowand <frowand.list@gmail.com>,
	Andrew Lunn <andrew@lunn.ch>,
	Heiner Kallweit <hkallweit1@gmail.com>,
	Russell King <linux@armlinux.org.uk>,
	Thomas Petazzoni <thomas.petazzoni@bootlin.com>,
	netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-doc@vger.kernel.org, devicetree@vger.kernel.org,
	Dent Project <dentproject@linuxfoundation.org>
Subject: Re: [PATCH net-next v5 13/17] net: pse-pd: Use regulator framework within PSE framework
Date: Mon, 4 Mar 2024 11:31:19 +0100	[thread overview]
Message-ID: <ZeWi90H-B4XeSkFs@pengutronix.de> (raw)
In-Reply-To: <20240304102708.5bb5d95c@kmaincent-XPS-13-7390>

On Mon, Mar 04, 2024 at 10:27:08AM +0100, Köry Maincent wrote:
> Hello Oleksij,

> > > +	psec = dev_find_pse_control(&phy->mdio.dev);
> > > +	if (IS_ERR(psec)) {
> > > +		rc = PTR_ERR(psec);
> > > +		goto unregister_phy;
> > > +	}
> > > +  
> > 
> > I do not think it is a good idea to make PSE controller depend on
> > phy->mdio.dev. The only reason why we have fwnode_find_pse_control()
> > here was the missing port abstraction.
> 
> I totally agree that having port abstraction would be more convenient.
> Maxime Chevallier is currently working on this and will post it after his
> multi-phy series get merged.
> Meanwhile, we still need a device pointer for getting the regulator. The
> phy->mdio.dev is the only one I can think of as a regulator consumer.
> Another idea?

I would say, in current code state, PSE controller is regulator provider and
consumer - both are same devices. Otherwise, it will be impossible to
unregistered PHY devices without shutting down PSE-PI. Mostly, we should
be able to continue to provide the power even if network interface is down. 

> > > +	rconfig.dev = pcdev->dev;
> > > +	rconfig.driver_data = pcdev;
> > > +	rconfig.init_data = &pse_pi_initdata;  
> > 
> > Please add input supply to track all dependencies:
> >         if (of_property_present(np, "vin-supply"))
> > config->input_supply = "vin";
> > 
> > May be better to make it not optional...
> 
> Does the "vin-supply" property be added at the pse-pi node level or the
> pse-controller node level or at the hardware port node level or the manager node
> level for the pd692x0?
> Maybe better at the pse-pi node level and each PIs of the manager will get the
> same regulator?
> What do you think?

Yes, I agree. PSE-PI should share same parent regulator. Different PSE
managers may have different power supplies. One port (PSE PI) - not.

>  
> > Should be tested, but if, instead of "vin-supply", we will use
> > "pse-supply" it will make most part of pse_regulator.c obsolete.
> 
> Don't know, if it is done at the pse-pi node level it may not break
> pse_regulator.c. Not sure about it.

me too. Before your patch set, the regulator topology for PoDL PSE was
following:
power-source
  fixed-regulator
     PoDL_PSE-consumer

Now it will be:
power-source
  fixed-regulator
     PoDL_PSE-consumer
       PSE-PI-provider
         PSE-PI-consumer

By porting porting PSE framework to regulator, probably it make sense to
remove two levels of regulators?
power-source
  fixed-regulator
     PSE-PI-consumer

> > ....  
> > > @@ -310,6 +452,20 @@ pse_control_get_internal(struct pse_controller_dev
> > > *pcdev, unsigned int index) return ERR_PTR(-ENODEV);
> > >  	}
> > >  
> > > +	psec->ps = devm_regulator_get_exclusive(dev,
> > > +
> > > rdev_get_name(pcdev->pi[index].rdev));
> > > +	if (IS_ERR(psec->ps)) {
> > > +		kfree(psec);
> > > +		return ERR_CAST(psec->ps);
> > > +	}
> > > +
> > > +	ret = regulator_is_enabled(psec->ps);
> > > +	if (ret < 0) {
> > > +		kfree(psec);
> > > +		return ERR_PTR(ret);
> > > +	}
> > > +	pcdev->pi[index].enabled = ret;  
> > 
> > If I see it correctly, it will prevent us to refcount a request from
> > user space. So, the runtime PM may suspend PI.
> 
> I don't think so as the regulator_get_exclusive() does the same and refcount it:
> https://elixir.bootlin.com/linux/v6.7.8/source/drivers/regulator/core.c#L2268

ok, thx.

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

  reply	other threads:[~2024-03-04 10:31 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-27 14:42 [PATCH net-next v5 00/17] net: Add support for Power over Ethernet (PoE) Kory Maincent
2024-02-27 14:42 ` [PATCH net-next v5 01/17] MAINTAINERS: net: Add Oleksij to pse-pd maintainers Kory Maincent
2024-02-27 14:42 ` [PATCH net-next v5 02/17] of: property: Add fw_devlink support for pse parent Kory Maincent
2024-02-27 14:42 ` [PATCH net-next v5 03/17] net: pse-pd: Rectify and adapt the naming of admin_cotrol member of struct pse_control_config Kory Maincent
2024-02-27 14:42 ` [PATCH net-next v5 04/17] ethtool: Expand Ethernet Power Equipment with c33 (PoE) alongside PoDL Kory Maincent
2024-02-27 14:42 ` [PATCH net-next v5 05/17] net: pse-pd: Introduce PSE types enumeration Kory Maincent
2024-02-27 14:42 ` [PATCH net-next v5 06/17] net: ethtool: pse-pd: Expand pse commands with the PSE PoE interface Kory Maincent
2024-02-27 14:42 ` [PATCH net-next v5 07/17] netlink: specs: Modify pse attribute prefix Kory Maincent
2024-02-27 14:42 ` [PATCH net-next v5 08/17] netlink: specs: Expand the pse netlink command with PoE interface Kory Maincent
2024-02-27 14:42 ` [PATCH net-next v5 09/17] MAINTAINERS: Add myself to pse networking maintainer Kory Maincent
2024-02-27 14:42 ` [PATCH net-next v5 10/17] net: pse-pd: Add support for PSE PIs Kory Maincent
2024-03-01 14:24   ` Oleksij Rempel
2024-03-01 16:10     ` Köry Maincent
2024-03-01 16:48       ` Oleksij Rempel
2024-02-27 14:42 ` [PATCH net-next v5 11/17] dt-bindings: net: pse-pd: Add another way of describing several " Kory Maincent
2024-02-28 16:42   ` Rob Herring
2024-02-27 14:42 ` [PATCH net-next v5 12/17] net: pse-pd: Add support for setup_pi_matrix callback Kory Maincent
2024-02-27 14:42 ` [PATCH net-next v5 13/17] net: pse-pd: Use regulator framework within PSE framework Kory Maincent
2024-02-28  0:56   ` Jakub Kicinski
2024-02-29 10:19     ` Köry Maincent
2024-02-28 12:48   ` Simon Horman
2024-02-29  9:41     ` Köry Maincent
2024-03-02 21:35   ` Oleksij Rempel
2024-03-04  9:27     ` Köry Maincent
2024-03-04 10:31       ` Oleksij Rempel [this message]
2024-03-21 16:15         ` Kory Maincent
2024-03-21 16:43           ` Oleksij Rempel
2024-03-22 10:39             ` Kory Maincent
2024-03-22 14:07               ` Oleksij Rempel
2024-03-22 14:22                 ` Kory Maincent
2024-03-04 13:32       ` Andrew Lunn
2024-03-04 13:39         ` Oleksij Rempel
2024-03-04 13:53           ` Andrew Lunn
2024-03-04 14:23             ` Oleksij Rempel
2024-02-27 14:42 ` [PATCH net-next v5 14/17] dt-bindings: net: pse-pd: Add bindings for PD692x0 PSE controller Kory Maincent
2024-02-27 14:42 ` [PATCH net-next v5 15/17] net: pse-pd: Add PD692x0 PSE controller driver Kory Maincent
2024-02-27 14:42 ` [PATCH net-next v5 16/17] dt-bindings: net: pse-pd: Add bindings for TPS23881 PSE controller Kory Maincent
2024-02-27 14:42 ` [PATCH net-next v5 17/17] net: pse-pd: Add TI TPS23881 PSE controller driver Kory Maincent
2024-02-28 12:53   ` Simon Horman
2024-02-29 11:09     ` Köry Maincent
2024-02-27 15:31 ` [PATCH net-next v5 00/17] net: Add support for Power over Ethernet (PoE) Jamal Hadi Salim
2024-03-08 13:54   ` Köry Maincent

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ZeWi90H-B4XeSkFs@pengutronix.de \
    --to=o.rempel@pengutronix.de \
    --cc=andrew@lunn.ch \
    --cc=broonie@kernel.org \
    --cc=conor+dt@kernel.org \
    --cc=corbet@lwn.net \
    --cc=davem@davemloft.net \
    --cc=dentproject@linuxfoundation.org \
    --cc=devicetree@vger.kernel.org \
    --cc=edumazet@google.com \
    --cc=frowand.list@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=hkallweit1@gmail.com \
    --cc=kory.maincent@bootlin.com \
    --cc=krzysztof.kozlowski+dt@linaro.org \
    --cc=kuba@kernel.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=mcgrof@kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=rafael@kernel.org \
    --cc=robh+dt@kernel.org \
    --cc=russ.weight@linux.dev \
    --cc=thomas.petazzoni@bootlin.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.