#include <linux/clk.h>
#include <linux/delay.h>
#include <linux/err.h>
#include <linux/io.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/phy/phy.h>
#include <linux/platform_device.h>
#include <linux/regulator/consumer.h>
#include <linux/reset.h>
#include <linux/slab.h>
#define PHY_CTRL0 …
#define PHY_CTRL1 …
#define PHY_CTRL2 …
#define PHY_CTRL4 …
#define REF_PHY_EN …
#define LANE0_PWR_ON …
#define SWI_PCS_CLK_SEL …
#define TST_PWR_DOWN …
#define PHY_RESET …
#define NUM_BULK_CLKS …
#define NUM_BULK_REGS …
struct ssphy_priv { … };
static inline void qcom_ssphy_updatel(void __iomem *addr, u32 mask, u32 val)
{ … }
static int qcom_ssphy_do_reset(struct ssphy_priv *priv)
{ … }
static int qcom_ssphy_power_on(struct phy *phy)
{ … }
static int qcom_ssphy_power_off(struct phy *phy)
{ … }
static int qcom_ssphy_init_clock(struct ssphy_priv *priv)
{ … }
static int qcom_ssphy_init_regulator(struct ssphy_priv *priv)
{ … }
static int qcom_ssphy_init_reset(struct ssphy_priv *priv)
{ … }
static const struct phy_ops qcom_ssphy_ops = …;
static int qcom_ssphy_probe(struct platform_device *pdev)
{ … }
static const struct of_device_id qcom_ssphy_match[] = …;
MODULE_DEVICE_TABLE(of, qcom_ssphy_match);
static struct platform_driver qcom_ssphy_driver = …;
module_platform_driver(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;