Re: [PATCH] arm64: dts: qcom: sdm845-tama: Add volume up and camera GPIO keys

From: Konrad Dybcio
Date: Thu Dec 22 2022 - 14:18:56 EST




On 22.12.2022 20:06, Marijn Suijten wrote:
> Tama has four GPIO-wired keys: two for camera focus and shutter /
> snapshot, and two more for volume up and down. As per the comment these
> used to not work because the necessary pin bias was missing, which is
> now set via pinctrl on pm8998_gpio(s).
>
> The missing bias has also been added to the existing volume down button,
> which receives a node name and label cleanup at the same time to be more
> consistent with other DTS and the newly added buttons. Its deprecated
> gpio-key,wakeup property has also been replaced with wakeup-source.
>
> Note that volume up is also available through the usual PON RESIN node,
> but unlike other platforms only triggers when the power button is held
> down at the same time making it unsuitable to serve as KEY_VOLUMEUP.
Sounds rather intriguing..

>
> Fixes: 30a7f99befc6 ("arm64: dts: qcom: Add support for SONY Xperia XZ2 / XZ2C / XZ3 (Tama platform)")
> Signed-off-by: Marijn Suijten <marijn.suijten@xxxxxxxxxxxxxx>
> ---
Reviewed-by: Konrad Dybcio <konrad.dybcio@xxxxxxxxxx>

Konrad
> .../dts/qcom/sdm845-sony-xperia-tama.dtsi | 72 +++++++++++++++++--
> 1 file changed, 68 insertions(+), 4 deletions(-)
>
> diff --git a/arch/arm64/boot/dts/qcom/sdm845-sony-xperia-tama.dtsi b/arch/arm64/boot/dts/qcom/sdm845-sony-xperia-tama.dtsi
> index 87dd0fc36747..6390dadd5f82 100644
> --- a/arch/arm64/boot/dts/qcom/sdm845-sony-xperia-tama.dtsi
> +++ b/arch/arm64/boot/dts/qcom/sdm845-sony-xperia-tama.dtsi
> @@ -4,6 +4,7 @@
> */
>
> #include <dt-bindings/input/input.h>
> +#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
> #include <dt-bindings/regulator/qcom,rpmh-regulator.h>
> #include "sdm845.dtsi"
> #include "pm8005.dtsi"
> @@ -17,14 +18,43 @@ / {
> gpio-keys {
> compatible = "gpio-keys";
>
> - /* Neither Camera Focus, nor Camera Shutter seem to work... */
> + pinctrl-0 = <&focus_n &snapshot_n &vol_down_n &vol_up_n>;
> + pinctrl-names = "default";
>
> - key-vol-down {
> - label = "volume_down";
> + key-camera-focus {
> + label = "Camera Focus";
> + gpios = <&pm8998_gpio 2 GPIO_ACTIVE_LOW>;
> + linux,code = <KEY_CAMERA_FOCUS>;
> + debounce-interval = <15>;
> + linux,can-disable;
> + wakeup-source;
> + };
> +
> + key-camera-snapshot {
> + label = "Camera Snapshot";
> + gpios = <&pm8998_gpio 7 GPIO_ACTIVE_LOW>;
> + linux,code = <KEY_CAMERA>;
> + debounce-interval = <15>;
> + linux,can-disable;
> + wakeup-source;
> + };
> +
> + key-volume-down {
> + label = "Volume Down";
> gpios = <&pm8998_gpio 5 GPIO_ACTIVE_LOW>;
> linux,code = <KEY_VOLUMEDOWN>;
> debounce-interval = <15>;
> - gpio-key,wakeup;
> + linux,can-disable;
> + wakeup-source;
> + };
> +
> + key-volume-up {
> + label = "Volume Up";
> + gpios = <&pm8998_gpio 6 GPIO_ACTIVE_LOW>;
> + linux,code = <KEY_VOLUMEUP>;
> + debounce-interval = <15>;
> + linux,can-disable;
> + wakeup-source;
> };
> };
>
> @@ -358,6 +388,40 @@ &i2c14 {
> /* AMS TCS3490 RGB+IR color sensor @ 72 */
> };
>
> +&pm8998_gpio {
> + focus_n: focus-n-state {
> + pins = "gpio2";
> + function = PMIC_GPIO_FUNC_NORMAL;
> + power-source = <0>;
> + bias-pull-up;
> + input-enable;
> + };
> +
> + vol_down_n: vol-down-n-state {
> + pins = "gpio5";
> + function = PMIC_GPIO_FUNC_NORMAL;
> + power-source = <0>;
> + bias-pull-up;
> + input-enable;
> + };
> +
> + vol_up_n: vol-up-n-state {
> + pins = "gpio6";
> + function = PMIC_GPIO_FUNC_NORMAL;
> + power-source = <0>;
> + bias-pull-up;
> + input-enable;
> + };
> +
> + snapshot_n: snapshot-n-state {
> + pins = "gpio7";
> + function = PMIC_GPIO_FUNC_NORMAL;
> + power-source = <0>;
> + bias-pull-up;
> + input-enable;
> + };
> +};
> +
> &qupv3_id_0 {
> status = "okay";
> };