Lines Matching refs:mdev
43 struct mlx4_en_dev *mdev = in mlx4_en_read_clock() local
45 struct mlx4_dev *dev = mdev->dev; in mlx4_en_read_clock()
61 void mlx4_en_fill_hwtstamps(struct mlx4_en_dev *mdev, in mlx4_en_fill_hwtstamps() argument
68 read_lock_irqsave(&mdev->clock_lock, flags); in mlx4_en_fill_hwtstamps()
69 nsec = timecounter_cyc2time(&mdev->clock, timestamp); in mlx4_en_fill_hwtstamps()
70 read_unlock_irqrestore(&mdev->clock_lock, flags); in mlx4_en_fill_hwtstamps()
82 void mlx4_en_remove_timestamp(struct mlx4_en_dev *mdev) in mlx4_en_remove_timestamp() argument
84 if (mdev->ptp_clock) { in mlx4_en_remove_timestamp()
85 ptp_clock_unregister(mdev->ptp_clock); in mlx4_en_remove_timestamp()
86 mdev->ptp_clock = NULL; in mlx4_en_remove_timestamp()
87 mlx4_info(mdev, "removed PHC\n"); in mlx4_en_remove_timestamp()
91 void mlx4_en_ptp_overflow_check(struct mlx4_en_dev *mdev) in mlx4_en_ptp_overflow_check() argument
93 bool timeout = time_is_before_jiffies(mdev->last_overflow_check + in mlx4_en_ptp_overflow_check()
94 mdev->overflow_period); in mlx4_en_ptp_overflow_check()
98 write_lock_irqsave(&mdev->clock_lock, flags); in mlx4_en_ptp_overflow_check()
99 timecounter_read(&mdev->clock); in mlx4_en_ptp_overflow_check()
100 write_unlock_irqrestore(&mdev->clock_lock, flags); in mlx4_en_ptp_overflow_check()
101 mdev->last_overflow_check = jiffies; in mlx4_en_ptp_overflow_check()
119 struct mlx4_en_dev *mdev = container_of(ptp, struct mlx4_en_dev, in mlx4_en_phc_adjfreq() local
126 mult = mdev->nominal_c_mult; in mlx4_en_phc_adjfreq()
131 write_lock_irqsave(&mdev->clock_lock, flags); in mlx4_en_phc_adjfreq()
132 timecounter_read(&mdev->clock); in mlx4_en_phc_adjfreq()
133 mdev->cycles.mult = neg_adj ? mult - diff : mult + diff; in mlx4_en_phc_adjfreq()
134 write_unlock_irqrestore(&mdev->clock_lock, flags); in mlx4_en_phc_adjfreq()
148 struct mlx4_en_dev *mdev = container_of(ptp, struct mlx4_en_dev, in mlx4_en_phc_adjtime() local
152 write_lock_irqsave(&mdev->clock_lock, flags); in mlx4_en_phc_adjtime()
153 timecounter_adjtime(&mdev->clock, delta); in mlx4_en_phc_adjtime()
154 write_unlock_irqrestore(&mdev->clock_lock, flags); in mlx4_en_phc_adjtime()
170 struct mlx4_en_dev *mdev = container_of(ptp, struct mlx4_en_dev, in mlx4_en_phc_gettime() local
175 write_lock_irqsave(&mdev->clock_lock, flags); in mlx4_en_phc_gettime()
176 ns = timecounter_read(&mdev->clock); in mlx4_en_phc_gettime()
177 write_unlock_irqrestore(&mdev->clock_lock, flags); in mlx4_en_phc_gettime()
195 struct mlx4_en_dev *mdev = container_of(ptp, struct mlx4_en_dev, in mlx4_en_phc_settime() local
201 write_lock_irqsave(&mdev->clock_lock, flags); in mlx4_en_phc_settime()
202 timecounter_init(&mdev->clock, &mdev->cycles, ns); in mlx4_en_phc_settime()
203 write_unlock_irqrestore(&mdev->clock_lock, flags); in mlx4_en_phc_settime()
257 void mlx4_en_init_timestamp(struct mlx4_en_dev *mdev) in mlx4_en_init_timestamp() argument
259 struct mlx4_dev *dev = mdev->dev; in mlx4_en_init_timestamp()
267 if (mdev->ptp_clock) in mlx4_en_init_timestamp()
270 rwlock_init(&mdev->clock_lock); in mlx4_en_init_timestamp()
272 memset(&mdev->cycles, 0, sizeof(mdev->cycles)); in mlx4_en_init_timestamp()
273 mdev->cycles.read = mlx4_en_read_clock; in mlx4_en_init_timestamp()
274 mdev->cycles.mask = CLOCKSOURCE_MASK(48); in mlx4_en_init_timestamp()
275 mdev->cycles.shift = freq_to_shift(dev->caps.hca_core_clock); in mlx4_en_init_timestamp()
276 mdev->cycles.mult = in mlx4_en_init_timestamp()
277 clocksource_khz2mult(1000 * dev->caps.hca_core_clock, mdev->cycles.shift); in mlx4_en_init_timestamp()
278 mdev->nominal_c_mult = mdev->cycles.mult; in mlx4_en_init_timestamp()
280 write_lock_irqsave(&mdev->clock_lock, flags); in mlx4_en_init_timestamp()
281 timecounter_init(&mdev->clock, &mdev->cycles, in mlx4_en_init_timestamp()
283 write_unlock_irqrestore(&mdev->clock_lock, flags); in mlx4_en_init_timestamp()
288 ns = cyclecounter_cyc2ns(&mdev->cycles, mdev->cycles.mask, zero, &zero); in mlx4_en_init_timestamp()
290 mdev->overflow_period = ns; in mlx4_en_init_timestamp()
293 mdev->ptp_clock_info = mlx4_en_ptp_clock_info; in mlx4_en_init_timestamp()
294 snprintf(mdev->ptp_clock_info.name, 16, "mlx4 ptp"); in mlx4_en_init_timestamp()
296 mdev->ptp_clock = ptp_clock_register(&mdev->ptp_clock_info, in mlx4_en_init_timestamp()
297 &mdev->pdev->dev); in mlx4_en_init_timestamp()
298 if (IS_ERR(mdev->ptp_clock)) { in mlx4_en_init_timestamp()
299 mdev->ptp_clock = NULL; in mlx4_en_init_timestamp()
300 mlx4_err(mdev, "ptp_clock_register failed\n"); in mlx4_en_init_timestamp()
302 mlx4_info(mdev, "registered PHC clock\n"); in mlx4_en_init_timestamp()