Lines Matching refs:ptp

50 static struct ptp *first_ptp_block;
53 struct ptp *ptp_get(void) in ptp_get()
55 struct ptp *ptp = first_ptp_block; in ptp_get() local
61 if (!ptp) in ptp_get()
62 ptp = ERR_PTR(-EPROBE_DEFER); in ptp_get()
64 return ptp; in ptp_get()
67 void ptp_put(struct ptp *ptp) in ptp_put() argument
69 if (!ptp) in ptp_put()
72 pci_dev_put(ptp->pdev); in ptp_put()
75 static int ptp_adjfine(struct ptp *ptp, long scaled_ppm) in ptp_adjfine() argument
101 comp = ((u64)1000000000ull << 32) / ptp->clock_rate; in ptp_adjfine()
110 writeq(comp, ptp->reg_base + PTP_CLOCK_COMP); in ptp_adjfine()
115 static int ptp_get_clock(struct ptp *ptp, u64 *clk) in ptp_get_clock() argument
118 *clk = readq(ptp->reg_base + PTP_CLOCK_HI); in ptp_get_clock()
123 void ptp_start(struct ptp *ptp, u64 sclk, u32 ext_clk_freq, u32 extts) in ptp_start() argument
129 if (!ptp) in ptp_start()
132 pdev = ptp->pdev; in ptp_start()
140 ptp->clock_rate = sclk * 1000000; in ptp_start()
143 clock_cfg = readq(ptp->reg_base + PTP_CLOCK_CFG); in ptp_start()
146 ptp->clock_rate = ext_clk_freq; in ptp_start()
161 writeq(clock_cfg, ptp->reg_base + PTP_CLOCK_CFG); in ptp_start()
164 writeq(0x1dcd650000000000, ptp->reg_base + PTP_PPS_HI_INCR); in ptp_start()
165 writeq(0x1dcd650000000000, ptp->reg_base + PTP_PPS_LO_INCR); in ptp_start()
167 clock_comp = ((u64)1000000000ull << 32) / ptp->clock_rate; in ptp_start()
169 writeq(clock_comp, ptp->reg_base + PTP_CLOCK_COMP); in ptp_start()
172 static int ptp_get_tstmp(struct ptp *ptp, u64 *clk) in ptp_get_tstmp() argument
174 *clk = readq(ptp->reg_base + PTP_TIMESTAMP); in ptp_get_tstmp()
179 static int ptp_set_thresh(struct ptp *ptp, u64 thresh) in ptp_set_thresh() argument
181 writeq(thresh, ptp->reg_base + PTP_PPS_THRESH_HI); in ptp_set_thresh()
190 struct ptp *ptp; in ptp_probe() local
193 ptp = devm_kzalloc(dev, sizeof(*ptp), GFP_KERNEL); in ptp_probe()
194 if (!ptp) { in ptp_probe()
199 ptp->pdev = pdev; in ptp_probe()
209 ptp->reg_base = pcim_iomap_table(pdev)[PCI_PTP_BAR_NO]; in ptp_probe()
211 pci_set_drvdata(pdev, ptp); in ptp_probe()
213 first_ptp_block = ptp; in ptp_probe()
218 devm_kfree(dev, ptp); in ptp_probe()
236 struct ptp *ptp = pci_get_drvdata(pdev); in ptp_remove() local
239 if (IS_ERR_OR_NULL(ptp)) in ptp_remove()
243 clock_cfg = readq(ptp->reg_base + PTP_CLOCK_CFG); in ptp_remove()
245 writeq(clock_cfg, ptp->reg_base + PTP_CLOCK_CFG); in ptp_remove()
290 if (!rvu->ptp) in rvu_mbox_handler_ptp_op()
295 err = ptp_adjfine(rvu->ptp, req->scaled_ppm); in rvu_mbox_handler_ptp_op()
298 err = ptp_get_clock(rvu->ptp, &rsp->clk); in rvu_mbox_handler_ptp_op()
301 err = ptp_get_tstmp(rvu->ptp, &rsp->clk); in rvu_mbox_handler_ptp_op()
304 err = ptp_set_thresh(rvu->ptp, req->thresh); in rvu_mbox_handler_ptp_op()