From b1e03c0408c2a43f43fb1a0c9fe7ca8bcec4d450 Mon Sep 17 00:00:00 2001 From: Sameer Thalappil Date: Mon, 29 Apr 2013 14:52:00 -0700 Subject: [PATCH] msm: pil-pronto: 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 WCNSS. Change-Id: I3acf87a71478e9fa3fe0fae44013d31602ccaec4 Signed-off-by: Sameer Thalappil --- Documentation/devicetree/bindings/pil/pil-pronto.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/mach-msm/pil-pronto.c | 11 +++++++++++ 5 files changed, 16 insertions(+) diff --git a/Documentation/devicetree/bindings/pil/pil-pronto.txt b/Documentation/devicetree/bindings/pil/pil-pronto.txt index 199862f1000..85ccc5df67a 100644 --- a/Documentation/devicetree/bindings/pil/pil-pronto.txt +++ b/Documentation/devicetree/bindings/pil/pil-pronto.txt @@ -14,6 +14,7 @@ Required properties: - vdd_pronto_pll-supply: regulator to supply pronto pll. - qcom,firmware-name: Base name of the firmware image. Ex. "wcnss" - qcom,gpio-err-fatal: GPIO used by the wcnss to indicate error fatal to the Apps. +- qcom,gpio-err-ready: GPIO used by the wcnss to indicate error ready to the Apps. - qcom,gpio-proxy-unvote: GPIO used by the wcnss to trigger proxy unvoting in the Apps - qcom,gpio-force-stop: GPIO used by the Apps to force the wcnss to shutdown. @@ -32,6 +33,7 @@ Example: /* GPIO input from wcnss */ qcom,gpio-err-fatal = <&smp2pgpio_ssr_smp2p_4_in 0 0>; + qcom,gpio-err-ready = <&smp2pgpio_ssr_smp2p_4_in 1 0>; qcom,proxy-unvote = <&smp2pgpio_ssr_smp2p_4_in 2 0>; /* GPIO output to wcnss */ diff --git a/arch/arm/boot/dts/msm8226.dtsi b/arch/arm/boot/dts/msm8226.dtsi index 631d3a3fee0..a5a2bc8d4a8 100644 --- a/arch/arm/boot/dts/msm8226.dtsi +++ b/arch/arm/boot/dts/msm8226.dtsi @@ -744,6 +744,7 @@ /* GPIO inputs from wcnss */ qcom,gpio-err-fatal = <&smp2pgpio_ssr_smp2p_4_in 0 0>; + qcom,gpio-err-ready = <&smp2pgpio_ssr_smp2p_4_in 1 0>; qcom,gpio-proxy-unvote = <&smp2pgpio_ssr_smp2p_4_in 2 0>; /* GPIO output to wcnss */ diff --git a/arch/arm/boot/dts/msm8610.dtsi b/arch/arm/boot/dts/msm8610.dtsi index 84fe7d27a19..2fad06db4b4 100644 --- a/arch/arm/boot/dts/msm8610.dtsi +++ b/arch/arm/boot/dts/msm8610.dtsi @@ -491,6 +491,7 @@ /* GPIO inputs from wcnss */ qcom,gpio-err-fatal = <&smp2pgpio_ssr_smp2p_4_in 0 0>; + qcom,gpio-err-ready = <&smp2pgpio_ssr_smp2p_4_in 1 0>; qcom,gpio-proxy-unvote = <&smp2pgpio_ssr_smp2p_4_in 2 0>; /* GPIO output to wcnss */ diff --git a/arch/arm/boot/dts/msm8974.dtsi b/arch/arm/boot/dts/msm8974.dtsi index d4f6bb7c5d7..09898050c64 100644 --- a/arch/arm/boot/dts/msm8974.dtsi +++ b/arch/arm/boot/dts/msm8974.dtsi @@ -1128,6 +1128,7 @@ /* GPIO inputs from wcnss */ qcom,gpio-err-fatal = <&smp2pgpio_ssr_smp2p_4_in 0 0>; + qcom,gpio-err-ready = <&smp2pgpio_ssr_smp2p_4_in 1 0>; qcom,gpio-proxy-unvote = <&smp2pgpio_ssr_smp2p_4_in 2 0>; /* GPIO output to wcnss */ diff --git a/arch/arm/mach-msm/pil-pronto.c b/arch/arm/mach-msm/pil-pronto.c index cf29cf13da7..b186a4dfaf0 100644 --- a/arch/arm/mach-msm/pil-pronto.c +++ b/arch/arm/mach-msm/pil-pronto.c @@ -515,6 +515,17 @@ static int __devinit pil_pronto_probe(struct platform_device *pdev) drv->subsys_desc.start = pronto_start; drv->subsys_desc.stop = pronto_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; + INIT_DELAYED_WORK(&drv->cancel_vote_work, wcnss_post_bootup); drv->subsys = subsys_register(&drv->subsys_desc);