Lines Matching refs:lan966x
58 struct lan966x *lan966x;
64 return lan_rd(cb->lan966x, VCAP_UPDATE_CTRL(cb->instance));
67 static void lan966x_vcap_wait_update(struct lan966x *lan966x, int instance)
69 const struct lan966x_vcap_cmd_cb cb = { .lan966x = lan966x,
78 static void __lan966x_vcap_range_init(struct lan966x *lan966x,
85 lan966x, VCAP_MV_CFG(admin->tgt_inst));
94 lan966x, VCAP_UPDATE_CTRL(admin->tgt_inst));
96 lan966x_vcap_wait_update(lan966x, admin->tgt_inst);
129 struct lan966x *lan966x = port->lan966x;
132 val = lan_rd(lan966x, ANA_VCAP_S1_CFG(port->chip_port, lookup));
189 struct lan966x *lan966x = port->lan966x;
193 val = lan_rd(lan966x, ANA_VCAP_S2_CFG(port->chip_port));
400 static void lan966x_es0_read_esdx_counter(struct lan966x *lan966x,
406 mutex_lock(&lan966x->stats_lock);
407 lan_wr(SYS_STAT_CFG_STAT_VIEW_SET(id), lan966x, SYS_STAT_CFG);
408 counter = lan_rd(lan966x, SYS_CNT(LAN966X_STAT_ESDX_GRN_PKTS)) +
409 lan_rd(lan966x, SYS_CNT(LAN966X_STAT_ESDX_YEL_PKTS));
410 mutex_unlock(&lan966x->stats_lock);
415 static void lan966x_es0_write_esdx_counter(struct lan966x *lan966x,
420 mutex_lock(&lan966x->stats_lock);
421 lan_wr(SYS_STAT_CFG_STAT_VIEW_SET(id), lan966x, SYS_STAT_CFG);
422 lan_wr(0, lan966x, SYS_CNT(LAN966X_STAT_ESDX_GRN_BYTES));
423 lan_wr(admin->cache.counter, lan966x,
425 lan_wr(0, lan966x, SYS_CNT(LAN966X_STAT_ESDX_YEL_BYTES));
426 lan_wr(0, lan966x, SYS_CNT(LAN966X_STAT_ESDX_YEL_PKTS));
427 mutex_unlock(&lan966x->stats_lock);
437 struct lan966x *lan966x = port->lan966x;
447 lan_wr(keystr[i] & mskstr[i], lan966x,
449 lan_wr(~mskstr[i], lan966x,
455 lan_wr(actstr[i], lan966x,
460 lan_wr(admin->cache.counter, lan966x,
464 lan966x_es0_write_esdx_counter(lan966x, admin, start);
478 struct lan966x *lan966x = port->lan966x;
489 lan_rd(lan966x, VCAP_ENTRY_DAT(instance, i));
491 ~lan_rd(lan966x, VCAP_MASK_DAT(instance, i));
498 lan_rd(lan966x, VCAP_ACTION_DAT(instance, i));
502 lan_rd(lan966x, VCAP_CNT_DAT(instance, 0));
506 lan966x_es0_read_esdx_counter(lan966x, admin, start);
516 struct lan966x *lan966x = port->lan966x;
518 __lan966x_vcap_range_init(lan966x, admin, addr, count);
528 struct lan966x *lan966x = port->lan966x;
535 lan966x, VCAP_MV_CFG(admin->tgt_inst));
544 lan966x, VCAP_UPDATE_CTRL(admin->tgt_inst));
546 lan966x_vcap_wait_update(lan966x, admin->tgt_inst);
554 struct lan966x *lan966x = port->lan966x;
570 lan966x, VCAP_MV_CFG(admin->tgt_inst));
579 lan966x, VCAP_UPDATE_CTRL(admin->tgt_inst));
581 lan966x_vcap_wait_update(lan966x, admin->tgt_inst);
609 lan966x_vcap_admin_alloc(struct lan966x *lan966x, struct vcap_control *ctrl,
648 static void lan966x_vcap_block_init(struct lan966x *lan966x,
657 lan966x, VCAP_CORE_IDX(admin->tgt_inst));
659 lan966x, VCAP_CORE_MAP(admin->tgt_inst));
661 __lan966x_vcap_range_init(lan966x, admin, admin->first_valid_addr,
666 static void lan966x_vcap_port_key_deselection(struct lan966x *lan966x,
677 for (int p = 0; p < lan966x->num_phys_ports; ++p) {
678 if (!lan966x->ports[p])
682 lan_wr(val, lan966x, ANA_VCAP_S1_CFG(p, l));
685 ANA_VCAP_CFG_S1_ENA, lan966x,
691 for (int p = 0; p < lan966x->num_phys_ports; ++p)
692 lan_wr(0, lan966x, ANA_VCAP_S2_CFG(p));
696 for (int p = 0; p < lan966x->num_phys_ports; ++p)
698 REW_PORT_CFG_ES0_EN, lan966x,
708 int lan966x_vcap_init(struct lan966x *lan966x)
727 admin = lan966x_vcap_admin_alloc(lan966x, ctrl, cfg);
731 lan966x_vcap_block_init(lan966x, admin, cfg);
732 lan966x_vcap_port_key_deselection(lan966x, admin);
737 dir = vcap_debugfs(lan966x->dev, lan966x->debugfs_root, ctrl);
738 for (int p = 0; p < lan966x->num_phys_ports; ++p) {
739 if (lan966x->ports[p]) {
740 vcap_port_debugfs(lan966x->dev, dir, ctrl,
741 lan966x->ports[p]->dev);
744 ANA_VCAP_S2_CFG_ENA, lan966x,
745 ANA_VCAP_S2_CFG(lan966x->ports[p]->chip_port));
748 ANA_VCAP_CFG_S1_ENA, lan966x,
749 ANA_VCAP_CFG(lan966x->ports[p]->chip_port));
752 REW_PORT_CFG_ES0_EN, lan966x,
753 REW_PORT_CFG(lan966x->ports[p]->chip_port));
759 REW_STAT_CFG_STAT_MODE, lan966x,
762 lan966x->vcap_ctrl = ctrl;
767 void lan966x_vcap_deinit(struct lan966x *lan966x)
772 ctrl = lan966x->vcap_ctrl;
777 lan966x_vcap_port_key_deselection(lan966x, admin);