summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Documentation/devicetree/bindings/slimbus/slim-msm-ctrl.txt6
-rw-r--r--drivers/slimbus/slim-msm-ngd.c16
2 files changed, 18 insertions, 4 deletions
diff --git a/Documentation/devicetree/bindings/slimbus/slim-msm-ctrl.txt b/Documentation/devicetree/bindings/slimbus/slim-msm-ctrl.txt
index 53db04b0151c..90d8a359ccc0 100644
--- a/Documentation/devicetree/bindings/slimbus/slim-msm-ctrl.txt
+++ b/Documentation/devicetree/bindings/slimbus/slim-msm-ctrl.txt
@@ -59,6 +59,12 @@ Optional property:
register and receive subsytem restart notification from mdm
and follow appropriate steps to ensure communication on the bus
can be resumed after mdm-restart.
+ - qcom,subsys-name: This value provides the subsystem name where slimbus master
+ is present. This property enables the slimbus driver to
+ register and receive subsytem restart notification from subsystem
+ and follow appropriate steps to ensure communication on the bus
+ can be resumed after subsytem restart. By default slimbus driver
+ register with ADSP subsystem.
Example:
slim@fe12f000 {
cell-index = <1>;
diff --git a/drivers/slimbus/slim-msm-ngd.c b/drivers/slimbus/slim-msm-ngd.c
index 7cb2dcef80ef..2fbfd4c258df 100644
--- a/drivers/slimbus/slim-msm-ngd.c
+++ b/drivers/slimbus/slim-msm-ngd.c
@@ -1496,7 +1496,7 @@ static int ngd_slim_probe(struct platform_device *pdev)
struct resource *irq, *bam_irq;
bool rxreg_access = false;
bool slim_mdm = false;
- const char *ext_modem_id = NULL;
+ const char *ext_modem_id = NULL, *subsys_name = NULL;
slim_mem = platform_get_resource_byname(pdev, IORESOURCE_MEM,
"slimbus_physical");
@@ -1679,9 +1679,17 @@ static int ngd_slim_probe(struct platform_device *pdev)
pm_runtime_set_suspended(dev->dev);
pm_runtime_enable(dev->dev);
- dev->dsp.nb.notifier_call = dsp_ssr_notify_cb;
- dev->dsp.ssr = subsys_notif_register_notifier("adsp",
- &dev->dsp.nb);
+ ret = of_property_read_string(pdev->dev.of_node,
+ "qcom,subsys-name", &subsys_name);
+ if (ret) {
+ dev->dsp.nb.notifier_call = dsp_ssr_notify_cb;
+ dev->dsp.ssr = subsys_notif_register_notifier("adsp",
+ &dev->dsp.nb);
+ } else {
+ dev->dsp.nb.notifier_call = dsp_ssr_notify_cb;
+ dev->dsp.ssr = subsys_notif_register_notifier(subsys_name,
+ &dev->dsp.nb);
+ }
if (IS_ERR_OR_NULL(dev->dsp.ssr))
dev_err(dev->dev,
"subsys_notif_register_notifier failed %p",