drivers/net/dsa/sja1105/sja1105_clocking.c
Source file repositories/reference/linux-study-clean/drivers/net/dsa/sja1105/sja1105_clocking.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/net/dsa/sja1105/sja1105_clocking.c- Extension
.c- Size
- 25127 bytes
- Lines
- 861
- Domain
- Driver Families
- Bucket
- drivers/net
- 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.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/packing.hsja1105.h
Detected Declarations
struct sja1105_cfg_pad_miistruct sja1105_cfg_pad_mii_idstruct sja1105_cgu_idivstruct sja1105_cgu_pll_ctrlstruct sja1110_cgu_outclkstruct sja1105_cgu_mii_ctrlfunction sja1105_cgu_idiv_packingfunction sja1105_cgu_idiv_configfunction sja1105_cgu_mii_control_packingfunction sja1105_cgu_mii_tx_clk_configfunction sja1105_cgu_mii_rx_clk_configfunction sja1105_cgu_mii_ext_tx_clk_configfunction sja1105_cgu_mii_ext_rx_clk_configfunction sja1105_mii_clocking_setupfunction sja1105_cgu_pll_control_packingfunction sja1105_cgu_rgmii_tx_clk_configfunction sja1105_cfg_pad_mii_packingfunction sja1105_rgmii_cfg_pad_tx_configfunction sja1105_cfg_pad_rx_configfunction sja1105_cfg_pad_mii_id_packingfunction sja1110_cfg_pad_mii_id_packingfunction sja1105pqrs_setup_rgmii_delayfunction sja1110_setup_rgmii_delayfunction sja1105_rgmii_clocking_setupfunction sja1105_cgu_rmii_ref_clk_configfunction sja1105_cgu_rmii_ext_tx_clk_configfunction sja1105_cgu_rmii_pll_configfunction sja1105_rmii_clocking_setupfunction sja1105_clocking_setup_portfunction sja1105_clocking_setupfunction sja1110_cgu_outclk_packingfunction sja1110_disable_microcontroller
Annotated Snippet
struct sja1105_cfg_pad_mii {
u64 d32_os;
u64 d32_ih;
u64 d32_ipud;
u64 d10_ih;
u64 d10_os;
u64 d10_ipud;
u64 ctrl_os;
u64 ctrl_ih;
u64 ctrl_ipud;
u64 clk_os;
u64 clk_ih;
u64 clk_ipud;
};
struct sja1105_cfg_pad_mii_id {
u64 rxc_stable_ovr;
u64 rxc_delay;
u64 rxc_bypass;
u64 rxc_pd;
u64 txc_stable_ovr;
u64 txc_delay;
u64 txc_bypass;
u64 txc_pd;
};
/* UM10944 Table 82.
* IDIV_0_C to IDIV_4_C control registers
* (addr. 10000Bh to 10000Fh)
*/
struct sja1105_cgu_idiv {
u64 clksrc;
u64 autoblock;
u64 idiv;
u64 pd;
};
/* PLL_1_C control register
*
* SJA1105 E/T: UM10944 Table 81 (address 10000Ah)
* SJA1105 P/Q/R/S: UM11040 Table 116 (address 10000Ah)
*/
struct sja1105_cgu_pll_ctrl {
u64 pllclksrc;
u64 msel;
u64 autoblock;
u64 psel;
u64 direct;
u64 fbsel;
u64 bypass;
u64 pd;
};
struct sja1110_cgu_outclk {
u64 clksrc;
u64 autoblock;
u64 pd;
};
enum {
CLKSRC_MII0_TX_CLK = 0x00,
CLKSRC_MII0_RX_CLK = 0x01,
CLKSRC_MII1_TX_CLK = 0x02,
CLKSRC_MII1_RX_CLK = 0x03,
CLKSRC_MII2_TX_CLK = 0x04,
CLKSRC_MII2_RX_CLK = 0x05,
CLKSRC_MII3_TX_CLK = 0x06,
CLKSRC_MII3_RX_CLK = 0x07,
CLKSRC_MII4_TX_CLK = 0x08,
CLKSRC_MII4_RX_CLK = 0x09,
CLKSRC_PLL0 = 0x0B,
CLKSRC_PLL1 = 0x0E,
CLKSRC_IDIV0 = 0x11,
CLKSRC_IDIV1 = 0x12,
CLKSRC_IDIV2 = 0x13,
CLKSRC_IDIV3 = 0x14,
CLKSRC_IDIV4 = 0x15,
};
/* UM10944 Table 83.
* MIIx clock control registers 1 to 30
* (addresses 100013h to 100035h)
*/
struct sja1105_cgu_mii_ctrl {
u64 clksrc;
u64 autoblock;
u64 pd;
};
static void sja1105_cgu_idiv_packing(void *buf, struct sja1105_cgu_idiv *idiv,
Annotation
- Immediate include surface: `linux/packing.h`, `sja1105.h`.
- Detected declarations: `struct sja1105_cfg_pad_mii`, `struct sja1105_cfg_pad_mii_id`, `struct sja1105_cgu_idiv`, `struct sja1105_cgu_pll_ctrl`, `struct sja1110_cgu_outclk`, `struct sja1105_cgu_mii_ctrl`, `function sja1105_cgu_idiv_packing`, `function sja1105_cgu_idiv_config`, `function sja1105_cgu_mii_control_packing`, `function sja1105_cgu_mii_tx_clk_config`.
- Atlas domain: Driver Families / drivers/net.
- 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.