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