1*7a099760SInochi Amaoto /* SPDX-License-Identifier: GPL-2.0-only */ 2*7a099760SInochi Amaoto 3*7a099760SInochi Amaoto #ifndef _PHY_K3_COMMON_H 4*7a099760SInochi Amaoto #define _PHY_K3_COMMON_H 5*7a099760SInochi Amaoto 6*7a099760SInochi Amaoto #include <linux/phy/phy.h> 7*7a099760SInochi Amaoto 8*7a099760SInochi Amaoto struct k3_phy_lane_group_data { 9*7a099760SInochi Amaoto u32 lanes; 10*7a099760SInochi Amaoto u8 config; 11*7a099760SInochi Amaoto u8 mask; 12*7a099760SInochi Amaoto u32 offsets[] __counted_by(lanes); 13*7a099760SInochi Amaoto }; 14*7a099760SInochi Amaoto 15*7a099760SInochi Amaoto struct k3_lane_group { 16*7a099760SInochi Amaoto const struct k3_phy_lane_group_data *data; 17*7a099760SInochi Amaoto void __iomem *base; 18*7a099760SInochi Amaoto struct phy *phy; 19*7a099760SInochi Amaoto bool is_pcie; 20*7a099760SInochi Amaoto }; 21*7a099760SInochi Amaoto 22*7a099760SInochi Amaoto extern const struct phy_ops k3_pcie_phy_ops; 23*7a099760SInochi Amaoto extern const struct phy_ops k3_usb3_phy_ops; 24*7a099760SInochi Amaoto 25*7a099760SInochi Amaoto int k3_phy_calibrate(struct regmap *apb_spare); 26*7a099760SInochi Amaoto 27*7a099760SInochi Amaoto #endif 28