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;
|
struct idt82p33 *idt82p33 = channel->idt82p33;
|
||||||
unsigned char buf[5] = {0};
|
unsigned char buf[5] = {0};
|
||||||
int neg_adj = 0;
|
|
||||||
int err, i;
|
int err, i;
|
||||||
s64 fcw;
|
s64 fcw;
|
||||||
|
|
||||||
|
@ -340,16 +339,9 @@ static int _idt82p33_adjfine(struct idt82p33_channel *channel, long scaled_ppm)
|
||||||
* FCW = -------------
|
* FCW = -------------
|
||||||
* 168 * 2^4
|
* 168 * 2^4
|
||||||
*/
|
*/
|
||||||
if (scaled_ppm < 0) {
|
|
||||||
neg_adj = 1;
|
|
||||||
scaled_ppm = -scaled_ppm;
|
|
||||||
}
|
|
||||||
|
|
||||||
fcw = scaled_ppm * 244140625ULL;
|
fcw = scaled_ppm * 244140625ULL;
|
||||||
fcw = div_u64(fcw, 2688);
|
fcw = div_s64(fcw, 2688);
|
||||||
|
|
||||||
if (neg_adj)
|
|
||||||
fcw = -fcw;
|
|
||||||
|
|
||||||
for (i = 0; i < 5; i++) {
|
for (i = 0; i < 5; i++) {
|
||||||
buf[i] = fcw & 0xff;
|
buf[i] = fcw & 0xff;
|
||||||
|
|
Loading…
Reference in New Issue