/Linux-v5.10/drivers/net/ethernet/mscc/ |
D | ocelot.c | 3 * Microsemi Ocelot Switch driver 9 #include "ocelot.h" 21 static inline u32 ocelot_mact_read_macaccess(struct ocelot *ocelot) in ocelot_mact_read_macaccess() argument 23 return ocelot_read(ocelot, ANA_TABLES_MACACCESS); in ocelot_mact_read_macaccess() 26 static inline int ocelot_mact_wait_for_completion(struct ocelot *ocelot) in ocelot_mact_wait_for_completion() argument 31 ocelot, val, in ocelot_mact_wait_for_completion() 37 static void ocelot_mact_select(struct ocelot *ocelot, in ocelot_mact_select() argument 54 ocelot_write(ocelot, macl, ANA_TABLES_MACLDATA); in ocelot_mact_select() 55 ocelot_write(ocelot, mach, ANA_TABLES_MACHDATA); in ocelot_mact_select() 59 int ocelot_mact_learn(struct ocelot *ocelot, int port, in ocelot_mact_learn() argument [all …]
|
D | ocelot_ptp.c | 2 /* Microsemi Ocelot PTP clock driver 9 #include <soc/mscc/ocelot.h> 13 struct ocelot *ocelot = container_of(ptp, struct ocelot, ptp_info); in ocelot_ptp_gettime64() local 19 spin_lock_irqsave(&ocelot->ptp_clock_lock, flags); in ocelot_ptp_gettime64() 21 val = ocelot_read_rix(ocelot, PTP_PIN_CFG, TOD_ACC_PIN); in ocelot_ptp_gettime64() 24 ocelot_write_rix(ocelot, val, PTP_PIN_CFG, TOD_ACC_PIN); in ocelot_ptp_gettime64() 26 s = ocelot_read_rix(ocelot, PTP_PIN_TOD_SEC_MSB, TOD_ACC_PIN) & 0xffff; in ocelot_ptp_gettime64() 28 s += ocelot_read_rix(ocelot, PTP_PIN_TOD_SEC_LSB, TOD_ACC_PIN); in ocelot_ptp_gettime64() 29 ns = ocelot_read_rix(ocelot, PTP_PIN_TOD_NSEC, TOD_ACC_PIN); in ocelot_ptp_gettime64() 31 spin_unlock_irqrestore(&ocelot->ptp_clock_lock, flags); in ocelot_ptp_gettime64() [all …]
|
D | ocelot_net.c | 2 /* Microsemi Ocelot Switch driver 8 #include "ocelot.h" 15 struct ocelot *ocelot = priv->port.ocelot; in ocelot_setup_tc_cls_flower() local 23 return ocelot_cls_flower_replace(ocelot, port, f, ingress); in ocelot_setup_tc_cls_flower() 25 return ocelot_cls_flower_destroy(ocelot, port, f, ingress); in ocelot_setup_tc_cls_flower() 27 return ocelot_cls_flower_stats(ocelot, port, f, ingress); in ocelot_setup_tc_cls_flower() 38 struct ocelot *ocelot = priv->port.ocelot; in ocelot_setup_tc_cls_matchall() local 79 err = ocelot_port_policer_add(ocelot, port, &pol); in ocelot_setup_tc_cls_matchall() 92 err = ocelot_port_policer_del(ocelot, port); in ocelot_setup_tc_cls_matchall() 203 struct ocelot *ocelot = priv->port.ocelot; in ocelot_port_adjust_link() local [all …]
|
D | ocelot_io.c | 3 * Microsemi Ocelot Switch driver 11 #include "ocelot.h" 13 u32 __ocelot_read_ix(struct ocelot *ocelot, u32 reg, u32 offset) in __ocelot_read_ix() argument 20 regmap_read(ocelot->targets[target], in __ocelot_read_ix() 21 ocelot->map[target][reg & REG_MASK] + offset, &val); in __ocelot_read_ix() 26 void __ocelot_write_ix(struct ocelot *ocelot, u32 val, u32 reg, u32 offset) in __ocelot_write_ix() argument 32 regmap_write(ocelot->targets[target], in __ocelot_write_ix() 33 ocelot->map[target][reg & REG_MASK] + offset, val); in __ocelot_write_ix() 37 void __ocelot_rmw_ix(struct ocelot *ocelot, u32 val, u32 mask, u32 reg, in __ocelot_rmw_ix() argument 44 regmap_update_bits(ocelot->targets[target], in __ocelot_rmw_ix() [all …]
|
D | ocelot_vcap.c | 2 /* Microsemi Ocelot Switch driver 49 static u32 vcap_read_update_ctrl(struct ocelot *ocelot, in vcap_read_update_ctrl() argument 52 return ocelot_target_read(ocelot, vcap->target, VCAP_CORE_UPDATE_CTRL); in vcap_read_update_ctrl() 55 static void vcap_cmd(struct ocelot *ocelot, const struct vcap_props *vcap, in vcap_cmd() argument 74 ocelot_target_write(ocelot, vcap->target, value, VCAP_CORE_UPDATE_CTRL); in vcap_cmd() 78 10, 100000, false, ocelot, vcap); in vcap_cmd() 82 static void vcap_row_cmd(struct ocelot *ocelot, const struct vcap_props *vcap, in vcap_row_cmd() argument 85 vcap_cmd(ocelot, vcap, vcap->entry_count - row - 1, cmd, sel); in vcap_row_cmd() 88 static void vcap_entry2cache(struct ocelot *ocelot, in vcap_entry2cache() argument 97 ocelot_target_write_rix(ocelot, vcap->target, data->entry[i], in vcap_entry2cache() [all …]
|
D | ocelot_police.c | 2 /* Microsemi Ocelot Switch driver 7 #include <soc/mscc/ocelot.h> 21 #define POL_ORDER 0x1d3 /* Ocelot policer order: Serial (QoS -> Port -> VCAP) */ 23 int qos_policer_conf_set(struct ocelot *ocelot, int port, u32 pol_ix, in qos_policer_conf_set() argument 105 dev_err(ocelot->dev, "Invalid pir for port %d: %u (max %lu)\n", in qos_policer_conf_set() 111 dev_err(ocelot->dev, "Invalid cir for port %d: %u (max %lu)\n", in qos_policer_conf_set() 117 dev_err(ocelot->dev, "Invalid pbs for port %d: %u (max %u)\n", in qos_policer_conf_set() 123 dev_err(ocelot->dev, "Invalid cbs for port %d: %u (max %u)\n", in qos_policer_conf_set() 134 ocelot_write_gix(ocelot, value, ANA_POL_MODE_CFG, pol_ix); in qos_policer_conf_set() 136 ocelot_write_gix(ocelot, in qos_policer_conf_set() [all …]
|
D | ocelot.h | 3 * Microsemi Ocelot Switch driver 25 #include <soc/mscc/ocelot.h> 92 int ocelot_mact_learn(struct ocelot *ocelot, int port, 95 int ocelot_mact_forget(struct ocelot *ocelot, 97 int ocelot_port_lag_join(struct ocelot *ocelot, int port, 99 void ocelot_port_lag_leave(struct ocelot *ocelot, int port, 101 struct net_device *ocelot_port_to_netdev(struct ocelot *ocelot, int port); 107 int ocelot_probe_port(struct ocelot *ocelot, int port, struct regmap *target, 110 void ocelot_set_cpu_port(struct ocelot *ocelot, int cpu,
|
D | ocelot_vsc7514.c | 3 * Microsemi Ocelot Switch driver 19 #include "ocelot.h" 484 static void ocelot_pll5_init(struct ocelot *ocelot) in ocelot_pll5_init() argument 487 * The values are coming from the VTSS API for Ocelot in ocelot_pll5_init() 489 regmap_write(ocelot->targets[HSIO], HSIO_PLL5G_CFG4, in ocelot_pll5_init() 492 regmap_write(ocelot->targets[HSIO], HSIO_PLL5G_CFG0, in ocelot_pll5_init() 504 regmap_write(ocelot->targets[HSIO], HSIO_PLL5G_CFG2, in ocelot_pll5_init() 513 static int ocelot_chip_init(struct ocelot *ocelot, const struct ocelot_ops *ops) in ocelot_chip_init() argument 517 ocelot->map = ocelot_regmap; in ocelot_chip_init() 518 ocelot->stats_layout = ocelot_stats_layout; in ocelot_chip_init() [all …]
|
D | ocelot_flower.c | 2 /* Microsemi Ocelot Switch driver 35 * offload support in Ocelot in ocelot_chain_to_block() 119 ocelot_find_vcap_filter_that_points_at(struct ocelot *ocelot, int chain) in ocelot_find_vcap_filter_that_points_at() argument 130 block = &ocelot->block[VCAP_IS1]; in ocelot_find_vcap_filter_that_points_at() 138 list_for_each_entry(filter, &ocelot->dummy_rules, list) in ocelot_find_vcap_filter_that_points_at() 145 static int ocelot_flower_parse_action(struct ocelot *ocelot, int port, in ocelot_flower_parse_action() argument 149 struct ocelot_port *ocelot_port = ocelot->ports[port]; in ocelot_flower_parse_action() 240 egress_port = ocelot->ops->netdev_to_port(a->dev); in ocelot_flower_parse_action() 243 "Destination not an ocelot port"); in ocelot_flower_parse_action() 368 static int ocelot_flower_parse_indev(struct ocelot *ocelot, int port, in ocelot_flower_parse_indev() argument [all …]
|
D | ocelot_vcap.h | 2 /* Microsemi Ocelot Switch driver 9 #include "ocelot.h" 299 int ocelot_vcap_filter_add(struct ocelot *ocelot, 302 int ocelot_vcap_filter_del(struct ocelot *ocelot, 304 int ocelot_vcap_filter_stats_update(struct ocelot *ocelot, 309 void ocelot_detect_vcap_constants(struct ocelot *ocelot); 310 int ocelot_vcap_init(struct ocelot *ocelot);
|
D | Kconfig | 20 This is a hardware support library for Ocelot network switches. It is 24 tristate "Ocelot switch driver" 31 This driver supports the Ocelot network switch device as present on 32 the Ocelot SoCs (VSC7514).
|
D | ocelot_police.h | 2 /* Microsemi Ocelot Switch driver 10 #include "ocelot.h" 33 int qos_policer_conf_set(struct ocelot *ocelot, int port, u32 pol_ix,
|
/Linux-v5.10/drivers/net/dsa/ocelot/ |
D | felix.c | 5 * register-compatible with Ocelot and that perform I/O to their host CPU 15 #include <soc/mscc/ocelot.h> 37 struct ocelot *ocelot = ds->priv; in felix_set_ageing_time() local 39 ocelot_set_ageing_time(ocelot, ageing_time); in felix_set_ageing_time() 47 struct ocelot *ocelot = ds->priv; in felix_fdb_dump() local 49 return ocelot_fdb_dump(ocelot, port, cb, data); in felix_fdb_dump() 55 struct ocelot *ocelot = ds->priv; in felix_fdb_add() local 57 return ocelot_fdb_add(ocelot, port, addr, vid); in felix_fdb_add() 63 struct ocelot *ocelot = ds->priv; in felix_fdb_del() local 65 return ocelot_fdb_del(ocelot, port, addr, vid); in felix_fdb_del() [all …]
|
D | felix.h | 7 #define ocelot_to_felix(o) container_of((o), struct felix, ocelot) 28 int (*mdio_bus_alloc)(struct ocelot *ocelot); 29 void (*mdio_bus_free)(struct ocelot *ocelot); 30 void (*phylink_validate)(struct ocelot *ocelot, int port, 33 int (*prevalidate_phy_mode)(struct ocelot *ocelot, int port, 37 void (*port_sched_speed_set)(struct ocelot *ocelot, int port, 39 void (*xmit_template_populate)(struct ocelot *ocelot, int port); 44 /* DSA glue / front-end for struct ocelot */ 48 struct ocelot ocelot; member 55 struct net_device *felix_port_to_netdev(struct ocelot *ocelot, int port);
|
D | felix_vsc9959.c | 10 #include <soc/mscc/ocelot.h> 890 static int vsc9959_gcb_soft_rst_status(struct ocelot *ocelot) in vsc9959_gcb_soft_rst_status() argument 894 ocelot_field_read(ocelot, GCB_SOFT_RST_SWC_RST, &val); in vsc9959_gcb_soft_rst_status() 899 static int vsc9959_sys_ram_init_status(struct ocelot *ocelot) in vsc9959_sys_ram_init_status() argument 901 return ocelot_read(ocelot, SYS_RAM_INIT); in vsc9959_sys_ram_init_status() 907 static int vsc9959_reset(struct ocelot *ocelot) in vsc9959_reset() argument 912 ocelot_field_write(ocelot, GCB_SOFT_RST_SWC_RST, 1); in vsc9959_reset() 914 err = readx_poll_timeout(vsc9959_gcb_soft_rst_status, ocelot, val, !val, in vsc9959_reset() 917 dev_err(ocelot->dev, "timeout: switch core reset\n"); in vsc9959_reset() 922 ocelot_write(ocelot, SYS_RAM_INIT_RAM_INIT, SYS_RAM_INIT); in vsc9959_reset() [all …]
|
D | seville_vsc9953.c | 8 #include <soc/mscc/ocelot.h> 862 static int vsc9953_gcb_soft_rst_status(struct ocelot *ocelot) in vsc9953_gcb_soft_rst_status() argument 866 ocelot_field_read(ocelot, GCB_SOFT_RST_SWC_RST, &val); in vsc9953_gcb_soft_rst_status() 871 static int vsc9953_sys_ram_init_status(struct ocelot *ocelot) in vsc9953_sys_ram_init_status() argument 875 ocelot_field_read(ocelot, SYS_RESET_CFG_MEM_INIT, &val); in vsc9953_sys_ram_init_status() 880 static int vsc9953_gcb_miim_pending_status(struct ocelot *ocelot) in vsc9953_gcb_miim_pending_status() argument 884 ocelot_field_read(ocelot, GCB_MIIM_MII_STATUS_PENDING, &val); in vsc9953_gcb_miim_pending_status() 889 static int vsc9953_gcb_miim_busy_status(struct ocelot *ocelot) in vsc9953_gcb_miim_busy_status() argument 893 ocelot_field_read(ocelot, GCB_MIIM_MII_STATUS_BUSY, &val); in vsc9953_gcb_miim_busy_status() 901 struct ocelot *ocelot = bus->priv; in vsc9953_mdio_write() local [all …]
|
/Linux-v5.10/include/soc/mscc/ |
D | ocelot.h | 32 * ocelot->num_phys_ports - 1, or a multicast set: the PGIDs from 33 * ocelot->num_phys_ports to 63. By convention, a unicast PGID corresponds to 68 #define for_each_unicast_dest_pgid(ocelot, pgid) \ argument 70 (pgid) < (ocelot)->num_phys_ports; \ 73 #define for_each_nonreserved_multicast_dest_pgid(ocelot, pgid) \ argument 74 for ((pgid) = (ocelot)->num_phys_ports + 1; \ 78 #define for_each_aggr_pgid(ocelot, pgid) \ argument 559 struct ocelot; 562 struct net_device *(*port_to_netdev)(struct ocelot *ocelot, int port); 564 int (*reset)(struct ocelot *ocelot); [all …]
|
D | ocelot_ptp.h | 3 * Microsemi Ocelot Switch driver 14 #include <soc/mscc/ocelot.h> 56 int ocelot_init_timestamp(struct ocelot *ocelot, 58 int ocelot_deinit_timestamp(struct ocelot *ocelot);
|
/Linux-v5.10/Documentation/devicetree/bindings/mips/ |
D | mscc.txt | 7 - compatible: "mscc,ocelot" 19 - compatible: Should be "mscc,ocelot-chip-regs", "simple-mfd", "syscon" 24 compatible = "mscc,ocelot-chip-regs", "simple-mfd", "syscon"; 36 - compatible: Should be "mscc,ocelot-cpu-syscon", "syscon" 41 compatible = "mscc,ocelot-cpu-syscon", "syscon"; 52 - compatible: Should be "mscc,ocelot-hsio", "syscon", "simple-mfd" 57 compatible = "mscc,ocelot-hsio", "syscon", "simple-mfd";
|
/Linux-v5.10/arch/mips/boot/dts/mscc/ |
D | ocelot.dtsi | 7 compatible = "mscc,ocelot"; 55 compatible = "mscc,ocelot-cpu-syscon", "syscon"; 60 compatible = "mscc,ocelot-icpu-intr"; 82 compatible = "mscc,ocelot-i2c", "snps,designware-i2c"; 108 compatible = "mscc,ocelot-spi", "snps,dw-apb-ssi"; 188 compatible = "mscc,ocelot-chip-reset"; 193 compatible = "mscc,ocelot-pinctrl"; 227 compatible = "mscc,ocelot-miim"; 249 compatible = "mscc,ocelot-miim"; 258 compatible = "mscc,ocelot-hsio", "syscon", "simple-mfd";
|
/Linux-v5.10/Documentation/devicetree/bindings/phy/ |
D | phy-ocelot-serdes.txt | 1 Microsemi Ocelot SerDes muxing driver 4 On Microsemi Ocelot, there is a handful of registers in HSIO address 19 This is a child of the HSIO syscon ("mscc,ocelot-hsio", see 20 Documentation/devicetree/bindings/mips/mscc.txt) on the Microsemi Ocelot. 28 defined in dt-bindings/phy/phy-ocelot-serdes.h
|
/Linux-v5.10/arch/mips/generic/ |
D | board-ocelot.its.S | 5 description = "MSCC Ocelot PCB123 Device Tree"; 16 description = "MSCC Ocelot PCB120 Device Tree"; 29 description = "Ocelot Linux kernel"; 35 description = "Ocelot Linux kernel";
|
D | Kconfig | 30 comment "MSCC Ocelot doesn't work with SEAD3 enabled" 34 bool "Support MSCC Ocelot boards" 69 bool "Include FDT for Microsemi Ocelot development platforms" 72 Enable this to include the FDT for the Ocelot development platforms
|
/Linux-v5.10/Documentation/devicetree/bindings/pinctrl/ |
D | mscc,ocelot-pinctrl.txt | 1 Microsemi Ocelot pin controller Device Tree Bindings 5 - compatible : Should be "mscc,ocelot-pinctrl", 16 The ocelot-pinctrl driver uses the generic pin multiplexing and generic pin 25 compatible = "mscc,ocelot-pinctrl";
|
/Linux-v5.10/Documentation/devicetree/bindings/power/reset/ |
D | ocelot-reset.txt | 1 Microsemi Ocelot reset controller 10 - compatible: "mscc,ocelot-chip-reset" or "microchip,sparx5-chip-reset" 14 compatible = "mscc,ocelot-chip-reset";
|