mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-28 11:18:45 +07:00
de143c0e27
Ocelot VSC9959 switch supports time-based egress shaping in hardware according to IEEE 802.1Qbv. This patch add support for TAS configuration on egress port of VSC9959 switch. Felix driver is an instance of Ocelot family, with a DSA front-end. The patch uses tc taprio hardware offload to setup TAS set function on felix driver. Signed-off-by: Xiaoliang Yang <xiaoliang.yang_1@nxp.com> Reviewed-by: Vladimir Oltean <vladimir.oltean@nxp.com> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
62 lines
1.8 KiB
C
62 lines
1.8 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/* Copyright 2019 NXP Semiconductors
|
|
*/
|
|
#ifndef _MSCC_FELIX_H
|
|
#define _MSCC_FELIX_H
|
|
|
|
#define ocelot_to_felix(o) container_of((o), struct felix, ocelot)
|
|
#define FELIX_NUM_TC 8
|
|
|
|
/* Platform-specific information */
|
|
struct felix_info {
|
|
struct resource *target_io_res;
|
|
struct resource *port_io_res;
|
|
struct resource *imdio_res;
|
|
const struct reg_field *regfields;
|
|
const u32 *const *map;
|
|
const struct ocelot_ops *ops;
|
|
int shared_queue_sz;
|
|
int num_mact_rows;
|
|
const struct ocelot_stat_layout *stats_layout;
|
|
unsigned int num_stats;
|
|
int num_ports;
|
|
int num_tx_queues;
|
|
struct vcap_field *vcap_is2_keys;
|
|
struct vcap_field *vcap_is2_actions;
|
|
const struct vcap_props *vcap;
|
|
int switch_pci_bar;
|
|
int imdio_pci_bar;
|
|
int (*mdio_bus_alloc)(struct ocelot *ocelot);
|
|
void (*mdio_bus_free)(struct ocelot *ocelot);
|
|
void (*pcs_init)(struct ocelot *ocelot, int port,
|
|
unsigned int link_an_mode,
|
|
const struct phylink_link_state *state);
|
|
void (*pcs_an_restart)(struct ocelot *ocelot, int port);
|
|
void (*pcs_link_state)(struct ocelot *ocelot, int port,
|
|
struct phylink_link_state *state);
|
|
int (*prevalidate_phy_mode)(struct ocelot *ocelot, int port,
|
|
phy_interface_t phy_mode);
|
|
int (*port_setup_tc)(struct dsa_switch *ds, int port,
|
|
enum tc_setup_type type, void *type_data);
|
|
void (*port_sched_speed_set)(struct ocelot *ocelot, int port,
|
|
u32 speed);
|
|
};
|
|
|
|
extern struct felix_info felix_info_vsc9959;
|
|
|
|
enum felix_instance {
|
|
FELIX_INSTANCE_VSC9959 = 0,
|
|
};
|
|
|
|
/* DSA glue / front-end for struct ocelot */
|
|
struct felix {
|
|
struct dsa_switch *ds;
|
|
struct pci_dev *pdev;
|
|
struct felix_info *info;
|
|
struct ocelot ocelot;
|
|
struct mii_bus *imdio;
|
|
struct phy_device **pcs;
|
|
};
|
|
|
|
#endif
|