+++ /dev/null
-From 90d5de8cca908bdf3ad2ecdacaf3c24753ebf786 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Fri, 8 Jan 2021 20:35:45 +0530
-Subject: i2c: i2c-qcom-geni: Add shutdown callback for i2c
-
-From: Roja Rani Yarubandi <rojay@codeaurora.org>
-
-[ Upstream commit e0371298ddc51761be257698554ea507ac8bf831 ]
-
-If the hardware is still accessing memory after SMMU translation
-is disabled (as part of smmu shutdown callback), then the
-IOVAs (I/O virtual address) which it was using will go on the bus
-as the physical addresses which will result in unknown crashes
-like NoC/interconnect errors.
-
-So, implement shutdown callback to i2c driver to stop on-going transfer
-and unmap DMA mappings during system "reboot" or "shutdown".
-
-Fixes: 37692de5d523 ("i2c: i2c-qcom-geni: Add bus driver for the Qualcomm GENI I2C controller")
-Signed-off-by: Roja Rani Yarubandi <rojay@codeaurora.org>
-Reviewed-by: Akash Asthana <akashast@codeaurora.org>
-Signed-off-by: Wolfram Sang <wsa@kernel.org>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/i2c/busses/i2c-qcom-geni.c | 34 ++++++++++++++++++++++++++++++
- 1 file changed, 34 insertions(+)
-
-diff --git a/drivers/i2c/busses/i2c-qcom-geni.c b/drivers/i2c/busses/i2c-qcom-geni.c
-index 4a6dd05d6dbf9..221cba687fe02 100644
---- a/drivers/i2c/busses/i2c-qcom-geni.c
-+++ b/drivers/i2c/busses/i2c-qcom-geni.c
-@@ -375,6 +375,32 @@ static void geni_i2c_tx_msg_cleanup(struct geni_i2c_dev *gi2c,
- }
- }
-
-+static void geni_i2c_stop_xfer(struct geni_i2c_dev *gi2c)
-+{
-+ int ret;
-+ u32 geni_status;
-+ struct i2c_msg *cur;
-+
-+ /* Resume device, as runtime suspend can happen anytime during transfer */
-+ ret = pm_runtime_get_sync(gi2c->se.dev);
-+ if (ret < 0) {
-+ dev_err(gi2c->se.dev, "Failed to resume device: %d\n", ret);
-+ return;
-+ }
-+
-+ geni_status = readl_relaxed(gi2c->se.base + SE_GENI_STATUS);
-+ if (geni_status & M_GENI_CMD_ACTIVE) {
-+ cur = gi2c->cur;
-+ geni_i2c_abort_xfer(gi2c);
-+ if (cur->flags & I2C_M_RD)
-+ geni_i2c_rx_msg_cleanup(gi2c, cur);
-+ else
-+ geni_i2c_tx_msg_cleanup(gi2c, cur);
-+ }
-+
-+ pm_runtime_put_sync_suspend(gi2c->se.dev);
-+}
-+
- static int geni_i2c_rx_one_msg(struct geni_i2c_dev *gi2c, struct i2c_msg *msg,
- u32 m_param)
- {
-@@ -654,6 +680,13 @@ static int geni_i2c_remove(struct platform_device *pdev)
- return 0;
- }
-
-+static void geni_i2c_shutdown(struct platform_device *pdev)
-+{
-+ struct geni_i2c_dev *gi2c = platform_get_drvdata(pdev);
-+
-+ geni_i2c_stop_xfer(gi2c);
-+}
-+
- static int __maybe_unused geni_i2c_runtime_suspend(struct device *dev)
- {
- int ret;
-@@ -718,6 +751,7 @@ MODULE_DEVICE_TABLE(of, geni_i2c_dt_match);
- static struct platform_driver geni_i2c_driver = {
- .probe = geni_i2c_probe,
- .remove = geni_i2c_remove,
-+ .shutdown = geni_i2c_shutdown,
- .driver = {
- .name = "geni_i2c",
- .pm = &geni_i2c_pm_ops,
---
-2.27.0
-
mmc-renesas_sdhi_internal_dmac-fix-dma-buffer-alignm.patch
arm-9046-1-decompressor-do-not-clear-sctlr.ntlsmd-fo.patch
i2c-qcom-geni-store-dma-mapping-data-in-geni_i2c_dev.patch
-i2c-i2c-qcom-geni-add-shutdown-callback-for-i2c.patch
amba-fix-resource-leak-for-drivers-without-.remove.patch
iommu-move-iotlb_sync_map-out-from-__iommu_map.patch
iommu-properly-pass-gfp_t-in-_iommu_map-to-avoid-ato.patch
+++ /dev/null
-From 0bf33f7664dba5df567a84e883e58f9f024d102e Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Fri, 8 Jan 2021 20:35:45 +0530
-Subject: i2c: i2c-qcom-geni: Add shutdown callback for i2c
-
-From: Roja Rani Yarubandi <rojay@codeaurora.org>
-
-[ Upstream commit e0371298ddc51761be257698554ea507ac8bf831 ]
-
-If the hardware is still accessing memory after SMMU translation
-is disabled (as part of smmu shutdown callback), then the
-IOVAs (I/O virtual address) which it was using will go on the bus
-as the physical addresses which will result in unknown crashes
-like NoC/interconnect errors.
-
-So, implement shutdown callback to i2c driver to stop on-going transfer
-and unmap DMA mappings during system "reboot" or "shutdown".
-
-Fixes: 37692de5d523 ("i2c: i2c-qcom-geni: Add bus driver for the Qualcomm GENI I2C controller")
-Signed-off-by: Roja Rani Yarubandi <rojay@codeaurora.org>
-Reviewed-by: Akash Asthana <akashast@codeaurora.org>
-Signed-off-by: Wolfram Sang <wsa@kernel.org>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/i2c/busses/i2c-qcom-geni.c | 34 ++++++++++++++++++++++++++++++
- 1 file changed, 34 insertions(+)
-
-diff --git a/drivers/i2c/busses/i2c-qcom-geni.c b/drivers/i2c/busses/i2c-qcom-geni.c
-index 214b4c913a139..c3f5847959116 100644
---- a/drivers/i2c/busses/i2c-qcom-geni.c
-+++ b/drivers/i2c/busses/i2c-qcom-geni.c
-@@ -375,6 +375,32 @@ static void geni_i2c_tx_msg_cleanup(struct geni_i2c_dev *gi2c,
- }
- }
-
-+static void geni_i2c_stop_xfer(struct geni_i2c_dev *gi2c)
-+{
-+ int ret;
-+ u32 geni_status;
-+ struct i2c_msg *cur;
-+
-+ /* Resume device, as runtime suspend can happen anytime during transfer */
-+ ret = pm_runtime_get_sync(gi2c->se.dev);
-+ if (ret < 0) {
-+ dev_err(gi2c->se.dev, "Failed to resume device: %d\n", ret);
-+ return;
-+ }
-+
-+ geni_status = readl_relaxed(gi2c->se.base + SE_GENI_STATUS);
-+ if (geni_status & M_GENI_CMD_ACTIVE) {
-+ cur = gi2c->cur;
-+ geni_i2c_abort_xfer(gi2c);
-+ if (cur->flags & I2C_M_RD)
-+ geni_i2c_rx_msg_cleanup(gi2c, cur);
-+ else
-+ geni_i2c_tx_msg_cleanup(gi2c, cur);
-+ }
-+
-+ pm_runtime_put_sync_suspend(gi2c->se.dev);
-+}
-+
- static int geni_i2c_rx_one_msg(struct geni_i2c_dev *gi2c, struct i2c_msg *msg,
- u32 m_param)
- {
-@@ -650,6 +676,13 @@ static int geni_i2c_remove(struct platform_device *pdev)
- return 0;
- }
-
-+static void geni_i2c_shutdown(struct platform_device *pdev)
-+{
-+ struct geni_i2c_dev *gi2c = platform_get_drvdata(pdev);
-+
-+ geni_i2c_stop_xfer(gi2c);
-+}
-+
- static int __maybe_unused geni_i2c_runtime_suspend(struct device *dev)
- {
- int ret;
-@@ -714,6 +747,7 @@ MODULE_DEVICE_TABLE(of, geni_i2c_dt_match);
- static struct platform_driver geni_i2c_driver = {
- .probe = geni_i2c_probe,
- .remove = geni_i2c_remove,
-+ .shutdown = geni_i2c_shutdown,
- .driver = {
- .name = "geni_i2c",
- .pm = &geni_i2c_pm_ops,
---
-2.27.0
-
mmc-renesas_sdhi_internal_dmac-fix-dma-buffer-alignm.patch
arm-9046-1-decompressor-do-not-clear-sctlr.ntlsmd-fo.patch
i2c-qcom-geni-store-dma-mapping-data-in-geni_i2c_dev.patch
-i2c-i2c-qcom-geni-add-shutdown-callback-for-i2c.patch
i3c-master-mipi-i3c-hci-specify-has_iomem-dependency.patch
amba-fix-resource-leak-for-drivers-without-.remove.patch
iommu-move-iotlb_sync_map-out-from-__iommu_map.patch
+++ /dev/null
-From 3a6c3838d6d778c6d7f7e044611859e0e6c747c3 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Fri, 8 Jan 2021 20:35:45 +0530
-Subject: i2c: i2c-qcom-geni: Add shutdown callback for i2c
-
-From: Roja Rani Yarubandi <rojay@codeaurora.org>
-
-[ Upstream commit e0371298ddc51761be257698554ea507ac8bf831 ]
-
-If the hardware is still accessing memory after SMMU translation
-is disabled (as part of smmu shutdown callback), then the
-IOVAs (I/O virtual address) which it was using will go on the bus
-as the physical addresses which will result in unknown crashes
-like NoC/interconnect errors.
-
-So, implement shutdown callback to i2c driver to stop on-going transfer
-and unmap DMA mappings during system "reboot" or "shutdown".
-
-Fixes: 37692de5d523 ("i2c: i2c-qcom-geni: Add bus driver for the Qualcomm GENI I2C controller")
-Signed-off-by: Roja Rani Yarubandi <rojay@codeaurora.org>
-Reviewed-by: Akash Asthana <akashast@codeaurora.org>
-Signed-off-by: Wolfram Sang <wsa@kernel.org>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/i2c/busses/i2c-qcom-geni.c | 34 ++++++++++++++++++++++++++++++
- 1 file changed, 34 insertions(+)
-
-diff --git a/drivers/i2c/busses/i2c-qcom-geni.c b/drivers/i2c/busses/i2c-qcom-geni.c
-index b56a427fb928f..2262bf295286c 100644
---- a/drivers/i2c/busses/i2c-qcom-geni.c
-+++ b/drivers/i2c/busses/i2c-qcom-geni.c
-@@ -377,6 +377,32 @@ static void geni_i2c_tx_msg_cleanup(struct geni_i2c_dev *gi2c,
- }
- }
-
-+static void geni_i2c_stop_xfer(struct geni_i2c_dev *gi2c)
-+{
-+ int ret;
-+ u32 geni_status;
-+ struct i2c_msg *cur;
-+
-+ /* Resume device, as runtime suspend can happen anytime during transfer */
-+ ret = pm_runtime_get_sync(gi2c->se.dev);
-+ if (ret < 0) {
-+ dev_err(gi2c->se.dev, "Failed to resume device: %d\n", ret);
-+ return;
-+ }
-+
-+ geni_status = readl_relaxed(gi2c->se.base + SE_GENI_STATUS);
-+ if (geni_status & M_GENI_CMD_ACTIVE) {
-+ cur = gi2c->cur;
-+ geni_i2c_abort_xfer(gi2c);
-+ if (cur->flags & I2C_M_RD)
-+ geni_i2c_rx_msg_cleanup(gi2c, cur);
-+ else
-+ geni_i2c_tx_msg_cleanup(gi2c, cur);
-+ }
-+
-+ pm_runtime_put_sync_suspend(gi2c->se.dev);
-+}
-+
- static int geni_i2c_rx_one_msg(struct geni_i2c_dev *gi2c, struct i2c_msg *msg,
- u32 m_param)
- {
-@@ -641,6 +667,13 @@ static int geni_i2c_remove(struct platform_device *pdev)
- return 0;
- }
-
-+static void geni_i2c_shutdown(struct platform_device *pdev)
-+{
-+ struct geni_i2c_dev *gi2c = platform_get_drvdata(pdev);
-+
-+ geni_i2c_stop_xfer(gi2c);
-+}
-+
- static int __maybe_unused geni_i2c_runtime_suspend(struct device *dev)
- {
- int ret;
-@@ -701,6 +734,7 @@ MODULE_DEVICE_TABLE(of, geni_i2c_dt_match);
- static struct platform_driver geni_i2c_driver = {
- .probe = geni_i2c_probe,
- .remove = geni_i2c_remove,
-+ .shutdown = geni_i2c_shutdown,
- .driver = {
- .name = "geni_i2c",
- .pm = &geni_i2c_pm_ops,
---
-2.27.0
-
mmc-renesas_sdhi_internal_dmac-fix-dma-buffer-alignm.patch
arm-9046-1-decompressor-do-not-clear-sctlr.ntlsmd-fo.patch
i2c-qcom-geni-store-dma-mapping-data-in-geni_i2c_dev.patch
-i2c-i2c-qcom-geni-add-shutdown-callback-for-i2c.patch
amba-fix-resource-leak-for-drivers-without-.remove.patch
ib-mlx5-return-appropriate-error-code-instead-of-eno.patch
ib-cm-avoid-a-loop-when-device-has-255-ports.patch