phy: core: Check requested PHY status in _of_phy_get()
Subsystems (2)
PATCH v2 1/1 phy: core: Check requested PHY status in _of_phy_get()
This is a common checking in various drivers, so move the checking to _of_phy_get().
Signed-off-by Axel Lin <[email protected]>
---
v2: Fixup the error patch. It needs to call module_put if Requested PHY is
disabled.
drivers/phy/phy-core.c | 12 ++++++++++-- drivers/phy/phy-miphy28lp.c | 5 ----- drivers/phy/phy-miphy365x.c | 5 ----- drivers/phy/phy-rcar-gen2.c | 5 ----- 4 files changed, 10 insertions(+), 17 deletions(-)
drivers/phy/phy-core.c +10 -2
@@ -367,13 +367,21 @@ static struct phy *_of_phy_get(struct device_node *np, int index) phy_provider =of_phy_provider_lookup (args.np);if (IS_ERR (phy_provider) || !try_module_get (phy_provider->owner)) { phy =ERR_PTR (-EPROBE_DEFER ); - goto err0; + goto out_unlock; + } + +if (!of_device_is_available (args.np)) { +dev_warn (phy_provider->dev,"Requested PHY is disabled\n" ); + phy =ERR_PTR (-ENODEV ); + goto out_put_module; } phy = phy_provider->of_xlate (phy_provider->dev, &args); + +out_put_module:module_put (phy_provider->owner); -err0: +out_unlock:mutex_unlock (&phy_provider_mutex);of_node_put (args.np);
drivers/phy/phy-miphy28lp.c +0 -5
@@ -1107,11 +1107,6 @@ static struct phy *miphy28lp_xlate(struct device *dev,struct device_node *phynode = args->np;int ret, index =0 ; -if (!of_device_is_available (phynode)) { -dev_warn (dev,"Requested PHY is disabled\n" ); -return ERR_PTR (-ENODEV ); - } -if (args->args_count !=1 ) {dev_err (dev,"Invalid number of cells in 'phy' property\n" );return ERR_PTR (-EINVAL );
drivers/phy/phy-miphy365x.c +0 -5
@@ -476,11 +476,6 @@ static struct phy *miphy365x_xlate(struct device *dev,struct device_node *phynode = args->np;int ret, index; -if (!of_device_is_available (phynode)) { -dev_warn (dev,"Requested PHY is disabled\n" ); -return ERR_PTR (-ENODEV ); - } -if (args->args_count !=1 ) {dev_err (dev,"Invalid number of cells in 'phy' property\n" );return ERR_PTR (-EINVAL );
drivers/phy/phy-rcar-gen2.c +0 -5
@@ -206,11 +206,6 @@ static struct phy *rcar_gen2_phy_xlate(struct device *dev,struct device_node *np = args->np;int i; -if (!of_device_is_available (np)) { -dev_warn (dev,"Requested PHY is disabled\n" ); -return ERR_PTR (-ENODEV ); - } - drv =dev_get_drvdata (dev);if (!drv)return ERR_PTR (-EINVAL );
Signature · 1 line
1.9.1
Quoted 10 lines · Axel Lin
This is a common checking in various drivers, so move the checking to
_of_phy_get().Signed-off-by Axel Lin <[email protected]>---
v2: Fixup the error patch. It needs to callmodule_putif Requested PHY is
disabled.drivers/phy/phy-core.c | 12 ++++++++++-- drivers/phy/phy-miphy28lp.c | 5 ----- drivers/phy/phy-miphy365x.c | 5 -----
Acked-by Lee Jones <[email protected]>
Quoted 79 lines
drivers/phy/phy-rcar-gen2.c | 5 ----- 4 files changed, 10 insertions(+), 17 deletions(-)drivers/phy/phy-core.c +10
-2@@ -367,13 +367,21 @@ static struct phy *_of_phy_get(struct device_node *np, int index) phy_provider =of_phy_provider_lookup (args.np);if (IS_ERR (phy_provider) || !try_module_get (phy_provider->owner)) { phy =ERR_PTR (-EPROBE_DEFER ); - goto err0; + goto out_unlock; + } + +if (!of_device_is_available (args.np)) { +dev_warn (phy_provider->dev,"Requested PHY is disabled\n" ); + phy =ERR_PTR (-ENODEV ); + goto out_put_module; } phy = phy_provider->of_xlate (phy_provider->dev, &args); + +out_put_module:module_put (phy_provider->owner); -err0: +out_unlock:mutex_unlock (&phy_provider_mutex);of_node_put (args.np);drivers/phy/phy-miphy28lp.c +0
-5@@ -1107,11 +1107,6 @@ static struct phy *miphy28lp_xlate(struct device *dev,struct device_node *phynode = args->np;int ret, index =0 ; -if (!of_device_is_available (phynode)) { -dev_warn (dev,"Requested PHY is disabled\n" ); -return ERR_PTR (-ENODEV ); - } -if (args->args_count !=1 ) {dev_err (dev,"Invalid number of cells in 'phy' property\n" );return ERR_PTR (-EINVAL );drivers/phy/phy-miphy365x.c +0
-5@@ -476,11 +476,6 @@ static struct phy *miphy365x_xlate(struct device *dev,struct device_node *phynode = args->np;int ret, index; -if (!of_device_is_available (phynode)) { -dev_warn (dev,"Requested PHY is disabled\n" ); -return ERR_PTR (-ENODEV ); - } -if (args->args_count !=1 ) {dev_err (dev,"Invalid number of cells in 'phy' property\n" );return ERR_PTR (-EINVAL );drivers/phy/phy-rcar-gen2.c +0
-5@@ -206,11 +206,6 @@ static struct phy *rcar_gen2_phy_xlate(struct device *dev,struct device_node *np = args->np;int i; -if (!of_device_is_available (np)) { -dev_warn (dev,"Requested PHY is disabled\n" ); -return ERR_PTR (-ENODEV ); - } - drv =dev_get_drvdata (dev);if (!drv)return ERR_PTR (-EINVAL );
Signature · 4 lines
Lee Jones Linaro STMicroelectronics Landing Team Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog