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 */ 27int 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 */ 34void 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 */ 41void 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 */ 48void ufs_qcom_phy_disable_dev_ref_clk(struct phy *phy); 49 50int ufs_qcom_phy_enable_iface_clk(struct phy *phy); 51void ufs_qcom_phy_disable_iface_clk(struct phy *phy); 52int ufs_qcom_phy_start_serdes(struct phy *phy); 53int ufs_qcom_phy_set_tx_lane_enable(struct phy *phy, u32 tx_lanes); 54int ufs_qcom_phy_calibrate_phy(struct phy *phy, bool is_rate_B); 55int ufs_qcom_phy_is_pcs_ready(struct phy *phy); 56void ufs_qcom_phy_save_controller_version(struct phy *phy, 57 u8 major, u16 minor, u16 step); 58 59#endif /* PHY_QCOM_UFS_H_ */ 60