Re: [PATCH 4/5] input: touchscreen: support Allwinner SoCs' touchscreen

From: Dmitry Torokhov
Date: Thu Jul 21 2016 - 02:41:50 EST


On Thu, Jul 21, 2016 at 08:29:50AM +0200, Maxime Ripard wrote:
> On Wed, Jul 20, 2016 at 10:29:10AM +0200, Quentin Schulz wrote:
> > + irq = regmap_irq_get_virq(sunxi_gpadc_mfd_dev->regmap_irqc, irq);
> > + ret = devm_request_any_context_irq(&pdev->dev, irq,
> > + sunxi_gpadc_tp_up_irq_handler, 0,
> > + "tp_up", info);
> > + if (ret < 0) {
> > + dev_err(&pdev->dev,
> > + "could not request TP_UP_PENDING interrupt: %d\n", ret);
> > + goto err;
> > + }
>
> You enable the interrupts...
>
> > + info->tp_up_irq = irq;
> > + disable_irq(irq);
> > +
> > + ret = input_register_device(input);
> > + if (ret) {
> > + dev_err(&pdev->dev, "failed to register input device\n");
> > + goto err;
> > + }
>
> ... but your driver isn't registered yet. How does input_report and
> input_sync behave in such a case?

This is explicitly allowed:

"
...
* NOTE: input_event() may be safely used right after input device was
* allocated with input_allocate_device(), even before it is registered
* with input_register_device(), but the event will not reach any of the
* input handlers. Such early invocation of input_event() may be used
* to 'seed' initial state of a switch or initial position of absolute
* axis, etc.
*/
"

Thanks.


--
Dmitry