Lines Matching refs:lan966x
57 struct lan966x *lan966x = port->lan966x;
61 vrule = vcap_get_rule(lan966x->vcap_ctrl, rule_id);
76 vrule = vcap_alloc_rule(lan966x->vcap_ctrl, port->dev,
103 struct lan966x *lan966x = port->lan966x;
108 vrule = vcap_get_rule(lan966x->vcap_ctrl, rule_id);
116 if (mask == GENMASK(lan966x->num_phys_ports, 0)) {
117 err = vcap_del_rule(lan966x->vcap_ctrl, port->dev, rule_id);
264 struct lan966x *lan966x = port->lan966x;
307 mutex_lock(&lan966x->ptp_lock);
308 phc = &lan966x->phc[LAN966X_PHC_PORT];
310 mutex_unlock(&lan966x->ptp_lock);
318 struct lan966x *lan966x = port->lan966x;
321 phc = &lan966x->phc[LAN966X_PHC_PORT];
396 struct lan966x *lan966x = port->lan966x;
410 spin_lock_irqsave(&lan966x->ptp_ts_id_lock, flags);
411 if (lan966x->ptp_skbs == LAN966X_MAX_PTP_ID) {
412 spin_unlock_irqrestore(&lan966x->ptp_ts_id_lock, flags);
422 lan966x->ptp_skbs++;
427 spin_unlock_irqrestore(&lan966x->ptp_ts_id_lock, flags);
435 struct lan966x *lan966x = port->lan966x;
438 spin_lock_irqsave(&lan966x->ptp_ts_id_lock, flags);
440 lan966x->ptp_skbs--;
442 spin_unlock_irqrestore(&lan966x->ptp_ts_id_lock, flags);
445 static void lan966x_get_hwtimestamp(struct lan966x *lan966x,
453 spin_lock_irqsave(&lan966x->ptp_clock_lock, flags);
461 lan966x, PTP_PIN_CFG(TOD_ACC_PIN));
463 ts->tv_sec = lan_rd(lan966x, PTP_TOD_SEC_LSB(TOD_ACC_PIN));
464 curr_nsec = lan_rd(lan966x, PTP_TOD_NSEC(TOD_ACC_PIN));
472 spin_unlock_irqrestore(&lan966x->ptp_clock_lock, flags);
478 struct lan966x *lan966x = args;
489 val = lan_rd(lan966x, PTP_TWOSTEP_CTRL);
504 port = lan966x->ports[txport];
507 delay = lan_rd(lan966x, PTP_TWOSTEP_STAMP);
515 lan966x, PTP_TWOSTEP_CTRL);
517 val = lan_rd(lan966x, PTP_TWOSTEP_CTRL);
524 id = lan_rd(lan966x, PTP_TWOSTEP_STAMP);
540 lan966x, PTP_TWOSTEP_CTRL);
545 spin_lock_irqsave(&lan966x->ptp_ts_id_lock, flags);
546 lan966x->ptp_skbs--;
547 spin_unlock_irqrestore(&lan966x->ptp_ts_id_lock, flags);
550 lan966x_get_hwtimestamp(lan966x, &ts, delay);
564 struct lan966x *lan966x = args;
572 if (!(lan_rd(lan966x, PTP_PIN_INTR)))
579 phc = &lan966x->phc[i];
584 if (!(lan_rd(lan966x, PTP_PIN_INTR) & BIT(pin)))
587 spin_lock_irqsave(&lan966x->ptp_clock_lock, flags);
592 lan_wr(BIT(pin), lan966x, PTP_PIN_INTR);
595 s = lan_rd(lan966x, PTP_TOD_SEC_MSB(pin));
597 s |= lan_rd(lan966x, PTP_TOD_SEC_LSB(pin));
598 ns = lan_rd(lan966x, PTP_TOD_NSEC(pin));
601 spin_unlock_irqrestore(&lan966x->ptp_clock_lock, flags);
622 struct lan966x *lan966x = phc->lan966x;
646 spin_lock_irqsave(&lan966x->ptp_clock_lock, flags);
650 lan966x, PTP_DOM_CFG);
652 lan_wr((u32)tod_inc & 0xFFFFFFFF, lan966x,
654 lan_wr((u32)(tod_inc >> 32), lan966x,
659 lan966x, PTP_DOM_CFG);
661 spin_unlock_irqrestore(&lan966x->ptp_clock_lock, flags);
670 struct lan966x *lan966x = phc->lan966x;
673 spin_lock_irqsave(&lan966x->ptp_clock_lock, flags);
682 lan966x, PTP_PIN_CFG(TOD_ACC_PIN));
686 lan966x, PTP_TOD_SEC_MSB(TOD_ACC_PIN));
688 lan966x, PTP_TOD_SEC_LSB(TOD_ACC_PIN));
689 lan_wr(ts->tv_nsec, lan966x, PTP_TOD_NSEC(TOD_ACC_PIN));
698 lan966x, PTP_PIN_CFG(TOD_ACC_PIN));
700 spin_unlock_irqrestore(&lan966x->ptp_clock_lock, flags);
708 struct lan966x *lan966x = phc->lan966x;
713 spin_lock_irqsave(&lan966x->ptp_clock_lock, flags);
721 lan966x, PTP_PIN_CFG(TOD_ACC_PIN));
723 s = lan_rd(lan966x, PTP_TOD_SEC_MSB(TOD_ACC_PIN));
725 s |= lan_rd(lan966x, PTP_TOD_SEC_LSB(TOD_ACC_PIN));
726 ns = lan_rd(lan966x, PTP_TOD_NSEC(TOD_ACC_PIN));
729 spin_unlock_irqrestore(&lan966x->ptp_clock_lock, flags);
745 struct lan966x *lan966x = phc->lan966x;
750 spin_lock_irqsave(&lan966x->ptp_clock_lock, flags);
759 lan966x, PTP_PIN_CFG(TOD_ACC_PIN));
762 lan966x, PTP_TOD_NSEC(TOD_ACC_PIN));
771 lan966x, PTP_PIN_CFG(TOD_ACC_PIN));
773 spin_unlock_irqrestore(&lan966x->ptp_clock_lock, flags);
794 struct lan966x *lan966x = phc->lan966x;
816 info = &lan966x->phc[i].info;
834 struct lan966x *lan966x = phc->lan966x;
846 spin_lock_irqsave(&lan966x->ptp_clock_lock, flags);
853 lan966x, PTP_PIN_CFG(pin));
854 spin_unlock_irqrestore(&lan966x->ptp_clock_lock, flags);
871 dev_warn(lan966x->dev,
888 spin_lock_irqsave(&lan966x->ptp_clock_lock, flags);
890 lan966x, PTP_WF_LOW_PERIOD(pin));
892 lan966x, PTP_WF_HIGH_PERIOD(pin));
899 lan966x, PTP_PIN_CFG(pin));
900 spin_unlock_irqrestore(&lan966x->ptp_clock_lock, flags);
910 spin_lock_irqsave(&lan966x->ptp_clock_lock, flags);
912 lan966x, PTP_WF_LOW_PERIOD(pin));
914 lan966x, PTP_WF_HIGH_PERIOD(pin));
921 lan966x, PTP_PIN_CFG(pin));
922 spin_unlock_irqrestore(&lan966x->ptp_clock_lock, flags);
931 struct lan966x *lan966x = phc->lan966x;
936 if (lan966x->ptp_ext_irq <= 0)
943 spin_lock_irqsave(&lan966x->ptp_clock_lock, flags);
952 lan966x, PTP_PIN_CFG(pin));
954 val = lan_rd(lan966x, PTP_PIN_INTR_ENA);
959 lan_wr(val, lan966x, PTP_PIN_INTR_ENA);
961 spin_unlock_irqrestore(&lan966x->ptp_clock_lock, flags);
983 .name = "lan966x ptp",
1000 static int lan966x_ptp_phc_init(struct lan966x *lan966x,
1004 struct lan966x_phc *phc = &lan966x->phc[index];
1018 phc->clock = ptp_clock_register(&phc->info, lan966x->dev);
1023 phc->lan966x = lan966x;
1028 int lan966x_ptp_init(struct lan966x *lan966x)
1034 if (!lan966x->ptp)
1038 err = lan966x_ptp_phc_init(lan966x, i, &lan966x_ptp_clock_info);
1043 spin_lock_init(&lan966x->ptp_clock_lock);
1044 spin_lock_init(&lan966x->ptp_ts_id_lock);
1045 mutex_init(&lan966x->ptp_lock);
1048 lan_wr(PTP_DOM_CFG_ENA_SET(0), lan966x, PTP_DOM_CFG);
1053 lan966x, PTP_DOM_CFG);
1056 lan_wr((u32)tod_adj & 0xFFFFFFFF, lan966x,
1058 lan_wr((u32)(tod_adj >> 32), lan966x,
1064 lan966x, PTP_DOM_CFG);
1067 lan_wr(PTP_DOM_CFG_ENA_SET(0x7), lan966x, PTP_DOM_CFG);
1069 for (i = 0; i < lan966x->num_phys_ports; i++) {
1070 port = lan966x->ports[i];
1080 void lan966x_ptp_deinit(struct lan966x *lan966x)
1085 if (!lan966x->ptp)
1088 for (i = 0; i < lan966x->num_phys_ports; i++) {
1089 port = lan966x->ports[i];
1097 ptp_clock_unregister(lan966x->phc[i].clock);
1100 void lan966x_ptp_rxtstamp(struct lan966x *lan966x, struct sk_buff *skb,
1108 if (!lan966x->ptp ||
1109 !lan966x->ports[src_port]->ptp_rx_cmd)
1112 phc = &lan966x->phc[LAN966X_PHC_PORT];