mirror of https://gitee.com/openkylin/linux.git
ptp: idt82p33: optimize _idt82p33_adjfine
Use div_s64 so that the neg_adj is not needed. Signed-off-by: Min Li <min.li.xe@renesas.com> Acked-by: Richard Cochran <richardcochran@gmail.com> Link: https://lore.kernel.org/r/1604634729-24960-3-git-send-email-min.li.xe@renesas.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
e4c6eb6834
commit
6c196f36f5
|
@ -320,7 +320,6 @@ static int _idt82p33_adjfine(struct idt82p33_channel *channel, long scaled_ppm)
|
|||
{
|
||||
struct idt82p33 *idt82p33 = channel->idt82p33;
|
||||
unsigned char buf[5] = {0};
|
||||
int neg_adj = 0;
|
||||
int err, i;
|
||||
s64 fcw;
|
||||
|
||||
|
@ -340,16 +339,9 @@ static int _idt82p33_adjfine(struct idt82p33_channel *channel, long scaled_ppm)
|
|||
* FCW = -------------
|
||||
* 168 * 2^4
|
||||
*/
|
||||
if (scaled_ppm < 0) {
|
||||
neg_adj = 1;
|
||||
scaled_ppm = -scaled_ppm;
|
||||
}
|
||||
|
||||
fcw = scaled_ppm * 244140625ULL;
|
||||
fcw = div_u64(fcw, 2688);
|
||||
|
||||
if (neg_adj)
|
||||
fcw = -fcw;
|
||||
fcw = div_s64(fcw, 2688);
|
||||
|
||||
for (i = 0; i < 5; i++) {
|
||||
buf[i] = fcw & 0xff;
|
||||
|
|
Loading…
Reference in New Issue