#include <linux/module.h>
#include <linux/if_bridge.h>
#include <linux/if_vlan.h>
#include <linux/iopoll.h>
#include <linux/ip.h>
#include <linux/of.h>
#include <linux/of_net.h>
#include <linux/phy/phy.h>
#include <linux/platform_device.h>
#include <linux/reset.h>
#include <net/addrconf.h>
#include "lan966x_main.h"
#define XTR_EOF_0 …
#define XTR_EOF_1 …
#define XTR_EOF_2 …
#define XTR_EOF_3 …
#define XTR_PRUNED …
#define XTR_ABORT …
#define XTR_ESCAPE …
#define XTR_NOT_READY …
#define XTR_VALID_BYTES(x) …
#define IO_RANGES …
static const struct of_device_id lan966x_match[] = …;
MODULE_DEVICE_TABLE(of, lan966x_match);
struct lan966x_main_io_resource { … };
static const struct lan966x_main_io_resource lan966x_main_iomap[] = …;
static int lan966x_create_targets(struct platform_device *pdev,
struct lan966x *lan966x)
{ … }
static bool lan966x_port_unique_address(struct net_device *dev)
{ … }
static int lan966x_port_set_mac_address(struct net_device *dev, void *p)
{ … }
static int lan966x_port_get_phys_port_name(struct net_device *dev,
char *buf, size_t len)
{ … }
static int lan966x_port_open(struct net_device *dev)
{ … }
static int lan966x_port_stop(struct net_device *dev)
{ … }
static int lan966x_port_inj_status(struct lan966x *lan966x)
{ … }
static int lan966x_port_inj_ready(struct lan966x *lan966x, u8 grp)
{ … }
static int lan966x_port_ifh_xmit(struct sk_buff *skb,
__be32 *ifh,
struct net_device *dev)
{ … }
static void lan966x_ifh_set(u8 *ifh, size_t val, size_t pos, size_t length)
{ … }
void lan966x_ifh_set_bypass(void *ifh, u64 bypass)
{ … }
void lan966x_ifh_set_port(void *ifh, u64 port)
{ … }
static void lan966x_ifh_set_qos_class(void *ifh, u64 qos)
{ … }
static void lan966x_ifh_set_ipv(void *ifh, u64 ipv)
{ … }
static void lan966x_ifh_set_vid(void *ifh, u64 vid)
{ … }
static void lan966x_ifh_set_rew_op(void *ifh, u64 rew_op)
{ … }
static void lan966x_ifh_set_timestamp(void *ifh, u64 timestamp)
{ … }
static netdev_tx_t lan966x_port_xmit(struct sk_buff *skb,
struct net_device *dev)
{ … }
static int lan966x_port_change_mtu(struct net_device *dev, int new_mtu)
{ … }
static int lan966x_mc_unsync(struct net_device *dev, const unsigned char *addr)
{ … }
static int lan966x_mc_sync(struct net_device *dev, const unsigned char *addr)
{ … }
static void lan966x_port_set_rx_mode(struct net_device *dev)
{ … }
static int lan966x_port_get_parent_id(struct net_device *dev,
struct netdev_phys_item_id *ppid)
{ … }
static int lan966x_port_hwtstamp_get(struct net_device *dev,
struct kernel_hwtstamp_config *cfg)
{ … }
static int lan966x_port_hwtstamp_set(struct net_device *dev,
struct kernel_hwtstamp_config *cfg,
struct netlink_ext_ack *extack)
{ … }
static const struct net_device_ops lan966x_port_netdev_ops = …;
bool lan966x_netdevice_check(const struct net_device *dev)
{ … }
bool lan966x_hw_offload(struct lan966x *lan966x, u32 port, struct sk_buff *skb)
{ … }
static int lan966x_port_xtr_status(struct lan966x *lan966x, u8 grp)
{ … }
static int lan966x_port_xtr_ready(struct lan966x *lan966x, u8 grp)
{ … }
static int lan966x_rx_frame_word(struct lan966x *lan966x, u8 grp, u32 *rval)
{ … }
static u64 lan966x_ifh_get(u8 *ifh, size_t pos, size_t length)
{ … }
void lan966x_ifh_get_src_port(void *ifh, u64 *src_port)
{ … }
static void lan966x_ifh_get_len(void *ifh, u64 *len)
{ … }
void lan966x_ifh_get_timestamp(void *ifh, u64 *timestamp)
{ … }
static irqreturn_t lan966x_xtr_irq_handler(int irq, void *args)
{ … }
static irqreturn_t lan966x_ana_irq_handler(int irq, void *args)
{ … }
static void lan966x_cleanup_ports(struct lan966x *lan966x)
{ … }
static int lan966x_probe_port(struct lan966x *lan966x, u32 p,
phy_interface_t phy_mode,
struct fwnode_handle *portnp)
{ … }
static void lan966x_init(struct lan966x *lan966x)
{ … }
static int lan966x_ram_init(struct lan966x *lan966x)
{ … }
static int lan966x_reset_switch(struct lan966x *lan966x)
{ … }
static int lan966x_probe(struct platform_device *pdev)
{ … }
static void lan966x_remove(struct platform_device *pdev)
{ … }
static struct platform_driver lan966x_driver = …;
static int __init lan966x_switch_driver_init(void)
{ … }
static void __exit lan966x_switch_driver_exit(void)
{ … }
module_init(…) …;
module_exit(lan966x_switch_driver_exit);
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;