|
@@ -3343,11 +3343,10 @@ _base_mpi_ep_writeq(__u64 b, volatile void __iomem *addr,
|
|
|
spinlock_t *writeq_lock)
|
|
|
{
|
|
|
unsigned long flags;
|
|
|
- __u64 data_out = b;
|
|
|
|
|
|
spin_lock_irqsave(writeq_lock, flags);
|
|
|
- writel((u32)(data_out), addr);
|
|
|
- writel((u32)(data_out >> 32), (addr + 4));
|
|
|
+ __raw_writel((u32)(b), addr);
|
|
|
+ __raw_writel((u32)(b >> 32), (addr + 4));
|
|
|
mmiowb();
|
|
|
spin_unlock_irqrestore(writeq_lock, flags);
|
|
|
}
|
|
@@ -3367,7 +3366,8 @@ _base_mpi_ep_writeq(__u64 b, volatile void __iomem *addr,
|
|
|
static inline void
|
|
|
_base_writeq(__u64 b, volatile void __iomem *addr, spinlock_t *writeq_lock)
|
|
|
{
|
|
|
- writeq(b, addr);
|
|
|
+ __raw_writeq(b, addr);
|
|
|
+ mmiowb();
|
|
|
}
|
|
|
#else
|
|
|
static inline void
|
|
@@ -5268,7 +5268,7 @@ _base_handshake_req_reply_wait(struct MPT3SAS_ADAPTER *ioc, int request_bytes,
|
|
|
|
|
|
/* send message 32-bits at a time */
|
|
|
for (i = 0, failed = 0; i < request_bytes/4 && !failed; i++) {
|
|
|
- writel((u32)(request[i]), &ioc->chip->Doorbell);
|
|
|
+ writel(cpu_to_le32(request[i]), &ioc->chip->Doorbell);
|
|
|
if ((_base_wait_for_doorbell_ack(ioc, 5)))
|
|
|
failed = 1;
|
|
|
}
|
|
@@ -5289,7 +5289,7 @@ _base_handshake_req_reply_wait(struct MPT3SAS_ADAPTER *ioc, int request_bytes,
|
|
|
}
|
|
|
|
|
|
/* read the first two 16-bits, it gives the total length of the reply */
|
|
|
- reply[0] = (u16)(readl(&ioc->chip->Doorbell)
|
|
|
+ reply[0] = le16_to_cpu(readl(&ioc->chip->Doorbell)
|
|
|
& MPI2_DOORBELL_DATA_MASK);
|
|
|
writel(0, &ioc->chip->HostInterruptStatus);
|
|
|
if ((_base_wait_for_doorbell_int(ioc, 5))) {
|
|
@@ -5298,7 +5298,7 @@ _base_handshake_req_reply_wait(struct MPT3SAS_ADAPTER *ioc, int request_bytes,
|
|
|
ioc->name, __LINE__);
|
|
|
return -EFAULT;
|
|
|
}
|
|
|
- reply[1] = (u16)(readl(&ioc->chip->Doorbell)
|
|
|
+ reply[1] = le16_to_cpu(readl(&ioc->chip->Doorbell)
|
|
|
& MPI2_DOORBELL_DATA_MASK);
|
|
|
writel(0, &ioc->chip->HostInterruptStatus);
|
|
|
|
|
@@ -5312,7 +5312,7 @@ _base_handshake_req_reply_wait(struct MPT3SAS_ADAPTER *ioc, int request_bytes,
|
|
|
if (i >= reply_bytes/2) /* overflow case */
|
|
|
readl(&ioc->chip->Doorbell);
|
|
|
else
|
|
|
- reply[i] = (u16)(readl(&ioc->chip->Doorbell)
|
|
|
+ reply[i] = le16_to_cpu(readl(&ioc->chip->Doorbell)
|
|
|
& MPI2_DOORBELL_DATA_MASK);
|
|
|
writel(0, &ioc->chip->HostInterruptStatus);
|
|
|
}
|