brcm2708: update to latest patches from RPi Foundation
[openwrt/staging/chunkeey.git] / target / linux / brcm2708 / patches-4.19 / 950-0163-mmc-bcm2835-sdhost-Fix-warnings-on-arm64.patch
diff --git a/target/linux/brcm2708/patches-4.19/950-0163-mmc-bcm2835-sdhost-Fix-warnings-on-arm64.patch b/target/linux/brcm2708/patches-4.19/950-0163-mmc-bcm2835-sdhost-Fix-warnings-on-arm64.patch
new file mode 100644 (file)
index 0000000..12e1289
--- /dev/null
@@ -0,0 +1,252 @@
+From c961f0534bdf659108eaf3352989683411767611 Mon Sep 17 00:00:00 2001
+From: Phil Elwell <phil@raspberrypi.org>
+Date: Mon, 12 Nov 2018 22:54:40 +0000
+Subject: [PATCH] mmc: bcm2835-sdhost: Fix warnings on arm64
+
+Signed-off-by: Phil Elwell <phil@raspberrypi.org>
+---
+ drivers/mmc/host/bcm2835-sdhost.c | 56 +++++++++++++++----------------
+ 1 file changed, 28 insertions(+), 28 deletions(-)
+
+--- a/drivers/mmc/host/bcm2835-sdhost.c
++++ b/drivers/mmc/host/bcm2835-sdhost.c
+@@ -247,7 +247,7 @@ static void log_init(struct device *dev,
+                                            GFP_KERNEL);
+       if (sdhost_log_buf) {
+               pr_info("sdhost: log_buf @ %p (%x)\n",
+-                      sdhost_log_buf, sdhost_log_addr);
++                      sdhost_log_buf, (u32)sdhost_log_addr);
+               timer_base = ioremap_nocache(bus_to_phys + 0x7e003000, SZ_4K);
+               if (!timer_base)
+                       pr_err("sdhost: failed to remap timer\n");
+@@ -301,7 +301,7 @@ static void log_dump(void)
+       }
+ }
+-#define log_event(event, param1, param2) log_event_impl(event, param1, param2)
++#define log_event(event, param1, param2) log_event_impl(event, (u32)(uintptr_t)param1, (u32)(uintptr_t)param2)
+ #else
+@@ -527,7 +527,7 @@ static void bcm2835_sdhost_dma_complete(
+       unsigned long flags;
+       spin_lock_irqsave(&host->lock, flags);
+-      log_event("DMA<", (u32)host->data, bcm2835_sdhost_read(host, SDHSTS));
++      log_event("DMA<", host->data, bcm2835_sdhost_read(host, SDHSTS));
+       log_event("DMA ", bcm2835_sdhost_read(host, SDCMD),
+                 bcm2835_sdhost_read(host, SDEDM));
+@@ -559,7 +559,7 @@ static void bcm2835_sdhost_dma_complete(
+       bcm2835_sdhost_finish_data(host);
+-      log_event("DMA>", (u32)host->data, 0);
++      log_event("DMA>", host->data, 0);
+       spin_unlock_irqrestore(&host->lock, flags);
+ }
+@@ -748,7 +748,7 @@ static void bcm2835_sdhost_transfer_pio(
+       u32 sdhsts;
+       bool is_read;
+       BUG_ON(!host->data);
+-      log_event("XFP<", (u32)host->data, host->blocks);
++      log_event("XFP<", host->data, host->blocks);
+       is_read = (host->data->flags & MMC_DATA_READ) != 0;
+       if (is_read)
+@@ -773,7 +773,7 @@ static void bcm2835_sdhost_transfer_pio(
+                      sdhsts);
+               host->data->error = -ETIMEDOUT;
+       }
+-      log_event("XFP>", (u32)host->data, host->blocks);
++      log_event("XFP>", host->data, host->blocks);
+ }
+ static void bcm2835_sdhost_prepare_dma(struct bcm2835_host *host,
+@@ -783,7 +783,7 @@ static void bcm2835_sdhost_prepare_dma(s
+       struct dma_async_tx_descriptor *desc = NULL;
+       struct dma_chan *dma_chan;
+-      log_event("PRD<", (u32)data, 0);
++      log_event("PRD<", data, 0);
+       pr_debug("bcm2835_sdhost_prepare_dma()\n");
+       dma_chan = host->dma_chan_rxtx;
+@@ -794,7 +794,7 @@ static void bcm2835_sdhost_prepare_dma(s
+               dir_data = DMA_TO_DEVICE;
+               dir_slave = DMA_MEM_TO_DEV;
+       }
+-      log_event("PRD1", (u32)dma_chan, 0);
++      log_event("PRD1", dma_chan, 0);
+       BUG_ON(!dma_chan->device);
+       BUG_ON(!dma_chan->device->dev);
+@@ -841,7 +841,7 @@ static void bcm2835_sdhost_prepare_dma(s
+               desc = dmaengine_prep_slave_sg(dma_chan, data->sg,
+                                              len, dir_slave,
+                                              DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
+-      log_event("PRD3", (u32)desc, 0);
++      log_event("PRD3", desc, 0);
+       if (desc) {
+               desc->callback = bcm2835_sdhost_dma_complete;
+@@ -850,12 +850,12 @@ static void bcm2835_sdhost_prepare_dma(s
+               host->dma_chan = dma_chan;
+               host->dma_dir = dir_data;
+       }
+-      log_event("PDM>", (u32)data, 0);
++      log_event("PDM>", data, 0);
+ }
+ static void bcm2835_sdhost_start_dma(struct bcm2835_host *host)
+ {
+-      log_event("SDMA", (u32)host->data, (u32)host->dma_chan);
++      log_event("SDMA", host->data, host->dma_chan);
+       dmaengine_submit(host->dma_desc);
+       dma_async_issue_pending(host->dma_chan);
+ }
+@@ -1079,7 +1079,7 @@ static void bcm2835_sdhost_finish_data(s
+       data = host->data;
+       BUG_ON(!data);
+-      log_event("FDA<", (u32)host->mrq, (u32)host->cmd);
++      log_event("FDA<", host->mrq, host->cmd);
+       pr_debug("finish_data(error %d, stop %d, sbc %d)\n",
+              data->error, data->stop ? 1 : 0,
+              host->mrq->sbc ? 1 : 0);
+@@ -1102,7 +1102,7 @@ static void bcm2835_sdhost_finish_data(s
+       }
+       else
+               bcm2835_sdhost_transfer_complete(host);
+-      log_event("FDA>", (u32)host->mrq, (u32)host->cmd);
++      log_event("FDA>", host->mrq, host->cmd);
+ }
+ static void bcm2835_sdhost_transfer_complete(struct bcm2835_host *host)
+@@ -1116,7 +1116,7 @@ static void bcm2835_sdhost_transfer_comp
+       data = host->data;
+       host->data = NULL;
+-      log_event("TCM<", (u32)data, data->error);
++      log_event("TCM<", data, data->error);
+       pr_debug("transfer_complete(error %d, stop %d)\n",
+              data->error, data->stop ? 1 : 0);
+@@ -1138,7 +1138,7 @@ static void bcm2835_sdhost_transfer_comp
+               bcm2835_sdhost_wait_transfer_complete(host);
+               tasklet_schedule(&host->finish_tasklet);
+       }
+-      log_event("TCM>", (u32)data, 0);
++      log_event("TCM>", data, 0);
+ }
+ /* If irq_flags is valid, the caller is in a thread context and is allowed
+@@ -1153,7 +1153,7 @@ static void bcm2835_sdhost_finish_comman
+       int timediff = 0;
+ #endif
+-      log_event("FCM<", (u32)host->mrq, (u32)host->cmd);
++      log_event("FCM<", host->mrq, host->cmd);
+       pr_debug("finish_command(%x)\n", bcm2835_sdhost_read(host, SDCMD));
+       BUG_ON(!host->cmd || !host->mrq);
+@@ -1310,7 +1310,7 @@ static void bcm2835_sdhost_finish_comman
+               else if (host->data_complete)
+                       bcm2835_sdhost_transfer_complete(host);
+       }
+-      log_event("FCM>", (u32)host->mrq, (u32)host->cmd);
++      log_event("FCM>", host->mrq, host->cmd);
+ }
+ static void bcm2835_sdhost_timeout(struct timer_list *t)
+@@ -1347,7 +1347,7 @@ static void bcm2835_sdhost_timeout(struc
+ static void bcm2835_sdhost_busy_irq(struct bcm2835_host *host, u32 intmask)
+ {
+-      log_event("IRQB", (u32)host->cmd, intmask);
++      log_event("IRQB", host->cmd, intmask);
+       if (!host->cmd) {
+               pr_err("%s: got command busy interrupt 0x%08x even "
+                       "though no command operation was in progress.\n",
+@@ -1400,7 +1400,7 @@ static void bcm2835_sdhost_data_irq(stru
+          data/space available FIFO status bits. It is therefore not
+          an error to get here when there is no data transfer in
+          progress. */
+-      log_event("IRQD", (u32)host->data, intmask);
++      log_event("IRQD", host->data, intmask);
+       if (!host->data)
+               return;
+@@ -1437,7 +1437,7 @@ static void bcm2835_sdhost_data_irq(stru
+ static void bcm2835_sdhost_block_irq(struct bcm2835_host *host, u32 intmask)
+ {
+-      log_event("IRQK", (u32)host->data, intmask);
++      log_event("IRQK", host->data, intmask);
+       if (!host->data) {
+               pr_err("%s: got block interrupt 0x%08x even "
+                       "though no data operation was in progress.\n",
+@@ -1695,10 +1695,10 @@ static void bcm2835_sdhost_request(struc
+       edm = bcm2835_sdhost_read(host, SDEDM);
+       fsm = edm & SDEDM_FSM_MASK;
+-      log_event("REQ<", (u32)mrq, edm);
++      log_event("REQ<", mrq, edm);
+       if ((fsm != SDEDM_FSM_IDENTMODE) &&
+           (fsm != SDEDM_FSM_DATAMODE)) {
+-              log_event("REQ!", (u32)mrq, edm);
++              log_event("REQ!", mrq, edm);
+               if (host->debug) {
+                       pr_warn("%s: previous command (%d) not complete (EDM %x)\n",
+                              mmc_hostname(host->mmc),
+@@ -1730,11 +1730,11 @@ static void bcm2835_sdhost_request(struc
+                       bcm2835_sdhost_finish_command(host, &flags);
+       }
+-      log_event("CMD ", (u32)mrq->cmd->opcode,
++      log_event("CMD ", mrq->cmd->opcode,
+                  mrq->data ? (u32)mrq->data->blksz : 0);
+       mmiowb();
+-      log_event("REQ>", (u32)mrq, 0);
++      log_event("REQ>", mrq, 0);
+       spin_unlock_irqrestore(&host->lock, flags);
+ }
+@@ -1790,7 +1790,7 @@ static void bcm2835_sdhost_cmd_wait_work
+       spin_lock_irqsave(&host->lock, flags);
+-      log_event("CWK<", (u32)host->cmd, (u32)host->mrq);
++      log_event("CWK<", host->cmd, host->mrq);
+       /*
+        * If this tasklet gets rescheduled while running, it will
+@@ -1805,7 +1805,7 @@ static void bcm2835_sdhost_cmd_wait_work
+       mmiowb();
+-      log_event("CWK>", (u32)host->cmd, 0);
++      log_event("CWK>", host->cmd, 0);
+       spin_unlock_irqrestore(&host->lock, flags);
+ }
+@@ -1821,7 +1821,7 @@ static void bcm2835_sdhost_tasklet_finis
+       spin_lock_irqsave(&host->lock, flags);
+-      log_event("TSK<", (u32)host->mrq, 0);
++      log_event("TSK<", host->mrq, 0);
+       /*
+        * If this tasklet gets rescheduled while running, it will
+        * be run again afterwards but without any active request.
+@@ -1889,7 +1889,7 @@ static void bcm2835_sdhost_tasklet_finis
+       }
+       mmc_request_done(host->mmc, mrq);
+-      log_event("TSK>", (u32)mrq, 0);
++      log_event("TSK>", mrq, 0);
+ }
+ int bcm2835_sdhost_add_host(struct bcm2835_host *host)