Hi Joe, > On Wed, 2018-04-11 at 16:09 +0200, Lukasz Majewski wrote: > > From: Sascha Hauer > > > > The mc34708 has an improved adc. The older variants will always > > convert a fixed order of channels. The mc34708 can do up to eight > > conversions in arbitrary channel order. Currently this extended > > feature is not supported. We only support touchscreen conversions > > now, which will be sampled in a data format compatible to the older > > chips in order to keep the API between the mfd and the touchscreen > > driver. > [] > > diff --git a/drivers/mfd/mc13xxx-core.c > > b/drivers/mfd/mc13xxx-core.c > [] > > +static int mc34708_adc_conversion(struct mc13xxx *mc13xxx, > > unsigned int mode, > > + unsigned int channel, u8 ato, bool atox, > > + unsigned int *sample) > > +{ > > + int ret, i; > [] > > + if (mc13xxx->adcflags & MC13XXX_ADC_WORKING) { > > + ret = -EBUSY; > > + goto out; > > + } > > This doesn't work. > > > [] > > + mc13xxx_irq_free(mc13xxx, MC34708_IRQ_TSDONE, > > &adcdone_data); + > > + if (!ret) { > > + ret = -ETIMEDOUT; > > + goto out; > > + } > [] > > +out: > > + ret = mc13xxx_reg_write(mc13xxx, MC13XXX_ADC0, old_adc0); > > ret is reassigned here, so the ret = - > uses above don't do what is expected. Right. Thanks for spotting this. I will fix it in v2. > > > + > > + mc13xxx->adcflags &= ~MC13XXX_ADC_WORKING; > > + mc13xxx_unlock(mc13xxx); > > + > > + return ret; > > +} > Best regards, Lukasz Majewski -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd@denx.de