From 9fb72edcd3ba9cdd0f20bb20dbc21b59e76b0927 Mon Sep 17 00:00:00 2001 From: Seemanta Dutta Date: Fri, 25 Jan 2013 14:22:15 -0800 Subject: [PATCH] msm: pil-mss: Add support for error services ready interrupt Set up the "error services ready" IRQ so that the subsystem framework can check for this indication as a boot up requirement for MSS. Change-Id: I876745469908a5a8feef636e15cce69e8a01bcfb Signed-off-by: Seemanta Dutta --- .../devicetree/bindings/pil/pil-q6v5-mss.txt | 2 ++ arch/arm/boot/dts/msm8226.dtsi | 1 + arch/arm/boot/dts/msm8610.dtsi | 1 + arch/arm/boot/dts/msm8974.dtsi | 1 + arch/arm/boot/dts/msm9625.dtsi | 1 + arch/arm/mach-msm/pil-q6v5-mss.c | 11 +++++++++++ 6 files changed, 17 insertions(+) diff --git a/Documentation/devicetree/bindings/pil/pil-q6v5-mss.txt b/Documentation/devicetree/bindings/pil/pil-q6v5-mss.txt index 2d20794ff3f..c3d929c4de0 100644 --- a/Documentation/devicetree/bindings/pil/pil-q6v5-mss.txt +++ b/Documentation/devicetree/bindings/pil/pil-q6v5-mss.txt @@ -17,6 +17,7 @@ Required properties: - vdd_mx-supply: Reference to the regulator that supplies the memory rail. - qcom,firmware-name: Base name of the firmware image. Ex. "mdsp" - qcom,gpio-err-fatal: GPIO used by the modem to indicate error fatal to the apps. +- qcom,gpio-err-ready: GPIO used by the modem to indicate error ready to the apps. - qcom,gpio-proxy-unvote: GPIO used by the modem to trigger proxy unvoting in the apps. - qcom,gpio-force-stop: GPIO used by the apps to force the modem to shutdown. @@ -49,6 +50,7 @@ Example: /* GPIO inputs from mss */ qcom,gpio-err-fatal = <&smp2pgpio_ssr_smp2p_1_in 0 0>; + qcom,gpio-err-ready = <&smp2pgpio_ssr_smp2p_1_in 1 0>; qcom,gpio-proxy-unvote = <&smp2pgpio_ssr_smp2p_1_in 2 0>; /* GPIO output to mss */ diff --git a/arch/arm/boot/dts/msm8226.dtsi b/arch/arm/boot/dts/msm8226.dtsi index c7d440d831a..e591bbe88f3 100644 --- a/arch/arm/boot/dts/msm8226.dtsi +++ b/arch/arm/boot/dts/msm8226.dtsi @@ -789,6 +789,7 @@ /* GPIO inputs from mss */ qcom,gpio-err-fatal = <&smp2pgpio_ssr_smp2p_1_in 0 0>; + qcom,gpio-err-ready = <&smp2pgpio_ssr_smp2p_1_in 1 0>; qcom,gpio-proxy-unvote = <&smp2pgpio_ssr_smp2p_1_in 2 0>; /* GPIO output to mss */ diff --git a/arch/arm/boot/dts/msm8610.dtsi b/arch/arm/boot/dts/msm8610.dtsi index 21f66580e19..925cc3753a0 100644 --- a/arch/arm/boot/dts/msm8610.dtsi +++ b/arch/arm/boot/dts/msm8610.dtsi @@ -637,6 +637,7 @@ /* GPIO inputs from mss */ qcom,gpio-err-fatal = <&smp2pgpio_ssr_smp2p_1_in 0 0>; + qcom,gpio-err-ready = <&smp2pgpio_ssr_smp2p_1_in 1 0>; qcom,gpio-proxy-unvote = <&smp2pgpio_ssr_smp2p_1_in 2 0>; /* GPIO output to mss */ diff --git a/arch/arm/boot/dts/msm8974.dtsi b/arch/arm/boot/dts/msm8974.dtsi index f787cf5298d..84149661882 100644 --- a/arch/arm/boot/dts/msm8974.dtsi +++ b/arch/arm/boot/dts/msm8974.dtsi @@ -1102,6 +1102,7 @@ /* GPIO inputs from mss */ qcom,gpio-err-fatal = <&smp2pgpio_ssr_smp2p_1_in 0 0>; + qcom,gpio-err-ready = <&smp2pgpio_ssr_smp2p_1_in 1 0>; qcom,gpio-proxy-unvote = <&smp2pgpio_ssr_smp2p_1_in 2 0>; /* GPIO output to mss */ diff --git a/arch/arm/boot/dts/msm9625.dtsi b/arch/arm/boot/dts/msm9625.dtsi index abfd7ec5d2f..3e2eab39d7e 100644 --- a/arch/arm/boot/dts/msm9625.dtsi +++ b/arch/arm/boot/dts/msm9625.dtsi @@ -757,6 +757,7 @@ /* GPIO inputs from mss */ qcom,gpio-err-fatal = <&smp2pgpio_ssr_smp2p_1_in 0 0>; + qcom,gpio-err-ready = <&smp2pgpio_ssr_smp2p_1_in 1 0>; qcom,gpio-proxy-unvote = <&smp2pgpio_ssr_smp2p_1_in 2 0>; /* GPIO output to mss */ diff --git a/arch/arm/mach-msm/pil-q6v5-mss.c b/arch/arm/mach-msm/pil-q6v5-mss.c index c1c3100ed0f..3ce1283bb74 100644 --- a/arch/arm/mach-msm/pil-q6v5-mss.c +++ b/arch/arm/mach-msm/pil-q6v5-mss.c @@ -650,6 +650,17 @@ static int __devinit pil_subsys_init(struct mba_data *drv, drv->subsys_desc.start = mss_start; drv->subsys_desc.stop = mss_stop; + ret = of_get_named_gpio(pdev->dev.of_node, + "qcom,gpio-err-ready", 0); + if (ret < 0) + return ret; + + ret = gpio_to_irq(ret); + if (ret < 0) + return ret; + + drv->subsys_desc.err_ready_irq = ret; + drv->subsys = subsys_register(&drv->subsys_desc); if (IS_ERR(drv->subsys)) { ret = PTR_ERR(drv->subsys);