Lines Matching refs:felix
309 struct felix *felix = ocelot_to_felix(ocelot); in felix_update_trapping_destinations() local
317 if (!felix->info->quirk_no_xtr_irq) in felix_update_trapping_destinations()
610 struct felix *felix = ocelot_to_felix(ocelot); in felix_migrate_host_flood() local
619 felix_set_host_flood(ds, mask, !!felix->host_flood_uc_mask, in felix_migrate_host_flood()
620 !!felix->host_flood_mc_mask, true); in felix_migrate_host_flood()
672 struct felix *felix = ocelot_to_felix(ocelot); in felix_change_tag_protocol() local
687 old_proto_ops = felix->tag_proto_ops; in felix_change_tag_protocol()
703 felix->tag_proto_ops = proto_ops; in felix_change_tag_protocol()
704 felix->tag_proto = proto; in felix_change_tag_protocol()
719 struct felix *felix = ocelot_to_felix(ocelot); in felix_get_tag_protocol() local
721 return felix->tag_proto; in felix_get_tag_protocol()
728 struct felix *felix = ocelot_to_felix(ocelot); in felix_port_set_host_flood() local
732 felix->host_flood_uc_mask |= BIT(port); in felix_port_set_host_flood()
734 felix->host_flood_uc_mask &= ~BIT(port); in felix_port_set_host_flood()
737 felix->host_flood_mc_mask |= BIT(port); in felix_port_set_host_flood()
739 felix->host_flood_mc_mask &= ~BIT(port); in felix_port_set_host_flood()
741 mask = felix->tag_proto_ops->get_host_fwd_mask(ds); in felix_port_set_host_flood()
742 felix_set_host_flood(ds, mask, !!felix->host_flood_uc_mask, in felix_port_set_host_flood()
743 !!felix->host_flood_mc_mask, true); in felix_port_set_host_flood()
751 struct felix *felix = ocelot_to_felix(ocelot); in felix_port_change_master() local
753 return felix->tag_proto_ops->change_master(ds, port, master, extack); in felix_port_change_master()
1060 struct felix *felix = ocelot_to_felix(ocelot); in felix_phylink_mac_config() local
1062 if (felix->info->phylink_mac_config) in felix_phylink_mac_config()
1063 felix->info->phylink_mac_config(ocelot, port, mode, state); in felix_phylink_mac_config()
1071 struct felix *felix = ocelot_to_felix(ocelot); in felix_phylink_mac_select_pcs() local
1074 if (felix->pcs && felix->pcs[port]) in felix_phylink_mac_select_pcs()
1075 pcs = felix->pcs[port]; in felix_phylink_mac_select_pcs()
1085 struct felix *felix; in felix_phylink_mac_link_down() local
1087 felix = ocelot_to_felix(ocelot); in felix_phylink_mac_link_down()
1090 felix->info->quirks); in felix_phylink_mac_link_down()
1101 struct felix *felix = ocelot_to_felix(ocelot); in felix_phylink_mac_link_up() local
1105 felix->info->quirks); in felix_phylink_mac_link_up()
1107 if (felix->info->port_sched_speed_set) in felix_phylink_mac_link_up()
1108 felix->info->port_sched_speed_set(ocelot, port, speed); in felix_phylink_mac_link_up()
1241 static int felix_validate_phy_mode(struct felix *felix, int port, in felix_validate_phy_mode() argument
1244 u32 modes = felix->info->port_modes[port]; in felix_validate_phy_mode()
1251 static int felix_parse_ports_node(struct felix *felix, in felix_parse_ports_node() argument
1255 struct device *dev = felix->ocelot.dev; in felix_parse_ports_node()
1281 err = felix_validate_phy_mode(felix, port, phy_mode); in felix_parse_ports_node()
1299 static int felix_parse_dt(struct felix *felix, phy_interface_t *port_phy_modes) in felix_parse_dt() argument
1301 struct device *dev = felix->ocelot.dev; in felix_parse_dt()
1316 err = felix_parse_ports_node(felix, ports_node, port_phy_modes); in felix_parse_dt()
1322 static struct regmap *felix_request_regmap_by_name(struct felix *felix, in felix_request_regmap_by_name() argument
1325 struct ocelot *ocelot = &felix->ocelot; in felix_request_regmap_by_name()
1333 if (!felix->info->resources) in felix_request_regmap_by_name()
1336 for (i = 0; i < felix->info->num_resources; i++) { in felix_request_regmap_by_name()
1337 if (strcmp(resource_name, felix->info->resources[i].name)) in felix_request_regmap_by_name()
1340 memcpy(&res, &felix->info->resources[i], sizeof(res)); in felix_request_regmap_by_name()
1341 res.start += felix->switch_base; in felix_request_regmap_by_name()
1342 res.end += felix->switch_base; in felix_request_regmap_by_name()
1350 static struct regmap *felix_request_regmap(struct felix *felix, in felix_request_regmap() argument
1353 const char *resource_name = felix->info->resource_names[target]; in felix_request_regmap()
1361 return felix_request_regmap_by_name(felix, resource_name); in felix_request_regmap()
1364 static struct regmap *felix_request_port_regmap(struct felix *felix, int port) in felix_request_port_regmap() argument
1370 return felix_request_regmap_by_name(felix, resource_name); in felix_request_port_regmap()
1373 static int felix_init_structs(struct felix *felix, int num_phys_ports) in felix_init_structs() argument
1375 struct ocelot *ocelot = &felix->ocelot; in felix_init_structs()
1386 ocelot->map = felix->info->map; in felix_init_structs()
1387 ocelot->num_mact_rows = felix->info->num_mact_rows; in felix_init_structs()
1388 ocelot->vcap = felix->info->vcap; in felix_init_structs()
1389 ocelot->vcap_pol.base = felix->info->vcap_pol_base; in felix_init_structs()
1390 ocelot->vcap_pol.max = felix->info->vcap_pol_max; in felix_init_structs()
1391 ocelot->vcap_pol.base2 = felix->info->vcap_pol_base2; in felix_init_structs()
1392 ocelot->vcap_pol.max2 = felix->info->vcap_pol_max2; in felix_init_structs()
1393 ocelot->ops = felix->info->ops; in felix_init_structs()
1396 ocelot->devlink = felix->ds->devlink; in felix_init_structs()
1403 err = felix_parse_dt(felix, port_phy_modes); in felix_init_structs()
1410 target = felix_request_regmap(felix, i); in felix_init_structs()
1422 err = ocelot_regfields_init(ocelot, felix->info->regfields); in felix_init_structs()
1442 target = felix_request_port_regmap(felix, port); in felix_init_structs()
1460 if (felix->info->mdio_bus_alloc) { in felix_init_structs()
1461 err = felix->info->mdio_bus_alloc(ocelot); in felix_init_structs()
1556 struct felix *felix = ocelot_to_felix(ocelot); in felix_setup() local
1560 err = felix_init_structs(felix, ds->num_ports); in felix_setup()
1572 err = ocelot_init_timestamp(ocelot, felix->info->ptp_caps); in felix_setup()
1583 if (felix->info->configure_serdes) in felix_setup()
1584 felix->info->configure_serdes(ocelot, dp->index, in felix_setup()
1600 felix_change_tag_protocol(ds, felix->tag_proto); in felix_setup()
1617 if (felix->info->mdio_bus_free) in felix_setup()
1618 felix->info->mdio_bus_free(ocelot); in felix_setup()
1626 struct felix *felix = ocelot_to_felix(ocelot); in felix_teardown() local
1630 if (felix->tag_proto_ops) in felix_teardown()
1631 felix->tag_proto_ops->teardown(ds); in felix_teardown()
1641 if (felix->info->mdio_bus_free) in felix_teardown()
1642 felix->info->mdio_bus_free(ocelot); in felix_teardown()
1657 struct felix *felix = ocelot_to_felix(ocelot); in felix_hwtstamp_set() local
1665 using_tag_8021q = felix->tag_proto == DSA_TAG_PROTO_OCELOT_8021Q; in felix_hwtstamp_set()
1672 struct felix *felix = ocelot_to_felix(ocelot); in felix_check_xtr_pkt() local
1675 if (felix->tag_proto != DSA_TAG_PROTO_OCELOT_8021Q) in felix_check_xtr_pkt()
1678 if (!felix->info->quirk_no_xtr_irq) in felix_check_xtr_pkt()
1819 struct felix *felix = ocelot_to_felix(ocelot); in felix_cls_flower_add() local
1827 using_tag_8021q = felix->tag_proto == DSA_TAG_PROTO_OCELOT_8021Q; in felix_cls_flower_add()
1890 struct felix *felix = ocelot_to_felix(ocelot); in felix_port_setup_tc() local
1892 if (felix->info->port_setup_tc) in felix_port_setup_tc()
1893 return felix->info->port_setup_tc(ds, port, type, type_data); in felix_port_setup_tc()
2184 struct felix *felix = ocelot_to_felix(ocelot); in felix_port_to_netdev() local
2185 struct dsa_switch *ds = felix->ds; in felix_port_to_netdev()