linux/drivers/phy/phy-airoha-pcie.c

// SPDX-License-Identifier: GPL-2.0-only
/*
 * Copyright (c) 2024 AIROHA Inc
 * Author: Lorenzo Bianconi <[email protected]>
 */

#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 - PCIe phy driver main structure
 * @dev: pointer to device
 * @phy: pointer to generic phy
 * @csr_2l: Analogic lane IO mapped register base address
 * @pma0: IO mapped register base address of PMA0-PCIe
 * @pma1: IO mapped register base address of PMA1-PCIe
 * @p0_xr_dtime: IO mapped register base address of port0 Tx-Rx detection time
 * @p1_xr_dtime: IO mapped register base address of port1 Tx-Rx detection time
 * @rx_aeq: IO mapped register base address of Rx AEQ training
 */
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)
{}

/**
 * airoha_pcie_phy_init() - Initialize the phy
 * @phy: the phy to be initialized
 *
 * Initialize the phy registers.
 * The hardware settings will be reset during suspend, it should be
 * reinitialized when the consumer calls phy_init() again on resume.
 */
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();