Lines Matching refs:clock
92 struct cavium_ptp *clock = in cavium_ptp_adjfine() local
119 comp = ((u64)1000000000ull << 32) / clock->clock_rate; in cavium_ptp_adjfine()
125 spin_lock_irqsave(&clock->spin_lock, flags); in cavium_ptp_adjfine()
126 writeq(comp, clock->reg_base + PTP_CLOCK_COMP); in cavium_ptp_adjfine()
127 spin_unlock_irqrestore(&clock->spin_lock, flags); in cavium_ptp_adjfine()
139 struct cavium_ptp *clock = in cavium_ptp_adjtime() local
143 spin_lock_irqsave(&clock->spin_lock, flags); in cavium_ptp_adjtime()
144 timecounter_adjtime(&clock->time_counter, delta); in cavium_ptp_adjtime()
145 spin_unlock_irqrestore(&clock->spin_lock, flags); in cavium_ptp_adjtime()
161 struct cavium_ptp *clock = in cavium_ptp_gettime() local
166 spin_lock_irqsave(&clock->spin_lock, flags); in cavium_ptp_gettime()
167 nsec = timecounter_read(&clock->time_counter); in cavium_ptp_gettime()
168 spin_unlock_irqrestore(&clock->spin_lock, flags); in cavium_ptp_gettime()
183 struct cavium_ptp *clock = in cavium_ptp_settime() local
190 spin_lock_irqsave(&clock->spin_lock, flags); in cavium_ptp_settime()
191 timecounter_init(&clock->time_counter, &clock->cycle_counter, nsec); in cavium_ptp_settime()
192 spin_unlock_irqrestore(&clock->spin_lock, flags); in cavium_ptp_settime()
211 struct cavium_ptp *clock = in cavium_ptp_cc_read() local
214 return readq(clock->reg_base + PTP_CLOCK_HI); in cavium_ptp_cc_read()
221 struct cavium_ptp *clock; in cavium_ptp_probe() local
227 clock = devm_kzalloc(dev, sizeof(*clock), GFP_KERNEL); in cavium_ptp_probe()
228 if (!clock) { in cavium_ptp_probe()
233 clock->pdev = pdev; in cavium_ptp_probe()
243 clock->reg_base = pcim_iomap_table(pdev)[PCI_PTP_BAR_NO]; in cavium_ptp_probe()
245 spin_lock_init(&clock->spin_lock); in cavium_ptp_probe()
247 cc = &clock->cycle_counter; in cavium_ptp_probe()
253 timecounter_init(&clock->time_counter, &clock->cycle_counter, in cavium_ptp_probe()
256 clock->clock_rate = ptp_cavium_clock_get(); in cavium_ptp_probe()
258 clock->ptp_info = (struct ptp_clock_info) { in cavium_ptp_probe()
272 clock_cfg = readq(clock->reg_base + PTP_CLOCK_CFG); in cavium_ptp_probe()
274 writeq(clock_cfg, clock->reg_base + PTP_CLOCK_CFG); in cavium_ptp_probe()
276 clock_comp = ((u64)1000000000ull << 32) / clock->clock_rate; in cavium_ptp_probe()
277 writeq(clock_comp, clock->reg_base + PTP_CLOCK_COMP); in cavium_ptp_probe()
279 clock->ptp_clock = ptp_clock_register(&clock->ptp_info, dev); in cavium_ptp_probe()
280 if (IS_ERR(clock->ptp_clock)) { in cavium_ptp_probe()
281 err = PTR_ERR(clock->ptp_clock); in cavium_ptp_probe()
285 pci_set_drvdata(pdev, clock); in cavium_ptp_probe()
289 clock_cfg = readq(clock->reg_base + PTP_CLOCK_CFG); in cavium_ptp_probe()
291 writeq(clock_cfg, clock->reg_base + PTP_CLOCK_CFG); in cavium_ptp_probe()
295 devm_kfree(dev, clock); in cavium_ptp_probe()
310 struct cavium_ptp *clock = pci_get_drvdata(pdev); in cavium_ptp_remove() local
313 if (IS_ERR_OR_NULL(clock)) in cavium_ptp_remove()
316 ptp_clock_unregister(clock->ptp_clock); in cavium_ptp_remove()
318 clock_cfg = readq(clock->reg_base + PTP_CLOCK_CFG); in cavium_ptp_remove()
320 writeq(clock_cfg, clock->reg_base + PTP_CLOCK_CFG); in cavium_ptp_remove()