Messages in this thread | | | Date | Sat, 17 Oct 2020 12:33:54 +0200 | From | Pavel Machek <> | Subject | Re: [PATCH net 1/4] ptp: ptp_idt82p33: update to support adjphase |
| |
Hi!
> +static int idt82p33_adjwritephase(struct ptp_clock_info *ptp, s32 > +offsetNs) {
adj_write_phase?
> + struct idt82p33_channel *channel = > + container_of(ptp, struct idt82p33_channel, caps); > + struct idt82p33 *idt82p33 = channel->idt82p33; > + s64 offsetInFs; > + s64 offsetRegVal; > + u8 val[4] = {0}; > + int err; > + > + offsetInFs = (s64)(-offsetNs) * 1000000; > + > + if (offsetInFs > WRITE_PHASE_OFFSET_LIMIT) > + offsetInFs = WRITE_PHASE_OFFSET_LIMIT; > + else if (offsetInFs < -WRITE_PHASE_OFFSET_LIMIT) > + offsetInFs = -WRITE_PHASE_OFFSET_LIMIT;
I'm sure we have macro for this.
> + /* Convert from phaseOffsetInFs to register value */ > + offsetRegVal = ((offsetInFs * 1000) / IDT_T0DPLL_PHASE_RESOL); > + > + val[0] = offsetRegVal & 0xFF; > + val[1] = (offsetRegVal >> 8) & 0xFF; > + val[2] = (offsetRegVal >> 16) & 0xFF; > + val[3] = (offsetRegVal >> 24) & 0x1F; > + val[3] |= PH_OFFSET_EN;
ThisIsReally far away from usual coding style.
Best regards, Pavel -- http://www.livejournal.com/~pavelmachek [unhandled content-type:application/pgp-signature] | |