mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-28 07:31:15 +00:00
phy: Add generic_{setup,shutdown}_phy() helpers
In drivers usb/host/{ehci,ohci}-generic.c, {ehci,ohci}_setup_phy() and {ehci,ohci}_shutdown_phy() shares 95% of common code. Factorize this code in new generic_{setup,shudown}_phy() functions. Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com> Cc: Marek Vasut <marex@denx.de> Cc: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
7cc1af902d
commit
84e561407a
2 changed files with 72 additions and 0 deletions
|
@ -455,6 +455,48 @@ int generic_phy_power_off_bulk(struct phy_bulk *bulk)
|
|||
return ret;
|
||||
}
|
||||
|
||||
int generic_setup_phy(struct udevice *dev, struct phy *phy, int index)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
if (!phy)
|
||||
return 0;
|
||||
|
||||
ret = generic_phy_get_by_index(dev, index, phy);
|
||||
if (ret) {
|
||||
if (ret != -ENOENT)
|
||||
return ret;
|
||||
} else {
|
||||
ret = generic_phy_init(phy);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = generic_phy_power_on(phy);
|
||||
if (ret)
|
||||
ret = generic_phy_exit(phy);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int generic_shutdown_phy(struct phy *phy)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
if (!phy)
|
||||
return 0;
|
||||
|
||||
if (generic_phy_valid(phy)) {
|
||||
ret = generic_phy_power_off(phy);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = generic_phy_exit(phy);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
UCLASS_DRIVER(phy) = {
|
||||
.id = UCLASS_PHY,
|
||||
.name = "phy",
|
||||
|
|
|
@ -342,6 +342,26 @@ int generic_phy_power_on_bulk(struct phy_bulk *bulk);
|
|||
*/
|
||||
int generic_phy_power_off_bulk(struct phy_bulk *bulk);
|
||||
|
||||
/**
|
||||
* generic_setup_phy() - Get, initialize and power on phy.
|
||||
*
|
||||
* @dev: The consumer device.
|
||||
* @phy: A pointer to the PHY port
|
||||
* @index: The index in the list of available PHYs
|
||||
*
|
||||
* Return: 0 if OK, or negative error code.
|
||||
*/
|
||||
int generic_setup_phy(struct udevice *dev, struct phy *phy, int index);
|
||||
|
||||
/**
|
||||
* generic_shutdown_phy() - Power off and de-initialize phy.
|
||||
*
|
||||
* @phy: A pointer to the PHY port.
|
||||
*
|
||||
* Return: 0 if OK, or negative error code.
|
||||
*/
|
||||
int generic_shutdown_phy(struct phy *phy);
|
||||
|
||||
#else /* CONFIG_PHY */
|
||||
|
||||
static inline int generic_phy_init(struct phy *phy)
|
||||
|
@ -407,6 +427,16 @@ static inline int generic_phy_power_off_bulk(struct phy_bulk *bulk)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static inline int generic_setup_phy(struct udevice *dev, struct phy *phy, int index)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int generic_shutdown_phy(struct phy *phy)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif /* CONFIG_PHY */
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in a new issue