mailbox: pl320: remove __raw IO
authorBen Dooks <ben.dooks@codethink.co.uk>
Wed, 22 Jun 2016 09:49:29 +0000 (10:49 +0100)
committerJassi Brar <jaswinder.singh@linaro.org>
Fri, 24 Jun 2016 08:02:31 +0000 (13:32 +0530)
The use of __raw IO accesors is not endian safe and should be used
sparingly. The relaxed variants should be as lightweight and also
are endian safe.

Note, this has not been run-time tested.

Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk>
Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Jassi Brar <jaswinder.singh@linaro.org>
drivers/mailbox/pl320-ipc.c

index f80acb36ff075ca6a25b398861d97993d32fd57b..2dbed87094d70797b6b972eb3f824f313bd8669e 100644 (file)
@@ -58,29 +58,29 @@ static ATOMIC_NOTIFIER_HEAD(ipc_notifier);
 
 static inline void set_destination(int source, int mbox)
 {
-       __raw_writel(CHAN_MASK(source), ipc_base + IPCMxDSET(mbox));
-       __raw_writel(CHAN_MASK(source), ipc_base + IPCMxMSET(mbox));
+       writel_relaxed(CHAN_MASK(source), ipc_base + IPCMxDSET(mbox));
+       writel_relaxed(CHAN_MASK(source), ipc_base + IPCMxMSET(mbox));
 }
 
 static inline void clear_destination(int source, int mbox)
 {
-       __raw_writel(CHAN_MASK(source), ipc_base + IPCMxDCLEAR(mbox));
-       __raw_writel(CHAN_MASK(source), ipc_base + IPCMxMCLEAR(mbox));
+       writel_relaxed(CHAN_MASK(source), ipc_base + IPCMxDCLEAR(mbox));
+       writel_relaxed(CHAN_MASK(source), ipc_base + IPCMxMCLEAR(mbox));
 }
 
 static void __ipc_send(int mbox, u32 *data)
 {
        int i;
        for (i = 0; i < 7; i++)
-               __raw_writel(data[i], ipc_base + IPCMxDR(mbox, i));
-       __raw_writel(0x1, ipc_base + IPCMxSEND(mbox));
+               writel_relaxed(data[i], ipc_base + IPCMxDR(mbox, i));
+       writel_relaxed(0x1, ipc_base + IPCMxSEND(mbox));
 }
 
 static u32 __ipc_rcv(int mbox, u32 *data)
 {
        int i;
        for (i = 0; i < 7; i++)
-               data[i] = __raw_readl(ipc_base + IPCMxDR(mbox, i));
+               data[i] = readl_relaxed(ipc_base + IPCMxDR(mbox, i));
        return data[1];
 }
 
@@ -112,15 +112,15 @@ static irqreturn_t ipc_handler(int irq, void *dev)
        u32 irq_stat;
        u32 data[7];
 
-       irq_stat = __raw_readl(ipc_base + IPCMMIS(1));
+       irq_stat = readl_relaxed(ipc_base + IPCMMIS(1));
        if (irq_stat & MBOX_MASK(IPC_TX_MBOX)) {
-               __raw_writel(0, ipc_base + IPCMxSEND(IPC_TX_MBOX));
+               writel_relaxed(0, ipc_base + IPCMxSEND(IPC_TX_MBOX));
                complete(&ipc_completion);
        }
        if (irq_stat & MBOX_MASK(IPC_RX_MBOX)) {
                __ipc_rcv(IPC_RX_MBOX, data);
                atomic_notifier_call_chain(&ipc_notifier, data[0], data + 1);
-               __raw_writel(2, ipc_base + IPCMxSEND(IPC_RX_MBOX));
+               writel_relaxed(2, ipc_base + IPCMxSEND(IPC_RX_MBOX));
        }
 
        return IRQ_HANDLED;
@@ -146,7 +146,7 @@ static int pl320_probe(struct amba_device *adev, const struct amba_id *id)
        if (ipc_base == NULL)
                return -ENOMEM;
 
-       __raw_writel(0, ipc_base + IPCMxSEND(IPC_TX_MBOX));
+       writel_relaxed(0, ipc_base + IPCMxSEND(IPC_TX_MBOX));
 
        ipc_irq = adev->irq[0];
        ret = request_irq(ipc_irq, ipc_handler, 0, dev_name(&adev->dev), NULL);
@@ -154,20 +154,20 @@ static int pl320_probe(struct amba_device *adev, const struct amba_id *id)
                goto err;
 
        /* Init slow mailbox */
-       __raw_writel(CHAN_MASK(A9_SOURCE),
-                       ipc_base + IPCMxSOURCE(IPC_TX_MBOX));
-       __raw_writel(CHAN_MASK(M3_SOURCE),
-                       ipc_base + IPCMxDSET(IPC_TX_MBOX));
-       __raw_writel(CHAN_MASK(M3_SOURCE) | CHAN_MASK(A9_SOURCE),
-                    ipc_base + IPCMxMSET(IPC_TX_MBOX));
+       writel_relaxed(CHAN_MASK(A9_SOURCE),
+                      ipc_base + IPCMxSOURCE(IPC_TX_MBOX));
+       writel_relaxed(CHAN_MASK(M3_SOURCE),
+                      ipc_base + IPCMxDSET(IPC_TX_MBOX));
+       writel_relaxed(CHAN_MASK(M3_SOURCE) | CHAN_MASK(A9_SOURCE),
+                      ipc_base + IPCMxMSET(IPC_TX_MBOX));
 
        /* Init receive mailbox */
-       __raw_writel(CHAN_MASK(M3_SOURCE),
-                       ipc_base + IPCMxSOURCE(IPC_RX_MBOX));
-       __raw_writel(CHAN_MASK(A9_SOURCE),
-                       ipc_base + IPCMxDSET(IPC_RX_MBOX));
-       __raw_writel(CHAN_MASK(M3_SOURCE) | CHAN_MASK(A9_SOURCE),
-                    ipc_base + IPCMxMSET(IPC_RX_MBOX));
+       writel_relaxed(CHAN_MASK(M3_SOURCE),
+                      ipc_base + IPCMxSOURCE(IPC_RX_MBOX));
+       writel_relaxed(CHAN_MASK(A9_SOURCE),
+                      ipc_base + IPCMxDSET(IPC_RX_MBOX));
+       writel_relaxed(CHAN_MASK(M3_SOURCE) | CHAN_MASK(A9_SOURCE),
+                      ipc_base + IPCMxMSET(IPC_RX_MBOX));
 
        return 0;
 err: