#include <linux/bitfield.h>
#include <linux/delay.h>
#include <linux/io.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/phy/phy.h>
#include <linux/platform_device.h>
#include <linux/slab.h>
#include "phy-airoha-pcie-regs.h"
#define LEQ_LEN_CTRL_MAX_VAL …
#define FREQ_LOCK_MAX_ATTEMPT …
enum airoha_pcie_port_gen { … };
struct airoha_pcie_phy { … };
static void airoha_phy_clear_bits(void __iomem *reg, u32 mask)
{ … }
static void airoha_phy_set_bits(void __iomem *reg, u32 mask)
{ … }
static void airoha_phy_update_bits(void __iomem *reg, u32 mask, u32 val)
{ … }
#define airoha_phy_update_field(reg, mask, val) …
#define airoha_phy_csr_2l_clear_bits(pcie_phy, reg, mask) …
#define airoha_phy_csr_2l_set_bits(pcie_phy, reg, mask) …
#define airoha_phy_csr_2l_update_field(pcie_phy, reg, mask, val) …
#define airoha_phy_pma0_clear_bits(pcie_phy, reg, mask) …
#define airoha_phy_pma1_clear_bits(pcie_phy, reg, mask) …
#define airoha_phy_pma0_set_bits(pcie_phy, reg, mask) …
#define airoha_phy_pma1_set_bits(pcie_phy, reg, mask) …
#define airoha_phy_pma0_update_field(pcie_phy, reg, mask, val) …
#define airoha_phy_pma1_update_field(pcie_phy, reg, mask, val) …
static void
airoha_phy_init_lane0_rx_fw_pre_calib(struct airoha_pcie_phy *pcie_phy,
enum airoha_pcie_port_gen gen)
{ … }
static void
airoha_phy_init_lane1_rx_fw_pre_calib(struct airoha_pcie_phy *pcie_phy,
enum airoha_pcie_port_gen gen)
{ … }
static void airoha_pcie_phy_init_default(struct airoha_pcie_phy *pcie_phy)
{ … }
static void airoha_pcie_phy_init_clk_out(struct airoha_pcie_phy *pcie_phy)
{ … }
static void airoha_pcie_phy_init_csr_2l(struct airoha_pcie_phy *pcie_phy)
{ … }
static void airoha_pcie_phy_init_rx(struct airoha_pcie_phy *pcie_phy)
{ … }
static void airoha_pcie_phy_init_jcpll(struct airoha_pcie_phy *pcie_phy)
{ … }
static void airoha_pcie_phy_txpll(struct airoha_pcie_phy *pcie_phy)
{ … }
static void airoha_pcie_phy_init_ssc_jcpll(struct airoha_pcie_phy *pcie_phy)
{ … }
static void
airoha_pcie_phy_set_rxlan0_signal_detect(struct airoha_pcie_phy *pcie_phy)
{ … }
static void
airoha_pcie_phy_set_rxlan1_signal_detect(struct airoha_pcie_phy *pcie_phy)
{ … }
static void airoha_pcie_phy_set_rxflow(struct airoha_pcie_phy *pcie_phy)
{ … }
static void airoha_pcie_phy_set_pr(struct airoha_pcie_phy *pcie_phy)
{ … }
static void airoha_pcie_phy_set_txflow(struct airoha_pcie_phy *pcie_phy)
{ … }
static void airoha_pcie_phy_set_rx_mode(struct airoha_pcie_phy *pcie_phy)
{ … }
static void airoha_pcie_phy_load_kflow(struct airoha_pcie_phy *pcie_phy)
{ … }
static int airoha_pcie_phy_init(struct phy *phy)
{ … }
static int airoha_pcie_phy_exit(struct phy *phy)
{ … }
static const struct phy_ops airoha_pcie_phy_ops = …;
static int airoha_pcie_phy_probe(struct platform_device *pdev)
{ … }
static const struct of_device_id airoha_pcie_phy_of_match[] = …;
MODULE_DEVICE_TABLE(of, airoha_pcie_phy_of_match);
static struct platform_driver airoha_pcie_phy_driver = …;
module_platform_driver(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;