On 28/03/2013 12:22, Marek Vasut wrote: > Dear Alexandre Belloni, > >> We need to initialize hardware before registering the touchscreen. Else, >> we end up setting registers in mxs_lradc_ts_open(), getting called just >> after registering the touchscreen with input_register_device() and by >> the end of mxs_lradc_probe(), we reset the LRADC block hence losing the >> correct configuration. >> >> Cc: Fabio Estevam <fabio.estevam@xxxxxxxxxxxxx> >> Cc: Jonathan Cameron <jic23@xxxxxxxxxx> >> Cc: Marek Vasut <marex@xxxxxxx> >> --- >> drivers/staging/iio/adc/mxs-lradc.c | 6 +++--- >> 1 file changed, 3 insertions(+), 3 deletions(-) >> >> diff --git a/drivers/staging/iio/adc/mxs-lradc.c >> b/drivers/staging/iio/adc/mxs-lradc.c index 55a459b..e927e3f 100644 >> --- a/drivers/staging/iio/adc/mxs-lradc.c >> +++ b/drivers/staging/iio/adc/mxs-lradc.c >> @@ -933,6 +933,9 @@ static int mxs_lradc_probe(struct platform_device >> *pdev) >> >> INIT_WORK(&lradc->ts_work, mxs_lradc_ts_work); >> >> + /* Configure the hardware. */ >> + mxs_lradc_hw_init(lradc); >> + >> /* Check if touchscreen is enabled in DT. */ >> ret = of_property_read_u32(node, "fsl,lradc-touchscreen-wires", > Isn't this too early? At least lradc->use_touchscreen is configured only after > you call mxs_lradc_hw_init() in this case, while mxs_lradc_hw_init() uses it's > value. > > I think mxs_lradc_hw_init() shall be called just before mxs_lradc_ts_register(). > > That's right, this would break 5 wires touchscreens. I'll fix that. -- Alexandre Belloni, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com -- To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html