From: dmitry.torokhov@gmail.com (Dmitry Torokhov)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCHv5 2/2] INPUT: Introduce generic trigger/LED pairs to input LEDs
Date: Mon, 5 Jan 2015 09:42:05 -0800 [thread overview]
Message-ID: <20150105174205.GB35592@dtor-ws> (raw)
In-Reply-To: <20150104234501.GJ25336@type.youpi.perso.aquilenet.fr>
Hi Samuel,
On Mon, Jan 05, 2015 at 12:45:01AM +0100, Samuel Thibault wrote:
> Dmitry Torokhov, le Sun 04 Jan 2015 15:28:38 -0800, a ?crit :
> > I'd rather we did not have a separate config option for this. Do we really need to
> > support case where LEDs are disabled?
>
> I don't really mind.
>
> > I'd rather stub it out instead of providing 2 separate code paths.
>
> Ok.
>
> > > +/* LED state change for some keyboard, notify that keyboard. */
> > > +static void perdevice_input_led_set(struct led_classdev *cdev,
> > > + enum led_brightness brightness)
> > > +{
> > > + struct input_dev *dev;
> > > + struct led_classdev *leds;
> > > + int led;
> > > +
> > > + dev = cdev->dev->platform_data;
> >
> > Umm, platform data is not the best place for storing this. Why not drvdata?
>
> Just because it didn't exist when I wrote the code :)
> Ok.
>
> > > +/* A new input device with potential LEDs to connect. */
> > > +int input_led_connect(struct input_dev *dev)
> > > +{
> > > + int i, error = -ENOMEM;
> > > + struct led_classdev *leds;
> > > + struct led_trigger *triggers;
> > > +
> > > + leds = kcalloc(LED_CNT, sizeof(*leds), GFP_KERNEL);
> > > + if (!leds)
> > > + goto err;
> >
> > Why do we allocate all possible led's for every device?
>
> Ah, right, that was making things simpler, but it could be
> squeezed. I'm just afraid of one thing: may dev->ledbit change after
> input_register_device? It seems that at least uinput somehow permits
> this. It then means having to store the number of actually created LEDs
> and triggers alongside.
The input device's capabilities (with the exception of keymap) should
not change after device registration. If uinput allows that we should
fix it there.
Thanks.
>
> > > + dev->leds = leds;
> > > +
> > > + triggers = kcalloc(LED_CNT, sizeof(*triggers), GFP_KERNEL);
> > > + if (!triggers)
> > > + goto err;
> > > + dev->triggers = triggers;
> >
> > Hmm, maybe having per-device triggers is a bit of overkill and we could have
> > just "input-numl", "input-capsl", etc.
>
> No, that won't work, notably for evdev access: we have to respect the
> per-device semantic.
>
> > > + /* No issue so far, we can register for real. */
> > > + for (i = 0; i < LED_CNT; i++)
> > > + if (leds[i].name) {
> > > + led_classdev_register(&dev->dev, &leds[i]);
> > > + leds[i].dev->platform_data = dev;
> > > + led_trigger_register(&triggers[i]);
> >
> > We need error handling here.
>
> Right.
>
> Samuel
--
Dmitry
WARNING: multiple messages have this Message-ID (diff)
From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
To: "Samuel Thibault" <samuel.thibault@ens-lyon.org>,
"Pavel Machek" <pavel@ucw.cz>,
"David Herrmann" <dh.herrmann@gmail.com>,
akpm@linux-foundation.org, jslaby@suse.cz,
"Bryan Wu" <cooloney@gmail.com>,
rpurdie@rpsys.net, linux-kernel@vger.kernel.org,
"Evan Broder" <evan@ebroder.net>,
"Arnaud Patard" <arnaud.patard@rtp-net.org>,
"Peter Korsgaard" <jacmet@sunsite.dk>,
"Sascha Hauer" <s.hauer@pengutronix.de>,
"Rob Clark" <robdclark@gmail.com>,
"Niels de Vos" <devos@fedoraproject.org>,
linux-arm-kernel@lists.infradead.org, blogic@openwrt.org,
"Pali Rohár" <pali.rohar@gmail.com>
Subject: Re: [PATCHv5 2/2] INPUT: Introduce generic trigger/LED pairs to input LEDs
Date: Mon, 5 Jan 2015 09:42:05 -0800 [thread overview]
Message-ID: <20150105174205.GB35592@dtor-ws> (raw)
In-Reply-To: <20150104234501.GJ25336@type.youpi.perso.aquilenet.fr>
Hi Samuel,
On Mon, Jan 05, 2015 at 12:45:01AM +0100, Samuel Thibault wrote:
> Dmitry Torokhov, le Sun 04 Jan 2015 15:28:38 -0800, a écrit :
> > I'd rather we did not have a separate config option for this. Do we really need to
> > support case where LEDs are disabled?
>
> I don't really mind.
>
> > I'd rather stub it out instead of providing 2 separate code paths.
>
> Ok.
>
> > > +/* LED state change for some keyboard, notify that keyboard. */
> > > +static void perdevice_input_led_set(struct led_classdev *cdev,
> > > + enum led_brightness brightness)
> > > +{
> > > + struct input_dev *dev;
> > > + struct led_classdev *leds;
> > > + int led;
> > > +
> > > + dev = cdev->dev->platform_data;
> >
> > Umm, platform data is not the best place for storing this. Why not drvdata?
>
> Just because it didn't exist when I wrote the code :)
> Ok.
>
> > > +/* A new input device with potential LEDs to connect. */
> > > +int input_led_connect(struct input_dev *dev)
> > > +{
> > > + int i, error = -ENOMEM;
> > > + struct led_classdev *leds;
> > > + struct led_trigger *triggers;
> > > +
> > > + leds = kcalloc(LED_CNT, sizeof(*leds), GFP_KERNEL);
> > > + if (!leds)
> > > + goto err;
> >
> > Why do we allocate all possible led's for every device?
>
> Ah, right, that was making things simpler, but it could be
> squeezed. I'm just afraid of one thing: may dev->ledbit change after
> input_register_device? It seems that at least uinput somehow permits
> this. It then means having to store the number of actually created LEDs
> and triggers alongside.
The input device's capabilities (with the exception of keymap) should
not change after device registration. If uinput allows that we should
fix it there.
Thanks.
>
> > > + dev->leds = leds;
> > > +
> > > + triggers = kcalloc(LED_CNT, sizeof(*triggers), GFP_KERNEL);
> > > + if (!triggers)
> > > + goto err;
> > > + dev->triggers = triggers;
> >
> > Hmm, maybe having per-device triggers is a bit of overkill and we could have
> > just "input-numl", "input-capsl", etc.
>
> No, that won't work, notably for evdev access: we have to respect the
> per-device semantic.
>
> > > + /* No issue so far, we can register for real. */
> > > + for (i = 0; i < LED_CNT; i++)
> > > + if (leds[i].name) {
> > > + led_classdev_register(&dev->dev, &leds[i]);
> > > + leds[i].dev->platform_data = dev;
> > > + led_trigger_register(&triggers[i]);
> >
> > We need error handling here.
>
> Right.
>
> Samuel
--
Dmitry
next prev parent reply other threads:[~2015-01-05 17:42 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-26 23:21 [PATCHv5 0/2] INPUT: Route keyboard LEDs through the generic LEDs layer Samuel Thibault
2014-12-26 23:21 ` Samuel Thibault
2014-12-26 23:21 ` [PATCHv5 1/2] INPUT: Introduce generic trigger/LED pairs between keyboard modifiers and input LEDs Samuel Thibault
2014-12-26 23:21 ` Samuel Thibault
2014-12-26 23:23 ` [PATCHv5 2/2] INPUT: Introduce generic trigger/LED pairs to " Samuel Thibault
2014-12-26 23:23 ` Samuel Thibault
2015-01-04 23:28 ` Dmitry Torokhov
2015-01-04 23:28 ` Dmitry Torokhov
2015-01-04 23:45 ` Samuel Thibault
2015-01-04 23:45 ` Samuel Thibault
2015-01-05 17:42 ` Dmitry Torokhov [this message]
2015-01-05 17:42 ` Dmitry Torokhov
2015-01-05 18:00 ` Samuel Thibault
2015-01-05 18:00 ` Samuel Thibault
2015-01-23 0:10 ` Samuel Thibault
2015-01-23 0:10 ` Samuel Thibault
2015-01-23 0:30 ` Samuel Thibault
2015-01-23 0:30 ` Samuel Thibault
2015-01-23 0:37 ` Dmitry Torokhov
2015-01-23 0:37 ` Dmitry Torokhov
2015-01-23 0:44 ` Samuel Thibault
2015-01-23 0:44 ` Samuel Thibault
2015-01-23 0:51 ` Dmitry Torokhov
2015-01-23 0:51 ` Dmitry Torokhov
2015-01-23 0:54 ` Samuel Thibault
2015-01-23 0:54 ` Samuel Thibault
2015-01-02 19:53 ` [PATCHv5 0/2] INPUT: Route keyboard LEDs through the generic LEDs layer Pavel Machek
2015-01-02 19:53 ` Pavel Machek
2015-01-02 20:11 ` Samuel Thibault
2015-01-02 20:11 ` Samuel Thibault
2015-01-03 19:47 ` Pavel Machek
2015-01-03 19:47 ` Pavel Machek
2015-01-21 15:21 ` Samuel Thibault
2015-01-21 15:21 ` Samuel Thibault
2015-01-23 12:31 ` Samuel Thibault
2015-01-23 12:31 ` Samuel Thibault
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150105174205.GB35592@dtor-ws \
--to=dmitry.torokhov@gmail.com \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.