Commit 9a36c6fd authored by satya priya's avatar satya priya Committed by Bjorn Andersson
Browse files

arm64: dts: qcom: sc7180: Add wakeup support for BT UART on sc7180-idp



Add the necessary pinctrl, interrupt property and a suitable sleep config
to support Bluetooth wakeup feature.

GPIO mode is configured in sleep state to drive the RTS/RFR line low.
If QUP function is selected in sleep state, UART RTS/RFR is pulled high
during suspend and BT SoC not able to send wakeup bytes.

Reviewed-by: default avatarMatthias Kaehlcke <mka@chromium.org>
Reviewed-by: default avatarDouglas Anderson <dianders@chromium.org>
Signed-off-by: default avatarsatya priya <skakit@codeaurora.org>
Link: https://lore.kernel.org/r/1600091917-7464-3-git-send-email-skakit@codeaurora.org


Signed-off-by: default avatarBjorn Andersson <bjorn.andersson@linaro.org>
parent ff11a798
Loading
Loading
Loading
Loading
+55 −0
Original line number Diff line number Diff line
@@ -346,6 +346,13 @@
&uart3 {
	status = "okay";

	/delete-property/interrupts;
	interrupts-extended = <&intc GIC_SPI 604 IRQ_TYPE_LEVEL_HIGH>,
				<&tlmm 41 IRQ_TYPE_EDGE_FALLING>;

	pinctrl-names = "default", "sleep";
	pinctrl-1 = <&qup_uart3_sleep>;

	bluetooth: wcn3990-bt {
		compatible = "qcom,wcn3990-bt";
		vddio-supply = <&vreg_l10a_1p8>;
@@ -544,3 +551,51 @@
	};
};

&tlmm {
	qup_uart3_sleep: qup-uart3-sleep {
		pinmux {
			pins = "gpio38", "gpio39",
			       "gpio40", "gpio41";
			function = "gpio";
		};

		pinconf-cts {
			/*
			 * Configure a pull-down on CTS to match the pull of
			 * the Bluetooth module.
			 */
			pins = "gpio38";
			bias-pull-down;
		};

		pinconf-rts {
			/*
			 * Configure pull-down on RTS. As RTS is active low
			 * signal, pull it low to indicate the BT SoC that it
			 * can wakeup the system anytime from suspend state by
			 * pulling RX low (by sending wakeup bytes).
			 */
			 pins = "gpio39";
			 bias-pull-down;
		};

		pinconf-tx {
			/*
			 * Configure pull-up on TX when it isn't actively driven
			 * to prevent BT SoC from receiving garbage during sleep.
			 */
			pins = "gpio40";
			bias-pull-up;
		};

		pinconf-rx {
			/*
			 * Configure a pull-up on RX. This is needed to avoid
			 * garbage data when the TX pin of the Bluetooth module
			 * is floating which may cause spurious wakeups.
			 */
			pins = "gpio41";
			bias-pull-up;
		};
	};
};