From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Swapnil Jakhade <sjakhade@cadence.com>
Cc: vkoul@kernel.org, kishon@ti.com, linux-kernel@vger.kernel.org,
maxime@cerno.tech, mparab@cadence.com, yamonkar@cadence.com,
nsekhar@ti.com, tomi.valkeinen@ti.com, jsarha@ti.com,
praneeth@ti.com
Subject: Re: [PATCH v5 1/2] phy: Add new PHY attribute max_link_rate and APIs to get/set PHY attributes
Date: Wed, 2 Sep 2020 03:26:08 +0300 [thread overview]
Message-ID: <20200902002608.GD14351@pendragon.ideasonboard.com> (raw)
In-Reply-To: <1598293711-23362-2-git-send-email-sjakhade@cadence.com>
Hi Swapnil,
Thank you for the patch.
On Mon, Aug 24, 2020 at 08:28:30PM +0200, Swapnil Jakhade wrote:
> Add new PHY attribute max_link_rate to struct phy_attrs.
> Add a pair of PHY APIs to get/set all the PHY attributes.
> Use phy_get_attrs() to get attribute values and phy_set_attrs()
> to set attribute values.
>
> Signed-off-by: Yuti Amonkar <yamonkar@cadence.com>
> Signed-off-by: Swapnil Jakhade <sjakhade@cadence.com>
> Acked-by: Kishon Vijay Abraham I <kishon@ti.com>
> ---
> include/linux/phy/phy.h | 43 +++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 43 insertions(+)
>
> diff --git a/include/linux/phy/phy.h b/include/linux/phy/phy.h
> index bcee8eba62b3..924cd1a3deea 100644
> --- a/include/linux/phy/phy.h
> +++ b/include/linux/phy/phy.h
> @@ -115,10 +115,12 @@ struct phy_ops {
> /**
> * struct phy_attrs - represents phy attributes
> * @bus_width: Data path width implemented by PHY
> + * @max_link_rate: Maximum link rate supported by PHY (in Mbps)
> * @mode: PHY mode
> */
> struct phy_attrs {
> u32 bus_width;
> + u32 max_link_rate;
> enum phy_mode mode;
> };
>
> @@ -231,6 +233,37 @@ static inline void phy_set_bus_width(struct phy *phy, int bus_width)
> {
> phy->attrs.bus_width = bus_width;
> }
> +
> +/**
> + * phy_get_attrs() - get the values for PHY attributes.
> + * @phy: the phy for which to get the attributes
> + * @attrs: current PHY attributes that will be returned
> + *
> + * Intended to be used by phy consumers to get the current PHY attributes
> + * stored in struct phy_attrs.
> + */
> +static inline void phy_get_attrs(struct phy *phy, struct phy_attrs *attrs)
> +{
> + mutex_lock(&phy->mutex);
> + memcpy(attrs, &phy->attrs, sizeof(struct phy_attrs));
> + mutex_unlock(&phy->mutex);
Why is the mutex required, what does it guard against ?
> +}
> +
> +/**
> + * phy_set_attrs() - set PHY attributes with new values.
> + * @phy: the phy for which to set the attributes
> + * @attrs: the &struct phy_attrs containing new PHY attributes to be set
> + *
> + * This can be used by PHY providers or PHY consumers to set the PHY
> + * attributes. The locking is used to protect updating attributes when
> + * PHY consumer is doing some PHY ops.
> + */
> +static inline void phy_set_attrs(struct phy *phy, const struct phy_attrs *attrs)
> +{
> + mutex_lock(&phy->mutex);
> + memcpy(&phy->attrs, attrs, sizeof(struct phy_attrs));
> + mutex_unlock(&phy->mutex);
> +}
> struct phy *phy_get(struct device *dev, const char *string);
> struct phy *phy_optional_get(struct device *dev, const char *string);
> struct phy *devm_phy_get(struct device *dev, const char *string);
> @@ -389,6 +422,16 @@ static inline void phy_set_bus_width(struct phy *phy, int bus_width)
> return;
> }
>
> +static inline void phy_get_attrs(struct phy *phy, struct phy_attrs *attrs)
> +{
> + return;
You can drop the return statement.
> +}
> +
> +static inline void phy_set_attrs(struct phy *phy, const struct phy_attrs *attrs)
> +{
> + return;
Here too.
> +}
> +
> static inline struct phy *phy_get(struct device *dev, const char *string)
> {
> return ERR_PTR(-ENOSYS);
--
Regards,
Laurent Pinchart
next prev parent reply other threads:[~2020-09-02 0:26 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-08-24 18:28 [PATCH v5 0/2] Add new PHY APIs to framework to get/set PHY attributes Swapnil Jakhade
2020-08-24 18:28 ` [PATCH v5 1/2] phy: Add new PHY attribute max_link_rate and APIs " Swapnil Jakhade
2020-09-02 0:26 ` Laurent Pinchart [this message]
2020-09-02 6:52 ` Swapnil Kashinath Jakhade
2020-08-24 18:28 ` [PATCH v5 2/2] phy: cadence-torrent: Use kernel PHY API to set " Swapnil Jakhade
2020-09-02 0:29 ` Laurent Pinchart
2020-09-02 7:09 ` Swapnil Kashinath Jakhade
2020-09-02 12:17 ` Laurent Pinchart
2020-09-03 10:59 ` Swapnil Kashinath Jakhade
2020-09-03 11:30 ` Kishon Vijay Abraham I
2020-09-03 15:29 ` Laurent Pinchart
2020-09-08 14:15 ` Milind Parab
2020-09-10 6:15 ` Kishon Vijay Abraham I
2020-09-11 10:54 ` Vinod Koul
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=20200902002608.GD14351@pendragon.ideasonboard.com \
--to=laurent.pinchart@ideasonboard.com \
--cc=jsarha@ti.com \
--cc=kishon@ti.com \
--cc=linux-kernel@vger.kernel.org \
--cc=maxime@cerno.tech \
--cc=mparab@cadence.com \
--cc=nsekhar@ti.com \
--cc=praneeth@ti.com \
--cc=sjakhade@cadence.com \
--cc=tomi.valkeinen@ti.com \
--cc=vkoul@kernel.org \
--cc=yamonkar@cadence.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.