/linux/drivers/net/ethernet/ti/icssg/ |
H A D | icssg_prueth.c | 56 struct prueth *prueth = emac->prueth; in emac_get_tx_ts() local 60 addr = icssg_queue_pop(prueth, slice == 0 ? in emac_get_tx_ts() 65 memcpy_fromio(rsp, prueth->shram.va + addr, sizeof(*rsp)); in emac_get_tx_ts() 67 icssg_queue_push(prueth, slice == 0 ? in emac_get_tx_ts() 102 hi_sw = readl(emac->prueth->shram.va + in tx_ts_work() 182 static int prueth_emac_start(struct prueth *prueth) in prueth_emac_start() argument 185 struct device *dev = prueth->dev; in prueth_emac_start() 188 if (prueth->is_switch_mode) in prueth_emac_start() 190 else if (prueth->is_hsr_offload_mode) in prueth_emac_start() 196 ret = prueth_start(prueth->pru[slice], firmwares[slice].pru); in prueth_emac_start() [all …]
|
H A D | icssg_prueth_sr1.c | 54 static void icssg_config_sr1(struct prueth *prueth, struct prueth_emac *emac, in icssg_config_sr1() argument 62 config.addr_lo = cpu_to_le32(lower_32_bits(prueth->msmcram.pa)); in icssg_config_sr1() 63 config.addr_hi = cpu_to_le32(upper_32_bits(prueth->msmcram.pa)); in icssg_config_sr1() 73 va = prueth->shram.va + slice * ICSSG_CONFIG_OFFSET_SLICE1; in icssg_config_sr1() 155 struct prueth *prueth = emac->prueth; in icssg_config_set_speed_sr1() local 158 val = icssg_rgmii_get_speed(prueth->miig_rt, slice); in icssg_config_set_speed_sr1() 163 val = icssg_rgmii_get_fullduplex(prueth->miig_rt, slice); in icssg_config_set_speed_sr1() 176 struct prueth *prueth = emac->prueth; in emac_adjust_link_sr1() local 213 icssg_update_rgmii_cfg(prueth->miig_rt, emac); in emac_adjust_link_sr1() 234 struct prueth *prueth = emac->prueth; in emac_phy_connect() local [all …]
|
H A D | icssg_config.c | 112 struct prueth *prueth = emac->prueth; in icssg_config_mii_init_fw_offload() local 117 mii_rt = prueth->mii_rt; in icssg_config_mii_init_fw_offload() 139 struct prueth *prueth = emac->prueth; in icssg_config_mii_init() local 144 mii_rt = prueth->mii_rt; in icssg_config_mii_init() 165 static void icssg_miig_queues_init(struct prueth *prueth, int slice) in icssg_miig_queues_init() argument 167 struct regmap *miig_rt = prueth->miig_rt; in icssg_miig_queues_init() 168 void __iomem *smem = prueth->shram.va; in icssg_miig_queues_init() 225 struct prueth *prueth = emac->prueth; in icssg_config_ipg() local 249 icssg_mii_update_ipg(prueth->mii_rt, slice, ipg); in icssg_config_ipg() 285 struct prueth *prueth = emac->prueth; in prueth_fw_offload_buffer_setup() local [all …]
|
H A D | icssg_queues.c | 16 int icssg_queue_pop(struct prueth *prueth, u8 queue) in icssg_queue_pop() argument 23 regmap_read(prueth->miig_rt, ICSSG_QUEUE_CNT_OFFSET + 4 * queue, &cnt); in icssg_queue_pop() 27 regmap_read(prueth->miig_rt, ICSSG_QUEUE_OFFSET + 4 * queue, &val); in icssg_queue_pop() 33 void icssg_queue_push(struct prueth *prueth, int queue, u16 addr) in icssg_queue_push() argument 38 regmap_write(prueth->miig_rt, ICSSG_QUEUE_OFFSET + 4 * queue, addr); in icssg_queue_push() 42 u32 icssg_queue_level(struct prueth *prueth, int queue) in icssg_queue_level() argument 49 regmap_read(prueth->miig_rt, ICSSG_QUEUE_CNT_OFFSET + 4 * queue, ®); in icssg_queue_level()
|
H A D | icssg_prueth.h | 149 struct prueth *prueth; member 268 struct prueth { struct 365 int icssg_config(struct prueth *prueth, struct prueth_emac *emac, 371 void icssg_init_emac_mode(struct prueth *prueth); 372 void icssg_init_fw_offload_mode(struct prueth *prueth); 375 int icssg_queue_pop(struct prueth *prueth, u8 queue); 376 void icssg_queue_push(struct prueth *prueth, int queue, u16 addr); 377 u32 icssg_queue_level(struct prueth *prueth, int queue); 388 void icssg_set_pvid(struct prueth *prueth, u8 vid, u8 port); 437 void prueth_netdev_exit(struct prueth *prueth, [all …]
|
H A D | icssg_ethtool.c | 15 struct prueth *prueth = emac->prueth; in emac_get_drvinfo() local 17 strscpy(info->driver, dev_driver_string(prueth->dev), in emac_get_drvinfo() 19 strscpy(info->bus_info, dev_name(prueth->dev), sizeof(info->bus_info)); in emac_get_drvinfo() 74 if (emac->prueth->pa_stats) in emac_get_sset_count() 94 if (emac->prueth->pa_stats) in emac_get_strings() 115 if (emac->prueth->pa_stats) in emac_get_ethtool_stats() 248 struct prueth *prueth = emac->prueth; in emac_set_coalesce() local 255 dev_info(prueth->dev, "defaulting to min value of %dus for rx-usecs\n", in emac_set_coalesce() 262 dev_info(prueth->dev, "defaulting to min value of %dus for tx-usecs\n", in emac_set_coalesce() 277 struct prueth *prueth = emac->prueth; in emac_set_per_queue_coalesce() local [all …]
|
H A D | icssg_common.c | 245 struct prueth *prueth = emac->prueth; in prueth_ndev_add_tx_napi() local 260 dev_err(prueth->dev, "unable to request TX IRQ %d\n", in prueth_ndev_add_tx_napi() 282 struct device *dev = emac->prueth->dev; in prueth_init_tx_chns() 360 struct device *dev = emac->prueth->dev; in prueth_init_rx_chns() 436 rx_flow_cfg.rxfdq_cfg.mode = emac->prueth->pdata.fdqring_mode; in prueth_init_rx_chns() 527 u32 hi_sw = readl(emac->prueth->shram.va + in emac_rx_timestamp() 591 if (emac->prueth->is_switch_mode) in emac_rx_packet() 663 struct prueth *prueth = emac->prueth; in icssg_ndo_start_xmit() local 721 if (prueth->is_hsr_offload_mode && in icssg_ndo_start_xmit() 725 if (prueth->is_hsr_offload_mode && in icssg_ndo_start_xmit() [all …]
|
H A D | icssg_stats.c | 22 struct prueth *prueth = emac->prueth; in emac_update_hardware_stats() local 30 regmap_read(prueth->miig_rt, in emac_update_hardware_stats() 33 regmap_write(prueth->miig_rt, in emac_update_hardware_stats() 45 if (prueth->pa_stats) { in emac_update_hardware_stats() 50 regmap_read(prueth->pa_stats, reg, &val); in emac_update_hardware_stats() 76 if (emac->prueth->pa_stats) { in emac_get_stat_by_name()
|
H A D | icssg_switchdev.c | 254 icssg_set_pvid(emac->prueth, vid, emac->port_id); in prueth_switchdev_vlan_add() 278 icssg_set_pvid(emac->prueth, 0, emac->port_id); in prueth_switchdev_vlan_del() 450 int prueth_switchdev_register_notifiers(struct prueth *prueth) in prueth_switchdev_register_notifiers() argument 454 prueth->prueth_switchdev_nb.notifier_call = &prueth_switchdev_event; in prueth_switchdev_register_notifiers() 455 ret = register_switchdev_notifier(&prueth->prueth_switchdev_nb); in prueth_switchdev_register_notifiers() 457 dev_err(prueth->dev, "register switchdev notifier fail ret:%d\n", in prueth_switchdev_register_notifiers() 462 prueth->prueth_switchdev_bl_nb.notifier_call = &prueth_switchdev_blocking_event; in prueth_switchdev_register_notifiers() 463 ret = register_switchdev_blocking_notifier(&prueth->prueth_switchdev_bl_nb); in prueth_switchdev_register_notifiers() 465 dev_err(prueth->dev, "register switchdev blocking notifier ret:%d\n", in prueth_switchdev_register_notifiers() 467 unregister_switchdev_notifier(&prueth->prueth_switchdev_nb); in prueth_switchdev_register_notifiers() [all …]
|
H A D | icssg_switchdev.h | 9 int prueth_switchdev_register_notifiers(struct prueth *prueth); 10 void prueth_switchdev_unregister_notifiers(struct prueth *prueth);
|
/linux/arch/arm64/boot/dts/ti/ |
H A D | k3-am65-iot2050-common-pg1.dtsi | 46 compatible = "ti,am654-sr1-icssg-prueth"; 49 firmware-name = "ti-pruss/am65x-pru0-prueth-fw.elf", 50 "ti-pruss/am65x-rtu0-prueth-fw.elf", 51 "ti-pruss/am65x-pru1-prueth-fw.elf", 52 "ti-pruss/am65x-rtu1-prueth-fw.elf";
|
H A D | k3-am654-idk.dtso | 25 compatible = "ti,am654-icssg-prueth"; 30 firmware-name = "ti-pruss/am65x-sr2-pru0-prueth-fw.elf", 31 "ti-pruss/am65x-sr2-rtu0-prueth-fw.elf", 32 "ti-pruss/am65x-sr2-txpru0-prueth-fw.elf", 33 "ti-pruss/am65x-sr2-pru1-prueth-fw.elf", 34 "ti-pruss/am65x-sr2-rtu1-prueth-fw.elf", 35 "ti-pruss/am65x-sr2-txpru1-prueth-fw.elf"; 92 compatible = "ti,am654-icssg-prueth"; 97 firmware-name = "ti-pruss/am65x-sr2-pru0-prueth-fw.elf", 98 "ti-pruss/am65x-sr2-rtu0-prueth-fw.elf", [all …]
|
H A D | k3-am642-phyboard-electra-rdk.dts | 62 compatible = "ti,am642-icssg-prueth"; 71 firmware-name = "ti-pruss/am65x-sr2-pru0-prueth-fw.elf", 72 "ti-pruss/am65x-sr2-rtu0-prueth-fw.elf", 73 "ti-pruss/am65x-sr2-txpru0-prueth-fw.elf", 74 "ti-pruss/am65x-sr2-pru1-prueth-fw.elf", 75 "ti-pruss/am65x-sr2-rtu1-prueth-fw.elf", 76 "ti-pruss/am65x-sr2-txpru1-prueth-fw.elf";
|
H A D | k3-am65-iot2050-common.dtsi | 144 compatible = "ti,am654-icssg-prueth"; 151 firmware-name = "ti-pruss/am65x-sr2-pru0-prueth-fw.elf", 152 "ti-pruss/am65x-sr2-rtu0-prueth-fw.elf", 153 "ti-pruss/am65x-sr2-txpru0-prueth-fw.elf", 154 "ti-pruss/am65x-sr2-pru1-prueth-fw.elf", 155 "ti-pruss/am65x-sr2-rtu1-prueth-fw.elf", 156 "ti-pruss/am65x-sr2-txpru1-prueth-fw.elf";
|
H A D | k3-am642-sr-som.dtsi | 29 compatible = "ti,am642-icssg-prueth"; 35 firmware-name = "ti-pruss/am65x-sr2-pru0-prueth-fw.elf", 36 "ti-pruss/am65x-sr2-rtu0-prueth-fw.elf", 37 "ti-pruss/am65x-sr2-txpru0-prueth-fw.elf", 38 "ti-pruss/am65x-sr2-pru1-prueth-fw.elf", 39 "ti-pruss/am65x-sr2-rtu1-prueth-fw.elf", 40 "ti-pruss/am65x-sr2-txpru1-prueth-fw.elf";
|
H A D | k3-am642-evm.dts | 247 compatible = "ti,am642-icssg-prueth"; 252 firmware-name = "ti-pruss/am64x-sr2-pru0-prueth-fw.elf", 253 "ti-pruss/am64x-sr2-rtu0-prueth-fw.elf", 254 "ti-pruss/am64x-sr2-txpru0-prueth-fw.elf", 255 "ti-pruss/am64x-sr2-pru1-prueth-fw.elf", 256 "ti-pruss/am64x-sr2-rtu1-prueth-fw.elf", 257 "ti-pruss/am64x-sr2-txpru1-prueth-fw.elf";
|
/linux/drivers/net/ethernet/ti/ |
H A D | Makefile | 34 obj-$(CONFIG_TI_ICSSG_PRUETH) += icssg-prueth.o icssg.o 35 icssg-prueth-y := icssg/icssg_prueth.o icssg/icssg_switchdev.o 37 obj-$(CONFIG_TI_ICSSG_PRUETH_SR1) += icssg-prueth-sr1.o icssg.o 38 icssg-prueth-sr1-y := icssg/icssg_prueth_sr1.o
|