Commit 7c7dcd66 authored by Min Li's avatar Min Li Committed by Jakub Kicinski
Browse files

ptp: ptp_clockmatrix: return -EBUSY if phase pull-in is in progress

parent bec67592
Loading
Loading
Loading
Loading
+2 −30
Original line number Diff line number Diff line
@@ -1352,42 +1352,14 @@ static int idtcm_output_enable(struct idtcm_channel *channel,
	return idtcm_write(idtcm, (u16)base, OUT_CTRL_1, &val, sizeof(val));
}

static int idtcm_output_mask_enable(struct idtcm_channel *channel,
				    bool enable)
{
	u16 mask;
	int err;
	u8 outn;

	mask = channel->output_mask;
	outn = 0;

	while (mask) {
		if (mask & 0x1) {
			err = idtcm_output_enable(channel, enable, outn);
			if (err)
				return err;
		}

		mask >>= 0x1;
		outn++;
	}

	return 0;
}

static int idtcm_perout_enable(struct idtcm_channel *channel,
			       struct ptp_perout_request *perout,
			       bool enable)
{
	struct idtcm *idtcm = channel->idtcm;
	unsigned int flags = perout->flags;
	struct timespec64 ts = {0, 0};
	int err;

	if (flags == PEROUT_ENABLE_OUTPUT_MASK)
		err = idtcm_output_mask_enable(channel, enable);
	else
	err = idtcm_output_enable(channel, enable, perout->index);

	if (err) {
@@ -1892,7 +1864,7 @@ static int idtcm_adjtime(struct ptp_clock_info *ptp, s64 delta)
	int err;

	if (channel->phase_pull_in == true)
		return 0;
		return -EBUSY;

	mutex_lock(idtcm->lock);

+0 −2
Original line number Diff line number Diff line
@@ -54,8 +54,6 @@
#define LOCK_TIMEOUT_MS			(2000)
#define LOCK_POLL_INTERVAL_MS		(10)

#define PEROUT_ENABLE_OUTPUT_MASK	(0xdeadbeef)

#define IDTCM_MAX_WRITE_COUNT		(512)

#define PHASE_PULL_IN_MAX_PPB		(144000)