/* SPDX-License-Identifier: GPL-2.0-only */

#ifndef _PHY_K3_COMMON_H
#define _PHY_K3_COMMON_H

#include <linux/phy/phy.h>

struct k3_phy_lane_group_data {
	u32 lanes;
	u8 config;
	u8 mask;
	u32 offsets[] __counted_by(lanes);
};

struct k3_lane_group {
	const struct k3_phy_lane_group_data *data;
	void __iomem *base;
	struct phy *phy;
	bool is_pcie;
};

extern const struct phy_ops k3_pcie_phy_ops;
extern const struct phy_ops k3_usb3_phy_ops;

int k3_phy_calibrate(struct regmap *apb_spare);

#endif