Re: patch 1/4 add generic keyboard backlight support

2015-12-11 Thread Joerg Jung

> Am 11.12.2015 um 10:27 schrieb Ville Valkonen :
> 
>> On 11 December 2015 at 10:36, Joerg Jung  wrote:
>> Ping. Anyone?
>> 
>> > On 07 Dec 2015, at 23:39, Joerg Jung  wrote:
>> >
>> > Hi,
>> >
>> > here comes a series of small diffs which add generic support for
>> > keyboard backlights.
>> >
>> > Please find below the first diff, which adds new ioctls to wskbd(4) to
>> > control keyboard backlights.
>> >
>> > In contrast to an earlier diff from jcs, I have chosen to use a struct
>> > in favor of a simple (unsigned) int as depending on the vendor
>> > (Thinkpad, Apple, ...) different min/max values for the brightness of
>> > the keyboard backlight are possible.
>> >
>> > Comments, OK?
>> >
>> > Thanks,
>> > Regards,
>> > Joerg
>> >
>> >
>> >
>> > Index: wsconsio.h
>> > ===
>> > RCS file: /cvs/src/sys/dev/wscons/wsconsio.h,v
>> > retrieving revision 1.72
>> > diff -u -p -r1.72 wsconsio.h
>> > --- wsconsio.h30 Aug 2015 10:05:09 -  1.72
>> > +++ wsconsio.h7 Dec 2015 21:03:45 -
>> > @@ -180,6 +180,13 @@ struct wskbd_map_data {
>> > #define WSKBDIO_GETENCODING   _IOR('W', 15, kbd_t)
>> > #define WSKBDIO_SETENCODING   _IOW('W', 16, kbd_t)
>> >
>> > +/* Get/set keyboard backlight.  Not applicable to all keyboard types. */
>> > +struct wskbd_backlight {
>> > + unsigned int min, max, curval;
>> > +};
>> > +#define  WSKBDIO_GETBACKLIGHT_IOR('W', 17, struct wskbd_backlight)
>> > +#define  WSKBDIO_SETBACKLIGHT_IOW('W', 18, struct wskbd_backlight)
>> > +
>> > /* internal use only */
>> > #define WSKBDIO_SETMODE   _IOW('W', 19, int)
>> > #define WSKBDIO_GETMODE   _IOR('W', 20, int)
>> > Index: wskbd.c
>> > ===
>> > RCS file: /cvs/src/sys/dev/wscons/wskbd.c,v
>> > retrieving revision 1.82
>> > diff -u -p -r1.82 wskbd.c
>> > --- wskbd.c   10 Sep 2015 18:14:52 -  1.82
>> > +++ wskbd.c   7 Dec 2015 21:03:45 -
>> > @@ -230,6 +230,9 @@ int   wskbd_mux_close(struct wsevsrc *);
>> > int   wskbd_do_open(struct wskbd_softc *, struct wseventvar *);
>> > int   wskbd_do_ioctl(struct device *, u_long, caddr_t, int, struct proc *);
>> >
>> > +int  (*wskbd_get_backlight)(struct wskbd_backlight *);
>> > +int  (*wskbd_set_backlight)(struct wskbd_backlight *);
>> > +
>> > struct cfdriver wskbd_cd = {
>> >   NULL, "wskbd", DV_TTY
>> > };
>> > @@ -1010,6 +1013,7 @@ wskbd_displayioctl(struct device *dev, u
>> >   case WSKBDIO_SETDEFAULTKEYREPEAT:
>> >   case WSKBDIO_SETMAP:
>> >   case WSKBDIO_SETENCODING:
>> > + case WSKBDIO_SETBACKLIGHT:
>> >   if ((flag & FWRITE) == 0)
>> >   return (EACCES);
>> >   }
>> > @@ -1155,6 +1159,18 @@ getkeyrepeat:
>> >   wsmux_set_layout(sc->sc_base.me_parent, enc);
>> > #endif
>> >   return (0);
>> > +
>> > + case WSKBDIO_GETBACKLIGHT:
>> > + if (wskbd_get_backlight != NULL)
>> > + return (*wskbd_get_backlight)((struct 
>> > wskbd_backlight *)data);
>> > + error = ENOTTY;
>> > + break;
>> > +
>> > + case WSKBDIO_SETBACKLIGHT:
>> > + if (wskbd_set_backlight != NULL)
>> > + return (*wskbd_set_backlight)((struct 
>> > wskbd_backlight *)data);
>> > + error = ENOTTY;
>> > + break;
>> >   }
>> >
>> >   /*
>> >
> 
> not sure if this diff has been applied in the snapshots but lately brightness 
> keys started to work on Lenovo X250. Could be completely unrelated, though.

Yes, this is unrelated.

Re: patch 1/4 add generic keyboard backlight support

2015-12-11 Thread Ville Valkonen
On 11 December 2015 at 10:36, Joerg Jung  wrote:

> Ping. Anyone?
>
> > On 07 Dec 2015, at 23:39, Joerg Jung  wrote:
> >
> > Hi,
> >
> > here comes a series of small diffs which add generic support for
> > keyboard backlights.
> >
> > Please find below the first diff, which adds new ioctls to wskbd(4) to
> > control keyboard backlights.
> >
> > In contrast to an earlier diff from jcs, I have chosen to use a struct
> > in favor of a simple (unsigned) int as depending on the vendor
> > (Thinkpad, Apple, ...) different min/max values for the brightness of
> > the keyboard backlight are possible.
> >
> > Comments, OK?
> >
> > Thanks,
> > Regards,
> > Joerg
> >
> >
> >
> > Index: wsconsio.h
> > ===
> > RCS file: /cvs/src/sys/dev/wscons/wsconsio.h,v
> > retrieving revision 1.72
> > diff -u -p -r1.72 wsconsio.h
> > --- wsconsio.h30 Aug 2015 10:05:09 -  1.72
> > +++ wsconsio.h7 Dec 2015 21:03:45 -
> > @@ -180,6 +180,13 @@ struct wskbd_map_data {
> > #define WSKBDIO_GETENCODING   _IOR('W', 15, kbd_t)
> > #define WSKBDIO_SETENCODING   _IOW('W', 16, kbd_t)
> >
> > +/* Get/set keyboard backlight.  Not applicable to all keyboard types. */
> > +struct wskbd_backlight {
> > + unsigned int min, max, curval;
> > +};
> > +#define  WSKBDIO_GETBACKLIGHT_IOR('W', 17, struct
> wskbd_backlight)
> > +#define  WSKBDIO_SETBACKLIGHT_IOW('W', 18, struct
> wskbd_backlight)
> > +
> > /* internal use only */
> > #define WSKBDIO_SETMODE   _IOW('W', 19, int)
> > #define WSKBDIO_GETMODE   _IOR('W', 20, int)
> > Index: wskbd.c
> > ===
> > RCS file: /cvs/src/sys/dev/wscons/wskbd.c,v
> > retrieving revision 1.82
> > diff -u -p -r1.82 wskbd.c
> > --- wskbd.c   10 Sep 2015 18:14:52 -  1.82
> > +++ wskbd.c   7 Dec 2015 21:03:45 -
> > @@ -230,6 +230,9 @@ int   wskbd_mux_close(struct wsevsrc *);
> > int   wskbd_do_open(struct wskbd_softc *, struct wseventvar *);
> > int   wskbd_do_ioctl(struct device *, u_long, caddr_t, int, struct proc
> *);
> >
> > +int  (*wskbd_get_backlight)(struct wskbd_backlight *);
> > +int  (*wskbd_set_backlight)(struct wskbd_backlight *);
> > +
> > struct cfdriver wskbd_cd = {
> >   NULL, "wskbd", DV_TTY
> > };
> > @@ -1010,6 +1013,7 @@ wskbd_displayioctl(struct device *dev, u
> >   case WSKBDIO_SETDEFAULTKEYREPEAT:
> >   case WSKBDIO_SETMAP:
> >   case WSKBDIO_SETENCODING:
> > + case WSKBDIO_SETBACKLIGHT:
> >   if ((flag & FWRITE) == 0)
> >   return (EACCES);
> >   }
> > @@ -1155,6 +1159,18 @@ getkeyrepeat:
> >   wsmux_set_layout(sc->sc_base.me_parent, enc);
> > #endif
> >   return (0);
> > +
> > + case WSKBDIO_GETBACKLIGHT:
> > + if (wskbd_get_backlight != NULL)
> > + return (*wskbd_get_backlight)((struct
> wskbd_backlight *)data);
> > + error = ENOTTY;
> > + break;
> > +
> > + case WSKBDIO_SETBACKLIGHT:
> > + if (wskbd_set_backlight != NULL)
> > + return (*wskbd_set_backlight)((struct
> wskbd_backlight *)data);
> > + error = ENOTTY;
> > + break;
> >   }
> >
> >   /*
> >
>

Hello Joerg,

not sure if this diff has been applied in the snapshots but lately
brightness keys started to work on Lenovo X250. Could be completely
unrelated, though.

--
Regards,
Ville Valkonen


Re: patch 1/4 add generic keyboard backlight support

2015-12-11 Thread Joerg Jung
Ping. Anyone?

> On 07 Dec 2015, at 23:39, Joerg Jung  wrote:
> 
> Hi,
> 
> here comes a series of small diffs which add generic support for
> keyboard backlights.
> 
> Please find below the first diff, which adds new ioctls to wskbd(4) to
> control keyboard backlights.
> 
> In contrast to an earlier diff from jcs, I have chosen to use a struct
> in favor of a simple (unsigned) int as depending on the vendor
> (Thinkpad, Apple, ...) different min/max values for the brightness of
> the keyboard backlight are possible.
> 
> Comments, OK?
> 
> Thanks,
> Regards,
> Joerg
> 
> 
> 
> Index: wsconsio.h
> ===
> RCS file: /cvs/src/sys/dev/wscons/wsconsio.h,v
> retrieving revision 1.72
> diff -u -p -r1.72 wsconsio.h
> --- wsconsio.h30 Aug 2015 10:05:09 -  1.72
> +++ wsconsio.h7 Dec 2015 21:03:45 -
> @@ -180,6 +180,13 @@ struct wskbd_map_data {
> #define WSKBDIO_GETENCODING   _IOR('W', 15, kbd_t)
> #define WSKBDIO_SETENCODING   _IOW('W', 16, kbd_t)
> 
> +/* Get/set keyboard backlight.  Not applicable to all keyboard types. */
> +struct wskbd_backlight {
> + unsigned int min, max, curval;
> +};
> +#define  WSKBDIO_GETBACKLIGHT_IOR('W', 17, struct wskbd_backlight)
> +#define  WSKBDIO_SETBACKLIGHT_IOW('W', 18, struct wskbd_backlight)
> +
> /* internal use only */
> #define WSKBDIO_SETMODE   _IOW('W', 19, int)
> #define WSKBDIO_GETMODE   _IOR('W', 20, int)
> Index: wskbd.c
> ===
> RCS file: /cvs/src/sys/dev/wscons/wskbd.c,v
> retrieving revision 1.82
> diff -u -p -r1.82 wskbd.c
> --- wskbd.c   10 Sep 2015 18:14:52 -  1.82
> +++ wskbd.c   7 Dec 2015 21:03:45 -
> @@ -230,6 +230,9 @@ int   wskbd_mux_close(struct wsevsrc *);
> int   wskbd_do_open(struct wskbd_softc *, struct wseventvar *);
> int   wskbd_do_ioctl(struct device *, u_long, caddr_t, int, struct proc *);
> 
> +int  (*wskbd_get_backlight)(struct wskbd_backlight *);
> +int  (*wskbd_set_backlight)(struct wskbd_backlight *);
> +
> struct cfdriver wskbd_cd = {
>   NULL, "wskbd", DV_TTY
> };
> @@ -1010,6 +1013,7 @@ wskbd_displayioctl(struct device *dev, u
>   case WSKBDIO_SETDEFAULTKEYREPEAT:
>   case WSKBDIO_SETMAP:
>   case WSKBDIO_SETENCODING:
> + case WSKBDIO_SETBACKLIGHT:
>   if ((flag & FWRITE) == 0)
>   return (EACCES);
>   }
> @@ -1155,6 +1159,18 @@ getkeyrepeat:
>   wsmux_set_layout(sc->sc_base.me_parent, enc);
> #endif
>   return (0);
> +
> + case WSKBDIO_GETBACKLIGHT:
> + if (wskbd_get_backlight != NULL)
> + return (*wskbd_get_backlight)((struct wskbd_backlight 
> *)data);
> + error = ENOTTY;
> + break;
> +
> + case WSKBDIO_SETBACKLIGHT:
> + if (wskbd_set_backlight != NULL)
> + return (*wskbd_set_backlight)((struct wskbd_backlight 
> *)data);
> + error = ENOTTY;
> + break;
>   }
> 
>   /*
> 



patch 1/4 add generic keyboard backlight support

2015-12-07 Thread Joerg Jung
Hi,

here comes a series of small diffs which add generic support for
keyboard backlights.

Please find below the first diff, which adds new ioctls to wskbd(4) to
control keyboard backlights.

In contrast to an earlier diff from jcs, I have chosen to use a struct
in favor of a simple (unsigned) int as depending on the vendor
(Thinkpad, Apple, ...) different min/max values for the brightness of
the keyboard backlight are possible.

Comments, OK?

Thanks,
Regards,
Joerg



Index: wsconsio.h
===
RCS file: /cvs/src/sys/dev/wscons/wsconsio.h,v
retrieving revision 1.72
diff -u -p -r1.72 wsconsio.h
--- wsconsio.h  30 Aug 2015 10:05:09 -  1.72
+++ wsconsio.h  7 Dec 2015 21:03:45 -
@@ -180,6 +180,13 @@ struct wskbd_map_data {
 #define WSKBDIO_GETENCODING_IOR('W', 15, kbd_t)
 #define WSKBDIO_SETENCODING_IOW('W', 16, kbd_t)
 
+/* Get/set keyboard backlight.  Not applicable to all keyboard types. */
+struct wskbd_backlight {
+   unsigned int min, max, curval;
+};
+#defineWSKBDIO_GETBACKLIGHT_IOR('W', 17, struct wskbd_backlight)
+#defineWSKBDIO_SETBACKLIGHT_IOW('W', 18, struct wskbd_backlight)
+
 /* internal use only */
 #define WSKBDIO_SETMODE_IOW('W', 19, int)
 #define WSKBDIO_GETMODE_IOR('W', 20, int)
Index: wskbd.c
===
RCS file: /cvs/src/sys/dev/wscons/wskbd.c,v
retrieving revision 1.82
diff -u -p -r1.82 wskbd.c
--- wskbd.c 10 Sep 2015 18:14:52 -  1.82
+++ wskbd.c 7 Dec 2015 21:03:45 -
@@ -230,6 +230,9 @@ int wskbd_mux_close(struct wsevsrc *);
 intwskbd_do_open(struct wskbd_softc *, struct wseventvar *);
 intwskbd_do_ioctl(struct device *, u_long, caddr_t, int, struct proc *);
 
+int(*wskbd_get_backlight)(struct wskbd_backlight *);
+int(*wskbd_set_backlight)(struct wskbd_backlight *);
+
 struct cfdriver wskbd_cd = {
NULL, "wskbd", DV_TTY
 };
@@ -1010,6 +1013,7 @@ wskbd_displayioctl(struct device *dev, u
case WSKBDIO_SETDEFAULTKEYREPEAT:
case WSKBDIO_SETMAP:
case WSKBDIO_SETENCODING:
+   case WSKBDIO_SETBACKLIGHT:
if ((flag & FWRITE) == 0)
return (EACCES);
}
@@ -1155,6 +1159,18 @@ getkeyrepeat:
wsmux_set_layout(sc->sc_base.me_parent, enc);
 #endif
return (0);
+
+   case WSKBDIO_GETBACKLIGHT:
+   if (wskbd_get_backlight != NULL)
+   return (*wskbd_get_backlight)((struct wskbd_backlight 
*)data);
+   error = ENOTTY;
+   break;
+
+   case WSKBDIO_SETBACKLIGHT:
+   if (wskbd_set_backlight != NULL)
+   return (*wskbd_set_backlight)((struct wskbd_backlight 
*)data);
+   error = ENOTTY;
+   break;
}
 
/*