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

Also removes PEROUT_ENABLE_OUTPUT_MASK

Signed-off-by: Min Li <min.li.xe@renesas.com>
Acked-by: Richard Cochran <richardcochran@gmail.com>
Link: https://lore.kernel.org/r/1652712427-14703-2-git-send-email-min.li.xe@renesas.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
Min Li 2022-05-16 10:47:07 -04:00 committed by Jakub Kicinski
parent bec6759252
commit 7c7dcd66c5
2 changed files with 2 additions and 32 deletions

View File

@ -1352,43 +1352,15 @@ 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);
err = idtcm_output_enable(channel, enable, perout->index);
if (err) {
dev_err(idtcm->dev, "Unable to set output enable");
@ -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);

View File

@ -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)