xref: /linux-6.15/include/linux/phy/tegra/xusb.h (revision d843f031)
12025cf9eSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */
253d2a715SThierry Reding /*
377bfa0fcSJim Lin  * Copyright (c) 2016-2022, NVIDIA CORPORATION.  All rights reserved.
453d2a715SThierry Reding  */
553d2a715SThierry Reding 
653d2a715SThierry Reding #ifndef PHY_TEGRA_XUSB_H
753d2a715SThierry Reding #define PHY_TEGRA_XUSB_H
853d2a715SThierry Reding 
953d2a715SThierry Reding struct tegra_xusb_padctl;
1053d2a715SThierry Reding struct device;
11c545a905SJC Kuo enum usb_device_speed;
1253d2a715SThierry Reding 
1353d2a715SThierry Reding struct tegra_xusb_padctl *tegra_xusb_padctl_get(struct device *dev);
1453d2a715SThierry Reding void tegra_xusb_padctl_put(struct tegra_xusb_padctl *padctl);
1553d2a715SThierry Reding 
1653d2a715SThierry Reding int tegra_xusb_padctl_usb3_save_context(struct tegra_xusb_padctl *padctl,
1753d2a715SThierry Reding 					unsigned int port);
1853d2a715SThierry Reding int tegra_xusb_padctl_hsic_set_idle(struct tegra_xusb_padctl *padctl,
1953d2a715SThierry Reding 				    unsigned int port, bool idle);
2053d2a715SThierry Reding int tegra_xusb_padctl_usb3_set_lfps_detect(struct tegra_xusb_padctl *padctl,
2153d2a715SThierry Reding 					   unsigned int port, bool enable);
2290767cdfSNagarjuna Kristam int tegra_xusb_padctl_set_vbus_override(struct tegra_xusb_padctl *padctl,
2390767cdfSNagarjuna Kristam 					bool val);
2477bfa0fcSJim Lin void tegra_phy_xusb_utmi_pad_power_on(struct phy *phy);
2577bfa0fcSJim Lin void tegra_phy_xusb_utmi_pad_power_down(struct phy *phy);
2690767cdfSNagarjuna Kristam int tegra_phy_xusb_utmi_port_reset(struct phy *phy);
275a40fc4bSNagarjuna Kristam int tegra_xusb_padctl_get_usb3_companion(struct tegra_xusb_padctl *padctl,
285a40fc4bSNagarjuna Kristam 					 unsigned int port);
29*d843f031SWayne Chang int tegra_xusb_padctl_get_port_number(struct phy *phy);
30c545a905SJC Kuo int tegra_xusb_padctl_enable_phy_sleepwalk(struct tegra_xusb_padctl *padctl, struct phy *phy,
31c545a905SJC Kuo 					   enum usb_device_speed speed);
32c545a905SJC Kuo int tegra_xusb_padctl_disable_phy_sleepwalk(struct tegra_xusb_padctl *padctl, struct phy *phy);
33c545a905SJC Kuo int tegra_xusb_padctl_enable_phy_wake(struct tegra_xusb_padctl *padctl, struct phy *phy);
34c545a905SJC Kuo int tegra_xusb_padctl_disable_phy_wake(struct tegra_xusb_padctl *padctl, struct phy *phy);
35c545a905SJC Kuo bool tegra_xusb_padctl_remote_wake_detected(struct tegra_xusb_padctl *padctl, struct phy *phy);
36c545a905SJC Kuo 
3753d2a715SThierry Reding #endif /* PHY_TEGRA_XUSB_H */
38