xref: /linux/drivers/phy/spacemit/phy-k3-common.h (revision 16e6a1a3cb3fa5fa11cd76a9d71235d927923329)
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