Commit d92a8d7c authored by Dave Jiang's avatar Dave Jiang Committed by Vinod Koul
Browse files

ioatdma: Add 64bit chansts register read for ioat v3.3.



The channel status register for v3.3 is now 64bit. Use readq if available
on v3.3 platforms.

Signed-off-by: default avatarDave Jiang <dave.jiang@intel.com>
Acked-by: default avatarDan Williams <djbw@fb.com>
Signed-off-by: default avatarVinod Koul <vinod.koul@intel.com>
parent 0132bcef
Loading
Loading
Loading
Loading
+21 −1
Original line number Diff line number Diff line
@@ -201,7 +201,7 @@ ioat_chan_by_index(struct ioatdma_device *device, int index)
	return device->idx[index];
}

static inline u64 ioat_chansts(struct ioat_chan_common *chan)
static inline u64 ioat_chansts_32(struct ioat_chan_common *chan)
{
	u8 ver = chan->device->version;
	u64 status;
@@ -218,6 +218,26 @@ static inline u64 ioat_chansts(struct ioat_chan_common *chan)
	return status;
}

#if BITS_PER_LONG == 64

static inline u64 ioat_chansts(struct ioat_chan_common *chan)
{
	u8 ver = chan->device->version;
	u64 status;

	 /* With IOAT v3.3 the status register is 64bit.  */
	if (ver >= IOAT_VER_3_3)
		status = readq(chan->reg_base + IOAT_CHANSTS_OFFSET(ver));
	else
		status = ioat_chansts_32(chan);

	return status;
}

#else
#define ioat_chansts ioat_chansts_32
#endif

static inline void ioat_start(struct ioat_chan_common *chan)
{
	u8 ver = chan->device->version;