+++ /dev/null
-From 778d2dbcd1ba25c871b61834f428edc522520cd7 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Tue, 25 May 2021 18:40:50 +0530
-Subject: i2c: qcom-geni: Add shutdown callback for i2c
-
-From: Roja Rani Yarubandi <rojay@codeaurora.org>
-
-[ Upstream commit 9f78c607600ce4f2a952560de26534715236f612 ]
-
-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 for i2c driver to suspend the bus
-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: Stephen Boyd <swboyd@chromium.org>
-Signed-off-by: Wolfram Sang <wsa@kernel.org>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/i2c/busses/i2c-qcom-geni.c | 9 +++++++++
- 1 file changed, 9 insertions(+)
-
-diff --git a/drivers/i2c/busses/i2c-qcom-geni.c b/drivers/i2c/busses/i2c-qcom-geni.c
-index d7329177b0ea..12f4dd273755 100644
---- a/drivers/i2c/busses/i2c-qcom-geni.c
-+++ b/drivers/i2c/busses/i2c-qcom-geni.c
-@@ -615,6 +615,14 @@ 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);
-+
-+ /* Make client i2c transfers start failing */
-+ i2c_mark_adapter_suspended(&gi2c->adap);
-+}
-+
- static int __maybe_unused geni_i2c_runtime_suspend(struct device *dev)
- {
- int ret;
-@@ -675,6 +683,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.30.2
-