Re: [PATCH v3 1/6] hid: new driver for PicoLCD device

Dmitry Torokhov
2010-03-26T21:16:42Z

On Friday 26 March 2010 01:59:19 pm Jiri Kosina wrote:
> On Fri, 26 Mar 2010, Bruno Prémont wrote:
> > > > + for (i = 0; i < PICOLCD_KEYS; i++) {
> > > > + int key = ((int *)idev->keycode)[i];
> > >
> > > Keycodes are now short, not int. Also, just do:
> > > input_set_capability(idev, EV_KEY, data->keycode[i]);
> > >
> > > > + if (key < KEY_MAX && key >= 0)
> > > > + input_set_capability(idev, EV_KEY, key);
> >
> > Oops, I was not careful enough when switching over...
>
> Dmitry, thanks a lot for rapid review the driver.
>
> Bruno, could you please fix this and submit a followup 1/6 patch, so that
> I could queue the driver in my tree?
>
> I have almost finished going over the driver and haven't encountered any
> other issues that would require immediate fixing.
>
> Still, it would be nice to have the framebuffer/LCD/backlight bits
> reviewed by respective subsystem maintainers. But I'll probably queue the
> driver nevertheless and add potential ACKs later.

FWIW I am not entrely happy with the whole send-and_wait implementation -
it looks like it is not being called concurrently so we don't need mutex
there... I'd do something like:

send_nand_wait() {

set_bit(WAITING_RESPONSE, data->state);
prepare message
send message
wait_for_event_interruptible_timeout(&data->wait,
!test_bit(WAITING_RESPONSE, data->state));
if (!test_bit()) {
process
return 0;
}

return -ETIME;
}

irq(...) {

else if (test_bit(WAITING_RESPONSE, data->state)) {
copy response...
clear_bit(WAITING_RESPONSE, data->state);
wake_up(&data->wait);
}
}

and not bother with kmallocing pending structure, but it should not
stop from merging driver.

--
Dmitry