diff mbox

[1/4] devicetree: bindings: Update gpio-keys-polled with support for abs/rel axis

Message ID 1441789886-5868-1-git-send-email-hdegoede@redhat.com
State Superseded, archived
Headers show

Commit Message

Hans de Goede Sept. 9, 2015, 9:11 a.m. UTC
The devicetree binding for gpio-keys-polled already allows specifying
what type of events (key / rel / abs) a button generates when pressed.

But for rel / abs axis we also need to specify which value this specific
gpio represents.

One usecase is digital joysticks / direction-pads which are hooked up to
gpio, in this case we've left and right buttons which we want to map to
EV_ABS, ABS_X and we want generate events for left with a value of -1 and
for right with a value of +1 (and similar for up / down and ABS_Y).

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
 Documentation/devicetree/bindings/input/gpio-keys-polled.txt | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

Comments

Rob Herring Sept. 10, 2015, 5:25 p.m. UTC | #1
On 09/09/2015 04:11 AM, Hans de Goede wrote:
> This header provides evdev constants for linux,code, and linux,input-*
> properties.
> 
> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
> ---
>  include/dt-bindings/input/evdev.h | 76 +++++++++++++++++++++++++++++++++++++++

This looks fine, but please just add to input/input.h.

Rob

>  1 file changed, 76 insertions(+)
>  create mode 100644 include/dt-bindings/input/evdev.h
> 
> diff --git a/include/dt-bindings/input/evdev.h b/include/dt-bindings/input/evdev.h
> new file mode 100644
> index 0000000..c1f7e0d
> --- /dev/null
> +++ b/include/dt-bindings/input/evdev.h
> @@ -0,0 +1,76 @@
> +/*
> + * This header provides evdev constants for linux,code, and linux,input-*
> + * properties.
> + */
> +
> +#ifndef _DT_BINDINGS_INPUT_LINUX_H
> +#define _DT_BINDINGS_INPUT_LINUX_H
> +
> +/*
> + * Event types
> + */
> +
> +#define EV_SYN			0x00
> +#define EV_KEY			0x01
> +#define EV_REL			0x02
> +#define EV_ABS			0x03
> +#define EV_MSC			0x04
> +#define EV_SW			0x05
> +#define EV_LED			0x11
> +#define EV_SND			0x12
> +#define EV_REP			0x14
> +#define EV_FF			0x15
> +#define EV_PWR			0x16
> +#define EV_FF_STATUS		0x17
> +#define EV_MAX			0x1f
> +
> +/*
> + * Relative axes
> + */
> +
> +#define REL_X			0x00
> +#define REL_Y			0x01
> +#define REL_Z			0x02
> +#define REL_RX			0x03
> +#define REL_RY			0x04
> +#define REL_RZ			0x05
> +#define REL_HWHEEL		0x06
> +#define REL_DIAL		0x07
> +#define REL_WHEEL		0x08
> +#define REL_MISC		0x09
> +#define REL_MAX			0x0f
> +
> +/*
> + * Absolute axes
> + */
> +
> +#define ABS_X			0x00
> +#define ABS_Y			0x01
> +#define ABS_Z			0x02
> +#define ABS_RX			0x03
> +#define ABS_RY			0x04
> +#define ABS_RZ			0x05
> +#define ABS_THROTTLE		0x06
> +#define ABS_RUDDER		0x07
> +#define ABS_WHEEL		0x08
> +#define ABS_GAS			0x09
> +#define ABS_BRAKE		0x0a
> +#define ABS_HAT0X		0x10
> +#define ABS_HAT0Y		0x11
> +#define ABS_HAT1X		0x12
> +#define ABS_HAT1Y		0x13
> +#define ABS_HAT2X		0x14
> +#define ABS_HAT2Y		0x15
> +#define ABS_HAT3X		0x16
> +#define ABS_HAT3Y		0x17
> +#define ABS_PRESSURE		0x18
> +#define ABS_DISTANCE		0x19
> +#define ABS_TILT_X		0x1a
> +#define ABS_TILT_Y		0x1b
> +#define ABS_TOOL_WIDTH		0x1c
> +
> +#define ABS_VOLUME		0x20
> +
> +#define ABS_MISC		0x28
> +
> +#endif /* _DT_BINDINGS_INPUT_LINUX_H */
> 

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Rob Herring Sept. 10, 2015, 5:45 p.m. UTC | #2
On 09/09/2015 04:11 AM, Hans de Goede wrote:
> The devicetree binding for gpio-keys-polled already allows specifying
> what type of events (key / rel / abs) a button generates when pressed.
> 
> But for rel / abs axis we also need to specify which value this specific
> gpio represents.
> 
> One usecase is digital joysticks / direction-pads which are hooked up to
> gpio, in this case we've left and right buttons which we want to map to
> EV_ABS, ABS_X and we want generate events for left with a value of -1 and
> for right with a value of +1 (and similar for up / down and ABS_Y).

One minor comment, otherwise:

Acked-by: Rob Herring <robh@kernel.org>

> 
> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
> ---
>  Documentation/devicetree/bindings/input/gpio-keys-polled.txt | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/Documentation/devicetree/bindings/input/gpio-keys-polled.txt b/Documentation/devicetree/bindings/input/gpio-keys-polled.txt
> index 313abef..ab4b09b 100644
> --- a/Documentation/devicetree/bindings/input/gpio-keys-polled.txt
> +++ b/Documentation/devicetree/bindings/input/gpio-keys-polled.txt
> @@ -13,11 +13,16 @@ Subnode properties:
>  
>  	- gpios: OF device-tree gpio specification.
>  	- label: Descriptive name of the key.
> -	- linux,code: Keycode to emit.
> +	- linux,code: Key / Axis code to emit.
>  
>  Optional subnode-properties:
>  	- linux,input-type: Specify event type this button/key generates.
>  	  If not specified defaults to <1> == EV_KEY.
> +	- linux,input-value: If linux,input-type is EV_ABS or EV_REL then this
> +	  value is send for events this button generates when pressed.

s/send/sent/

> +	  EV_ABS axis will generate an event with a value of 0 when all
> +	  buttons with linux,input-type == EV_ABS and linux,code == axis
> +	  are released.
>  	- debounce-interval: Debouncing interval time in milliseconds.
>  	  If not specified defaults to 5.
>  	- gpio-key,wakeup: Boolean, button can wake-up the system.
> 

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Dmitry Torokhov Sept. 10, 2015, 6:34 p.m. UTC | #3
On Thu, Sep 10, 2015 at 10:25 AM, Rob Herring <robh@kernel.org> wrote:
> On 09/09/2015 04:11 AM, Hans de Goede wrote:
>> This header provides evdev constants for linux,code, and linux,input-*
>> properties.
>>
>> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
>> ---
>>  include/dt-bindings/input/evdev.h | 76 +++++++++++++++++++++++++++++++++++++++
>
> This looks fine, but please just add to input/input.h.
>
> Rob
>
>>  1 file changed, 76 insertions(+)
>>  create mode 100644 include/dt-bindings/input/evdev.h
>>
>> diff --git a/include/dt-bindings/input/evdev.h b/include/dt-bindings/input/evdev.h
>> new file mode 100644
>> index 0000000..c1f7e0d
>> --- /dev/null
>> +++ b/include/dt-bindings/input/evdev.h
>> @@ -0,0 +1,76 @@
>> +/*
>> + * This header provides evdev constants for linux,code, and linux,input-*
>> + * properties.
>> + */
>> +
>> +#ifndef _DT_BINDINGS_INPUT_LINUX_H
>> +#define _DT_BINDINGS_INPUT_LINUX_H
>> +
>> +/*
>> + * Event types
>> + */
>> +
>> +#define EV_SYN                       0x00
>> +#define EV_KEY                       0x01
>> +#define EV_REL                       0x02
>> +#define EV_ABS                       0x03
>> +#define EV_MSC                       0x04
>> +#define EV_SW                        0x05
>> +#define EV_LED                       0x11
>> +#define EV_SND                       0x12
>> +#define EV_REP                       0x14
>> +#define EV_FF                        0x15
>> +#define EV_PWR                       0x16
>> +#define EV_FF_STATUS         0x17
>> +#define EV_MAX                       0x1f
>> +
>> +/*
>> + * Relative axes
>> + */
>> +
>> +#define REL_X                        0x00
>> +#define REL_Y                        0x01
>> +#define REL_Z                        0x02
>> +#define REL_RX                       0x03
>> +#define REL_RY                       0x04
>> +#define REL_RZ                       0x05
>> +#define REL_HWHEEL           0x06
>> +#define REL_DIAL             0x07
>> +#define REL_WHEEL            0x08
>> +#define REL_MISC             0x09
>> +#define REL_MAX                      0x0f
>> +
>> +/*
>> + * Absolute axes
>> + */
>> +
>> +#define ABS_X                        0x00
>> +#define ABS_Y                        0x01
>> +#define ABS_Z                        0x02
>> +#define ABS_RX                       0x03
>> +#define ABS_RY                       0x04
>> +#define ABS_RZ                       0x05
>> +#define ABS_THROTTLE         0x06
>> +#define ABS_RUDDER           0x07
>> +#define ABS_WHEEL            0x08
>> +#define ABS_GAS                      0x09
>> +#define ABS_BRAKE            0x0a
>> +#define ABS_HAT0X            0x10
>> +#define ABS_HAT0Y            0x11
>> +#define ABS_HAT1X            0x12
>> +#define ABS_HAT1Y            0x13
>> +#define ABS_HAT2X            0x14
>> +#define ABS_HAT2Y            0x15
>> +#define ABS_HAT3X            0x16
>> +#define ABS_HAT3Y            0x17
>> +#define ABS_PRESSURE         0x18
>> +#define ABS_DISTANCE         0x19
>> +#define ABS_TILT_X           0x1a
>> +#define ABS_TILT_Y           0x1b
>> +#define ABS_TOOL_WIDTH               0x1c
>> +
>> +#define ABS_VOLUME           0x20
>> +
>> +#define ABS_MISC             0x28
>> +
>> +#endif /* _DT_BINDINGS_INPUT_LINUX_H */
>>
>

Actually I'd rather we removed include/dt-bindings/input/input.h and
instead used the header file from uapi. As it is now we already
duplicating definitions and the copy in dt-bindings is missing several
key codes. Until we split DT bindings form the kernel code I'd rather
have definitions in one place.

Thanks.
Hans de Goede Sept. 10, 2015, 6:40 p.m. UTC | #4
Hi,

On 10-09-15 20:34, Dmitry Torokhov wrote:
> On Thu, Sep 10, 2015 at 10:25 AM, Rob Herring <robh@kernel.org> wrote:
>> On 09/09/2015 04:11 AM, Hans de Goede wrote:
>>> This header provides evdev constants for linux,code, and linux,input-*
>>> properties.
>>>
>>> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
>>> ---
>>>   include/dt-bindings/input/evdev.h | 76 +++++++++++++++++++++++++++++++++++++++
>>
>> This looks fine, but please just add to input/input.h.
>>
>> Rob
>>
>>>   1 file changed, 76 insertions(+)
>>>   create mode 100644 include/dt-bindings/input/evdev.h
>>>
>>> diff --git a/include/dt-bindings/input/evdev.h b/include/dt-bindings/input/evdev.h
>>> new file mode 100644
>>> index 0000000..c1f7e0d
>>> --- /dev/null
>>> +++ b/include/dt-bindings/input/evdev.h
>>> @@ -0,0 +1,76 @@
>>> +/*
>>> + * This header provides evdev constants for linux,code, and linux,input-*
>>> + * properties.
>>> + */
>>> +
>>> +#ifndef _DT_BINDINGS_INPUT_LINUX_H
>>> +#define _DT_BINDINGS_INPUT_LINUX_H
>>> +
>>> +/*
>>> + * Event types
>>> + */
>>> +
>>> +#define EV_SYN                       0x00
>>> +#define EV_KEY                       0x01
>>> +#define EV_REL                       0x02
>>> +#define EV_ABS                       0x03
>>> +#define EV_MSC                       0x04
>>> +#define EV_SW                        0x05
>>> +#define EV_LED                       0x11
>>> +#define EV_SND                       0x12
>>> +#define EV_REP                       0x14
>>> +#define EV_FF                        0x15
>>> +#define EV_PWR                       0x16
>>> +#define EV_FF_STATUS         0x17
>>> +#define EV_MAX                       0x1f
>>> +
>>> +/*
>>> + * Relative axes
>>> + */
>>> +
>>> +#define REL_X                        0x00
>>> +#define REL_Y                        0x01
>>> +#define REL_Z                        0x02
>>> +#define REL_RX                       0x03
>>> +#define REL_RY                       0x04
>>> +#define REL_RZ                       0x05
>>> +#define REL_HWHEEL           0x06
>>> +#define REL_DIAL             0x07
>>> +#define REL_WHEEL            0x08
>>> +#define REL_MISC             0x09
>>> +#define REL_MAX                      0x0f
>>> +
>>> +/*
>>> + * Absolute axes
>>> + */
>>> +
>>> +#define ABS_X                        0x00
>>> +#define ABS_Y                        0x01
>>> +#define ABS_Z                        0x02
>>> +#define ABS_RX                       0x03
>>> +#define ABS_RY                       0x04
>>> +#define ABS_RZ                       0x05
>>> +#define ABS_THROTTLE         0x06
>>> +#define ABS_RUDDER           0x07
>>> +#define ABS_WHEEL            0x08
>>> +#define ABS_GAS                      0x09
>>> +#define ABS_BRAKE            0x0a
>>> +#define ABS_HAT0X            0x10
>>> +#define ABS_HAT0Y            0x11
>>> +#define ABS_HAT1X            0x12
>>> +#define ABS_HAT1Y            0x13
>>> +#define ABS_HAT2X            0x14
>>> +#define ABS_HAT2Y            0x15
>>> +#define ABS_HAT3X            0x16
>>> +#define ABS_HAT3Y            0x17
>>> +#define ABS_PRESSURE         0x18
>>> +#define ABS_DISTANCE         0x19
>>> +#define ABS_TILT_X           0x1a
>>> +#define ABS_TILT_Y           0x1b
>>> +#define ABS_TOOL_WIDTH               0x1c
>>> +
>>> +#define ABS_VOLUME           0x20
>>> +
>>> +#define ABS_MISC             0x28
>>> +
>>> +#endif /* _DT_BINDINGS_INPUT_LINUX_H */
>>>
>>
>
> Actually I'd rather we removed include/dt-bindings/input/input.h and
> instead used the header file from uapi. As it is now we already
> duplicating definitions and the copy in dt-bindings is missing several
> key codes. Until we split DT bindings form the kernel code I'd rather
> have definitions in one place.

AFAIK we cannot do that as the uapi header also contains things like:

struct input_event {
         struct timeval time;
         __u16 type;
         __u16 code;
         __s32 value;
};

Which is not valid device tree syntax.

If you want this we need to split the uapi headers in one with only
defines and one with all the rest.

Regards,

Hans
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Dmitry Torokhov Sept. 10, 2015, 6:42 p.m. UTC | #5
On Thu, Sep 10, 2015 at 11:40 AM, Hans de Goede <hdegoede@redhat.com> wrote:
> Hi,
>
>
> On 10-09-15 20:34, Dmitry Torokhov wrote:
>>
>> On Thu, Sep 10, 2015 at 10:25 AM, Rob Herring <robh@kernel.org> wrote:
>>>
>>> On 09/09/2015 04:11 AM, Hans de Goede wrote:
>>>>
>>>> This header provides evdev constants for linux,code, and linux,input-*
>>>> properties.
>>>>
>>>> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
>>>> ---
>>>>   include/dt-bindings/input/evdev.h | 76
>>>> +++++++++++++++++++++++++++++++++++++++
>>>
>>>
>>> This looks fine, but please just add to input/input.h.
>>>
>>> Rob
>>>
>>>>   1 file changed, 76 insertions(+)
>>>>   create mode 100644 include/dt-bindings/input/evdev.h
>>>>
>>>> diff --git a/include/dt-bindings/input/evdev.h
>>>> b/include/dt-bindings/input/evdev.h
>>>> new file mode 100644
>>>> index 0000000..c1f7e0d
>>>> --- /dev/null
>>>> +++ b/include/dt-bindings/input/evdev.h
>>>> @@ -0,0 +1,76 @@
>>>> +/*
>>>> + * This header provides evdev constants for linux,code, and
>>>> linux,input-*
>>>> + * properties.
>>>> + */
>>>> +
>>>> +#ifndef _DT_BINDINGS_INPUT_LINUX_H
>>>> +#define _DT_BINDINGS_INPUT_LINUX_H
>>>> +
>>>> +/*
>>>> + * Event types
>>>> + */
>>>> +
>>>> +#define EV_SYN                       0x00
>>>> +#define EV_KEY                       0x01
>>>> +#define EV_REL                       0x02
>>>> +#define EV_ABS                       0x03
>>>> +#define EV_MSC                       0x04
>>>> +#define EV_SW                        0x05
>>>> +#define EV_LED                       0x11
>>>> +#define EV_SND                       0x12
>>>> +#define EV_REP                       0x14
>>>> +#define EV_FF                        0x15
>>>> +#define EV_PWR                       0x16
>>>> +#define EV_FF_STATUS         0x17
>>>> +#define EV_MAX                       0x1f
>>>> +
>>>> +/*
>>>> + * Relative axes
>>>> + */
>>>> +
>>>> +#define REL_X                        0x00
>>>> +#define REL_Y                        0x01
>>>> +#define REL_Z                        0x02
>>>> +#define REL_RX                       0x03
>>>> +#define REL_RY                       0x04
>>>> +#define REL_RZ                       0x05
>>>> +#define REL_HWHEEL           0x06
>>>> +#define REL_DIAL             0x07
>>>> +#define REL_WHEEL            0x08
>>>> +#define REL_MISC             0x09
>>>> +#define REL_MAX                      0x0f
>>>> +
>>>> +/*
>>>> + * Absolute axes
>>>> + */
>>>> +
>>>> +#define ABS_X                        0x00
>>>> +#define ABS_Y                        0x01
>>>> +#define ABS_Z                        0x02
>>>> +#define ABS_RX                       0x03
>>>> +#define ABS_RY                       0x04
>>>> +#define ABS_RZ                       0x05
>>>> +#define ABS_THROTTLE         0x06
>>>> +#define ABS_RUDDER           0x07
>>>> +#define ABS_WHEEL            0x08
>>>> +#define ABS_GAS                      0x09
>>>> +#define ABS_BRAKE            0x0a
>>>> +#define ABS_HAT0X            0x10
>>>> +#define ABS_HAT0Y            0x11
>>>> +#define ABS_HAT1X            0x12
>>>> +#define ABS_HAT1Y            0x13
>>>> +#define ABS_HAT2X            0x14
>>>> +#define ABS_HAT2Y            0x15
>>>> +#define ABS_HAT3X            0x16
>>>> +#define ABS_HAT3Y            0x17
>>>> +#define ABS_PRESSURE         0x18
>>>> +#define ABS_DISTANCE         0x19
>>>> +#define ABS_TILT_X           0x1a
>>>> +#define ABS_TILT_Y           0x1b
>>>> +#define ABS_TOOL_WIDTH               0x1c
>>>> +
>>>> +#define ABS_VOLUME           0x20
>>>> +
>>>> +#define ABS_MISC             0x28
>>>> +
>>>> +#endif /* _DT_BINDINGS_INPUT_LINUX_H */
>>>>
>>>
>>
>> Actually I'd rather we removed include/dt-bindings/input/input.h and
>> instead used the header file from uapi. As it is now we already
>> duplicating definitions and the copy in dt-bindings is missing several
>> key codes. Until we split DT bindings form the kernel code I'd rather
>> have definitions in one place.
>
>
> AFAIK we cannot do that as the uapi header also contains things like:
>
> struct input_event {
>         struct timeval time;
>         __u16 type;
>         __u16 code;
>         __s32 value;
> };
>
> Which is not valid device tree syntax.
>
> If you want this we need to split the uapi headers in one with only
> defines and one with all the rest.

That would be fine by me. event-codes.h?
Hans de Goede Sept. 10, 2015, 6:50 p.m. UTC | #6
Hi,

On 10-09-15 20:42, Dmitry Torokhov wrote:
> On Thu, Sep 10, 2015 at 11:40 AM, Hans de Goede <hdegoede@redhat.com> wrote:
>> Hi,
>>
>>
>> On 10-09-15 20:34, Dmitry Torokhov wrote:
>>>
>>> On Thu, Sep 10, 2015 at 10:25 AM, Rob Herring <robh@kernel.org> wrote:
>>>>
>>>> On 09/09/2015 04:11 AM, Hans de Goede wrote:
>>>>>
>>>>> This header provides evdev constants for linux,code, and linux,input-*
>>>>> properties.
>>>>>
>>>>> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
>>>>> ---
>>>>>    include/dt-bindings/input/evdev.h | 76
>>>>> +++++++++++++++++++++++++++++++++++++++
>>>>
>>>>
>>>> This looks fine, but please just add to input/input.h.
>>>>
>>>> Rob
>>>>
>>>>>    1 file changed, 76 insertions(+)
>>>>>    create mode 100644 include/dt-bindings/input/evdev.h
>>>>>
>>>>> diff --git a/include/dt-bindings/input/evdev.h
>>>>> b/include/dt-bindings/input/evdev.h
>>>>> new file mode 100644
>>>>> index 0000000..c1f7e0d
>>>>> --- /dev/null
>>>>> +++ b/include/dt-bindings/input/evdev.h
>>>>> @@ -0,0 +1,76 @@
>>>>> +/*
>>>>> + * This header provides evdev constants for linux,code, and
>>>>> linux,input-*
>>>>> + * properties.
>>>>> + */
>>>>> +
>>>>> +#ifndef _DT_BINDINGS_INPUT_LINUX_H
>>>>> +#define _DT_BINDINGS_INPUT_LINUX_H
>>>>> +
>>>>> +/*
>>>>> + * Event types
>>>>> + */
>>>>> +
>>>>> +#define EV_SYN                       0x00
>>>>> +#define EV_KEY                       0x01
>>>>> +#define EV_REL                       0x02
>>>>> +#define EV_ABS                       0x03
>>>>> +#define EV_MSC                       0x04
>>>>> +#define EV_SW                        0x05
>>>>> +#define EV_LED                       0x11
>>>>> +#define EV_SND                       0x12
>>>>> +#define EV_REP                       0x14
>>>>> +#define EV_FF                        0x15
>>>>> +#define EV_PWR                       0x16
>>>>> +#define EV_FF_STATUS         0x17
>>>>> +#define EV_MAX                       0x1f
>>>>> +
>>>>> +/*
>>>>> + * Relative axes
>>>>> + */
>>>>> +
>>>>> +#define REL_X                        0x00
>>>>> +#define REL_Y                        0x01
>>>>> +#define REL_Z                        0x02
>>>>> +#define REL_RX                       0x03
>>>>> +#define REL_RY                       0x04
>>>>> +#define REL_RZ                       0x05
>>>>> +#define REL_HWHEEL           0x06
>>>>> +#define REL_DIAL             0x07
>>>>> +#define REL_WHEEL            0x08
>>>>> +#define REL_MISC             0x09
>>>>> +#define REL_MAX                      0x0f
>>>>> +
>>>>> +/*
>>>>> + * Absolute axes
>>>>> + */
>>>>> +
>>>>> +#define ABS_X                        0x00
>>>>> +#define ABS_Y                        0x01
>>>>> +#define ABS_Z                        0x02
>>>>> +#define ABS_RX                       0x03
>>>>> +#define ABS_RY                       0x04
>>>>> +#define ABS_RZ                       0x05
>>>>> +#define ABS_THROTTLE         0x06
>>>>> +#define ABS_RUDDER           0x07
>>>>> +#define ABS_WHEEL            0x08
>>>>> +#define ABS_GAS                      0x09
>>>>> +#define ABS_BRAKE            0x0a
>>>>> +#define ABS_HAT0X            0x10
>>>>> +#define ABS_HAT0Y            0x11
>>>>> +#define ABS_HAT1X            0x12
>>>>> +#define ABS_HAT1Y            0x13
>>>>> +#define ABS_HAT2X            0x14
>>>>> +#define ABS_HAT2Y            0x15
>>>>> +#define ABS_HAT3X            0x16
>>>>> +#define ABS_HAT3Y            0x17
>>>>> +#define ABS_PRESSURE         0x18
>>>>> +#define ABS_DISTANCE         0x19
>>>>> +#define ABS_TILT_X           0x1a
>>>>> +#define ABS_TILT_Y           0x1b
>>>>> +#define ABS_TOOL_WIDTH               0x1c
>>>>> +
>>>>> +#define ABS_VOLUME           0x20
>>>>> +
>>>>> +#define ABS_MISC             0x28
>>>>> +
>>>>> +#endif /* _DT_BINDINGS_INPUT_LINUX_H */
>>>>>
>>>>
>>>
>>> Actually I'd rather we removed include/dt-bindings/input/input.h and
>>> instead used the header file from uapi. As it is now we already
>>> duplicating definitions and the copy in dt-bindings is missing several
>>> key codes. Until we split DT bindings form the kernel code I'd rather
>>> have definitions in one place.
>>
>>
>> AFAIK we cannot do that as the uapi header also contains things like:
>>
>> struct input_event {
>>          struct timeval time;
>>          __u16 type;
>>          __u16 code;
>>          __s32 value;
>> };
>>
>> Which is not valid device tree syntax.
>>
>> If you want this we need to split the uapi headers in one with only
>> defines and one with all the rest.
>
> That would be fine by me. event-codes.h?

Since this will live in the generic include/linux namespace (for userspace)
maybe input-event-codes ?

Rob are you ok with including uapi headers from dts files if those uapi
headers are guaranteed to have only #define-s in them?

I currently have a bit too much on my plate. So if someone else can take
care of this (assuming Rob acks it) that would be great.

Regards,

Hans
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Rob Herring Sept. 10, 2015, 10:48 p.m. UTC | #7
+Ian

On 09/10/2015 01:50 PM, Hans de Goede wrote:
> Hi,
> 
> On 10-09-15 20:42, Dmitry Torokhov wrote:
>> On Thu, Sep 10, 2015 at 11:40 AM, Hans de Goede <hdegoede@redhat.com>
>> wrote:
>>> Hi,
>>>
>>>
>>> On 10-09-15 20:34, Dmitry Torokhov wrote:
>>>>
>>>> On Thu, Sep 10, 2015 at 10:25 AM, Rob Herring <robh@kernel.org> wrote:
>>>>>
>>>>> On 09/09/2015 04:11 AM, Hans de Goede wrote:
>>>>>>
>>>>>> This header provides evdev constants for linux,code, and
>>>>>> linux,input-*
>>>>>> properties.
>>>>>>
>>>>>> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
>>>>>> ---
>>>>>>    include/dt-bindings/input/evdev.h | 76
>>>>>> +++++++++++++++++++++++++++++++++++++++
>>>>>
>>>>>
>>>>> This looks fine, but please just add to input/input.h.

[...]

>>>> Actually I'd rather we removed include/dt-bindings/input/input.h and
>>>> instead used the header file from uapi. As it is now we already
>>>> duplicating definitions and the copy in dt-bindings is missing several
>>>> key codes. Until we split DT bindings form the kernel code I'd rather
>>>> have definitions in one place.

We do already have split binding tree. It is generated from the kernel
tree ATM. Adding Ian for any comments.

>>> AFAIK we cannot do that as the uapi header also contains things like:
>>>
>>> struct input_event {
>>>          struct timeval time;
>>>          __u16 type;
>>>          __u16 code;
>>>          __s32 value;
>>> };
>>>
>>> Which is not valid device tree syntax.
>>>
>>> If you want this we need to split the uapi headers in one with only
>>> defines and one with all the rest.
>>
>> That would be fine by me. event-codes.h?
> 
> Since this will live in the generic include/linux namespace (for userspace)
> maybe input-event-codes ?
> 
> Rob are you ok with including uapi headers from dts files if those uapi
> headers are guaranteed to have only #define-s in them?

No. If you can do it as a symlink or some limited way, I'd be fine with
that. I don't want to see wholesale addition of uapi headers though.

Rob

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Dmitry Torokhov Sept. 12, 2015, 6:04 p.m. UTC | #8
On Thu, Sep 10, 2015 at 3:48 PM, Rob Herring <robh@kernel.org> wrote:
> +Ian
>
> On 09/10/2015 01:50 PM, Hans de Goede wrote:
>> Hi,
>>
>> On 10-09-15 20:42, Dmitry Torokhov wrote:
>>> On Thu, Sep 10, 2015 at 11:40 AM, Hans de Goede <hdegoede@redhat.com>
>>> wrote:
>>>> Hi,
>>>>
>>>>
>>>> On 10-09-15 20:34, Dmitry Torokhov wrote:
>>>>>
>>>>> On Thu, Sep 10, 2015 at 10:25 AM, Rob Herring <robh@kernel.org> wrote:
>>>>>>
>>>>>> On 09/09/2015 04:11 AM, Hans de Goede wrote:
>>>>>>>
>>>>>>> This header provides evdev constants for linux,code, and
>>>>>>> linux,input-*
>>>>>>> properties.
>>>>>>>
>>>>>>> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
>>>>>>> ---
>>>>>>>    include/dt-bindings/input/evdev.h | 76
>>>>>>> +++++++++++++++++++++++++++++++++++++++
>>>>>>
>>>>>>
>>>>>> This looks fine, but please just add to input/input.h.
>
> [...]
>
>>>>> Actually I'd rather we removed include/dt-bindings/input/input.h and
>>>>> instead used the header file from uapi. As it is now we already
>>>>> duplicating definitions and the copy in dt-bindings is missing several
>>>>> key codes. Until we split DT bindings form the kernel code I'd rather
>>>>> have definitions in one place.
>
> We do already have split binding tree. It is generated from the kernel
> tree ATM.

But the data in the kernel is the "source of truth" for now since the
other tree is simply generated.

> Adding Ian for any comments.
>
>>>> AFAIK we cannot do that as the uapi header also contains things like:
>>>>
>>>> struct input_event {
>>>>          struct timeval time;
>>>>          __u16 type;
>>>>          __u16 code;
>>>>          __s32 value;
>>>> };
>>>>
>>>> Which is not valid device tree syntax.
>>>>
>>>> If you want this we need to split the uapi headers in one with only
>>>> defines and one with all the rest.
>>>
>>> That would be fine by me. event-codes.h?
>>
>> Since this will live in the generic include/linux namespace (for userspace)
>> maybe input-event-codes ?
>>
>> Rob are you ok with including uapi headers from dts files if those uapi
>> headers are guaranteed to have only #define-s in them?
>
> No. If you can do it as a symlink or some limited way, I'd be fine with
> that. I don't want to see wholesale addition of uapi headers though.

Umm, not sure if I like symlink, it makes hard to see what includes
what. The individual DTSes will continue including
dt-bindings/input/input.h and only input.h will include uapi header
(so use of uapi is internal detail). Would that still be a problem?

Thanks.
diff mbox

Patch

diff --git a/Documentation/devicetree/bindings/input/gpio-keys-polled.txt b/Documentation/devicetree/bindings/input/gpio-keys-polled.txt
index 313abef..ab4b09b 100644
--- a/Documentation/devicetree/bindings/input/gpio-keys-polled.txt
+++ b/Documentation/devicetree/bindings/input/gpio-keys-polled.txt
@@ -13,11 +13,16 @@  Subnode properties:
 
 	- gpios: OF device-tree gpio specification.
 	- label: Descriptive name of the key.
-	- linux,code: Keycode to emit.
+	- linux,code: Key / Axis code to emit.
 
 Optional subnode-properties:
 	- linux,input-type: Specify event type this button/key generates.
 	  If not specified defaults to <1> == EV_KEY.
+	- linux,input-value: If linux,input-type is EV_ABS or EV_REL then this
+	  value is send for events this button generates when pressed.
+	  EV_ABS axis will generate an event with a value of 0 when all
+	  buttons with linux,input-type == EV_ABS and linux,code == axis
+	  are released.
 	- debounce-interval: Debouncing interval time in milliseconds.
 	  If not specified defaults to 5.
 	- gpio-key,wakeup: Boolean, button can wake-up the system.