Symbol: felix
drivers/net/dsa/ocelot/felix.c
1101
struct felix *felix;
drivers/net/dsa/ocelot/felix.c
1108
felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/felix.c
1109
using_tag_8021q = felix->tag_proto == DSA_TAG_PROTO_OCELOT_8021Q;
drivers/net/dsa/ocelot/felix.c
1167
struct felix *felix;
drivers/net/dsa/ocelot/felix.c
1169
felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/felix.c
1171
if (felix->info->phylink_mac_config)
drivers/net/dsa/ocelot/felix.c
1172
felix->info->phylink_mac_config(ocelot, port, mode, state);
drivers/net/dsa/ocelot/felix.c
1183
struct felix *felix;
drivers/net/dsa/ocelot/felix.c
1185
felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/felix.c
1187
if (felix->pcs && felix->pcs[port])
drivers/net/dsa/ocelot/felix.c
1188
pcs = felix->pcs[port];
drivers/net/dsa/ocelot/felix.c
1200
struct felix *felix;
drivers/net/dsa/ocelot/felix.c
1202
felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/felix.c
1205
felix->info->quirks);
drivers/net/dsa/ocelot/felix.c
1218
struct felix *felix;
drivers/net/dsa/ocelot/felix.c
1220
felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/felix.c
1224
felix->info->quirks);
drivers/net/dsa/ocelot/felix.c
1226
if (felix->info->port_sched_speed_set)
drivers/net/dsa/ocelot/felix.c
1227
felix->info->port_sched_speed_set(ocelot, port, speed);
drivers/net/dsa/ocelot/felix.c
1235
struct felix *felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/felix.c
1249
if (!dp->hsr_dev || felix->tag_proto == DSA_TAG_PROTO_OCELOT_8021Q)
drivers/net/dsa/ocelot/felix.c
1259
struct felix *felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/felix.c
1264
if (!dp->hsr_dev || felix->tag_proto == DSA_TAG_PROTO_OCELOT_8021Q)
drivers/net/dsa/ocelot/felix.c
1388
static int felix_validate_phy_mode(struct felix *felix, int port,
drivers/net/dsa/ocelot/felix.c
1391
u32 modes = felix->info->port_modes[port];
drivers/net/dsa/ocelot/felix.c
1398
static int felix_parse_ports_node(struct felix *felix,
drivers/net/dsa/ocelot/felix.c
1402
struct device *dev = felix->ocelot.dev;
drivers/net/dsa/ocelot/felix.c
1425
err = felix_validate_phy_mode(felix, port, phy_mode);
drivers/net/dsa/ocelot/felix.c
1443
static int felix_parse_dt(struct felix *felix, phy_interface_t *port_phy_modes)
drivers/net/dsa/ocelot/felix.c
1445
struct device *dev = felix->ocelot.dev;
drivers/net/dsa/ocelot/felix.c
1460
err = felix_parse_ports_node(felix, ports_node, port_phy_modes);
drivers/net/dsa/ocelot/felix.c
1466
static struct regmap *felix_request_regmap_by_name(struct felix *felix,
drivers/net/dsa/ocelot/felix.c
1469
struct ocelot *ocelot = &felix->ocelot;
drivers/net/dsa/ocelot/felix.c
1477
if (!felix->info->resources)
drivers/net/dsa/ocelot/felix.c
1480
for (i = 0; i < felix->info->num_resources; i++) {
drivers/net/dsa/ocelot/felix.c
1481
if (strcmp(resource_name, felix->info->resources[i].name))
drivers/net/dsa/ocelot/felix.c
1484
memcpy(&res, &felix->info->resources[i], sizeof(res));
drivers/net/dsa/ocelot/felix.c
1485
res.start += felix->switch_base;
drivers/net/dsa/ocelot/felix.c
1486
res.end += felix->switch_base;
drivers/net/dsa/ocelot/felix.c
1494
static struct regmap *felix_request_regmap(struct felix *felix,
drivers/net/dsa/ocelot/felix.c
1497
const char *resource_name = felix->info->resource_names[target];
drivers/net/dsa/ocelot/felix.c
1505
return felix_request_regmap_by_name(felix, resource_name);
drivers/net/dsa/ocelot/felix.c
1508
static struct regmap *felix_request_port_regmap(struct felix *felix, int port)
drivers/net/dsa/ocelot/felix.c
1514
return felix_request_regmap_by_name(felix, resource_name);
drivers/net/dsa/ocelot/felix.c
1517
static int felix_init_structs(struct felix *felix, int num_phys_ports)
drivers/net/dsa/ocelot/felix.c
1519
struct ocelot *ocelot = &felix->ocelot;
drivers/net/dsa/ocelot/felix.c
1530
ocelot->map = felix->info->map;
drivers/net/dsa/ocelot/felix.c
1531
ocelot->num_mact_rows = felix->info->num_mact_rows;
drivers/net/dsa/ocelot/felix.c
1532
ocelot->vcap = felix->info->vcap;
drivers/net/dsa/ocelot/felix.c
1533
ocelot->vcap_pol.base = felix->info->vcap_pol_base;
drivers/net/dsa/ocelot/felix.c
1534
ocelot->vcap_pol.max = felix->info->vcap_pol_max;
drivers/net/dsa/ocelot/felix.c
1535
ocelot->vcap_pol.base2 = felix->info->vcap_pol_base2;
drivers/net/dsa/ocelot/felix.c
1536
ocelot->vcap_pol.max2 = felix->info->vcap_pol_max2;
drivers/net/dsa/ocelot/felix.c
1537
ocelot->ops = felix->info->ops;
drivers/net/dsa/ocelot/felix.c
1540
ocelot->devlink = felix->ds->devlink;
drivers/net/dsa/ocelot/felix.c
1546
err = felix_parse_dt(felix, port_phy_modes);
drivers/net/dsa/ocelot/felix.c
1553
target = felix_request_regmap(felix, i);
drivers/net/dsa/ocelot/felix.c
1565
err = ocelot_regfields_init(ocelot, felix->info->regfields);
drivers/net/dsa/ocelot/felix.c
1585
target = felix_request_port_regmap(felix, port);
drivers/net/dsa/ocelot/felix.c
1603
if (felix->info->mdio_bus_alloc) {
drivers/net/dsa/ocelot/felix.c
1604
err = felix->info->mdio_bus_alloc(ocelot);
drivers/net/dsa/ocelot/felix.c
1699
struct felix *felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/felix.c
1703
err = felix_init_structs(felix, ds->num_ports);
drivers/net/dsa/ocelot/felix.c
1715
err = ocelot_init_timestamp(ocelot, felix->info->ptp_caps);
drivers/net/dsa/ocelot/felix.c
1726
if (felix->info->configure_serdes)
drivers/net/dsa/ocelot/felix.c
1727
felix->info->configure_serdes(ocelot, dp->index,
drivers/net/dsa/ocelot/felix.c
1736
if (felix->info->request_irq) {
drivers/net/dsa/ocelot/felix.c
1737
err = felix->info->request_irq(ocelot);
drivers/net/dsa/ocelot/felix.c
1752
felix_change_tag_protocol(ds, felix->tag_proto);
drivers/net/dsa/ocelot/felix.c
1769
if (felix->info->mdio_bus_free)
drivers/net/dsa/ocelot/felix.c
1770
felix->info->mdio_bus_free(ocelot);
drivers/net/dsa/ocelot/felix.c
1778
struct felix *felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/felix.c
1782
if (felix->tag_proto_ops)
drivers/net/dsa/ocelot/felix.c
1783
felix->tag_proto_ops->teardown(ds);
drivers/net/dsa/ocelot/felix.c
1793
if (felix->info->mdio_bus_free)
drivers/net/dsa/ocelot/felix.c
1794
felix->info->mdio_bus_free(ocelot);
drivers/net/dsa/ocelot/felix.c
1812
struct felix *felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/felix.c
1820
using_tag_8021q = felix->tag_proto == DSA_TAG_PROTO_OCELOT_8021Q;
drivers/net/dsa/ocelot/felix.c
1827
struct felix *felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/felix.c
1830
if (felix->tag_proto != DSA_TAG_PROTO_OCELOT_8021Q)
drivers/net/dsa/ocelot/felix.c
1833
if (!felix->info->quirk_no_xtr_irq)
drivers/net/dsa/ocelot/felix.c
1974
struct felix *felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/felix.c
1982
using_tag_8021q = felix->tag_proto == DSA_TAG_PROTO_OCELOT_8021Q;
drivers/net/dsa/ocelot/felix.c
2045
struct felix *felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/felix.c
2047
if (felix->info->port_setup_tc)
drivers/net/dsa/ocelot/felix.c
2048
return felix->info->port_setup_tc(ds, port, type, type_data);
drivers/net/dsa/ocelot/felix.c
2263
struct felix *felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/felix.c
2265
if (felix->tag_proto == DSA_TAG_PROTO_OCELOT_8021Q) {
drivers/net/dsa/ocelot/felix.c
2287
struct felix *felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/felix.c
2289
if (felix->tag_proto == DSA_TAG_PROTO_OCELOT_8021Q)
drivers/net/dsa/ocelot/felix.c
2397
struct felix *felix;
drivers/net/dsa/ocelot/felix.c
2400
felix = devm_kzalloc(dev, sizeof(*felix), GFP_KERNEL);
drivers/net/dsa/ocelot/felix.c
2401
if (!felix)
drivers/net/dsa/ocelot/felix.c
2408
dev_set_drvdata(dev, felix);
drivers/net/dsa/ocelot/felix.c
2410
ocelot = &felix->ocelot;
drivers/net/dsa/ocelot/felix.c
2416
felix->info = info;
drivers/net/dsa/ocelot/felix.c
2417
felix->switch_base = switch_base;
drivers/net/dsa/ocelot/felix.c
2418
felix->ds = ds;
drivers/net/dsa/ocelot/felix.c
2419
felix->tag_proto = init_tag_proto;
drivers/net/dsa/ocelot/felix.c
2438
struct felix *felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/felix.c
2439
struct dsa_switch *ds = felix->ds;
drivers/net/dsa/ocelot/felix.c
384
struct felix *felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/felix.c
392
if (!felix->info->quirk_no_xtr_irq)
drivers/net/dsa/ocelot/felix.c
697
struct felix *felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/felix.c
706
felix_set_host_flood(ds, mask, !!felix->host_flood_uc_mask,
drivers/net/dsa/ocelot/felix.c
707
!!felix->host_flood_mc_mask, true);
drivers/net/dsa/ocelot/felix.c
759
struct felix *felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/felix.c
774
old_proto_ops = felix->tag_proto_ops;
drivers/net/dsa/ocelot/felix.c
790
felix->tag_proto_ops = proto_ops;
drivers/net/dsa/ocelot/felix.c
791
felix->tag_proto = proto;
drivers/net/dsa/ocelot/felix.c
806
struct felix *felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/felix.c
808
return felix->tag_proto;
drivers/net/dsa/ocelot/felix.c
815
struct felix *felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/felix.c
819
felix->host_flood_uc_mask |= BIT(port);
drivers/net/dsa/ocelot/felix.c
821
felix->host_flood_uc_mask &= ~BIT(port);
drivers/net/dsa/ocelot/felix.c
824
felix->host_flood_mc_mask |= BIT(port);
drivers/net/dsa/ocelot/felix.c
826
felix->host_flood_mc_mask &= ~BIT(port);
drivers/net/dsa/ocelot/felix.c
828
mask = felix->tag_proto_ops->get_host_fwd_mask(ds);
drivers/net/dsa/ocelot/felix.c
829
felix_set_host_flood(ds, mask, !!felix->host_flood_uc_mask,
drivers/net/dsa/ocelot/felix.c
830
!!felix->host_flood_mc_mask, true);
drivers/net/dsa/ocelot/felix.c
838
struct felix *felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/felix.c
840
return felix->tag_proto_ops->change_conduit(ds, port, conduit, extack);
drivers/net/dsa/ocelot/felix.h
7
#define ocelot_to_felix(o) container_of((o), struct felix, ocelot)
drivers/net/dsa/ocelot/felix_vsc9959.c
1021
felix->imdio = bus;
drivers/net/dsa/ocelot/felix_vsc9959.c
1023
for (port = 0; port < felix->info->num_ports; port++) {
drivers/net/dsa/ocelot/felix_vsc9959.c
1027
if (dsa_is_unused_port(felix->ds, port))
drivers/net/dsa/ocelot/felix_vsc9959.c
1033
phylink_pcs = lynx_pcs_create_mdiodev(felix->imdio, port);
drivers/net/dsa/ocelot/felix_vsc9959.c
1037
felix->pcs[port] = phylink_pcs;
drivers/net/dsa/ocelot/felix_vsc9959.c
1047
struct felix *felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/felix_vsc9959.c
1051
struct phylink_pcs *phylink_pcs = felix->pcs[port];
drivers/net/dsa/ocelot/felix_vsc9959.c
1056
mdiobus_unregister(felix->imdio);
drivers/net/dsa/ocelot/felix_vsc9959.c
1057
mdiobus_free(felix->imdio);
drivers/net/dsa/ocelot/felix_vsc9959.c
2545
struct felix *felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/felix_vsc9959.c
2546
struct dsa_switch *ds = felix->ds;
drivers/net/dsa/ocelot/felix_vsc9959.c
2716
struct felix *felix = pci_get_drvdata(pdev);
drivers/net/dsa/ocelot/felix_vsc9959.c
2718
if (!felix)
drivers/net/dsa/ocelot/felix_vsc9959.c
2721
dsa_unregister_switch(felix->ds);
drivers/net/dsa/ocelot/felix_vsc9959.c
2728
struct felix *felix = pci_get_drvdata(pdev);
drivers/net/dsa/ocelot/felix_vsc9959.c
2730
if (!felix)
drivers/net/dsa/ocelot/felix_vsc9959.c
2733
dsa_switch_shutdown(felix->ds);
drivers/net/dsa/ocelot/felix_vsc9959.c
960
struct felix *felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/felix_vsc9959.c
971
felix->pcs = devm_kcalloc(dev, felix->info->num_ports,
drivers/net/dsa/ocelot/felix_vsc9959.c
974
if (!felix->pcs) {
drivers/net/dsa/ocelot/ocelot_ext.c
73
struct felix *felix = dev_get_drvdata(&pdev->dev);
drivers/net/dsa/ocelot/ocelot_ext.c
75
if (!felix)
drivers/net/dsa/ocelot/ocelot_ext.c
78
dsa_unregister_switch(felix->ds);
drivers/net/dsa/ocelot/ocelot_ext.c
83
struct felix *felix = dev_get_drvdata(&pdev->dev);
drivers/net/dsa/ocelot/ocelot_ext.c
85
if (!felix)
drivers/net/dsa/ocelot/ocelot_ext.c
88
dsa_switch_shutdown(felix->ds);
drivers/net/dsa/ocelot/seville_vsc9953.c
1001
if (!felix)
drivers/net/dsa/ocelot/seville_vsc9953.c
1004
dsa_switch_shutdown(felix->ds);
drivers/net/dsa/ocelot/seville_vsc9953.c
881
struct felix *felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/seville_vsc9953.c
887
felix->pcs = devm_kcalloc(dev, felix->info->num_ports,
drivers/net/dsa/ocelot/seville_vsc9953.c
890
if (!felix->pcs) {
drivers/net/dsa/ocelot/seville_vsc9953.c
911
felix->imdio = bus;
drivers/net/dsa/ocelot/seville_vsc9953.c
913
for (port = 0; port < felix->info->num_ports; port++) {
drivers/net/dsa/ocelot/seville_vsc9953.c
918
if (dsa_is_unused_port(felix->ds, port))
drivers/net/dsa/ocelot/seville_vsc9953.c
924
phylink_pcs = lynx_pcs_create_mdiodev(felix->imdio, addr);
drivers/net/dsa/ocelot/seville_vsc9953.c
928
felix->pcs[port] = phylink_pcs;
drivers/net/dsa/ocelot/seville_vsc9953.c
938
struct felix *felix = ocelot_to_felix(ocelot);
drivers/net/dsa/ocelot/seville_vsc9953.c
942
struct phylink_pcs *phylink_pcs = felix->pcs[port];
drivers/net/dsa/ocelot/seville_vsc9953.c
989
struct felix *felix = platform_get_drvdata(pdev);
drivers/net/dsa/ocelot/seville_vsc9953.c
991
if (!felix)
drivers/net/dsa/ocelot/seville_vsc9953.c
994
dsa_unregister_switch(felix->ds);
drivers/net/dsa/ocelot/seville_vsc9953.c
999
struct felix *felix = platform_get_drvdata(pdev);