Lines Matching full:ptp

2 /* Marvell PTP driver
13 #include "ptp.h"
17 #define DRV_NAME "Marvell PTP Driver"
42 static struct ptp *first_ptp_block;
51 /* To get the input clock frequency with which PTP co-processor in get_clock_rate()
78 struct ptp *ptp_get(void) in ptp_get()
80 struct ptp *ptp = first_ptp_block; in ptp_get() local
82 /* Check PTP block is present in hardware */ in ptp_get()
85 /* Check driver is bound to PTP block */ in ptp_get()
86 if (!ptp) in ptp_get()
87 ptp = ERR_PTR(-EPROBE_DEFER); in ptp_get()
89 return ptp; in ptp_get()
92 void ptp_put(struct ptp *ptp) in ptp_put() argument
94 if (!ptp) in ptp_put()
97 pci_dev_put(ptp->pdev); in ptp_put()
100 static int ptp_adjfine(struct ptp *ptp, long scaled_ppm) in ptp_adjfine() argument
112 /* The hardware adds the clock compensation value to the PTP clock in ptp_adjfine()
126 comp = ((u64)1000000000ull << 32) / ptp->clock_rate; in ptp_adjfine()
135 writeq(comp, ptp->reg_base + PTP_CLOCK_COMP); in ptp_adjfine()
140 static int ptp_get_clock(struct ptp *ptp, u64 *clk) in ptp_get_clock() argument
142 /* Return the current PTP clock */ in ptp_get_clock()
143 *clk = readq(ptp->reg_base + PTP_CLOCK_HI); in ptp_get_clock()
152 struct ptp *ptp; in ptp_probe() local
157 ptp = devm_kzalloc(dev, sizeof(*ptp), GFP_KERNEL); in ptp_probe()
158 if (!ptp) { in ptp_probe()
163 ptp->pdev = pdev; in ptp_probe()
173 ptp->reg_base = pcim_iomap_table(pdev)[PCI_PTP_BAR_NO]; in ptp_probe()
175 ptp->clock_rate = get_clock_rate(); in ptp_probe()
177 /* Enable PTP clock */ in ptp_probe()
178 clock_cfg = readq(ptp->reg_base + PTP_CLOCK_CFG); in ptp_probe()
180 writeq(clock_cfg, ptp->reg_base + PTP_CLOCK_CFG); in ptp_probe()
182 clock_comp = ((u64)1000000000ull << 32) / ptp->clock_rate; in ptp_probe()
184 writeq(clock_comp, ptp->reg_base + PTP_CLOCK_COMP); in ptp_probe()
186 pci_set_drvdata(pdev, ptp); in ptp_probe()
188 first_ptp_block = ptp; in ptp_probe()
193 devm_kfree(dev, ptp); in ptp_probe()
211 struct ptp *ptp = pci_get_drvdata(pdev); in ptp_remove() local
214 if (IS_ERR_OR_NULL(ptp)) in ptp_remove()
217 /* Disable PTP clock */ in ptp_remove()
218 clock_cfg = readq(ptp->reg_base + PTP_CLOCK_CFG); in ptp_remove()
220 writeq(clock_cfg, ptp->reg_base + PTP_CLOCK_CFG); in ptp_remove()
258 /* This function is the PTP mailbox handler invoked when in rvu_mbox_handler_ptp_op()
260 * It is used by netdev driver to get the PTP clock and to set in rvu_mbox_handler_ptp_op()
262 * notion of whether the driver is bound to ptp device below in rvu_mbox_handler_ptp_op()
265 if (!rvu->ptp) in rvu_mbox_handler_ptp_op()
270 err = ptp_adjfine(rvu->ptp, req->scaled_ppm); in rvu_mbox_handler_ptp_op()
273 err = ptp_get_clock(rvu->ptp, &rsp->clk); in rvu_mbox_handler_ptp_op()