drivers/phy/ti/phy-am654-serdes.c
Source file repositories/reference/linux-study-clean/drivers/phy/ti/phy-am654-serdes.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/phy/ti/phy-am654-serdes.c- Extension
.c- Size
- 22846 bytes
- Lines
- 850
- Domain
- Driver Families
- Bucket
- drivers/phy
- Inferred role
- Driver Families: implementation source
- Status
- source implementation candidate
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Allocates kernel memory; connect allocation flags and lifetime to context constraints.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
dt-bindings/phy/phy.hlinux/cleanup.hlinux/clk.hlinux/clk-provider.hlinux/delay.hlinux/module.hlinux/mfd/syscon.hlinux/mux/consumer.hlinux/of_address.hlinux/phy/phy.hlinux/platform_device.hlinux/pm_runtime.hlinux/regmap.h
Detected Declarations
struct serdes_am654_clk_muxstruct serdes_am654enum serdes_am654_fieldsfunction serdes_am654_enable_pllfunction serdes_am654_disable_pllfunction serdes_am654_enable_txrxfunction serdes_am654_disable_txrxfunction serdes_am654_power_onfunction serdes_am654_power_offfunction GENMASKfunction serdes_am654_pcie_initfunction serdes_am654_initfunction serdes_am654_resetfunction serdes_am654_releasefunction serdes_am654_clk_mux_get_parentfunction serdes_am654_clk_mux_set_parentfunction serdes_am654_clk_registerfunction serdes_am654_regfield_initfunction serdes_am654_probefunction serdes_am654_remove
Annotated Snippet
struct serdes_am654_clk_mux {
struct clk_hw hw;
struct regmap *regmap;
unsigned int reg;
int clk_id;
struct clk_init_data clk_data;
};
#define to_serdes_am654_clk_mux(_hw) \
container_of(_hw, struct serdes_am654_clk_mux, hw)
static const struct regmap_config serdes_am654_regmap_config = {
.reg_bits = 32,
.val_bits = 32,
.reg_stride = 4,
.max_register = 0x1ffc,
};
enum serdes_am654_fields {
/* CMU PLL Control */
CMU_PLL_CTRL,
LANE_PLL_CTRL_RXEQ_RXIDLE,
/* CMU VCO bias current and VREG setting */
AHB_PMA_CM_VCO_VBIAS_VREG,
AHB_PMA_CM_VCO_BIAS_VREG,
AHB_PMA_CM_SR,
AHB_SSC_GEN_Z_O_20_13,
/* AHB PMA Lane Configuration */
AHB_PMA_LN_AGC_THSEL_VREGH,
/* AGC and Signal detect threshold for Gen3 */
AHB_PMA_LN_GEN3_AGC_SD_THSEL,
AHB_PMA_LN_RX_SELR_GEN3,
AHB_PMA_LN_TX_DRV,
/* CMU Master Reset */
CMU_MASTER_CDN,
/* P2S ring buffer initial startup pointer difference */
P2S_RBUF_PTR_DIFF,
CONFIG_VERSION,
/* Lane 1 Master Reset */
L1_MASTER_CDN,
/* CMU OK Status */
CMU_OK_I_0,
/* Mid-speed initial calibration control */
COMRXEQ_MS_INIT_CTRL_7_0,
/* High-speed initial calibration control */
COMRXEQ_HS_INIT_CAL_7_0,
/* Mid-speed recalibration control */
COMRXEQ_MS_RECAL_CTRL_7_0,
/* High-speed recalibration control */
COMRXEQ_HS_RECAL_CTRL_7_0,
/* ATT configuration */
COMRXEQ_CSR_ATT_CONFIG,
/* Edge based boost adaptation window length */
COMRXEQ_CSR_EBSTADAPT_WIN_LEN,
/* COMRXEQ control 3 & 4 */
COMRXEQ_CTRL_3_4,
/* COMRXEQ control 14, 15 and 16*/
COMRXEQ_CTRL_14_15_16,
/* Threshold for errors in pattern data */
COMRXEQ_CSR_DLEV_ERR_THRESH,
/* COMRXEQ control 25 */
COMRXEQ_CTRL_25,
/* Mid-speed rate change calibration control */
CSR_RXEQ_RATE_CHANGE_CAL_RUN_RATE2_O,
/* High-speed rate change calibration control */
COMRXEQ_HS_RCHANGE_CTRL_7_0,
Annotation
- Immediate include surface: `dt-bindings/phy/phy.h`, `linux/cleanup.h`, `linux/clk.h`, `linux/clk-provider.h`, `linux/delay.h`, `linux/module.h`, `linux/mfd/syscon.h`, `linux/mux/consumer.h`.
- Detected declarations: `struct serdes_am654_clk_mux`, `struct serdes_am654`, `enum serdes_am654_fields`, `function serdes_am654_enable_pll`, `function serdes_am654_disable_pll`, `function serdes_am654_enable_txrx`, `function serdes_am654_disable_txrx`, `function serdes_am654_power_on`, `function serdes_am654_power_off`, `function GENMASK`.
- Atlas domain: Driver Families / drivers/phy.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.