summaryrefslogtreecommitdiff
path: root/recipes-kernel/linux
diff options
context:
space:
mode:
authorJohn Klug <john.klug@multitech.com>2020-10-15 15:39:08 -0500
committerJohn Klug <john.klug@multitech.com>2021-06-23 05:43:34 -0500
commit56f393a8ac185e24c6799a0979235166eb912956 (patch)
treedd9eb153199d569c7394faa62b182d1d4b15ca3c /recipes-kernel/linux
parent13d1e902ace100c20cc5dab14915e8e74c4f4aac (diff)
downloadmeta-multitech-atmel-56f393a8ac185e24c6799a0979235166eb912956.tar.gz
meta-multitech-atmel-56f393a8ac185e24c6799a0979235166eb912956.tar.bz2
meta-multitech-atmel-56f393a8ac185e24c6799a0979235166eb912956.zip
atmel-mci patch for Linux
Diffstat (limited to 'recipes-kernel/linux')
-rw-r--r--recipes-kernel/linux/linux-at91-4.9.87/linux-4.9-atmel-mci-end.patch56
-rw-r--r--recipes-kernel/linux/linux-at91_4.9.87.bb1
2 files changed, 57 insertions, 0 deletions
diff --git a/recipes-kernel/linux/linux-at91-4.9.87/linux-4.9-atmel-mci-end.patch b/recipes-kernel/linux/linux-at91-4.9.87/linux-4.9-atmel-mci-end.patch
new file mode 100644
index 0000000..f775066
--- /dev/null
+++ b/recipes-kernel/linux/linux-at91-4.9.87/linux-4.9-atmel-mci-end.patch
@@ -0,0 +1,56 @@
+Upstream commit ae460c115b7aa50c9a36cf78fced07b27962c9d0 ]
+
+On our AT91SAM9260 board we use the same sdio bus for wifi and for the
+sd card slot. This caused the atmel-mci to give the following splat on
+the serial console:
+
+ ------------[ cut here ]------------
+ WARNING: CPU: 0 PID: 538 at drivers/mmc/host/atmel-mci.c:859 atmci_send_command+0x24/0x44
+ Modules linked in:
+ CPU: 0 PID: 538 Comm: mmcqd/0 Not tainted 4.14.76 #14
+ Hardware name: Atmel AT91SAM9
+ [<c000fccc>] (unwind_backtrace) from [<c000d3dc>] (show_stack+0x10/0x14)
+ [<c000d3dc>] (show_stack) from [<c0017644>] (__warn+0xd8/0xf4)
+ [<c0017644>] (__warn) from [<c0017704>] (warn_slowpath_null+0x1c/0x24)
+ [<c0017704>] (warn_slowpath_null) from [<c033bb9c>] (atmci_send_command+0x24/0x44)
+ [<c033bb9c>] (atmci_send_command) from [<c033e984>] (atmci_start_request+0x1f4/0x2dc)
+ [<c033e984>] (atmci_start_request) from [<c033f3b4>] (atmci_request+0xf0/0x164)
+ [<c033f3b4>] (atmci_request) from [<c0327108>] (mmc_start_request+0x280/0x2d0)
+ [<c0327108>] (mmc_start_request) from [<c032800c>] (mmc_start_areq+0x230/0x330)
+ [<c032800c>] (mmc_start_areq) from [<c03366f8>] (mmc_blk_issue_rw_rq+0xc4/0x310)
+ [<c03366f8>] (mmc_blk_issue_rw_rq) from [<c03372c4>] (mmc_blk_issue_rq+0x118/0x5ac)
+ [<c03372c4>] (mmc_blk_issue_rq) from [<c033781c>] (mmc_queue_thread+0xc4/0x118)
+ [<c033781c>] (mmc_queue_thread) from [<c002daf8>] (kthread+0x100/0x118)
+ [<c002daf8>] (kthread) from [<c000a580>] (ret_from_fork+0x14/0x34)
+ ---[ end trace 594371ddfa284bd6 ]---
+
+This is:
+ WARN_ON(host->cmd);
+
+This was fixed on our board by letting atmci_request_end determine what
+state we are in. Instead of unconditionally setting it to STATE_IDLE on
+STATE_END_REQUEST.
+
+Signed-off-by: Jonas Danielsson <jonas@orbital-systems.com>
+Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>d
+==============================================================================
+diff -Naru orig/drivers/mmc/host/atmel-mci.c new/drivers/mmc/host/atmel-mci.c
+--- orig/drivers/mmc/host/atmel-mci.c 2020-09-30 11:23:25.946826212 -0500
++++ new/drivers/mmc/host/atmel-mci.c 2020-09-30 11:22:37.358827650 -0500
+@@ -1984,13 +1984,14 @@
+ }
+
+ atmci_request_end(host, host->mrq);
+- state = STATE_IDLE;
++ goto unlock; /* atmci_request_end() sets host->state */
+ break;
+ }
+ } while (state != prev_state);
+
+ host->state = state;
+
++unlock:
+ spin_unlock(&host->lock);
+ }
+
diff --git a/recipes-kernel/linux/linux-at91_4.9.87.bb b/recipes-kernel/linux/linux-at91_4.9.87.bb
index 62fb94b..c4ae06b 100644
--- a/recipes-kernel/linux/linux-at91_4.9.87.bb
+++ b/recipes-kernel/linux/linux-at91_4.9.87.bb
@@ -50,6 +50,7 @@ COMMON_PATCHES = " \
file://0001-linux-4.9-quectel_qmi_wwan_support.patch \
file://0002-linux-4.9-telit_print_qmi_wwan.patch \
file://make-kernel-reproducible.patch \
+ file://linux-4.9-atmel-mci-end.patch \
file://i2c-at91.conf \
"