OSDN Git Service

ptp: idt82p33: optimize _idt82p33_adjfine
authorMin Li <min.li.xe@renesas.com>
Fri, 6 Nov 2020 03:52:09 +0000 (22:52 -0500)
committerJakub Kicinski <kuba@kernel.org>
Sat, 7 Nov 2020 21:10:31 +0000 (13:10 -0800)
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>
drivers/ptp/ptp_idt82p33.c

index 223bc11..c1c959f 100644 (file)
@@ -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;