Lines Matching +full:ar7100 +full:- +full:usb +full:- +full:phy
1 // SPDX-License-Identifier: GPL-2.0+
3 * Atheros AR71XX/9XXX USB PHY driver
5 * Copyright (C) 2015-2018 Alban Bedel <albeu@free.fr>
11 #include <linux/phy/phy.h>
22 static int ath79_usb_phy_power_on(struct phy *phy) in ath79_usb_phy_power_on() argument
24 struct ath79_usb_phy *priv = phy_get_drvdata(phy); in ath79_usb_phy_power_on()
27 if (priv->no_suspend_override) { in ath79_usb_phy_power_on()
28 err = reset_control_assert(priv->no_suspend_override); in ath79_usb_phy_power_on()
33 err = reset_control_deassert(priv->reset); in ath79_usb_phy_power_on()
34 if (err && priv->no_suspend_override) in ath79_usb_phy_power_on()
35 reset_control_deassert(priv->no_suspend_override); in ath79_usb_phy_power_on()
40 static int ath79_usb_phy_power_off(struct phy *phy) in ath79_usb_phy_power_off() argument
42 struct ath79_usb_phy *priv = phy_get_drvdata(phy); in ath79_usb_phy_power_off()
45 err = reset_control_assert(priv->reset); in ath79_usb_phy_power_off()
49 if (priv->no_suspend_override) { in ath79_usb_phy_power_off()
50 err = reset_control_deassert(priv->no_suspend_override); in ath79_usb_phy_power_off()
52 reset_control_deassert(priv->reset); in ath79_usb_phy_power_off()
67 struct phy *phy; in ath79_usb_phy_probe() local
69 priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL); in ath79_usb_phy_probe()
71 return -ENOMEM; in ath79_usb_phy_probe()
73 priv->reset = devm_reset_control_get(&pdev->dev, "phy"); in ath79_usb_phy_probe()
74 if (IS_ERR(priv->reset)) in ath79_usb_phy_probe()
75 return PTR_ERR(priv->reset); in ath79_usb_phy_probe()
77 priv->no_suspend_override = devm_reset_control_get_optional( in ath79_usb_phy_probe()
78 &pdev->dev, "usb-suspend-override"); in ath79_usb_phy_probe()
79 if (IS_ERR(priv->no_suspend_override)) in ath79_usb_phy_probe()
80 return PTR_ERR(priv->no_suspend_override); in ath79_usb_phy_probe()
82 phy = devm_phy_create(&pdev->dev, NULL, &ath79_usb_phy_ops); in ath79_usb_phy_probe()
83 if (IS_ERR(phy)) in ath79_usb_phy_probe()
84 return PTR_ERR(phy); in ath79_usb_phy_probe()
86 phy_set_drvdata(phy, priv); in ath79_usb_phy_probe()
89 &pdev->dev, of_phy_simple_xlate)); in ath79_usb_phy_probe()
93 { .compatible = "qca,ar7100-usb-phy" },
102 .name = "ath79-usb-phy",
107 MODULE_DESCRIPTION("ATH79 USB PHY driver");