On Wed, Jan 07, 2015 at 09:19:28AM +0100, Olliver Schinagl wrote: > Hey Dmitry, > > On 07-01-15 08:57, Dmitry Torokhov wrote: > >Hi Olliver, > > > >On Wed, Jan 07, 2015 at 08:31:06AM +0100, Olliver Schinagl wrote: > >>From: Olliver Schinagl <oli...@schinagl.nl> > >> > >>Almost all of the speaker drivers under input manipulate the ev bits > >>directly, which is not needed, as there is a helper available. > >> > >>This patch makes use of the helper for the speaker drivers. > >> > >>Signed-off-by: Olliver Schinagl <oli...@schinagl.nl> > >>--- > >> drivers/input/misc/cm109.c | 4 ++-- > >> drivers/input/misc/ixp4xx-beeper.c | 5 ++--- > >> drivers/input/misc/m68kspkr.c | 5 ++--- > >> drivers/input/misc/pcspkr.c | 5 ++--- > >> drivers/input/misc/pwm-beeper.c | 5 +---- > >> drivers/input/misc/sparcspkr.c | 6 ++---- > >> 6 files changed, 11 insertions(+), 19 deletions(-) > >> > >>diff --git a/drivers/input/misc/cm109.c b/drivers/input/misc/cm109.c > >>index 9365535..8e41070 100644 > >>--- a/drivers/input/misc/cm109.c > >>+++ b/drivers/input/misc/cm109.c > >>@@ -767,10 +767,10 @@ static int cm109_usb_probe(struct usb_interface *intf, > >> input_dev->keycodesize = sizeof(unsigned char); > >> input_dev->keycodemax = ARRAY_SIZE(dev->keymap); > >>- input_dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_SND); > >>- input_dev->sndbit[0] = BIT_MASK(SND_BELL) | BIT_MASK(SND_TONE); > >>+ input_set_capability(input_dev, EV_SND, SND_BELL | SND_TONE); > >No, input_set_capability() takes single event code, not bitmask. The > >fact that it works for these 2 values of SND events is pure coincidence > >(the old code wasn't much better though).
Ah, not, it does not work at all. Instead of setting bits 1 and 2 your code sets bit 3 in dev->sndbit. > What do you suggest we should do then? Fix input_set_capability to > take bit masks? or multiline events? > I'm not sure why __set_bits() wouldn't work for bitmasks, could you > educate me? Call it once per event: input_set_capability(input_dev, EV_SND, SND_BELL); input_set_capability(input_dev, EV_SND, SND_TONE); > > > >> /* register available key events */ > >>+ input_dev->evbit[0] = BIT_MASK(EV_KEY); > >Would prefer __set_bit(EV_KEY, input_dev->evbit); here instead. > I only moved the EV_KEY bit from above to its appropiate place here. The original code was setting combination of bits; here we set single one and __set_bit() is cleaner IMO. > I can change this one (and others) to use __set_bit() for now for > v2? Yes, please. Thanks. -- Dmitry -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/