/linux/drivers/net/ethernet/microchip/sparx5/ |
H A D | sparx5_ptp.c | 2 /* Microchip Sparx5 Switch driver 6 * The Sparx5 Chip Register Model can be browsed at this location: 25 static u64 sparx5_ptp_get_1ppm(struct sparx5 *sparx5) in sparx5_ptp_get_1ppm() argument 35 switch (sparx5->coreclock) { in sparx5_ptp_get_1ppm() 56 static u64 sparx5_ptp_get_nominal_value(struct sparx5 *sparx5) in sparx5_ptp_get_nominal_value() argument 60 switch (sparx5->coreclock) { in sparx5_ptp_get_nominal_value() 85 struct sparx5 *sparx5 = port->sparx5; in sparx5_ptp_hwtstamp_set() local 93 if (test_bit(port->portno, sparx5->bridge_mask)) in sparx5_ptp_hwtstamp_set() 134 mutex_lock(&sparx5->ptp_lock); in sparx5_ptp_hwtstamp_set() 135 phc = &sparx5->phc[SPARX5_PHC_PORT]; in sparx5_ptp_hwtstamp_set() [all …]
|
H A D | sparx5_main.c | 2 /* Microchip Sparx5 Switch driver 6 * The Sparx5 Chip Register Model can be browsed at this location: 215 bool is_sparx5(struct sparx5 *sparx5) in is_sparx5() argument 217 switch (sparx5->target_ct) { in is_sparx5() 234 static void sparx5_init_features(struct sparx5 *sparx5) in sparx5_init_features() argument 236 switch (sparx5->target_ct) { in sparx5_init_features() 256 sparx5->features = (SPX5_FEATURE_PSFP | SPX5_FEATURE_PTP); in sparx5_init_features() 263 bool sparx5_has_feature(struct sparx5 *sparx5, enum sparx5_feature feature) in sparx5_has_feature() argument 265 return sparx5->features & feature; in sparx5_has_feature() 268 static int sparx5_create_targets(struct sparx5 *sparx5) in sparx5_create_targets() argument [all …]
|
H A D | sparx5_mirror.c | 2 /* Microchip Sparx5 Switch driver 24 static u64 sparx5_mirror_port_get(struct sparx5 *sparx5, u32 idx) in sparx5_mirror_port_get() argument 28 val = spx5_rd(sparx5, ANA_AC_PROBE_PORT_CFG(idx)); in sparx5_mirror_port_get() 30 if (is_sparx5(sparx5)) in sparx5_mirror_port_get() 31 val |= (u64)spx5_rd(sparx5, ANA_AC_PROBE_PORT_CFG1(idx)) << 32; in sparx5_mirror_port_get() 37 static void sparx5_mirror_port_add(struct sparx5 *sparx5, u32 idx, u32 portno) in sparx5_mirror_port_add() argument 45 return spx5_rmw(val, val, sparx5, ANA_AC_PROBE_PORT_CFG(idx)); in sparx5_mirror_port_add() 47 return spx5_rmw(val, val, sparx5, ANA_AC_PROBE_PORT_CFG1(idx)); in sparx5_mirror_port_add() 51 static void sparx5_mirror_port_del(struct sparx5 *sparx5, u32 idx, u32 portno) in sparx5_mirror_port_del() argument 59 return spx5_rmw(0, val, sparx5, ANA_AC_PROBE_PORT_CFG(idx)); in sparx5_mirror_port_del() [all …]
|
H A D | sparx5_port.c | 2 /* Microchip Sparx5 Switch driver 78 static int sparx5_get_dev2g5_status(struct sparx5 *sparx5, in sparx5_get_dev2g5_status() argument 87 value = spx5_rd(sparx5, DEV2G5_PCS1G_STICKY(portno)); in sparx5_get_dev2g5_status() 90 spx5_wr(value, sparx5, DEV2G5_PCS1G_STICKY(portno)); in sparx5_get_dev2g5_status() 93 value = spx5_rd(sparx5, DEV2G5_PCS1G_LINK_STATUS(portno)); in sparx5_get_dev2g5_status() 105 value = spx5_rd(sparx5, DEV2G5_PCS1G_ANEG_STATUS(portno)); in sparx5_get_dev2g5_status() 113 value = spx5_rd(sparx5, DEV2G5_PCS1G_ANEG_CFG(portno)); in sparx5_get_dev2g5_status() 121 static int sparx5_get_sfi_status(struct sparx5 *sparx5, in sparx5_get_sfi_status() argument 135 dev = sparx5_to_high_dev(sparx5, portno); in sparx5_get_sfi_status() 136 tinst = sparx5_port_dev_index(sparx5, portno); in sparx5_get_sfi_status() [all …]
|
H A D | sparx5_ethtool.c | 2 /* Microchip Sparx5 Switch driver 201 static void sparx5_get_queue_sys_stats(struct sparx5 *sparx5, int portno) in sparx5_get_queue_sys_stats() argument 208 portstats = &sparx5->stats[portno * sparx5->num_stats]; in sparx5_get_queue_sys_stats() 209 mutex_lock(&sparx5->queue_stats_lock); in sparx5_get_queue_sys_stats() 210 spx5_wr(XQS_STAT_CFG_STAT_VIEW_SET(portno), sparx5, XQS_STAT_CFG); in sparx5_get_queue_sys_stats() 214 sparx5_update_counter(stats, spx5_rd(sparx5, XQS_CNT(addr))); in sparx5_get_queue_sys_stats() 218 sparx5_update_counter(stats, spx5_rd(sparx5, XQS_CNT(addr))); in sparx5_get_queue_sys_stats() 222 sparx5_update_counter(stats, spx5_rd(sparx5, XQS_CNT(addr))); in sparx5_get_queue_sys_stats() 224 spx5_rd(sparx5, XQS_CNT(32))); in sparx5_get_queue_sys_stats() 226 spx5_rd(sparx5, XQS_CNT(272))); in sparx5_get_queue_sys_stats() [all …]
|
H A D | sparx5_calendar.c | 2 /* Microchip Sparx5 Switch driver 37 static u32 sparx5_target_bandwidth(struct sparx5 *sparx5) in sparx5_target_bandwidth() argument 39 switch (sparx5->target_ct) { in sparx5_target_bandwidth() 118 enum sparx5_cal_bw sparx5_get_port_cal_speed(struct sparx5 *sparx5, u32 portno) in sparx5_get_port_cal_speed() argument 122 if (portno >= sparx5->data->consts->n_ports) { in sparx5_get_port_cal_speed() 125 sparx5_get_internal_port(sparx5, SPX5_PORT_CPU_0) || in sparx5_get_port_cal_speed() 127 sparx5_get_internal_port(sparx5, SPX5_PORT_CPU_1)) { in sparx5_get_port_cal_speed() 131 sparx5_get_internal_port(sparx5, SPX5_PORT_VD0)) { in sparx5_get_port_cal_speed() 135 sparx5_get_internal_port(sparx5, SPX5_PORT_VD1)) { in sparx5_get_port_cal_speed() 139 sparx5_get_internal_port(sparx5, SPX5_PORT_VD2)) { in sparx5_get_port_cal_speed() [all …]
|
H A D | sparx5_vcap_debugfs.c | 2 /* Microchip Sparx5 Switch driver VCAP debugFS implementation 76 static void sparx5_vcap_is0_port_keys(struct sparx5 *sparx5, in sparx5_vcap_is0_port_keys() argument 90 value = spx5_rd(sparx5, in sparx5_vcap_is0_port_keys() 119 static void sparx5_vcap_is2_port_keys(struct sparx5 *sparx5, in sparx5_vcap_is2_port_keys() argument 133 value = spx5_rd(sparx5, ANA_ACL_VCAP_S2_CFG(port->portno)); in sparx5_vcap_is2_port_keys() 141 value = spx5_rd(sparx5, in sparx5_vcap_is2_port_keys() 232 static void sparx5_vcap_is2_port_stickies(struct sparx5 *sparx5, in sparx5_vcap_is2_port_stickies() argument 243 value = spx5_rd(sparx5, ANA_ACL_SEC_LOOKUP_STICKY(lookup)); in sparx5_vcap_is2_port_stickies() 282 spx5_wr(value, sparx5, ANA_ACL_SEC_LOOKUP_STICKY(lookup)); in sparx5_vcap_is2_port_stickies() 287 static void sparx5_vcap_es0_port_keys(struct sparx5 *sparx5, in sparx5_vcap_es0_port_keys() argument [all …]
|
H A D | sparx5_tc_matchall.c | 53 struct sparx5 *sparx5; in sparx5_tc_matchall_replace() local 73 sparx5 = port->sparx5; in sparx5_tc_matchall_replace() 103 err = vcap_enable_lookups(sparx5->vcap_ctrl, ndev, in sparx5_tc_matchall_replace() 133 list_add_tail(&mall_entry->list, &sparx5->mall_entries); in sparx5_tc_matchall_replace() 143 struct sparx5 *sparx5 = port->sparx5; in sparx5_tc_matchall_destroy() local 147 entry = sparx5_tc_matchall_entry_find(&sparx5->mall_entries, in sparx5_tc_matchall_destroy() 155 err = vcap_enable_lookups(sparx5->vcap_ctrl, ndev, in sparx5_tc_matchall_destroy() 172 struct sparx5 *sparx5 = port->sparx5; in sparx5_tc_matchall_stats() local 175 entry = sparx5_tc_matchall_entry_find(&sparx5->mall_entries, in sparx5_tc_matchall_stats()
|
H A D | Makefile | 3 # Makefile for the Microchip Sparx5 network device drivers. 6 obj-$(CONFIG_SPARX5_SWITCH) += sparx5-switch.o 8 sparx5-switch-y := sparx5_main.o sparx5_packet.o \ 16 sparx5-switch-$(CONFIG_SPARX5_DCB) += sparx5_dcb.o 17 sparx5-switch-$(CONFIG_DEBUG_FS) += sparx5_vcap_debugfs.o 19 sparx5-switch-$(CONFIG_LAN969X_SWITCH) += lan969x/lan969x_regs.o \
|
/linux/drivers/net/ethernet/microchip/vcap/ |
H A D | vcap_ag_api.h | 28 VCAP_KFS_ARP, /* sparx5 is2 X6, sparx5 es2 X6, lan966x is2 X2 */ 31 VCAP_KFS_ETAG, /* sparx5 is0 X2 */ 32 VCAP_KFS_IP4_OTHER, /* sparx5 is2 X6, sparx5 es2 X6, lan966x is2 X2 */ 33 VCAP_KFS_IP4_TCP_UDP, /* sparx5 is2 X6, sparx5 es2 X6, lan966x is2 X2 */ 34 VCAP_KFS_IP4_VID, /* sparx5 es2 X3 */ 36 VCAP_KFS_IP6_STD, /* sparx5 is2 X6, sparx5 es2 X6, lan966x is2 X2 */ 38 VCAP_KFS_IP6_VID, /* sparx5 es2 X6 */ 39 VCAP_KFS_IP_7TUPLE, /* sparx5 is2 X12, sparx5 es2 X12 */ 40 VCAP_KFS_ISDX, /* sparx5 es0 X1 */ 41 VCAP_KFS_LL_FULL, /* sparx5 is0 X6 */ [all …]
|
/linux/Documentation/devicetree/bindings/arm/ |
H A D | microchip,sparx5.yaml | 4 $id: http://devicetree.org/schemas/arm/microchip,sparx5.yaml# 7 title: Microchip Sparx5 Boards 13 The Microchip Sparx5 SoC is a ARMv8-based used in a family of 27 - description: The Sparx5 pcb125 board is a modular board, 31 - const: microchip,sparx5-pcb125 32 - const: microchip,sparx5 34 - description: The Sparx5 pcb134 is a pizzabox form factor 38 - const: microchip,sparx5-pcb134 39 - const: microchip,sparx5 41 - description: The Sparx5 pcb135 is a pizzabox form factor [all …]
|
/linux/drivers/net/ethernet/microchip/sparx5/lan969x/ |
H A D | lan969x.h | 10 #include "../sparx5/sparx5_main.h" 11 #include "../sparx5/sparx5_regs.h" 12 #include "../sparx5/sparx5_vcap_impl.h" 68 int lan969x_dsm_calendar_calc(struct sparx5 *sparx5, u32 taxi, 76 int lan969x_fdma_init(struct sparx5 *sparx5); 77 int lan969x_fdma_deinit(struct sparx5 *sparx5); 79 int lan969x_fdma_xmit(struct sparx5 *sparx5, u32 *ifh, struct sk_buff *skb,
|
H A D | lan969x.c | 123 static u32 lan969x_get_dev_mode_bit(struct sparx5 *sparx5, int port) in lan969x_get_dev_mode_bit() argument 143 static u32 lan969x_port_dev_mapping(struct sparx5 *sparx5, int port) in lan969x_port_dev_mapping() argument 187 static int lan969x_port_mux_set(struct sparx5 *sparx5, struct sparx5_port *port, in lan969x_port_mux_set() argument 199 spx5_rmw(BIT(inst), BIT(inst), sparx5, PORT_CONF_QSGMII_ENA); in lan969x_port_mux_set() 210 struct sparx5 *sparx5 = args; in lan969x_ptp_irq_handler() local 221 val = spx5_rd(sparx5, PTP_TWOSTEP_CTRL); in lan969x_ptp_irq_handler() 236 port = sparx5->ports[txport]; in lan969x_ptp_irq_handler() 239 delay = spx5_rd(sparx5, PTP_TWOSTEP_STAMP_NSEC); in lan969x_ptp_irq_handler() 247 sparx5, PTP_TWOSTEP_CTRL); in lan969x_ptp_irq_handler() 249 val = spx5_rd(sparx5, PTP_TWOSTEP_CTRL); in lan969x_ptp_irq_handler() [all …]
|
H A D | lan969x_calendar.c | 77 int lan969x_dsm_calendar_calc(struct sparx5 *sparx5, u32 taxi, in lan969x_dsm_calendar_calc() argument 86 taxi_bw = (128 * 1000000) / sparx5_clk_period(sparx5->coreclock); in lan969x_dsm_calendar_calc() 95 bw = sparx5_get_port_cal_speed(sparx5, portno); in lan969x_dsm_calendar_calc() 97 if (portno < sparx5->data->consts->n_ports_all) in lan969x_dsm_calendar_calc()
|
/linux/arch/arm64/boot/dts/microchip/ |
H A D | sparx5.dtsi | 8 #include <dt-bindings/clock/microchip,sparx5.h> 11 compatible = "microchip,sparx5"; 86 compatible = "microchip,sparx5-dpll"; 125 compatible = "microchip,sparx5-cpu-syscon", "syscon", 141 compatible = "microchip,sparx5-switch-reset"; 177 compatible = "microchip,sparx5-spi"; 196 compatible = "microchip,dw-sparx5-sdhci"; 210 compatible = "microchip,sparx5-pinctrl"; 303 compatible = "microchip,sparx5-sgpio"; 312 compatible = "microchip,sparx5-sgpio-bank"; [all …]
|
H A D | sparx5_pcb135.dts | 11 model = "Sparx5 PCB135 Reference Board (NAND)"; 12 compatible = "microchip,sparx5-pcb135", "microchip,sparx5";
|
H A D | sparx5_pcb134.dts | 11 model = "Sparx5 PCB134 Reference Board (NAND)"; 12 compatible = "microchip,sparx5-pcb134", "microchip,sparx5";
|
H A D | sparx5_pcb134_emmc.dts | 10 model = "Sparx5 PCB134 Reference Board (eMMC enabled)"; 11 compatible = "microchip,sparx5-pcb134", "microchip,sparx5";
|
H A D | sparx5_pcb135_emmc.dts | 10 model = "Sparx5 PCB135 Reference Board (eMMC enabled)"; 11 compatible = "microchip,sparx5-pcb135", "microchip,sparx5";
|
/linux/Documentation/devicetree/bindings/hwmon/ |
H A D | microchip,sparx5-temp.yaml | 4 $id: http://devicetree.org/schemas/hwmon/microchip,sparx5-temp.yaml# 7 title: Microchip Sparx5 Temperature Monitor 13 Microchip Sparx5 embedded temperature monitor 18 - microchip,sparx5-temp 40 compatible = "microchip,sparx5-temp";
|
/linux/Documentation/devicetree/bindings/clock/ |
H A D | microchip,sparx5-dpll.yaml | 4 $id: http://devicetree.org/schemas/clock/microchip,sparx5-dpll.yaml# 7 title: Microchip Sparx5 DPLL Clock 13 The Sparx5 DPLL clock controller generates and supplies clock to 18 const: microchip,sparx5-dpll 46 compatible = "microchip,sparx5-dpll";
|
/linux/Documentation/devicetree/bindings/mmc/ |
H A D | microchip,dw-sparx5-sdhci.yaml | 4 $id: http://devicetree.org/schemas/mmc/microchip,dw-sparx5-sdhci.yaml# 7 title: Microchip Sparx5 Mobile Storage Host Controller 18 const: microchip,dw-sparx5-sdhci 54 #include <dt-bindings/clock/microchip,sparx5.h> 56 compatible = "microchip,dw-sparx5-sdhci";
|
/linux/Documentation/devicetree/bindings/pinctrl/ |
H A D | microchip,sparx5-sgpio.yaml | 4 $id: http://devicetree.org/schemas/pinctrl/microchip,sparx5-sgpio.yaml# 25 - microchip,sparx5-sgpio 83 const: microchip,sparx5-sgpio-bank 144 compatible = "microchip,sparx5-sgpio"; 153 compatible = "microchip,sparx5-sgpio-bank"; 162 compatible = "microchip,sparx5-sgpio-bank";
|
/linux/Documentation/devicetree/bindings/soc/microchip/ |
H A D | microchip,sparx5-cpu-syscon.yaml | 4 $id: http://devicetree.org/schemas/soc/microchip/microchip,sparx5-cpu-syscon.yaml# 7 title: Microchip Sparx5 CPU Syscon 15 - const: microchip,sparx5-cpu-syscon 39 compatible = "microchip,sparx5-cpu-syscon", "syscon",
|
/linux/Documentation/devicetree/bindings/reset/ |
H A D | microchip,rst.yaml | 7 title: Microchip Sparx5 Switch Reset Controller 14 The Microchip Sparx5 Switch provides reset control and implements the following 24 - microchip,sparx5-switch-reset 54 compatible = "microchip,sparx5-switch-reset";
|