Skip to content

Commit

Permalink
dpaa2-ptp: add external trigger event support
Browse files Browse the repository at this point in the history
This patch is to add external trigger event support
for dpaa2-ptp driver with v2 dprtc_set_irq_mask() API.

Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Yangbo Lu authored and David S. Miller committed Dec 16, 2019
1 parent 9429439 commit 17568c6
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 1 deletion.
20 changes: 20 additions & 0 deletions drivers/net/ethernet/freescale/dpaa2/dpaa2-ptp.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,20 @@ static int dpaa2_ptp_enable(struct ptp_clock_info *ptp,
mc_dev = to_fsl_mc_device(dev);

switch (rq->type) {
case PTP_CLK_REQ_EXTTS:
switch (rq->extts.index) {
case 0:
bit = DPRTC_EVENT_ETS1;
break;
case 1:
bit = DPRTC_EVENT_ETS2;
break;
default:
return -EINVAL;
}
if (on)
extts_clean_up(ptp_qoriq, rq->extts.index, false);
break;
case PTP_CLK_REQ_PPS:
bit = DPRTC_EVENT_PPS;
break;
Expand Down Expand Up @@ -96,6 +110,12 @@ static irqreturn_t dpaa2_ptp_irq_handler_thread(int irq, void *priv)
ptp_clock_event(ptp_qoriq->clock, &event);
}

if (status & DPRTC_EVENT_ETS1)
extts_clean_up(ptp_qoriq, 0, true);

if (status & DPRTC_EVENT_ETS2)
extts_clean_up(ptp_qoriq, 1, true);

err = dprtc_clear_irq_status(mc_dev->mc_io, 0, mc_dev->mc_handle,
DPRTC_IRQ_INDEX, status);
if (unlikely(err)) {
Expand Down
4 changes: 3 additions & 1 deletion drivers/net/ethernet/freescale/dpaa2/dprtc-cmd.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,19 @@

/* Command versioning */
#define DPRTC_CMD_BASE_VERSION 1
#define DPRTC_CMD_VERSION_2 2
#define DPRTC_CMD_ID_OFFSET 4

#define DPRTC_CMD(id) (((id) << DPRTC_CMD_ID_OFFSET) | DPRTC_CMD_BASE_VERSION)
#define DPRTC_CMD_V2(id) (((id) << DPRTC_CMD_ID_OFFSET) | DPRTC_CMD_VERSION_2)

/* Command IDs */
#define DPRTC_CMDID_CLOSE DPRTC_CMD(0x800)
#define DPRTC_CMDID_OPEN DPRTC_CMD(0x810)

#define DPRTC_CMDID_SET_IRQ_ENABLE DPRTC_CMD(0x012)
#define DPRTC_CMDID_GET_IRQ_ENABLE DPRTC_CMD(0x013)
#define DPRTC_CMDID_SET_IRQ_MASK DPRTC_CMD(0x014)
#define DPRTC_CMDID_SET_IRQ_MASK DPRTC_CMD_V2(0x014)
#define DPRTC_CMDID_GET_IRQ_MASK DPRTC_CMD(0x015)
#define DPRTC_CMDID_GET_IRQ_STATUS DPRTC_CMD(0x016)
#define DPRTC_CMDID_CLEAR_IRQ_STATUS DPRTC_CMD(0x017)
Expand Down
2 changes: 2 additions & 0 deletions drivers/net/ethernet/freescale/dpaa2/dprtc.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ struct fsl_mc_io;
#define DPRTC_IRQ_INDEX 0

#define DPRTC_EVENT_PPS 0x08000000
#define DPRTC_EVENT_ETS1 0x00800000
#define DPRTC_EVENT_ETS2 0x00400000

int dprtc_open(struct fsl_mc_io *mc_io,
u32 cmd_flags,
Expand Down

0 comments on commit 17568c6

Please sign in to comment.