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 cac1ba2f3e22a39ba08c9b9fb40e6c36d2495721..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>
@@ -22,7 +23,7 @@
 #define MBOX_MAX_SIG_LEN       8
 #define MBOX_MAX_MSG_LEN       128
 #define MBOX_BYTES_PER_LINE    16
-#define MBOX_HEXDUMP_LINE_LEN  ((MBOX_BYTES_PER_LINE * 4) + 2)
+#define MBOX_HEXDUMP_LINE_LEN  ((MBOX_BYTES_PER_LINE * 4) + 2)
 #define MBOX_HEXDUMP_MAX_LEN   (MBOX_HEXDUMP_LINE_LEN *                \
                                 (MBOX_MAX_MSG_LEN / MBOX_BYTES_PER_LINE))
 
@@ -53,7 +54,7 @@ static ssize_t mbox_test_signal_write(struct file *filp,
 
        if (count > MBOX_MAX_SIG_LEN) {
                dev_err(tdev->dev,
-                       "Signal length %d greater than max allowed %d\n",
+                       "Signal length %zd greater than max allowed %d\n",
                        count, MBOX_MAX_SIG_LEN);
                return -EINVAL;
        }
@@ -92,7 +93,7 @@ static ssize_t mbox_test_message_write(struct file *filp,
 
        if (count > MBOX_MAX_MSG_LEN) {
                dev_err(tdev->dev,
-                       "Message length %d greater than max allowed %d\n",
+                       "Message length %zd greater than max allowed %d\n",
                        count, MBOX_MAX_MSG_LEN);
                return -EINVAL;
        }
@@ -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);
        }
 }
 
@@ -303,7 +303,7 @@ static int mbox_test_probe(struct platform_device *pdev)
        tdev->tx_channel = mbox_test_request_channel(pdev, "tx");
        tdev->rx_channel = mbox_test_request_channel(pdev, "rx");
 
-       if (!tdev->tx_channel && !tdev->tx_channel)
+       if (!tdev->tx_channel && !tdev->rx_channel)
                return -EPROBE_DEFER;
 
        tdev->dev = &pdev->dev;