drivers/net/phy/mscc/mscc.h
Source file repositories/reference/linux-study-clean/drivers/net/phy/mscc/mscc.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/net/phy/mscc/mscc.h- Extension
.h- Size
- 16196 bytes
- Lines
- 524
- 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.
- Touches IRQ or DMA behavior; this matters for the representative real-device path.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
mscc_macsec.h
Detected Declarations
struct reg_valstruct vsc85xx_hw_statstruct vsc8531_skb_cbstruct vsc8531_privatestruct vsc85xx_shared_privatestruct vsc8531_edge_rate_tableenum rgmii_clock_delayenum vsc85xx_global_phyenum csr_targetfunction vsc8584_macsec_initfunction vsc8584_handle_macsec_interruptfunction vsc85xx_link_change_notifyfunction vsc8584_ptp_deinitfunction vsc8584_ptp_probefunction vsc8584_handle_ts_interrupt
Annotated Snippet
struct reg_val {
u16 reg;
u32 val;
};
struct vsc85xx_hw_stat {
const char *string;
u8 reg;
u16 page;
u16 mask;
};
struct vsc8531_skb_cb {
u32 ns;
};
#define VSC8531_SKB_CB(skb) \
((struct vsc8531_skb_cb *)((skb)->cb))
struct vsc8531_private {
int rate_magic;
u16 supp_led_modes;
u32 leds_mode[MAX_LEDS];
u8 nleds;
const struct vsc85xx_hw_stat *hw_stats;
u64 *stats;
int nstats;
/* PHY address within the package. */
u8 addr;
/* For multiple port PHYs; the MDIO address of the base PHY in the
* package.
*/
unsigned int base_addr;
#if IS_ENABLED(CONFIG_MACSEC)
/* MACsec fields:
* - One SecY per device (enforced at the s/w implementation level)
* - macsec_flows: list of h/w flows
* - ingr_flows: bitmap of ingress flows
* - egr_flows: bitmap of egress flows
*/
struct macsec_secy *secy;
struct list_head macsec_flows;
unsigned long ingr_flows;
unsigned long egr_flows;
#endif
struct mii_timestamper mii_ts;
bool input_clk_init;
struct vsc85xx_ptp *ptp;
/* LOAD/SAVE GPIO pin, used for retrieving or setting time to the PHC. */
struct gpio_desc *load_save;
/* For multiple port PHYs; the MDIO address of the base PHY in the
* pair of two PHYs that share a 1588 engine. PHY0 and PHY2 are coupled.
* PHY1 and PHY3 as well. PHY0 and PHY1 are base PHYs for their
* respective pair.
*/
unsigned int ts_base_addr;
u8 ts_base_phy;
/* ts_lock: used for per-PHY timestamping operations.
* phc_lock: used for per-PHY PHC opertations.
*/
struct mutex ts_lock;
struct mutex phc_lock;
/* list of skbs that were received and need timestamp information but it
* didn't received it yet
*/
struct sk_buff_head rx_skbs_list;
};
/* Shared structure between the PHYs of the same package.
* gpio_lock: used for PHC operations. Common for all PHYs as the load/save GPIO
* is shared.
*/
enum vsc85xx_global_phy {
VSC88XX_BASE_ADDR = 0,
};
struct vsc85xx_shared_private {
struct mutex gpio_lock;
};
#if IS_ENABLED(CONFIG_OF_MDIO)
struct vsc8531_edge_rate_table {
u32 vddmac;
Annotation
- Immediate include surface: `mscc_macsec.h`.
- Detected declarations: `struct reg_val`, `struct vsc85xx_hw_stat`, `struct vsc8531_skb_cb`, `struct vsc8531_private`, `struct vsc85xx_shared_private`, `struct vsc8531_edge_rate_table`, `enum rgmii_clock_delay`, `enum vsc85xx_global_phy`, `enum csr_target`, `function vsc8584_macsec_init`.
- Atlas domain: Driver Families / drivers/net.
- Implementation status: source implementation candidate.
- IRQ or DMA behavior appears here, which is relevant to the selected PCIe/NVMe device path.
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.