mirror of
https://github.com/torvalds/linux.git
synced 2024-11-01 09:41:44 +00:00
USB: PHY: tegra: Get rid of instance number to differentiate PHY type
Tegra20 USB has 3 PHY instances: Instance 1 and 3 are UTMI. Instance 2 is ULPI. As instance number was used to differentiate ULPI from UTMI, used DT param to get this info and processed accordingly. Signed-off-by: Venu Byravarasu <vbyravarasu@nvidia.com> Acked-by: Felipe Balbi <balbi@ti.com> [swarren: moved assignment of phy->is_ulpi_phy into this patch out of next patch.] Signed-off-by: Stephen Warren <swarren@nvidia.com>
This commit is contained in:
parent
3a55c6a8b9
commit
3f9db1a19a
@ -209,11 +209,6 @@ static struct tegra_utmip_config utmip_default[] = {
|
||||
},
|
||||
};
|
||||
|
||||
static inline bool phy_is_ulpi(struct tegra_usb_phy *phy)
|
||||
{
|
||||
return (phy->instance == 1);
|
||||
}
|
||||
|
||||
static int utmip_pad_open(struct tegra_usb_phy *phy)
|
||||
{
|
||||
phy->pad_clk = clk_get_sys("utmip-pad", NULL);
|
||||
@ -655,7 +650,7 @@ static int tegra_phy_init(struct usb_phy *x)
|
||||
struct tegra_ulpi_config *ulpi_config;
|
||||
int err;
|
||||
|
||||
if (phy_is_ulpi(phy)) {
|
||||
if (phy->is_ulpi_phy) {
|
||||
ulpi_config = phy->config;
|
||||
phy->clk = clk_get_sys(NULL, ulpi_config->clk);
|
||||
if (IS_ERR(phy->clk)) {
|
||||
@ -693,7 +688,7 @@ static void tegra_usb_phy_close(struct usb_phy *x)
|
||||
{
|
||||
struct tegra_usb_phy *phy = container_of(x, struct tegra_usb_phy, u_phy);
|
||||
|
||||
if (phy_is_ulpi(phy))
|
||||
if (phy->is_ulpi_phy)
|
||||
clk_put(phy->clk);
|
||||
else
|
||||
utmip_pad_close(phy);
|
||||
@ -704,7 +699,7 @@ static void tegra_usb_phy_close(struct usb_phy *x)
|
||||
|
||||
static int tegra_usb_phy_power_on(struct tegra_usb_phy *phy)
|
||||
{
|
||||
if (phy_is_ulpi(phy))
|
||||
if (phy->is_ulpi_phy)
|
||||
return ulpi_phy_power_on(phy);
|
||||
else
|
||||
return utmi_phy_power_on(phy);
|
||||
@ -712,7 +707,7 @@ static int tegra_usb_phy_power_on(struct tegra_usb_phy *phy)
|
||||
|
||||
static int tegra_usb_phy_power_off(struct tegra_usb_phy *phy)
|
||||
{
|
||||
if (phy_is_ulpi(phy))
|
||||
if (phy->is_ulpi_phy)
|
||||
return ulpi_phy_power_off(phy);
|
||||
else
|
||||
return utmi_phy_power_off(phy);
|
||||
@ -747,9 +742,14 @@ struct tegra_usb_phy *tegra_usb_phy_open(struct device *dev, int instance,
|
||||
phy->dev = dev;
|
||||
phy->is_legacy_phy =
|
||||
of_property_read_bool(np, "nvidia,has-legacy-mode");
|
||||
err = of_property_match_string(np, "phy_type", "ulpi");
|
||||
if (err < 0)
|
||||
phy->is_ulpi_phy = false;
|
||||
else
|
||||
phy->is_ulpi_phy = true;
|
||||
|
||||
if (!phy->config) {
|
||||
if (phy_is_ulpi(phy)) {
|
||||
if (phy->is_ulpi_phy) {
|
||||
pr_err("%s: ulpi phy configuration missing", __func__);
|
||||
err = -EINVAL;
|
||||
goto err0;
|
||||
@ -796,14 +796,14 @@ EXPORT_SYMBOL_GPL(tegra_usb_phy_open);
|
||||
|
||||
void tegra_usb_phy_preresume(struct tegra_usb_phy *phy)
|
||||
{
|
||||
if (!phy_is_ulpi(phy))
|
||||
if (!phy->is_ulpi_phy)
|
||||
utmi_phy_preresume(phy);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(tegra_usb_phy_preresume);
|
||||
|
||||
void tegra_usb_phy_postresume(struct tegra_usb_phy *phy)
|
||||
{
|
||||
if (!phy_is_ulpi(phy))
|
||||
if (!phy->is_ulpi_phy)
|
||||
utmi_phy_postresume(phy);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(tegra_usb_phy_postresume);
|
||||
@ -811,14 +811,14 @@ EXPORT_SYMBOL_GPL(tegra_usb_phy_postresume);
|
||||
void tegra_ehci_phy_restore_start(struct tegra_usb_phy *phy,
|
||||
enum tegra_usb_phy_port_speed port_speed)
|
||||
{
|
||||
if (!phy_is_ulpi(phy))
|
||||
if (!phy->is_ulpi_phy)
|
||||
utmi_phy_restore_start(phy, port_speed);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(tegra_ehci_phy_restore_start);
|
||||
|
||||
void tegra_ehci_phy_restore_end(struct tegra_usb_phy *phy)
|
||||
{
|
||||
if (!phy_is_ulpi(phy))
|
||||
if (!phy->is_ulpi_phy)
|
||||
utmi_phy_restore_end(phy);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(tegra_ehci_phy_restore_end);
|
||||
|
@ -60,6 +60,7 @@ struct tegra_usb_phy {
|
||||
struct usb_phy u_phy;
|
||||
struct device *dev;
|
||||
bool is_legacy_phy;
|
||||
bool is_ulpi_phy;
|
||||
};
|
||||
|
||||
struct tegra_usb_phy *tegra_usb_phy_open(struct device *dev, int instance,
|
||||
|
Loading…
Reference in New Issue
Block a user