2020-05-26 14:38:36

by Yuti Amonkar

[permalink] [raw]
Subject: [PATCH v2 0/2] Add support to get/set PHY attributes using PHY framework

This patch series adds support to use kernel PHY subsystem APIs to get/set PHY
attributes like number of lanes and maximum link rate.

It includes following patches:

1. v2-0001-phy-Add-max_link_rate-as-a-PHY-attribute-and-APIs.patch
This patch adds max_link_rate as a PHY attribute along with a pair of APIs that
allow the generic PHY subsystem to get/set PHY attributes supported by the PHY.
The PHY provider driver may use phy_set_attrs() API to set the values that PHY supports.
The controller driver may then use phy_get_attrs() API to fetch the PHY attributes in
order to properly configure the controller.

2. v2-0002-phy-phy-cadence-torrent-Use-kernel-PHY-API-to-set.patch
This patch uses kernel PHY API phy_set_attrs to set corresponding PHY properties
in Cadence Torrent PHY driver. This will enable drivers using this PHY to read
these properties using PHY framework.

The phy_get_attrs() API will be used in the DRM bridge driver [1] which is in process of upstreaming.

[1]

https://lkml.org/lkml/2020/2/26/263

Version History:

v2:
- Implemented single pair of functions to get/set all PHY attributes

Swapnil Jakhade (1):
phy: phy-cadence-torrent: Use kernel PHY API to set PHY attributes

Yuti Amonkar (1):
phy: Add max_link_rate as a PHY attribute and APIs to get/set
phy_attrs

drivers/phy/cadence/phy-cadence-torrent.c | 7 +++++++
include/linux/phy/phy.h | 25 +++++++++++++++++++++++
2 files changed, 32 insertions(+)

--
2.17.1


2020-05-26 14:39:01

by Yuti Amonkar

[permalink] [raw]
Subject: [PATCH v2 1/2] phy: Add max_link_rate as a PHY attribute and APIs to get/set phy_attrs

The patch adds a pair of APIs that allows generic PHY subsystem
to get/set PHY attributes supported by the PHY. The PHY provider
driver may use phy_set_attrs() to set phy attributes that the PHY
supports. The controller driver may then use phy_get_attrs()
to fetch the PHY attributes to properly configure the controller.

Signed-off-by: Yuti Amonkar <[email protected]>
---
include/linux/phy/phy.h | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)

diff --git a/include/linux/phy/phy.h b/include/linux/phy/phy.h
index bcee8eba62b3..48693321ae36 100644
--- a/include/linux/phy/phy.h
+++ b/include/linux/phy/phy.h
@@ -119,6 +119,7 @@ struct phy_ops {
*/
struct phy_attrs {
u32 bus_width;
+ u32 max_link_rate;
enum phy_mode mode;
};

@@ -231,6 +232,20 @@ static inline void phy_set_bus_width(struct phy *phy, int bus_width)
{
phy->attrs.bus_width = bus_width;
}
+
+static inline void phy_get_attrs(struct phy *phy, struct phy_attrs *attrs)
+{
+ attrs->bus_width = phy->attrs.bus_width;
+ attrs->max_link_rate = phy->attrs.max_link_rate;
+ attrs->mode = phy->attrs.mode;
+}
+
+static inline void phy_set_attrs(struct phy *phy, struct phy_attrs attrs)
+{
+ phy->attrs.bus_width = attrs.bus_width;
+ phy->attrs.max_link_rate = attrs.max_link_rate;
+ phy->attrs.mode = attrs.mode;
+}
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 +404,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;
+}
+
+static inline void phy_set_attrs(struct phy *phy, struct phy_attrs attrs)
+{
+ return;
+}
+
static inline struct phy *phy_get(struct device *dev, const char *string)
{
return ERR_PTR(-ENOSYS);
--
2.17.1

2020-05-26 14:40:17

by Yuti Amonkar

[permalink] [raw]
Subject: [PATCH v2 2/2] phy: phy-cadence-torrent: Use kernel PHY API to set PHY attributes

From: Swapnil Jakhade <[email protected]>

Use generic PHY framework function phy_set_attrs() to set number
of lanes and maximum link rate supported by PHY.

Signed-off-by: Swapnil Jakhade <[email protected]>
Signed-off-by: Yuti Amonkar <[email protected]>
---
drivers/phy/cadence/phy-cadence-torrent.c | 7 +++++++
1 file changed, 7 insertions(+)

diff --git a/drivers/phy/cadence/phy-cadence-torrent.c b/drivers/phy/cadence/phy-cadence-torrent.c
index 7116127358ee..af81707ff0c6 100644
--- a/drivers/phy/cadence/phy-cadence-torrent.c
+++ b/drivers/phy/cadence/phy-cadence-torrent.c
@@ -1710,6 +1710,7 @@ static int cdns_torrent_phy_probe(struct platform_device *pdev)
struct cdns_torrent_phy *cdns_phy;
struct device *dev = &pdev->dev;
struct phy_provider *phy_provider;
+ struct phy_attrs torrent_attr;
const struct of_device_id *match;
struct cdns_torrent_data *data;
struct device_node *child;
@@ -1852,6 +1853,12 @@ static int cdns_torrent_phy_probe(struct platform_device *pdev)
cdns_phy->phys[node].num_lanes,
cdns_phy->max_bit_rate / 1000,
cdns_phy->max_bit_rate % 1000);
+
+ torrent_attr.bus_width = cdns_phy->phys[node].num_lanes;
+ torrent_attr.max_link_rate = cdns_phy->max_bit_rate;
+ torrent_attr.mode = PHY_MODE_DP;
+
+ phy_set_attrs(gphy, torrent_attr);
} else {
dev_err(dev, "Driver supports only PHY_TYPE_DP\n");
ret = -ENOTSUPP;
--
2.17.1

Subject: RE: [PATCH v2 0/2] Add support to get/set PHY attributes using PHY framework

Ping requesting review comments.
https://lkml.org/lkml/2020/5/26/507

Thanks & regards,
Swapnil

> -----Original Message-----
> From: Yuti Amonkar <[email protected]>
> Sent: Tuesday, May 26, 2020 8:05 PM
> To: [email protected]; [email protected]; [email protected];
> [email protected]; [email protected]
> Cc: [email protected]; [email protected]; [email protected];
> [email protected]; Milind Parab <[email protected]>; Swapnil Kashinath
> Jakhade <[email protected]>; Yuti Suresh Amonkar
> <[email protected]>
> Subject: [PATCH v2 0/2] Add support to get/set PHY attributes using PHY
> framework
>
> This patch series adds support to use kernel PHY subsystem APIs to get/set
> PHY attributes like number of lanes and maximum link rate.
>
> It includes following patches:
>
> 1. v2-0001-phy-Add-max_link_rate-as-a-PHY-attribute-and-APIs.patch
> This patch adds max_link_rate as a PHY attribute along with a pair of APIs
> that allow the generic PHY subsystem to get/set PHY attributes supported by
> the PHY.
> The PHY provider driver may use phy_set_attrs() API to set the values that
> PHY supports.
> The controller driver may then use phy_get_attrs() API to fetch the PHY
> attributes in order to properly configure the controller.
>
> 2. v2-0002-phy-phy-cadence-torrent-Use-kernel-PHY-API-to-set.patch
> This patch uses kernel PHY API phy_set_attrs to set corresponding PHY
> properties in Cadence Torrent PHY driver. This will enable drivers using this
> PHY to read these properties using PHY framework.
>
> The phy_get_attrs() API will be used in the DRM bridge driver [1] which is in
> process of upstreaming.
>
> [1]
>
> https://lkml.org/lkml/2020/2/26/263
>
> Version History:
>
> v2:
> - Implemented single pair of functions to get/set all PHY attributes
>
> Swapnil Jakhade (1):
> phy: phy-cadence-torrent: Use kernel PHY API to set PHY attributes
>
> Yuti Amonkar (1):
> phy: Add max_link_rate as a PHY attribute and APIs to get/set
> phy_attrs
>
> drivers/phy/cadence/phy-cadence-torrent.c | 7 +++++++
> include/linux/phy/phy.h | 25 +++++++++++++++++++++++
> 2 files changed, 32 insertions(+)
>
> --
> 2.17.1

2020-07-09 07:42:01

by Vinod Koul

[permalink] [raw]
Subject: Re: [PATCH v2 0/2] Add support to get/set PHY attributes using PHY framework

On 09-07-20, 07:02, Swapnil Kashinath Jakhade wrote:
> Ping requesting review comments.
> https://lkml.org/lkml/2020/5/26/507

I dont have this, can you repost?

Thanks
>
> Thanks & regards,
> Swapnil
>
> > -----Original Message-----
> > From: Yuti Amonkar <[email protected]>
> > Sent: Tuesday, May 26, 2020 8:05 PM
> > To: [email protected]; [email protected]; [email protected];
> > [email protected]; [email protected]
> > Cc: [email protected]; [email protected]; [email protected];
> > [email protected]; Milind Parab <[email protected]>; Swapnil Kashinath
> > Jakhade <[email protected]>; Yuti Suresh Amonkar
> > <[email protected]>
> > Subject: [PATCH v2 0/2] Add support to get/set PHY attributes using PHY
> > framework
> >
> > This patch series adds support to use kernel PHY subsystem APIs to get/set
> > PHY attributes like number of lanes and maximum link rate.
> >
> > It includes following patches:
> >
> > 1. v2-0001-phy-Add-max_link_rate-as-a-PHY-attribute-and-APIs.patch
> > This patch adds max_link_rate as a PHY attribute along with a pair of APIs
> > that allow the generic PHY subsystem to get/set PHY attributes supported by
> > the PHY.
> > The PHY provider driver may use phy_set_attrs() API to set the values that
> > PHY supports.
> > The controller driver may then use phy_get_attrs() API to fetch the PHY
> > attributes in order to properly configure the controller.
> >
> > 2. v2-0002-phy-phy-cadence-torrent-Use-kernel-PHY-API-to-set.patch
> > This patch uses kernel PHY API phy_set_attrs to set corresponding PHY
> > properties in Cadence Torrent PHY driver. This will enable drivers using this
> > PHY to read these properties using PHY framework.
> >
> > The phy_get_attrs() API will be used in the DRM bridge driver [1] which is in
> > process of upstreaming.
> >
> > [1]
> >
> > https://lkml.org/lkml/2020/2/26/263
> >
> > Version History:
> >
> > v2:
> > - Implemented single pair of functions to get/set all PHY attributes
> >
> > Swapnil Jakhade (1):
> > phy: phy-cadence-torrent: Use kernel PHY API to set PHY attributes
> >
> > Yuti Amonkar (1):
> > phy: Add max_link_rate as a PHY attribute and APIs to get/set
> > phy_attrs
> >
> > drivers/phy/cadence/phy-cadence-torrent.c | 7 +++++++
> > include/linux/phy/phy.h | 25 +++++++++++++++++++++++
> > 2 files changed, 32 insertions(+)
> >
> > --
> > 2.17.1

--
~Vinod