Lines Matching refs:prueth

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
290 addr = lower_32_bits(prueth->msmcram.pa); in prueth_fw_offload_buffer_setup()
292 if (prueth->pdata.banked_ms_ram) in prueth_fw_offload_buffer_setup()
299 dev_warn(prueth->dev, "buffer pool needs to be 64KB aligned\n"); in prueth_fw_offload_buffer_setup()
372 struct prueth *prueth = emac->prueth; in prueth_emac_buffer_setup() local
377 addr = lower_32_bits(prueth->msmcram.pa); in prueth_emac_buffer_setup()
379 if (prueth->pdata.banked_ms_ram) in prueth_emac_buffer_setup()
386 dev_warn(prueth->dev, "buffer pool needs to be 64KB aligned\n"); in prueth_emac_buffer_setup()
454 void icssg_init_emac_mode(struct prueth *prueth) in icssg_init_emac_mode() argument
459 u32 addr = prueth->shram.pa + EMAC_ICSSG_SWITCH_DEFAULT_VLAN_TABLE_OFFSET; in icssg_init_emac_mode()
464 regmap_update_bits(prueth->miig_rt, FDB_GEN_CFG1, SMEM_VLAN_OFFSET_MASK, in icssg_init_emac_mode()
467 regmap_write(prueth->miig_rt, FDB_GEN_CFG2, (FDB_PRU0_EN | FDB_PRU1_EN | FDB_HOST_EN)); in icssg_init_emac_mode()
468 prueth->vlan_tbl = (struct prueth_vlan_tbl __force *)(prueth->shram.va + in icssg_init_emac_mode()
471 prueth->vlan_tbl[i].fid = i; in icssg_init_emac_mode()
472 prueth->vlan_tbl[i].fid_c1 = 0; in icssg_init_emac_mode()
475 icssg_class_set_host_mac_addr(prueth->miig_rt, mac); in icssg_init_emac_mode()
479 void icssg_init_fw_offload_mode(struct prueth *prueth) in icssg_init_fw_offload_mode() argument
481 u32 addr = prueth->shram.pa + EMAC_ICSSG_SWITCH_DEFAULT_VLAN_TABLE_OFFSET; in icssg_init_fw_offload_mode()
485 regmap_update_bits(prueth->miig_rt, FDB_GEN_CFG1, SMEM_VLAN_OFFSET_MASK, in icssg_init_fw_offload_mode()
488 regmap_write(prueth->miig_rt, FDB_GEN_CFG2, FDB_EN_ALL); in icssg_init_fw_offload_mode()
489 prueth->vlan_tbl = (struct prueth_vlan_tbl __force *)(prueth->shram.va + in icssg_init_fw_offload_mode()
492 prueth->vlan_tbl[i].fid = i; in icssg_init_fw_offload_mode()
493 prueth->vlan_tbl[i].fid_c1 = 0; in icssg_init_fw_offload_mode()
496 if (prueth->hw_bridge_dev) in icssg_init_fw_offload_mode()
497 icssg_class_set_host_mac_addr(prueth->miig_rt, prueth->hw_bridge_dev->dev_addr); in icssg_init_fw_offload_mode()
498 icssg_set_pvid(prueth, prueth->default_vlan, PRUETH_PORT_HOST); in icssg_init_fw_offload_mode()
502 int icssg_config(struct prueth *prueth, struct prueth_emac *emac, int slice) in icssg_config() argument
509 icssg_miig_queues_init(prueth, slice); in icssg_config()
517 regmap_update_bits(prueth->miig_rt, ICSSG_CFG_OFFSET, in icssg_config()
519 icssg_miig_set_interface_mode(prueth->miig_rt, slice, emac->phy_if); in icssg_config()
520 if (prueth->is_switch_mode || prueth->is_hsr_offload_mode) in icssg_config()
525 icssg_update_rgmii_cfg(prueth->miig_rt, emac); in icssg_config()
528 pruss_cfg_gpimode(prueth->pruss, prueth->pru_id[slice], in icssg_config()
532 pruss_cfg_xfr_enable(prueth->pruss, PRU_TYPE_PRU, true); in icssg_config()
533 pruss_cfg_xfr_enable(prueth->pruss, PRU_TYPE_RTU, true); in icssg_config()
536 pru_rproc_set_ctable(prueth->pru[slice], PRU_C28, 0x100 << 8); in icssg_config()
537 pru_rproc_set_ctable(prueth->rtu[slice], PRU_C28, 0x100 << 8); in icssg_config()
538 pru_rproc_set_ctable(prueth->txpru[slice], PRU_C28, 0x100 << 8); in icssg_config()
546 if (prueth->is_switch_mode || prueth->is_hsr_offload_mode) in icssg_config()
660 struct prueth *prueth = emac->prueth; in icssg_send_fdb_msg() local
664 addr = icssg_queue_pop(prueth, slice == 0 ? in icssg_send_fdb_msg()
672 memcpy_toio(prueth->shram.va + addr + 4, cmd, sizeof(*cmd)); in icssg_send_fdb_msg()
673 icssg_queue_push(prueth, slice == 0 ? in icssg_send_fdb_msg()
676 2000, 20000000, false, prueth, slice == 0 ? in icssg_send_fdb_msg()
683 memcpy_fromio(rsp, prueth->shram.va + addr, sizeof(*rsp)); in icssg_send_fdb_msg()
685 icssg_queue_push(prueth, slice == 0 ? in icssg_send_fdb_msg()
709 fdb_cmd->seqnum = ++(emac->prueth->icssg_hwcmdseq); in icssg_fdb_setup()
778 struct prueth *prueth = emac->prueth; in icssg_vtbl_modify() local
782 tbl = prueth->vlan_tbl; in icssg_vtbl_modify()
783 spin_lock(&prueth->vtbl_lock); in icssg_vtbl_modify()
799 spin_unlock(&prueth->vtbl_lock); in icssg_vtbl_modify()
805 struct prueth *prueth = emac->prueth; in icssg_get_pvid() local
809 pvid = readl(prueth->shram.va + EMAC_ICSSG_SWITCH_PORT1_DEFAULT_VLAN_OFFSET); in icssg_get_pvid()
811 pvid = readl(prueth->shram.va + EMAC_ICSSG_SWITCH_PORT2_DEFAULT_VLAN_OFFSET); in icssg_get_pvid()
819 void icssg_set_pvid(struct prueth *prueth, u8 vid, u8 port) in icssg_set_pvid() argument
827 writel(pvid, prueth->shram.va + EMAC_ICSSG_SWITCH_PORT1_DEFAULT_VLAN_OFFSET); in icssg_set_pvid()
829 writel(pvid, prueth->shram.va + EMAC_ICSSG_SWITCH_PORT2_DEFAULT_VLAN_OFFSET); in icssg_set_pvid()
831 writel(pvid, prueth->shram.va + EMAC_ICSSG_SWITCH_PORT0_DEFAULT_VLAN_OFFSET); in icssg_set_pvid()
844 fdb_cmd.seqnum = ++(emac->prueth->icssg_hwcmdseq); in emac_fdb_flow_id_updated()