Commit dcf61469 authored by Jonathan Lemon's avatar Jonathan Lemon Committed by David S. Miller

ptp: ocp: Add third timestamper

The firmware may provide a third signal timestamper, so make it
available for use.
Signed-off-by: default avatarJonathan Lemon <jonathan.lemon@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent bceff290
...@@ -162,6 +162,7 @@ struct ptp_ocp { ...@@ -162,6 +162,7 @@ struct ptp_ocp {
struct ptp_ocp_ext_src *pps; struct ptp_ocp_ext_src *pps;
struct ptp_ocp_ext_src *ts0; struct ptp_ocp_ext_src *ts0;
struct ptp_ocp_ext_src *ts1; struct ptp_ocp_ext_src *ts1;
struct ptp_ocp_ext_src *ts2;
struct img_reg __iomem *image; struct img_reg __iomem *image;
struct ptp_clock *ptp; struct ptp_clock *ptp;
struct ptp_clock_info ptp_info; struct ptp_clock_info ptp_info;
...@@ -228,7 +229,7 @@ static int ptp_ocp_ts_enable(void *priv, bool enable); ...@@ -228,7 +229,7 @@ static int ptp_ocp_ts_enable(void *priv, bool enable);
* 3: GPS * 3: GPS
* 4: GPS2 (n/c) * 4: GPS2 (n/c)
* 5: MAC * 5: MAC
* 6: N/C * 6: TS2
* 7: I2C controller * 7: I2C controller
* 8: HWICAP * 8: HWICAP
* 9: SPI Flash * 9: SPI Flash
...@@ -257,6 +258,15 @@ static struct ocp_resource ocp_fb_resource[] = { ...@@ -257,6 +258,15 @@ static struct ocp_resource ocp_fb_resource[] = {
.enable = ptp_ocp_ts_enable, .enable = ptp_ocp_ts_enable,
}, },
}, },
{
OCP_EXT_RESOURCE(ts2),
.offset = 0x01060000, .size = 0x10000, .irq_vec = 6,
.extra = &(struct ptp_ocp_ext_info) {
.index = 2,
.irq_fcn = ptp_ocp_ts_irq,
.enable = ptp_ocp_ts_enable,
},
},
{ {
OCP_MEM_RESOURCE(pps_to_ext), OCP_MEM_RESOURCE(pps_to_ext),
.offset = 0x01030000, .size = 0x10000, .offset = 0x01030000, .size = 0x10000,
...@@ -497,6 +507,9 @@ ptp_ocp_enable(struct ptp_clock_info *ptp_info, struct ptp_clock_request *rq, ...@@ -497,6 +507,9 @@ ptp_ocp_enable(struct ptp_clock_info *ptp_info, struct ptp_clock_request *rq,
case 1: case 1:
ext = bp->ts1; ext = bp->ts1;
break; break;
case 2:
ext = bp->ts2;
break;
} }
break; break;
case PTP_CLK_REQ_PPS: case PTP_CLK_REQ_PPS:
...@@ -524,7 +537,7 @@ static const struct ptp_clock_info ptp_ocp_clock_info = { ...@@ -524,7 +537,7 @@ static const struct ptp_clock_info ptp_ocp_clock_info = {
.adjphase = ptp_ocp_adjphase, .adjphase = ptp_ocp_adjphase,
.enable = ptp_ocp_enable, .enable = ptp_ocp_enable,
.pps = true, .pps = true,
.n_ext_ts = 2, .n_ext_ts = 3,
}; };
static void static void
...@@ -1407,6 +1420,8 @@ ptp_ocp_detach(struct ptp_ocp *bp) ...@@ -1407,6 +1420,8 @@ ptp_ocp_detach(struct ptp_ocp *bp)
ptp_ocp_unregister_ext(bp->ts0); ptp_ocp_unregister_ext(bp->ts0);
if (bp->ts1) if (bp->ts1)
ptp_ocp_unregister_ext(bp->ts1); ptp_ocp_unregister_ext(bp->ts1);
if (bp->ts2)
ptp_ocp_unregister_ext(bp->ts2);
if (bp->pps) if (bp->pps)
ptp_ocp_unregister_ext(bp->pps); ptp_ocp_unregister_ext(bp->pps);
if (bp->gnss_port != -1) if (bp->gnss_port != -1)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment