drivers: phy: Handle gracefully NULL pointers

For some controllers PHYs can be optional. Handling NULL pointers without
crashing nor failing, makes it easy to handle optional PHYs.

Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
This commit is contained in:
Jean-Jacques Hiblot 2019-10-01 14:03:26 +02:00 committed by Tom Rini
parent 2ad98ab8f6
commit 4e18429883
2 changed files with 26 additions and 6 deletions

View file

@ -108,35 +108,55 @@ int generic_phy_get_by_name(struct udevice *dev, const char *phy_name,
int generic_phy_init(struct phy *phy)
{
struct phy_ops const *ops = phy_dev_ops(phy->dev);
struct phy_ops const *ops;
if (!phy)
return 0;
ops = phy_dev_ops(phy->dev);
return ops->init ? ops->init(phy) : 0;
}
int generic_phy_reset(struct phy *phy)
{
struct phy_ops const *ops = phy_dev_ops(phy->dev);
struct phy_ops const *ops;
if (!phy)
return 0;
ops = phy_dev_ops(phy->dev);
return ops->reset ? ops->reset(phy) : 0;
}
int generic_phy_exit(struct phy *phy)
{
struct phy_ops const *ops = phy_dev_ops(phy->dev);
struct phy_ops const *ops;
if (!phy)
return 0;
ops = phy_dev_ops(phy->dev);
return ops->exit ? ops->exit(phy) : 0;
}
int generic_phy_power_on(struct phy *phy)
{
struct phy_ops const *ops = phy_dev_ops(phy->dev);
struct phy_ops const *ops;
if (!phy)
return 0;
ops = phy_dev_ops(phy->dev);
return ops->power_on ? ops->power_on(phy) : 0;
}
int generic_phy_power_off(struct phy *phy)
{
struct phy_ops const *ops = phy_dev_ops(phy->dev);
struct phy_ops const *ops;
if (!phy)
return 0;
ops = phy_dev_ops(phy->dev);
return ops->power_off ? ops->power_off(phy) : 0;
}

View file

@ -270,7 +270,7 @@ static inline int generic_phy_get_by_name(struct udevice *user, const char *phy_
*/
static inline bool generic_phy_valid(struct phy *phy)
{
return phy->dev != NULL;
return phy && phy->dev;
}
#endif /*__GENERIC_PHY_H */