Message ID | 1441789886-5868-1-git-send-email-hdegoede@redhat.com |
---|---|
State | Superseded, archived |
Headers | show |
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
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
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.
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
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?
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
+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
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 --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.
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(-)