Re: [PATCH 1/4] ARM: dts: omap3-pandora: add common device tree

2015-02-12 Thread Dr. H. Nikolaus Schaller

Am 12.02.2015 um 18:47 schrieb Grazvydas Ignotas :

> On Thu, Feb 12, 2015 at 3:03 PM, Marek Belisko  wrote:
>> From: "H. Nikolaus Schaller" 
>> 
>> This device tree allows to boot, supports the panel,
>> framebuffer, touch screen, as well as some more peripherals.
>> Since there is a OMAP3530 based 600 MHz variant and a DM3730 based
>> 1 GHz variant we must include this common device tree code
>> in one of two CPU specific device trees.
>> 
>> Signed-off-by: H. Nikolaus Schaller 
>> Signed-off-by: Marek Belisko 
>> ---
>> arch/arm/boot/dts/omap3-pandora-common.dtsi | 641 
>> 
>> 1 file changed, 641 insertions(+)
>> create mode 100644 arch/arm/boot/dts/omap3-pandora-common.dtsi
>> 
>> diff --git a/arch/arm/boot/dts/omap3-pandora-common.dtsi 
>> b/arch/arm/boot/dts/omap3-pandora-common.dtsi
>> new file mode 100644
>> index 000..0a2a878
>> --- /dev/null
>> +++ b/arch/arm/boot/dts/omap3-pandora-common.dtsi
>> @@ -0,0 +1,641 @@
> 
> ...
> 
>> +
>> +   gpio-leds {
>> +
>> +   compatible = "gpio-leds";
>> +
>> +   pinctrl-names = "default";
>> +   pinctrl-0 = <&led_pins>;
>> +
>> +   led@1 {
>> +   label = "pandora::sd1";
>> +   gpios = <&gpio5 0 GPIO_ACTIVE_HIGH>;/* GPIO_128 
>> */
>> +   linux,default-trigger = "mmc0";
>> +   default-state = "off";
>> +   };
>> +
>> +   led@2 {
>> +   label = "pandora::sd2";
>> +   gpios = <&gpio5 1 GPIO_ACTIVE_HIGH>;/* GPIO_129 
>> */
>> +   linux,default-trigger = "mmc1";
>> +   default-state = "off";
>> +   };
>> +
>> +   led@3 {
>> +   label = "pandora::bluetooth";
>> +   gpios = <&gpio5 30 GPIO_ACTIVE_HIGH>;   /* GPIO_158 
>> */
>> +   linux,default-trigger = "heartbeat";
> 
> I’d prefer this had no trigger, but no strong feelings here.

Ok. Well, this is more or less our testing setup - so that we did see something 
before
we could fix the display setup. I think practice will show what is better, and 
then
it can be patched. We are at the beginning of Pandora DT work…

> 
>> +   default-state = "off";
>> +   };
>> +
>> +   led@4 {
>> +   label = "pandora::wifi";
>> +   gpios = <&gpio5 31 GPIO_ACTIVE_HIGH>;   /* GPIO_159 
>> */
>> +   linux,default-trigger = "mmc2";
>> +   default-state = "off";
>> +   };
>> +   };
>> +
>> +   gpio-keys {
>> +   compatible = "gpio-keys";
>> +
>> +   pinctrl-names = "default";
>> +   pinctrl-0 = <&button_pins>;
>> +
>> +   up-button {
>> +   label = "up";
>> +   linux,code = ;
>> +   gpios = <&gpio4 14 GPIO_ACTIVE_HIGH>;   /* GPIO_110 
>> */
>> +   gpio-key,wakeup;
>> +   };
>> +
>> +   down-button {
>> +   label = "down";
>> +   linux,code = ;
>> +   gpios = <&gpio4 7 GPIO_ACTIVE_HIGH>;/* GPIO_103 
>> */
>> +   gpio-key,wakeup;
>> +   };
>> +
>> +   left-button {
>> +   label = "left";
>> +   linux,code = ;
>> +   gpios = <&gpio4 0 GPIO_ACTIVE_HIGH>;/* GPIO_96 */
>> +   gpio-key,wakeup;
>> +   };
>> +
>> +   right-button {
>> +   label = "right";
>> +   linux,code = ;
>> +   gpios = <&gpio4 2 GPIO_ACTIVE_HIGH>;/* GPIO_98 */
>> +   gpio-key,wakeup;
>> +   };
>> +
>> +   pageup-button {
>> +   label = "game 1";
>> +   linux,code = ;
>> +   gpios = <&gpio4 13 GPIO_ACTIVE_HIGH>;   /* GPIO_109 
>> */
>> +   gpio-key,wakeup;
>> +   };
>> +
>> +   pagedown-button {
>> +   label = "game 3";
>> +   linux,code = ;
>> +   gpios = <&gpio4 10 GPIO_ACTIVE_HIGH>;   /* GPIO_106 
>> */
>> +   gpio-key,wakeup;
>> +   };
>> +
>> +   home-button {
>> +   label = "game 4";
>> +   linux,code = ;
>> +   gpios = <&gpio4 5 GPIO_ACTIVE_HIGH>;/* GPIO_101 
>> */
>> +   gpio-key,wakeup;
>> +   };
>> +
>> +   end-button {
>> +   label = "game 2";
>> +   linux,code = ;
>> +   gpios = <&gpio4 15 GPIO_ACTIVE_HIGH>;   /* GPIO_111 
>> */
>> +

Re: [PATCH 1/4] ARM: dts: omap3-pandora: add common device tree

2015-02-12 Thread Tony Lindgren
Hi,

Few comments below.

* Marek Belisko  [150212 05:07]:
> +
> +&omap3_pmx_core {
> +
> + mmc1_pins: pinmux_mmc1_pins {
> + pinctrl-single,pins = <
> + OMAP3_CORE1_IOPAD(0x2144, PIN_INPUT_PULLUP | MUX_MODE0) 
> /* sdmmc1_clk.sdmmc1_clk */
> + OMAP3_CORE1_IOPAD(0x2146, PIN_INPUT_PULLUP | MUX_MODE0) 
> /* sdmmc1_cmd.sdmmc1_cmd */
> + OMAP3_CORE1_IOPAD(0x2148, PIN_INPUT_PULLUP | MUX_MODE0) 
> /* sdmmc1_dat0.sdmmc1_dat0 */
> + OMAP3_CORE1_IOPAD(0x214a, PIN_INPUT_PULLUP | MUX_MODE0) 
> /* sdmmc1_dat1.sdmmc1_dat1 */
> + OMAP3_CORE1_IOPAD(0x214c, PIN_INPUT_PULLUP | MUX_MODE0) 
> /* sdmmc1_dat2.sdmmc1_dat2 */
> + OMAP3_CORE1_IOPAD(0x214e, PIN_INPUT_PULLUP | MUX_MODE0) 
> /* sdmmc1_dat3.sdmmc1_dat3 */
> + >;
...

> +&omap3_pmx_core2 {
> + /* define in CPU specific file that includes this one
> +  * use either OMAP3430_CORE2_IOPAD() or OMAP3630_CORE2_IOPAD()
> +  */
> +};

OK looks like you have some SoC specific pins too.. I assume you
guys have checked that all the pins defined in this file are at
the same offset between 34xx and 36xx variants?

> +&i2c1 {
> + clock-frequency = <260>;
> +
> + twl: twl@48 {
> + reg = <0x48>;
> + interrupts = <7>; /* SYS_NIRQ cascaded to intc */
> + interrupt-parent = <&intc>;
> +
> + twl_power: power {
> + compatible = "ti,twl4030-power-reset";
> + ti,use_poweroff;
> + };
> +
> + twl_audio: audio {
> + compatible = "ti,twl4030-audio";
> +
> + codec {
> + ti,ramp_delay_value = <3>;
> + };
> + };
> + };
> +};

Can be done later naturally, but ere you probably want
ti,twl4030-power-idle or ti,twl4030-power-idle-osc-off
if the osicllator can be shut down during off-idle.

> +&gpmc {
> + ranges = <0 0 0x3000 0x04>; /* CS0: NAND */

The ranges here allocate the GPMC partition, so it needs to be
a minimum of 16MB:

ranges = <0 0 0x3000 0x100>,/* CS0: 16MB for NAND */

> + nand@0,0 {
> + reg = <0 0 0>; /* CS0, offset 0 */

The reg is for the device driver to ioremap it's registers,
for NAND it's just 4:

reg = <0 0 4>;  /* CS0, offset 0, IO size 4 */

> + filesystem@68 {
> + label = "rootfs";
> + reg = <0xc8 0>; /* 0 = MTDPART_SIZ_FULL */
> + };
> + };
> +};

Is the NAND the same size on all of them? I don't think dts
has a binding for MTDPART_SIZ_FULL type thing..

> + lcd: lcd@1 {
> + reg = <1>;  /* CS1 */
> + compatible ="omapdss,tpo,td043mtea1";
> + spi-max-frequency = <10>;
> + spi-cpol;
> + spi-cpha;
> +
> + label = "lcd";
> + reset-gpios = <&gpio5 29 GPIO_ACTIVE_LOW>;  /* GPIO_157 */
> + vcc-supply = <&vaux1>;
> +
> + port {
> + lcd_in: endpoint {
> + remote-endpoint = <&dpi_out>;
> + };
> + };
> + };

Oh there's already a binding for the LCD too? That's great :)

Nine job, good to see this happening!

Regards,


Tony
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/4] ARM: dts: omap3-pandora: add common device tree

2015-02-12 Thread Grazvydas Ignotas
On Thu, Feb 12, 2015 at 3:03 PM, Marek Belisko  wrote:
> From: "H. Nikolaus Schaller" 
>
> This device tree allows to boot, supports the panel,
> framebuffer, touch screen, as well as some more peripherals.
> Since there is a OMAP3530 based 600 MHz variant and a DM3730 based
> 1 GHz variant we must include this common device tree code
> in one of two CPU specific device trees.
>
> Signed-off-by: H. Nikolaus Schaller 
> Signed-off-by: Marek Belisko 
> ---
>  arch/arm/boot/dts/omap3-pandora-common.dtsi | 641 
> 
>  1 file changed, 641 insertions(+)
>  create mode 100644 arch/arm/boot/dts/omap3-pandora-common.dtsi
>
> diff --git a/arch/arm/boot/dts/omap3-pandora-common.dtsi 
> b/arch/arm/boot/dts/omap3-pandora-common.dtsi
> new file mode 100644
> index 000..0a2a878
> --- /dev/null
> +++ b/arch/arm/boot/dts/omap3-pandora-common.dtsi
> @@ -0,0 +1,641 @@

...

> +
> +   gpio-leds {
> +
> +   compatible = "gpio-leds";
> +
> +   pinctrl-names = "default";
> +   pinctrl-0 = <&led_pins>;
> +
> +   led@1 {
> +   label = "pandora::sd1";
> +   gpios = <&gpio5 0 GPIO_ACTIVE_HIGH>;/* GPIO_128 */
> +   linux,default-trigger = "mmc0";
> +   default-state = "off";
> +   };
> +
> +   led@2 {
> +   label = "pandora::sd2";
> +   gpios = <&gpio5 1 GPIO_ACTIVE_HIGH>;/* GPIO_129 */
> +   linux,default-trigger = "mmc1";
> +   default-state = "off";
> +   };
> +
> +   led@3 {
> +   label = "pandora::bluetooth";
> +   gpios = <&gpio5 30 GPIO_ACTIVE_HIGH>;   /* GPIO_158 */
> +   linux,default-trigger = "heartbeat";

I'd prefer this had no trigger, but no strong feelings here.

> +   default-state = "off";
> +   };
> +
> +   led@4 {
> +   label = "pandora::wifi";
> +   gpios = <&gpio5 31 GPIO_ACTIVE_HIGH>;   /* GPIO_159 */
> +   linux,default-trigger = "mmc2";
> +   default-state = "off";
> +   };
> +   };
> +
> +   gpio-keys {
> +   compatible = "gpio-keys";
> +
> +   pinctrl-names = "default";
> +   pinctrl-0 = <&button_pins>;
> +
> +   up-button {
> +   label = "up";
> +   linux,code = ;
> +   gpios = <&gpio4 14 GPIO_ACTIVE_HIGH>;   /* GPIO_110 */
> +   gpio-key,wakeup;
> +   };
> +
> +   down-button {
> +   label = "down";
> +   linux,code = ;
> +   gpios = <&gpio4 7 GPIO_ACTIVE_HIGH>;/* GPIO_103 */
> +   gpio-key,wakeup;
> +   };
> +
> +   left-button {
> +   label = "left";
> +   linux,code = ;
> +   gpios = <&gpio4 0 GPIO_ACTIVE_HIGH>;/* GPIO_96 */
> +   gpio-key,wakeup;
> +   };
> +
> +   right-button {
> +   label = "right";
> +   linux,code = ;
> +   gpios = <&gpio4 2 GPIO_ACTIVE_HIGH>;/* GPIO_98 */
> +   gpio-key,wakeup;
> +   };
> +
> +   pageup-button {
> +   label = "game 1";
> +   linux,code = ;
> +   gpios = <&gpio4 13 GPIO_ACTIVE_HIGH>;   /* GPIO_109 */
> +   gpio-key,wakeup;
> +   };
> +
> +   pagedown-button {
> +   label = "game 3";
> +   linux,code = ;
> +   gpios = <&gpio4 10 GPIO_ACTIVE_HIGH>;   /* GPIO_106 */
> +   gpio-key,wakeup;
> +   };
> +
> +   home-button {
> +   label = "game 4";
> +   linux,code = ;
> +   gpios = <&gpio4 5 GPIO_ACTIVE_HIGH>;/* GPIO_101 */
> +   gpio-key,wakeup;
> +   };
> +
> +   end-button {
> +   label = "game 2";
> +   linux,code = ;
> +   gpios = <&gpio4 15 GPIO_ACTIVE_HIGH>;   /* GPIO_111 */
> +   gpio-key,wakeup;
> +   };
> +
> +   right-shift {
> +   label = "l";
> +   linux,code = ;
> +   gpios = <&gpio4 6 GPIO_ACTIVE_HIGH>;/* GPIO_102 */
> +   gpio-key,wakeup;
> +   };
> +
> +   kp-plus {
> +   label = "l2";
> +   linux,code = ;
> +   gpio

Re: [PATCH 1/4] ARM: dts: omap3-pandora: add common device tree

2015-02-12 Thread Tony Lindgren
* Dr. H. Nikolaus Schaller  [150212 08:34]:
> Am 12.02.2015 um 17:03 schrieb Tony Lindgren :
> 
> > I don't think dts
> > has a binding for MTDPART_SIZ_FULL type thing..
> 
> It does not need a special binding, we just set the size to 0. This
> is interpreted as MTDPART_SIZ_FULL later on. For board files,
> there is just a #define in include/linux/mtd/partitions.h and it appears
> to work.

Oh OK good to know.

Regards,

Tony
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/4] ARM: dts: omap3-pandora: add common device tree

2015-02-12 Thread Dr. H. Nikolaus Schaller

Am 12.02.2015 um 17:03 schrieb Tony Lindgren :

> Hi,
> 
> Few comments below.
> 
> * Marek Belisko  [150212 05:07]:
>> +
>> +&omap3_pmx_core {
>> +
>> +mmc1_pins: pinmux_mmc1_pins {
>> +pinctrl-single,pins = <
>> +OMAP3_CORE1_IOPAD(0x2144, PIN_INPUT_PULLUP | MUX_MODE0) 
>> /* sdmmc1_clk.sdmmc1_clk */
>> +OMAP3_CORE1_IOPAD(0x2146, PIN_INPUT_PULLUP | MUX_MODE0) 
>> /* sdmmc1_cmd.sdmmc1_cmd */
>> +OMAP3_CORE1_IOPAD(0x2148, PIN_INPUT_PULLUP | MUX_MODE0) 
>> /* sdmmc1_dat0.sdmmc1_dat0 */
>> +OMAP3_CORE1_IOPAD(0x214a, PIN_INPUT_PULLUP | MUX_MODE0) 
>> /* sdmmc1_dat1.sdmmc1_dat1 */
>> +OMAP3_CORE1_IOPAD(0x214c, PIN_INPUT_PULLUP | MUX_MODE0) 
>> /* sdmmc1_dat2.sdmmc1_dat2 */
>> +OMAP3_CORE1_IOPAD(0x214e, PIN_INPUT_PULLUP | MUX_MODE0) 
>> /* sdmmc1_dat3.sdmmc1_dat3 */
>> +>;
> ...
> 
>> +&omap3_pmx_core2 {
>> +/* define in CPU specific file that includes this one
>> + * use either OMAP3430_CORE2_IOPAD() or OMAP3630_CORE2_IOPAD()
>> + */
>> +};
> 
> OK looks like you have some SoC specific pins too.. I assume you
> guys have checked that all the pins defined in this file are at
> the same offset between 34xx and 36xx variants?

Yes. All in this file are common between 34xx and 36xx.
The 600mhz / 1ghz files cover the differences for pmx_core2 through the 
different macros
(OMAP3430_CORE2_IOPAD vs. OMAP3460_CORE2_IOPAD).

> 
>> +&i2c1 {
>> +clock-frequency = <260>;
>> +
>> +twl: twl@48 {
>> +reg = <0x48>;
>> +interrupts = <7>; /* SYS_NIRQ cascaded to intc */
>> +interrupt-parent = <&intc>;
>> +
>> +twl_power: power {
>> +compatible = "ti,twl4030-power-reset";
>> +ti,use_poweroff;
>> +};
>> +
>> +twl_audio: audio {
>> +compatible = "ti,twl4030-audio";
>> +
>> +codec {
>> +ti,ramp_delay_value = <3>;
>> +};
>> +};
>> +};
>> +};
> 
> Can be done later naturally, but ere you probably want
> ti,twl4030-power-idle or ti,twl4030-power-idle-osc-off
> if the osicllator can be shut down during off-idle.

Good hint. We have to check and test if it can be shut down.
But as said, this is just the beginning of DT support.

> 
>> +&gpmc {
>> +ranges = <0 0 0x3000 0x04>; /* CS0: NAND */
> 
> The ranges here allocate the GPMC partition, so it needs to be
> a minimum of 16MB:
> 
>   ranges = <0 0 0x3000 0x100>,/* CS0: 16MB for NAND */
> 
>> +nand@0,0 {
>> +reg = <0 0 0>; /* CS0, offset 0 */
> 
> The reg is for the device driver to ioremap it's registers,
> for NAND it's just 4:
> 
>   reg = <0 0 4>;  /* CS0, offset 0, IO size 4 */

Ok, that was a typo and we have not tested how compatible it is to the
board file scheme.

> 
>> +filesystem@68 {
>> +label = "rootfs";
>> +reg = <0xc8 0>; /* 0 = MTDPART_SIZ_FULL */
>> +};
>> +};
>> +};
> 
> Is the NAND the same size on all of them?

AFAIK not necessarily.

> I don't think dts
> has a binding for MTDPART_SIZ_FULL type thing..

It does not need a special binding, we just set the size to 0. This
is interpreted as MTDPART_SIZ_FULL later on. For board files,
there is just a #define in include/linux/mtd/partitions.h and it appears
to work.

> 
>> +lcd: lcd@1 {
>> +reg = <1>;  /* CS1 */
>> +compatible ="omapdss,tpo,td043mtea1";
>> +spi-max-frequency = <10>;
>> +spi-cpol;
>> +spi-cpha;
>> +
>> +label = "lcd";
>> +reset-gpios = <&gpio5 29 GPIO_ACTIVE_LOW>;  /* GPIO_157 */
>> +vcc-supply = <&vaux1>;
>> +
>> +port {
>> +lcd_in: endpoint {
>> +remote-endpoint = <&dpi_out>;
>> +};
>> +};
>> +};
> 
> Oh there's already a binding for the LCD too? That’s great :)

Yes, we were happy to find that the panel driver has already been upgraded
for DT use.

> 
> Nine job, good to see this happening!
> 
> Regards,
> 
> 
> Tony

BR,
Nikolaus

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 1/4] ARM: dts: omap3-pandora: add common device tree

2015-02-12 Thread Marek Belisko
From: "H. Nikolaus Schaller" 

This device tree allows to boot, supports the panel,
framebuffer, touch screen, as well as some more peripherals.
Since there is a OMAP3530 based 600 MHz variant and a DM3730 based
1 GHz variant we must include this common device tree code
in one of two CPU specific device trees.

Signed-off-by: H. Nikolaus Schaller 
Signed-off-by: Marek Belisko 
---
 arch/arm/boot/dts/omap3-pandora-common.dtsi | 641 
 1 file changed, 641 insertions(+)
 create mode 100644 arch/arm/boot/dts/omap3-pandora-common.dtsi

diff --git a/arch/arm/boot/dts/omap3-pandora-common.dtsi 
b/arch/arm/boot/dts/omap3-pandora-common.dtsi
new file mode 100644
index 000..0a2a878
--- /dev/null
+++ b/arch/arm/boot/dts/omap3-pandora-common.dtsi
@@ -0,0 +1,641 @@
+/*
+ * Copyright (C) 2015
+ *   Nikolaus Schaller 
+ *
+ * Common device tree include for OpenPandora devices.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include 
+
+/ {
+   cpus {
+   cpu@0 {
+   cpu0-supply = <&vcc>;
+   };
+   };
+
+   memory {
+   device_type = "memory";
+   reg = <0x8000 0x2000>; /* 512 MB */
+   };
+
+   aliases {
+   display0 = &lcd;
+   };
+
+   tv: connector@1 {
+   compatible = "connector-analog-tv";
+   label = "tv";
+
+   port {
+   tv_connector_in: endpoint {
+   remote-endpoint = <&venc_out>;
+   };
+   };
+   };
+
+   gpio-leds {
+
+   compatible = "gpio-leds";
+
+   pinctrl-names = "default";
+   pinctrl-0 = <&led_pins>;
+
+   led@1 {
+   label = "pandora::sd1";
+   gpios = <&gpio5 0 GPIO_ACTIVE_HIGH>;/* GPIO_128 */
+   linux,default-trigger = "mmc0";
+   default-state = "off";
+   };
+
+   led@2 {
+   label = "pandora::sd2";
+   gpios = <&gpio5 1 GPIO_ACTIVE_HIGH>;/* GPIO_129 */
+   linux,default-trigger = "mmc1";
+   default-state = "off";
+   };
+
+   led@3 {
+   label = "pandora::bluetooth";
+   gpios = <&gpio5 30 GPIO_ACTIVE_HIGH>;   /* GPIO_158 */
+   linux,default-trigger = "heartbeat";
+   default-state = "off";
+   };
+
+   led@4 {
+   label = "pandora::wifi";
+   gpios = <&gpio5 31 GPIO_ACTIVE_HIGH>;   /* GPIO_159 */
+   linux,default-trigger = "mmc2";
+   default-state = "off";
+   };
+   };
+
+   gpio-keys {
+   compatible = "gpio-keys";
+
+   pinctrl-names = "default";
+   pinctrl-0 = <&button_pins>;
+
+   up-button {
+   label = "up";
+   linux,code = ;
+   gpios = <&gpio4 14 GPIO_ACTIVE_HIGH>;   /* GPIO_110 */
+   gpio-key,wakeup;
+   };
+
+   down-button {
+   label = "down";
+   linux,code = ;
+   gpios = <&gpio4 7 GPIO_ACTIVE_HIGH>;/* GPIO_103 */
+   gpio-key,wakeup;
+   };
+
+   left-button {
+   label = "left";
+   linux,code = ;
+   gpios = <&gpio4 0 GPIO_ACTIVE_HIGH>;/* GPIO_96 */
+   gpio-key,wakeup;
+   };
+
+   right-button {
+   label = "right";
+   linux,code = ;
+   gpios = <&gpio4 2 GPIO_ACTIVE_HIGH>;/* GPIO_98 */
+   gpio-key,wakeup;
+   };
+
+   pageup-button {
+   label = "game 1";
+   linux,code = ;
+   gpios = <&gpio4 13 GPIO_ACTIVE_HIGH>;   /* GPIO_109 */
+   gpio-key,wakeup;
+   };
+
+   pagedown-button {
+   label = "game 3";
+   linux,code = ;
+   gpios = <&gpio4 10 GPIO_ACTIVE_HIGH>;   /* GPIO_106 */
+   gpio-key,wakeup;
+   };
+
+   home-button {
+   label = "game 4";
+   linux,code = ;
+   gpios = <&gpio4 5 GPIO_ACTIVE_HIGH>;/* GPIO_101 */
+   gpio-key,wakeup;
+   };
+
+   end-button {
+   label = "game 2";