Lines Matching defs:ocelot

19 #include "ocelot.h"
484 static void ocelot_pll5_init(struct ocelot *ocelot)
489 regmap_write(ocelot->targets[HSIO], HSIO_PLL5G_CFG4,
492 regmap_write(ocelot->targets[HSIO], HSIO_PLL5G_CFG0,
504 regmap_write(ocelot->targets[HSIO], HSIO_PLL5G_CFG2,
513 static int ocelot_chip_init(struct ocelot *ocelot, const struct ocelot_ops *ops)
517 ocelot->map = ocelot_regmap;
518 ocelot->stats_layout = ocelot_stats_layout;
519 ocelot->num_stats = ARRAY_SIZE(ocelot_stats_layout);
520 ocelot->shared_queue_sz = 224 * 1024;
521 ocelot->num_mact_rows = 1024;
522 ocelot->ops = ops;
524 ret = ocelot_regfields_init(ocelot, ocelot_regfields);
528 ocelot_pll5_init(ocelot);
530 eth_random_addr(ocelot->base_mac);
531 ocelot->base_mac[5] &= 0xf0;
559 static int ocelot_rx_frame_word(struct ocelot *ocelot, u8 grp, bool ifh,
565 val = ocelot_read_rix(ocelot, QS_XTR_RD, grp);
571 val = ocelot_read_rix(ocelot, QS_XTR_RD, grp);
584 val = ocelot_read_rix(ocelot, QS_XTR_RD, grp);
586 *rval = ocelot_read_rix(ocelot, QS_XTR_RD, grp);
592 *rval = ocelot_read_rix(ocelot, QS_XTR_RD, grp);
604 struct ocelot *ocelot = arg;
608 if (!(ocelot_read(ocelot, QS_XTR_DATA_PRESENT) & BIT(grp)))
624 err = ocelot_rx_frame_word(ocelot, grp, true, &ifh[i]);
642 ocelot_port = ocelot->ports[info.port];
659 sz = ocelot_rx_frame_word(ocelot, grp, false, &val);
665 sz = ocelot_rx_frame_word(ocelot, grp, false, &val);
679 if (ocelot->ptp) {
680 ocelot_ptp_gettime64(&ocelot->ptp_info, &ts);
698 if (ocelot->bridge_mask & BIT(info.port))
706 } while (ocelot_read(ocelot, QS_XTR_DATA_PRESENT) & BIT(grp));
709 while (ocelot_read(ocelot, QS_XTR_DATA_PRESENT) & BIT(grp))
710 ocelot_read_rix(ocelot, QS_XTR_RD, grp);
717 struct ocelot *ocelot = arg;
719 ocelot_get_txtstamp(ocelot);
730 static int ocelot_reset(struct ocelot *ocelot)
735 regmap_field_write(ocelot->regfields[SYS_RESET_CFG_MEM_INIT], 1);
736 regmap_field_write(ocelot->regfields[SYS_RESET_CFG_MEM_ENA], 1);
740 regmap_field_read(ocelot->regfields[SYS_RESET_CFG_MEM_INIT],
747 regmap_field_write(ocelot->regfields[SYS_RESET_CFG_MEM_ENA], 1);
748 regmap_field_write(ocelot->regfields[SYS_RESET_CFG_CORE_ENA], 1);
1024 .name = "ocelot ptp",
1039 static void mscc_ocelot_release_ports(struct ocelot *ocelot)
1043 for (port = 0; port < ocelot->num_phys_ports; port++) {
1047 ocelot_port = ocelot->ports[port];
1051 ocelot_deinit_port(ocelot, port);
1064 struct ocelot *ocelot = platform_get_drvdata(pdev);
1068 ocelot->ports = devm_kcalloc(ocelot->dev, ocelot->num_phys_ports,
1070 if (!ocelot->ports)
1092 target = ocelot_regmap_init(ocelot, res);
1105 err = ocelot_probe_port(ocelot, port, target, phy);
1111 ocelot_port = ocelot->ports[port];
1134 dev_err(ocelot->dev,
1141 serdes = devm_of_phy_get(ocelot->dev, portnp, NULL);
1145 dev_dbg(ocelot->dev, "deferring probe\n");
1147 dev_err(ocelot->dev,
1166 struct ocelot *ocelot;
1189 ocelot = devm_kzalloc(&pdev->dev, sizeof(*ocelot), GFP_KERNEL);
1190 if (!ocelot)
1193 platform_set_drvdata(pdev, ocelot);
1194 ocelot->dev = &pdev->dev;
1203 target = ocelot_regmap_init(ocelot, res);
1206 ocelot->targets[io_target[i].id] = NULL;
1212 ocelot->targets[io_target[i].id] = target;
1215 hsio = syscon_regmap_lookup_by_compatible("mscc,ocelot-hsio");
1221 ocelot->targets[HSIO] = hsio;
1223 err = ocelot_chip_init(ocelot, &ocelot_ops);
1233 "frame extraction", ocelot);
1238 if (irq_ptp_rdy > 0 && ocelot->targets[PTP]) {
1242 ocelot);
1247 ocelot->ptp = 1;
1252 dev_err(ocelot->dev, "no ethernet-ports child node found\n");
1256 ocelot->num_phys_ports = of_get_child_count(ports);
1257 ocelot->num_flooding_pgids = 1;
1259 ocelot->vcap = vsc7514_vcap_props;
1260 ocelot->inj_prefix = OCELOT_TAG_PREFIX_NONE;
1261 ocelot->xtr_prefix = OCELOT_TAG_PREFIX_NONE;
1262 ocelot->npi = -1;
1264 err = ocelot_init(ocelot);
1272 if (ocelot->ptp) {
1273 err = ocelot_init_timestamp(ocelot, &ocelot_ptp_clock_info);
1275 dev_err(ocelot->dev,
1277 ocelot->ptp = 0;
1292 ocelot_deinit(ocelot);
1300 struct ocelot *ocelot = platform_get_drvdata(pdev);
1302 ocelot_deinit_timestamp(ocelot);
1303 mscc_ocelot_release_ports(ocelot);
1304 ocelot_deinit(ocelot);
1316 .name = "ocelot-switch",