1 // SPDX-License-Identifier: GPL-2.0 2 3 #include <linux/phy.h> 4 #include <linux/module.h> 5 6 #include "qcom.h" 7 8 MODULE_DESCRIPTION("Qualcomm PHY driver Common Functions"); 9 MODULE_AUTHOR("Matus Ujhelyi"); 10 MODULE_AUTHOR("Christian Marangi <[email protected]>"); 11 MODULE_LICENSE("GPL"); 12 13 int at803x_debug_reg_read(struct phy_device *phydev, u16 reg) 14 { 15 int ret; 16 17 ret = phy_write(phydev, AT803X_DEBUG_ADDR, reg); 18 if (ret < 0) 19 return ret; 20 21 return phy_read(phydev, AT803X_DEBUG_DATA); 22 } 23 EXPORT_SYMBOL_GPL(at803x_debug_reg_read); 24 25 int at803x_debug_reg_mask(struct phy_device *phydev, u16 reg, 26 u16 clear, u16 set) 27 { 28 u16 val; 29 int ret; 30 31 ret = at803x_debug_reg_read(phydev, reg); 32 if (ret < 0) 33 return ret; 34 35 val = ret & 0xffff; 36 val &= ~clear; 37 val |= set; 38 39 return phy_write(phydev, AT803X_DEBUG_DATA, val); 40 } 41 EXPORT_SYMBOL_GPL(at803x_debug_reg_mask); 42 43 int at803x_debug_reg_write(struct phy_device *phydev, u16 reg, u16 data) 44 { 45 int ret; 46 47 ret = phy_write(phydev, AT803X_DEBUG_ADDR, reg); 48 if (ret < 0) 49 return ret; 50 51 return phy_write(phydev, AT803X_DEBUG_DATA, data); 52 } 53 EXPORT_SYMBOL_GPL(at803x_debug_reg_write); 54