1 /* 2 * Copyright (c) 2013-2015, Linux Foundation. All rights reserved. 3 * 4 * This program is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License version 2 and 6 * only version 2 as published by the Free Software Foundation. 7 * 8 * This program is distributed in the hope that it will be useful, 9 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 * GNU General Public License for more details. 12 * 13 */ 14 15 #ifndef PHY_QCOM_UFS_H_ 16 #define PHY_QCOM_UFS_H_ 17 18 #include "phy.h" 19 20 /** 21 * ufs_qcom_phy_enable_ref_clk() - Enable the phy 22 * ref clock. 23 * @phy: reference to a generic phy 24 * 25 * returns 0 for success, and non-zero for error. 26 */ 27 int ufs_qcom_phy_enable_ref_clk(struct phy *phy); 28 29 /** 30 * ufs_qcom_phy_disable_ref_clk() - Disable the phy 31 * ref clock. 32 * @phy: reference to a generic phy. 33 */ 34 void ufs_qcom_phy_disable_ref_clk(struct phy *phy); 35 36 /** 37 * ufs_qcom_phy_enable_dev_ref_clk() - Enable the device 38 * ref clock. 39 * @phy: reference to a generic phy. 40 */ 41 void ufs_qcom_phy_enable_dev_ref_clk(struct phy *phy); 42 43 /** 44 * ufs_qcom_phy_disable_dev_ref_clk() - Disable the device 45 * ref clock. 46 * @phy: reference to a generic phy. 47 */ 48 void ufs_qcom_phy_disable_dev_ref_clk(struct phy *phy); 49 50 int ufs_qcom_phy_enable_iface_clk(struct phy *phy); 51 void ufs_qcom_phy_disable_iface_clk(struct phy *phy); 52 int ufs_qcom_phy_start_serdes(struct phy *phy); 53 int ufs_qcom_phy_set_tx_lane_enable(struct phy *phy, u32 tx_lanes); 54 int ufs_qcom_phy_calibrate_phy(struct phy *phy, bool is_rate_B); 55 int ufs_qcom_phy_is_pcs_ready(struct phy *phy); 56 void ufs_qcom_phy_save_controller_version(struct phy *phy, 57 u8 major, u16 minor, u16 step); 58 59 #endif /* PHY_QCOM_UFS_H_ */ 60