mirror of
https://github.com/torvalds/linux.git
synced 2026-06-07 05:55:44 +02:00
i2c: qcom-geni: Add shutdown callback for i2c
[ Upstream commit9f78c60760] 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:37692de5d5("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>
This commit is contained in:
parent
c4b796f20c
commit
21d494d444
|
|
@ -654,6 +654,14 @@ static int geni_i2c_remove(struct platform_device *pdev)
|
||||||
return 0;
|
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)
|
static int __maybe_unused geni_i2c_runtime_suspend(struct device *dev)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
@ -718,6 +726,7 @@ MODULE_DEVICE_TABLE(of, geni_i2c_dt_match);
|
||||||
static struct platform_driver geni_i2c_driver = {
|
static struct platform_driver geni_i2c_driver = {
|
||||||
.probe = geni_i2c_probe,
|
.probe = geni_i2c_probe,
|
||||||
.remove = geni_i2c_remove,
|
.remove = geni_i2c_remove,
|
||||||
|
.shutdown = geni_i2c_shutdown,
|
||||||
.driver = {
|
.driver = {
|
||||||
.name = "geni_i2c",
|
.name = "geni_i2c",
|
||||||
.pm = &geni_i2c_pm_ops,
|
.pm = &geni_i2c_pm_ops,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user