diff mbox

arm64: tegra210-smaug: Add gpio-key nodes

Message ID 1457034865-17826-1-git-send-email-rklein@nvidia.com (mailing list archive)
State New, archived
Headers show

Commit Message

Rhyland Klein March 3, 2016, 7:54 p.m. UTC
Add gpio-key nodes for the volumn controls, lid switch,
tablet mode and power button.

Signed-off-by: Rhyland Klein <rklein@nvidia.com>
---
 arch/arm64/boot/dts/nvidia/tegra210-smaug.dts | 43 +++++++++++++++++++++++++++
 1 file changed, 43 insertions(+)

Comments

Andrew Bresticker March 3, 2016, 10 p.m. UTC | #1
Rhyland,

On Thu, Mar 3, 2016 at 11:54 AM, Rhyland Klein <rklein@nvidia.com> wrote:
> Add gpio-key nodes for the volumn controls, lid switch,
> tablet mode and power button.
>
> Signed-off-by: Rhyland Klein <rklein@nvidia.com>

Reviewed-by: Andrew Bresticker <abrestic@chromium.org>

> ---
>  arch/arm64/boot/dts/nvidia/tegra210-smaug.dts | 43 +++++++++++++++++++++++++++
>  1 file changed, 43 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/nvidia/tegra210-smaug.dts b/arch/arm64/boot/dts/nvidia/tegra210-smaug.dts
> index 750e85c45135..9c0ec3031e98 100644
> --- a/arch/arm64/boot/dts/nvidia/tegra210-smaug.dts
> +++ b/arch/arm64/boot/dts/nvidia/tegra210-smaug.dts
> @@ -1,5 +1,7 @@
>  /dts-v1/;
>
> +#include <dt-bindings/input/input.h>
> +
>  #include "tegra210.dtsi"
>
>  / {
> @@ -76,6 +78,47 @@
>                 };
>         };
>
> +       gpio-keys {
> +               compatible = "gpio-keys";
> +               gpio-keys,name = "gpio-keys";
> +
> +               power {
> +                       label = "Power";
> +                       gpios = <&gpio TEGRA_GPIO(X, 5) GPIO_ACTIVE_LOW>;
> +                       linux,code = <KEY_POWER>;
> +                       debounce-interval = <30>;
> +                       gpio-key,wakeup;
> +               };
> +
> +               lid {
> +                       label = "Lid";
> +                       gpios = <&gpio TEGRA_GPIO(B, 4) GPIO_ACTIVE_LOW>;
> +                       linux,input-type = <5>; /* EV_SW */
> +                       linux,code = <0>; /* SW_LID */
> +                       gpio-key,wakeup;
> +               };
> +
> +               tablet_mode {
> +                       label = "Tablet Mode";
> +                       gpios = <&gpio TEGRA_GPIO(Z, 2) GPIO_ACTIVE_HIGH>;
> +                       linux,input-type = <5>; /* EV_SW */
> +                       linux,code = <1>; /* SW_TABLET_MODE */
> +                       gpio-key,wakeup;
> +               };
> +
> +               volume_down {
> +                       label = "Volume Down";
> +                       gpios = <&gpio TEGRA_GPIO(X, 7) GPIO_ACTIVE_LOW>;
> +                       linux,code = <KEY_VOLUMEDOWN>;
> +               };
> +
> +               volume_up {
> +                       label = "Volume Up";
> +                       gpios = <&gpio TEGRA_GPIO(M, 4) GPIO_ACTIVE_LOW>;
> +                       linux,code = <KEY_VOLUMEUP>;
> +               };
> +       };
> +
>         psci {
>                 compatible = "arm,psci-1.0";
>                 method = "smc";
> --
> 1.9.1
>
Thierry Reding March 4, 2016, 8:30 a.m. UTC | #2
On Thu, Mar 03, 2016 at 02:54:25PM -0500, Rhyland Klein wrote:
> Add gpio-key nodes for the volumn controls, lid switch,
> tablet mode and power button.
> 
> Signed-off-by: Rhyland Klein <rklein@nvidia.com>
> ---
>  arch/arm64/boot/dts/nvidia/tegra210-smaug.dts | 43 +++++++++++++++++++++++++++
>  1 file changed, 43 insertions(+)
> 
> diff --git a/arch/arm64/boot/dts/nvidia/tegra210-smaug.dts b/arch/arm64/boot/dts/nvidia/tegra210-smaug.dts
> index 750e85c45135..9c0ec3031e98 100644
> --- a/arch/arm64/boot/dts/nvidia/tegra210-smaug.dts
> +++ b/arch/arm64/boot/dts/nvidia/tegra210-smaug.dts
> @@ -1,5 +1,7 @@
>  /dts-v1/;
>  
> +#include <dt-bindings/input/input.h>
> +
>  #include "tegra210.dtsi"
>  
>  / {
> @@ -76,6 +78,47 @@
>  		};
>  	};
>  
> +	gpio-keys {
> +		compatible = "gpio-keys";
> +		gpio-keys,name = "gpio-keys";
> +
> +		power {
> +			label = "Power";
> +			gpios = <&gpio TEGRA_GPIO(X, 5) GPIO_ACTIVE_LOW>;
> +			linux,code = <KEY_POWER>;
> +			debounce-interval = <30>;
> +			gpio-key,wakeup;

This property was recently deprecated in favour of the standard generic
wakeup-source property.

> +		};
> +
> +		lid {
> +			label = "Lid";
> +			gpios = <&gpio TEGRA_GPIO(B, 4) GPIO_ACTIVE_LOW>;
> +			linux,input-type = <5>; /* EV_SW */
> +			linux,code = <0>; /* SW_LID */

The dt-bindings/input/input.h header defines the symbolic names for
these in upstream versions of the Linux kernel.

> +			gpio-key,wakeup;
> +		};
> +
> +		tablet_mode {
> +			label = "Tablet Mode";
> +			gpios = <&gpio TEGRA_GPIO(Z, 2) GPIO_ACTIVE_HIGH>;
> +			linux,input-type = <5>; /* EV_SW */
> +			linux,code = <1>; /* SW_TABLET_MODE */

Same here.

I've made all the above changes when applying, so no need to resend.

Thierry
Thierry Reding March 4, 2016, 8:47 a.m. UTC | #3
On Thu, Mar 03, 2016 at 02:54:25PM -0500, Rhyland Klein wrote:
> diff --git a/arch/arm64/boot/dts/nvidia/tegra210-smaug.dts b/arch/arm64/boot/dts/nvidia/tegra210-smaug.dts
[...]
> +		lid {
> +			label = "Lid";
> +			gpios = <&gpio TEGRA_GPIO(B, 4) GPIO_ACTIVE_LOW>;
> +			linux,input-type = <5>; /* EV_SW */
> +			linux,code = <0>; /* SW_LID */
> +			gpio-key,wakeup;
> +		};
> +
> +		tablet_mode {
> +			label = "Tablet Mode";
> +			gpios = <&gpio TEGRA_GPIO(Z, 2) GPIO_ACTIVE_HIGH>;
> +			linux,input-type = <5>; /* EV_SW */
> +			linux,code = <1>; /* SW_TABLET_MODE */
> +			gpio-key,wakeup;
> +		};

Is there a way to trigger these on a DVT device? Power and volume
controls work fine, but I haven't found a way to test these two.

Thierry
Rhyland Klein March 4, 2016, 4:51 p.m. UTC | #4
On 3/4/2016 3:47 AM, Thierry Reding wrote:
> * PGP Signed by an unknown key
> 
> On Thu, Mar 03, 2016 at 02:54:25PM -0500, Rhyland Klein wrote:
>> diff --git a/arch/arm64/boot/dts/nvidia/tegra210-smaug.dts b/arch/arm64/boot/dts/nvidia/tegra210-smaug.dts
> [...]
>> +		lid {
>> +			label = "Lid";
>> +			gpios = <&gpio TEGRA_GPIO(B, 4) GPIO_ACTIVE_LOW>;
>> +			linux,input-type = <5>; /* EV_SW */
>> +			linux,code = <0>; /* SW_LID */
>> +			gpio-key,wakeup;
>> +		};
>> +
>> +		tablet_mode {
>> +			label = "Tablet Mode";
>> +			gpios = <&gpio TEGRA_GPIO(Z, 2) GPIO_ACTIVE_HIGH>;
>> +			linux,input-type = <5>; /* EV_SW */
>> +			linux,code = <1>; /* SW_TABLET_MODE */
>> +			gpio-key,wakeup;
>> +		};
> 
> Is there a way to trigger these on a DVT device? Power and volume
> controls work fine, but I haven't found a way to test these two.

First of all, thanks for catching the deprecated property and changes in
the input.h.

As for testing, both can be triggered with magnets. The lid switch is
near the camera on the top of the display. For me, the tablet-mode
sensor is around 1/3 up from the bottom (assuming camera is the top) on
the back side of the device. Not sure how that would line up for you
though...

-rhyland
diff mbox

Patch

diff --git a/arch/arm64/boot/dts/nvidia/tegra210-smaug.dts b/arch/arm64/boot/dts/nvidia/tegra210-smaug.dts
index 750e85c45135..9c0ec3031e98 100644
--- a/arch/arm64/boot/dts/nvidia/tegra210-smaug.dts
+++ b/arch/arm64/boot/dts/nvidia/tegra210-smaug.dts
@@ -1,5 +1,7 @@ 
 /dts-v1/;
 
+#include <dt-bindings/input/input.h>
+
 #include "tegra210.dtsi"
 
 / {
@@ -76,6 +78,47 @@ 
 		};
 	};
 
+	gpio-keys {
+		compatible = "gpio-keys";
+		gpio-keys,name = "gpio-keys";
+
+		power {
+			label = "Power";
+			gpios = <&gpio TEGRA_GPIO(X, 5) GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_POWER>;
+			debounce-interval = <30>;
+			gpio-key,wakeup;
+		};
+
+		lid {
+			label = "Lid";
+			gpios = <&gpio TEGRA_GPIO(B, 4) GPIO_ACTIVE_LOW>;
+			linux,input-type = <5>; /* EV_SW */
+			linux,code = <0>; /* SW_LID */
+			gpio-key,wakeup;
+		};
+
+		tablet_mode {
+			label = "Tablet Mode";
+			gpios = <&gpio TEGRA_GPIO(Z, 2) GPIO_ACTIVE_HIGH>;
+			linux,input-type = <5>; /* EV_SW */
+			linux,code = <1>; /* SW_TABLET_MODE */
+			gpio-key,wakeup;
+		};
+
+		volume_down {
+			label = "Volume Down";
+			gpios = <&gpio TEGRA_GPIO(X, 7) GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_VOLUMEDOWN>;
+		};
+
+		volume_up {
+			label = "Volume Up";
+			gpios = <&gpio TEGRA_GPIO(M, 4) GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_VOLUMEUP>;
+		};
+	};
+
 	psci {
 		compatible = "arm,psci-1.0";
 		method = "smc";