#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/regmap.h>
#include <linux/regulator/consumer.h>
#include <linux/reset.h>
#include <linux/slab.h>
#define USB2_PHY_USB_PHY_UTMI_CTRL0 …
#define SLEEPM …
#define OPMODE_MASK …
#define OPMODE_NORMAL …
#define OPMODE_NONDRIVING …
#define TERMSEL …
#define USB2_PHY_USB_PHY_UTMI_CTRL1 …
#define XCVRSEL …
#define USB2_PHY_USB_PHY_UTMI_CTRL5 …
#define POR …
#define USB2_PHY_USB_PHY_HS_PHY_CTRL_COMMON0 …
#define SIDDQ …
#define RETENABLEN …
#define FSEL_MASK …
#define FSEL_DEFAULT …
#define USB2_PHY_USB_PHY_HS_PHY_CTRL_COMMON1 …
#define VBUSVLDEXTSEL0 …
#define PLLBTUNE …
#define USB2_PHY_USB_PHY_HS_PHY_CTRL_COMMON2 …
#define VREGBYPASS …
#define USB2_PHY_USB_PHY_HS_PHY_CTRL1 …
#define VBUSVLDEXT0 …
#define USB2_PHY_USB_PHY_HS_PHY_CTRL2 …
#define USB2_AUTO_RESUME …
#define USB2_SUSPEND_N …
#define USB2_SUSPEND_N_SEL …
#define USB2_PHY_USB_PHY_HS_PHY_OVERRIDE_X0 …
#define USB2_PHY_USB_PHY_HS_PHY_OVERRIDE_X1 …
#define USB2_PHY_USB_PHY_HS_PHY_OVERRIDE_X2 …
#define USB2_PHY_USB_PHY_HS_PHY_OVERRIDE_X3 …
#define PARAM_OVRD_MASK …
#define USB2_PHY_USB_PHY_CFG0 …
#define UTMI_PHY_DATAPATH_CTRL_OVERRIDE_EN …
#define UTMI_PHY_CMN_CTRL_OVERRIDE_EN …
#define USB2_PHY_USB_PHY_REFCLK_CTRL …
#define REFCLK_SEL_MASK …
#define REFCLK_SEL_DEFAULT …
#define HS_DISCONNECT_MASK …
#define SQUELCH_DETECTOR_MASK …
#define HS_AMPLITUDE_MASK …
#define PREEMPHASIS_DURATION_MASK …
#define PREEMPHASIS_AMPLITUDE_MASK …
#define HS_RISE_FALL_MASK …
#define HS_CROSSOVER_VOLTAGE_MASK …
#define HS_OUTPUT_IMPEDANCE_MASK …
#define LS_FS_OUTPUT_IMPEDANCE_MASK …
static const char * const qcom_snps_hsphy_vreg_names[] = …;
#define SNPS_HS_NUM_VREGS …
struct override_param { … };
struct override_param_map { … };
struct phy_override_seq { … };
#define NUM_HSPHY_TUNING_PARAMS …
struct qcom_snps_hsphy { … };
static int qcom_snps_hsphy_clk_init(struct qcom_snps_hsphy *hsphy)
{ … }
static inline void qcom_snps_hsphy_write_mask(void __iomem *base, u32 offset,
u32 mask, u32 val)
{ … }
static int qcom_snps_hsphy_suspend(struct qcom_snps_hsphy *hsphy)
{ … }
static int qcom_snps_hsphy_resume(struct qcom_snps_hsphy *hsphy)
{ … }
static int __maybe_unused qcom_snps_hsphy_runtime_suspend(struct device *dev)
{ … }
static int __maybe_unused qcom_snps_hsphy_runtime_resume(struct device *dev)
{ … }
static int qcom_snps_hsphy_set_mode(struct phy *phy, enum phy_mode mode,
int submode)
{ … }
static const struct override_param hs_disconnect_sc7280[] = …;
static const struct override_param squelch_det_threshold_sc7280[] = …;
static const struct override_param hs_amplitude_sc7280[] = …;
static const struct override_param preemphasis_duration_sc7280[] = …;
static const struct override_param preemphasis_amplitude_sc7280[] = …;
static const struct override_param hs_rise_fall_time_sc7280[] = …;
static const struct override_param hs_crossover_voltage_sc7280[] = …;
static const struct override_param hs_output_impedance_sc7280[] = …;
static const struct override_param ls_fs_output_impedance_sc7280[] = …;
static const struct override_param_map sc7280_snps_7nm_phy[] = …;
static int qcom_snps_hsphy_init(struct phy *phy)
{ … }
static int qcom_snps_hsphy_exit(struct phy *phy)
{ … }
static const struct phy_ops qcom_snps_hsphy_gen_ops = …;
static const struct of_device_id qcom_snps_hsphy_of_match_table[] = …;
MODULE_DEVICE_TABLE(of, qcom_snps_hsphy_of_match_table);
static const struct dev_pm_ops qcom_snps_hsphy_pm_ops = …;
static void qcom_snps_hsphy_override_param_update_val(
const struct override_param_map map,
s32 dt_val, struct phy_override_seq *seq_entry)
{ … }
static void qcom_snps_hsphy_read_override_param_seq(struct device *dev)
{ … }
static int qcom_snps_hsphy_probe(struct platform_device *pdev)
{ … }
static struct platform_driver qcom_snps_hsphy_driver = …;
module_platform_driver(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;