#include <linux/bitfield.h>
#include <linux/clk.h>
#include <linux/iopoll.h>
#include <linux/mfd/syscon.h>
#include <linux/module.h>
#include <linux/mutex.h>
#include <linux/of.h>
#include <linux/phy/phy.h>
#include <linux/platform_device.h>
#include <linux/regmap.h>
#include <linux/reset.h>
#include <dt-bindings/phy/phy.h>
#define PCIE_PHY_GEN_CTRL …
#define PCIE_PHY_CLK_PAD …
#define PAD_DIS_CFG …
#define PCS_XF_ATE_OVRD_IN_2 …
#define ADAPT_REQ_MSK …
#define PCS_XF_RX_ADAPT_ACK …
#define RX_ADAPT_ACK_BIT …
#define CR_ADDR(addr, lane) …
#define REG_COMBO_MODE(x) …
#define REG_CLK_DISABLE(x) …
#define COMBO_PHY_ID(x) …
#define PHY_ID(x) …
#define CLK_100MHZ …
#define CLK_156_25MHZ …
static const unsigned long intel_iphy_clk_rates[] = …;
enum { … };
enum intel_phy_mode { … };
enum intel_combo_mode { … };
enum aggregated_mode { … };
struct intel_combo_phy;
struct intel_cbphy_iphy { … };
struct intel_combo_phy { … };
static int intel_cbphy_iphy_enable(struct intel_cbphy_iphy *iphy, bool set)
{ … }
static int intel_cbphy_pcie_refclk_cfg(struct intel_cbphy_iphy *iphy, bool set)
{ … }
static inline void combo_phy_w32_off_mask(void __iomem *base, unsigned int reg,
u32 mask, u32 val)
{ … }
static int intel_cbphy_iphy_cfg(struct intel_cbphy_iphy *iphy,
int (*phy_cfg)(struct intel_cbphy_iphy *))
{ … }
static int intel_cbphy_pcie_en_pad_refclk(struct intel_cbphy_iphy *iphy)
{ … }
static int intel_cbphy_pcie_dis_pad_refclk(struct intel_cbphy_iphy *iphy)
{ … }
static int intel_cbphy_set_mode(struct intel_combo_phy *cbphy)
{ … }
static void intel_cbphy_rst_assert(struct intel_combo_phy *cbphy)
{ … }
static void intel_cbphy_rst_deassert(struct intel_combo_phy *cbphy)
{ … }
static int intel_cbphy_iphy_power_on(struct intel_cbphy_iphy *iphy)
{ … }
static int intel_cbphy_iphy_power_off(struct intel_cbphy_iphy *iphy)
{ … }
static int intel_cbphy_init(struct phy *phy)
{ … }
static int intel_cbphy_exit(struct phy *phy)
{ … }
static int intel_cbphy_calibrate(struct phy *phy)
{ … }
static int intel_cbphy_fwnode_parse(struct intel_combo_phy *cbphy)
{ … }
static const struct phy_ops intel_cbphy_ops = …;
static struct phy *intel_cbphy_xlate(struct device *dev,
const struct of_phandle_args *args)
{ … }
static int intel_cbphy_create(struct intel_combo_phy *cbphy)
{ … }
static int intel_cbphy_probe(struct platform_device *pdev)
{ … }
static void intel_cbphy_remove(struct platform_device *pdev)
{ … }
static const struct of_device_id of_intel_cbphy_match[] = …;
static struct platform_driver intel_cbphy_driver = …;
module_platform_driver(…) …;
MODULE_DESCRIPTION(…) …;