Lines Matching refs:dev

35 static int ksz_ptp_tou_gpio(struct ksz_device *dev)
39 if (!is_lan937x(dev))
42 ret = ksz_rmw32(dev, REG_PTP_CTRL_STAT__4, GPIO_OUT,
47 ret = ksz_rmw32(dev, REG_SW_GLOBAL_LED_OVR__4, LED_OVR_1 | LED_OVR_2,
52 return ksz_rmw32(dev, REG_SW_GLOBAL_LED_SRC__4,
57 static int ksz_ptp_tou_reset(struct ksz_device *dev, u8 unit)
63 ret = ksz_rmw32(dev, REG_PTP_CTRL_STAT__4, TRIG_RESET, TRIG_RESET);
66 ret = ksz_write32(dev, REG_PTP_TRIG_STATUS__4, data);
71 ret = ksz_write32(dev, REG_PTP_INT_STATUS__4, data);
76 return ksz_rmw32(dev, REG_PTP_CTRL_STAT__4, (TRIG_RESET | TRIG_ENABLE),
94 static int ksz_ptp_tou_target_time_set(struct ksz_device *dev,
103 ret = ksz_write32(dev, REG_TRIG_TARGET_NANOSEC, ts->tv_nsec);
107 ret = ksz_write32(dev, REG_TRIG_TARGET_SEC, ts->tv_sec);
114 static int ksz_ptp_tou_start(struct ksz_device *dev, u8 unit)
119 ret = ksz_rmw32(dev, REG_PTP_CTRL_STAT__4, TRIG_ENABLE, TRIG_ENABLE);
126 ret = ksz_read32(dev, REG_PTP_TRIG_STATUS__4, &data);
131 dev_err(dev->dev, "%s: Trigger unit%d error!\n", __func__,
141 static int ksz_ptp_configure_perout(struct ksz_device *dev,
152 ret = ksz_write32(dev, REG_TRIG_CTRL__4, data);
156 ret = ksz_write32(dev, REG_TRIG_CYCLE_WIDTH, cycle_width_ns);
161 ret = ksz_rmw32(dev, REG_TRIG_CYCLE_CNT, TRIG_CYCLE_CNT_M, 0);
166 ret = ksz_write32(dev, REG_TRIG_PULSE_WIDTH__4, data);
170 ret = ksz_ptp_tou_target_time_set(dev, target_time);
177 static int ksz_ptp_enable_perout(struct ksz_device *dev,
181 struct ksz_ptp_data *ptp_data = &dev->ptp_data;
202 ret = ksz_rmw32(dev, REG_PTP_UNIT_INDEX__4,
207 ret = ksz_ptp_tou_reset(dev, request->index);
243 ret = ksz_ptp_configure_perout(dev, cycle_width_ns, pulse_width_ns,
249 ret = ksz_ptp_tou_gpio(dev);
253 ret = ksz_ptp_tou_start(dev, request->index);
262 static int ksz_ptp_enable_mode(struct ksz_device *dev)
264 struct ksz_tagger_data *tagger_data = ksz_tagger_data(dev->ds);
265 struct ksz_ptp_data *ptp_data = &dev->ptp_data;
271 dsa_switch_for_each_user_port(dp, dev->ds) {
272 prt = &dev->ports[dp->index];
287 tagger_data->hwtstamp_set_state(dev->ds, tag_en);
289 return ksz_rmw16(dev, REG_PTP_MSG_CONF1, PTP_ENABLE,
298 struct ksz_device *dev = ds->priv;
301 ptp_data = &dev->ptp_data;
312 if (is_lan937x(dev))
327 struct ksz_device *dev = ds->priv;
331 prt = &dev->ports[port];
338 static int ksz_set_hwtstamp_config(struct ksz_device *dev,
360 ret = ksz_rmw16(dev, REG_PTP_MSG_CONF1, PTP_1STEP, PTP_1STEP);
366 if (!is_lan937x(dev))
374 ret = ksz_rmw16(dev, REG_PTP_MSG_CONF1, PTP_1STEP, 0);
407 return ksz_ptp_enable_mode(dev);
412 struct ksz_device *dev = ds->priv;
417 prt = &dev->ports[port];
422 ret = ksz_set_hwtstamp_config(dev, prt, &config);
434 static ktime_t ksz_tstamp_reconstruct(struct ksz_device *dev, ktime_t tstamp)
441 ptp_data = &dev->ptp_data;
465 struct ksz_device *dev = ds->priv;
472 prt = &dev->ports[port];
476 hwtstamps->hwtstamp = ksz_tstamp_reconstruct(dev, tstamp);
505 struct ksz_device *dev = ds->priv;
512 prt = &dev->ports[port];
554 static void ksz_ptp_txtstamp_skb(struct ksz_device *dev,
577 struct ksz_device *dev = ds->priv;
580 prt = &dev->ports[xmit_work->dp->index];
588 dsa_enqueue_skb(skb, skb->dev);
590 ksz_ptp_txtstamp_skb(dev, prt, clone);
595 static int _ksz_ptp_gettime(struct ksz_device *dev, struct timespec64 *ts)
603 ret = ksz_rmw16(dev, REG_PTP_CLK_CTRL, PTP_READ_TIME, PTP_READ_TIME);
607 ret = ksz_read8(dev, REG_PTP_RTC_SUB_NANOSEC__2, &phase);
611 ret = ksz_read32(dev, REG_PTP_RTC_NANOSEC, &nanoseconds);
615 ret = ksz_read32(dev, REG_PTP_RTC_SEC, &seconds);
628 struct ksz_device *dev = ptp_data_to_ksz_dev(ptp_data);
632 ret = _ksz_ptp_gettime(dev, ts);
638 static int ksz_ptp_restart_perout(struct ksz_device *dev)
640 struct ksz_ptp_data *ptp_data = &dev->ptp_data;
648 dev_info(dev->dev, "Restarting periodic output signal\n");
650 ret = _ksz_ptp_gettime(dev, &now);
680 return ksz_ptp_enable_perout(dev, &request, 1);
687 struct ksz_device *dev = ptp_data_to_ksz_dev(ptp_data);
693 ret = ksz_write16(dev, REG_PTP_RTC_SUB_NANOSEC__2, PTP_RTC_0NS);
697 ret = ksz_write32(dev, REG_PTP_RTC_NANOSEC, ts->tv_nsec);
701 ret = ksz_write32(dev, REG_PTP_RTC_SEC, ts->tv_sec);
705 ret = ksz_rmw16(dev, REG_PTP_CLK_CTRL, PTP_LOAD_TIME, PTP_LOAD_TIME);
714 ret = ksz_ptp_restart_perout(dev);
734 struct ksz_device *dev = ptp_data_to_ksz_dev(ptp_data);
751 ret = ksz_write32(dev, REG_PTP_SUBNANOSEC_RATE, data32);
755 ret = ksz_rmw16(dev, REG_PTP_CLK_CTRL, PTP_CLK_ADJ_ENABLE,
760 ret = ksz_rmw16(dev, REG_PTP_CLK_CTRL, PTP_CLK_ADJ_ENABLE, 0);
773 struct ksz_device *dev = ptp_data_to_ksz_dev(ptp_data);
786 ret = ksz_write32(dev, REG_PTP_RTC_NANOSEC, abs(nsec));
790 ret = ksz_write32(dev, REG_PTP_RTC_SEC, abs(sec));
794 ret = ksz_read16(dev, REG_PTP_CLK_CTRL, &data16);
806 ret = ksz_write16(dev, REG_PTP_CLK_CTRL, data16);
815 ret = ksz_ptp_restart_perout(dev);
835 struct ksz_device *dev = ptp_data_to_ksz_dev(ptp_data);
841 ret = ksz_ptp_enable_perout(dev, &req->perout, on);
872 struct ksz_device *dev = ptp_data_to_ksz_dev(ptp_data);
877 ret = _ksz_ptp_gettime(dev, &ts);
891 static int ksz_ptp_start_clock(struct ksz_device *dev)
893 struct ksz_ptp_data *ptp_data = &dev->ptp_data;
896 ret = ksz_rmw16(dev, REG_PTP_CLK_CTRL, PTP_CLK_ENABLE, PTP_CLK_ENABLE);
908 struct ksz_device *dev = ds->priv;
913 ptp_data = &dev->ptp_data;
930 ret = ksz_ptp_start_clock(dev);
948 ret = ksz_rmw16(dev, REG_PTP_MSG_CONF1, PTP_TC_P2P | PTP_802_1AS,
953 ptp_data->clock = ptp_clock_register(&ptp_data->caps, dev->dev);
962 struct ksz_device *dev = ds->priv;
965 ptp_data = &dev->ptp_data;
974 struct ksz_device *dev;
981 dev = port->ksz_dev;
984 ret = ksz_read32(dev, ptpmsg_irq->ts_reg, &tstamp_raw);
990 port->tstamp_msg = ksz_tstamp_reconstruct(dev, tstamp);
1002 struct ksz_device *dev;
1008 dev = ptpirq->dev;
1010 ret = ksz_read16(dev, ptpirq->reg_status, &data);
1015 ret = ksz_write16(dev, ptpirq->reg_status, data);
1049 mutex_lock(&kirq->dev->lock_irq);
1055 struct ksz_device *dev = kirq->dev;
1058 ret = ksz_write16(dev, kirq->reg_mask, kirq->masked);
1060 dev_err(dev->dev, "failed to change IRQ mask\n");
1062 mutex_unlock(&dev->lock_irq);
1125 struct ksz_device *dev = ds->priv;
1126 const struct ksz_dev_ops *ops = dev->dev_ops;
1127 struct ksz_port *port = &dev->ports[p];
1132 ptpirq->dev = dev;
1142 ptpirq->domain = irq_domain_add_linear(dev->dev->of_node, ptpirq->nirqs,
1184 struct ksz_device *dev = ds->priv;
1185 struct ksz_port *port = &dev->ports[p];