drivers/net/dsa/lantiq/lantiq_gswip.h

Source file repositories/reference/linux-study-clean/drivers/net/dsa/lantiq/lantiq_gswip.h

File Facts

System
Linux kernel
Corpus path
drivers/net/dsa/lantiq/lantiq_gswip.h
Extension
.h
Size
12555 bytes
Lines
303
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.

Dependency Surface

Detected Declarations

Annotated Snippet

struct gswip_pce_microcode {
	u16 val_3;
	u16 val_2;
	u16 val_1;
	u16 val_0;
};

struct gswip_hw_info {
	int max_ports;
	unsigned int allowed_cpu_ports;
	s16 mii_cfg[GSWIP_MAX_PORTS];
	s16 mii_pcdu[GSWIP_MAX_PORTS];
	bool supports_2500m;
	const struct gswip_pce_microcode (*pce_microcode)[];
	size_t pce_microcode_size;
	enum dsa_tag_protocol tag_protocol;
	void (*phylink_get_caps)(struct dsa_switch *ds, int port,
				 struct phylink_config *config);
	struct phylink_pcs *(*mac_select_pcs)(struct phylink_config *config,
					      phy_interface_t interface);
	int (*port_setup)(struct dsa_switch *ds, int port);
};

struct gswip_gphy_fw {
	struct clk *clk_gate;
	struct reset_control *reset;
	u32 fw_addr_offset;
	char *fw_name;
};

struct gswip_vlan {
	struct net_device *bridge;
	u16 vid;
	u8 fid;
};

struct gswip_priv {
	struct regmap *gswip;
	struct regmap *mdio;
	struct regmap *mii;
	const struct gswip_hw_info *hw_info;
	const struct xway_gphy_match_data *gphy_fw_name_cfg;
	struct dsa_switch *ds;
	struct device *dev;
	struct regmap *rcu_regmap;
	struct gswip_vlan vlans[64];
	int num_gphy_fw;
	struct gswip_gphy_fw *gphy_fw;
	struct mutex pce_table_lock;
	u16 version;
};

int gswip_probe_common(struct gswip_priv *priv, u32 version);

#endif /* __LANTIQ_GSWIP_H */

Annotation

Implementation Notes