Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e8d59efd authored by Harini Katakam's avatar Harini Katakam Committed by Greg Kroah-Hartman
Browse files

net: macb: Fix SUBNS increment and increase resolution



commit 7ad342bc58cc5197cd2f12a3c30b3949528c6d83 upstream.

The subns increment register has 24 bits as follows:
RegBit[15:0] = Subns[23:8]; RegBit[31:24] = Subns[7:0]

Fix the same in the driver and increase sub ns resolution to the
best capable, 24 bits. This should be the case on all GEM versions
that this PTP driver supports.

Signed-off-by: default avatarHarini Katakam <harini.katakam@xilinx.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent d29baef0
Loading
Loading
Loading
Loading
+5 −1
Original line number Original line Diff line number Diff line
@@ -499,7 +499,11 @@


/* Bitfields in TISUBN */
/* Bitfields in TISUBN */
#define GEM_SUBNSINCR_OFFSET			0
#define GEM_SUBNSINCR_OFFSET			0
#define GEM_SUBNSINCR_SIZE			16
#define GEM_SUBNSINCRL_OFFSET			24
#define GEM_SUBNSINCRL_SIZE			8
#define GEM_SUBNSINCRH_OFFSET			0
#define GEM_SUBNSINCRH_SIZE			16
#define GEM_SUBNSINCR_SIZE			24


/* Bitfields in TI */
/* Bitfields in TI */
#define GEM_NSINCR_OFFSET			0
#define GEM_NSINCR_OFFSET			0
+4 −1
Original line number Original line Diff line number Diff line
@@ -115,7 +115,10 @@ static int gem_tsu_incr_set(struct macb *bp, struct tsu_incr *incr_spec)
	 * to take effect.
	 * to take effect.
	 */
	 */
	spin_lock_irqsave(&bp->tsu_clk_lock, flags);
	spin_lock_irqsave(&bp->tsu_clk_lock, flags);
	gem_writel(bp, TISUBN, GEM_BF(SUBNSINCR, incr_spec->sub_ns));
	/* RegBit[15:0] = Subns[23:8]; RegBit[31:24] = Subns[7:0] */
	gem_writel(bp, TISUBN, GEM_BF(SUBNSINCRL, incr_spec->sub_ns) |
		   GEM_BF(SUBNSINCRH, (incr_spec->sub_ns >>
			  GEM_SUBNSINCRL_SIZE)));
	gem_writel(bp, TI, GEM_BF(NSINCR, incr_spec->ns));
	gem_writel(bp, TI, GEM_BF(NSINCR, incr_spec->ns));
	spin_unlock_irqrestore(&bp->tsu_clk_lock, flags);
	spin_unlock_irqrestore(&bp->tsu_clk_lock, flags);