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

From: [email-masked] (Dmitry Torokhov)
Date: Wed, 20 Jul 2016 23:41:40 -0700

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