Lines Matching full:felix

26 #include "felix.h"
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()
608 struct felix *felix = ocelot_to_felix(ocelot); in felix_migrate_host_flood() local
617 felix_set_host_flood(ds, mask, !!felix->host_flood_uc_mask, in felix_migrate_host_flood()
618 !!felix->host_flood_mc_mask, true); in felix_migrate_host_flood()
670 struct felix *felix = ocelot_to_felix(ocelot); in felix_change_tag_protocol() local
685 old_proto_ops = felix->tag_proto_ops; in felix_change_tag_protocol()
701 felix->tag_proto_ops = proto_ops; in felix_change_tag_protocol()
702 felix->tag_proto = proto; in felix_change_tag_protocol()
717 struct felix *felix = ocelot_to_felix(ocelot); in felix_get_tag_protocol() local
719 return felix->tag_proto; in felix_get_tag_protocol()
726 struct felix *felix = ocelot_to_felix(ocelot); in felix_port_set_host_flood() local
730 felix->host_flood_uc_mask |= BIT(port); in felix_port_set_host_flood()
732 felix->host_flood_uc_mask &= ~BIT(port); in felix_port_set_host_flood()
735 felix->host_flood_mc_mask |= BIT(port); in felix_port_set_host_flood()
737 felix->host_flood_mc_mask &= ~BIT(port); in felix_port_set_host_flood()
739 mask = felix->tag_proto_ops->get_host_fwd_mask(ds); in felix_port_set_host_flood()
740 felix_set_host_flood(ds, mask, !!felix->host_flood_uc_mask, in felix_port_set_host_flood()
741 !!felix->host_flood_mc_mask, true); in felix_port_set_host_flood()
749 struct felix *felix = ocelot_to_felix(ocelot); in felix_port_change_conduit() local
751 return felix->tag_proto_ops->change_conduit(ds, port, conduit, extack); in felix_port_change_conduit()
1058 struct felix *felix = ocelot_to_felix(ocelot); in felix_phylink_mac_config() local
1060 if (felix->info->phylink_mac_config) in felix_phylink_mac_config()
1061 felix->info->phylink_mac_config(ocelot, port, mode, state); in felix_phylink_mac_config()
1069 struct felix *felix = ocelot_to_felix(ocelot); in felix_phylink_mac_select_pcs() local
1072 if (felix->pcs && felix->pcs[port]) in felix_phylink_mac_select_pcs()
1073 pcs = felix->pcs[port]; in felix_phylink_mac_select_pcs()
1083 struct felix *felix; in felix_phylink_mac_link_down() local
1085 felix = ocelot_to_felix(ocelot); in felix_phylink_mac_link_down()
1088 felix->info->quirks); in felix_phylink_mac_link_down()
1099 struct felix *felix = ocelot_to_felix(ocelot); in felix_phylink_mac_link_up() local
1103 felix->info->quirks); in felix_phylink_mac_link_up()
1105 if (felix->info->port_sched_speed_set) in felix_phylink_mac_link_up()
1106 felix->info->port_sched_speed_set(ocelot, port, speed); in felix_phylink_mac_link_up()
1239 static int felix_validate_phy_mode(struct felix *felix, int port, in felix_validate_phy_mode() argument
1242 u32 modes = felix->info->port_modes[port]; in felix_validate_phy_mode()
1249 static int felix_parse_ports_node(struct felix *felix, in felix_parse_ports_node() argument
1253 struct device *dev = felix->ocelot.dev; in felix_parse_ports_node()
1279 err = felix_validate_phy_mode(felix, port, phy_mode); in felix_parse_ports_node()
1297 static int felix_parse_dt(struct felix *felix, phy_interface_t *port_phy_modes) in felix_parse_dt() argument
1299 struct device *dev = felix->ocelot.dev; in felix_parse_dt()
1314 err = felix_parse_ports_node(felix, ports_node, port_phy_modes); in felix_parse_dt()
1320 static struct regmap *felix_request_regmap_by_name(struct felix *felix, in felix_request_regmap_by_name() argument
1323 struct ocelot *ocelot = &felix->ocelot; in felix_request_regmap_by_name()
1331 if (!felix->info->resources) in felix_request_regmap_by_name()
1334 for (i = 0; i < felix->info->num_resources; i++) { in felix_request_regmap_by_name()
1335 if (strcmp(resource_name, felix->info->resources[i].name)) in felix_request_regmap_by_name()
1338 memcpy(&res, &felix->info->resources[i], sizeof(res)); in felix_request_regmap_by_name()
1339 res.start += felix->switch_base; in felix_request_regmap_by_name()
1340 res.end += felix->switch_base; in felix_request_regmap_by_name()
1348 static struct regmap *felix_request_regmap(struct felix *felix, in felix_request_regmap() argument
1351 const char *resource_name = felix->info->resource_names[target]; in felix_request_regmap()
1359 return felix_request_regmap_by_name(felix, resource_name); in felix_request_regmap()
1362 static struct regmap *felix_request_port_regmap(struct felix *felix, int port) in felix_request_port_regmap() argument
1368 return felix_request_regmap_by_name(felix, resource_name); in felix_request_port_regmap()
1371 static int felix_init_structs(struct felix *felix, int num_phys_ports) in felix_init_structs() argument
1373 struct ocelot *ocelot = &felix->ocelot; in felix_init_structs()
1384 ocelot->map = felix->info->map; in felix_init_structs()
1385 ocelot->num_mact_rows = felix->info->num_mact_rows; in felix_init_structs()
1386 ocelot->vcap = felix->info->vcap; in felix_init_structs()
1387 ocelot->vcap_pol.base = felix->info->vcap_pol_base; in felix_init_structs()
1388 ocelot->vcap_pol.max = felix->info->vcap_pol_max; in felix_init_structs()
1389 ocelot->vcap_pol.base2 = felix->info->vcap_pol_base2; in felix_init_structs()
1390 ocelot->vcap_pol.max2 = felix->info->vcap_pol_max2; in felix_init_structs()
1391 ocelot->ops = felix->info->ops; in felix_init_structs()
1394 ocelot->devlink = felix->ds->devlink; in felix_init_structs()
1401 err = felix_parse_dt(felix, port_phy_modes); in felix_init_structs()
1408 target = felix_request_regmap(felix, i); in felix_init_structs()
1420 err = ocelot_regfields_init(ocelot, felix->info->regfields); in felix_init_structs()
1440 target = felix_request_port_regmap(felix, port); in felix_init_structs()
1458 if (felix->info->mdio_bus_alloc) { in felix_init_structs()
1459 err = felix->info->mdio_bus_alloc(ocelot); in felix_init_structs()
1549 struct felix *felix = ocelot_to_felix(ocelot); in felix_setup() local
1553 err = felix_init_structs(felix, ds->num_ports); in felix_setup()
1565 err = ocelot_init_timestamp(ocelot, felix->info->ptp_caps); in felix_setup()
1576 if (felix->info->configure_serdes) in felix_setup()
1577 felix->info->configure_serdes(ocelot, dp->index, in felix_setup()
1593 felix_change_tag_protocol(ds, felix->tag_proto); in felix_setup()
1610 if (felix->info->mdio_bus_free) in felix_setup()
1611 felix->info->mdio_bus_free(ocelot); in felix_setup()
1619 struct felix *felix = ocelot_to_felix(ocelot); in felix_teardown() local
1623 if (felix->tag_proto_ops) in felix_teardown()
1624 felix->tag_proto_ops->teardown(ds); in felix_teardown()
1634 if (felix->info->mdio_bus_free) in felix_teardown()
1635 felix->info->mdio_bus_free(ocelot); in felix_teardown()
1650 struct felix *felix = ocelot_to_felix(ocelot); in felix_hwtstamp_set() local
1658 using_tag_8021q = felix->tag_proto == DSA_TAG_PROTO_OCELOT_8021Q; in felix_hwtstamp_set()
1665 struct felix *felix = ocelot_to_felix(ocelot); in felix_check_xtr_pkt() local
1668 if (felix->tag_proto != DSA_TAG_PROTO_OCELOT_8021Q) in felix_check_xtr_pkt()
1671 if (!felix->info->quirk_no_xtr_irq) in felix_check_xtr_pkt()
1808 struct felix *felix = ocelot_to_felix(ocelot); in felix_cls_flower_add() local
1816 using_tag_8021q = felix->tag_proto == DSA_TAG_PROTO_OCELOT_8021Q; in felix_cls_flower_add()
1879 struct felix *felix = ocelot_to_felix(ocelot); in felix_port_setup_tc() local
1881 if (felix->info->port_setup_tc) in felix_port_setup_tc()
1882 return felix->info->port_setup_tc(ds, port, type, type_data); in felix_port_setup_tc()
2173 struct felix *felix = ocelot_to_felix(ocelot); in felix_port_to_netdev() local
2174 struct dsa_switch *ds = felix->ds; in felix_port_to_netdev()
2195 MODULE_DESCRIPTION("Felix DSA library");