Merge tag 'pwm/for-4.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/thierry...
[firefly-linux-kernel-4.4.55.git] / drivers / mailbox / mailbox-test.c
index 22f2e40476b9031aefb0af7a51be00b8dea067cd..684ae17dcf392fb1cd90bd64b9813608b244ac61 100644 (file)
@@ -11,6 +11,7 @@
 
 #include <linux/debugfs.h>
 #include <linux/err.h>
+#include <linux/io.h>
 #include <linux/kernel.h>
 #include <linux/mailbox_client.h>
 #include <linux/module.h>
@@ -30,7 +31,7 @@ static struct dentry *root_debugfs_dir;
 
 struct mbox_test_device {
        struct device           *dev;
-       void                    *mmio;
+       void __iomem            *mmio;
        struct mbox_chan        *tx_channel;
        struct mbox_chan        *rx_channel;
        char                    *rx_buffer;
@@ -142,7 +143,7 @@ static ssize_t mbox_test_message_read(struct file *filp, char __user *userbuf,
        int l = 0;
        int ret;
 
-       touser = kzalloc(MBOX_HEXDUMP_MAX_LEN, GFP_KERNEL);
+       touser = kzalloc(MBOX_HEXDUMP_MAX_LEN + 1, GFP_KERNEL);
        if (!touser)
                return -ENOMEM;
 
@@ -220,11 +221,10 @@ static void mbox_test_receive_message(struct mbox_client *client, void *message)
 
        spin_lock_irqsave(&tdev->lock, flags);
        if (tdev->mmio) {
+               memcpy_fromio(tdev->rx_buffer, tdev->mmio, MBOX_MAX_MSG_LEN);
                print_hex_dump(KERN_INFO, "Client: Received [MMIO]: ",
                               DUMP_PREFIX_ADDRESS, MBOX_BYTES_PER_LINE, 1,
-                              tdev->mmio, MBOX_MAX_MSG_LEN, true);
-               memcpy(tdev->rx_buffer, tdev->mmio, MBOX_MAX_MSG_LEN);
-
+                              tdev->rx_buffer, MBOX_MAX_MSG_LEN, true);
        } else if (message) {
                print_hex_dump(KERN_INFO, "Client: Received [API]: ",
                               DUMP_PREFIX_ADDRESS, MBOX_BYTES_PER_LINE, 1,
@@ -240,9 +240,9 @@ static void mbox_test_prepare_message(struct mbox_client *client, void *message)
 
        if (tdev->mmio) {
                if (tdev->signal)
-                       memcpy(tdev->mmio, tdev->message, MBOX_MAX_MSG_LEN);
+                       memcpy_toio(tdev->mmio, tdev->message, MBOX_MAX_MSG_LEN);
                else
-                       memcpy(tdev->mmio, message, MBOX_MAX_MSG_LEN);
+                       memcpy_toio(tdev->mmio, message, MBOX_MAX_MSG_LEN);
        }
 }