On Wed, Aug 19, 2015 at 01:35:10PM -0700, Greg Wilson-Lindberg wrote: > > > > -----Original Message----- > > From: Michael Welling [mailto:mwelling79@xxxxxxxxx] On Behalf > > Of Michael Welling > > Sent: Wednesday, August 19, 2015 10:53 AM > > To: Greg Wilson-Lindberg > > Cc: Daniel Baluta; linux-iio@xxxxxxxxxxxxxxx > > Subject: Re: BBB IIO ADC access not working > > > > On Wed, Aug 19, 2015 at 09:27:02AM -0700, Greg Wilson-Lindberg wrote: > > > > > > > > > > -----Original Message----- > > > > From: Michael Welling [mailto:mwelling79@xxxxxxxxx] On Behalf Of > > > > Michael Welling > > > > Sent: Tuesday, August 18, 2015 3:31 PM > > > > To: Greg Wilson-Lindberg > > > > Cc: Daniel Baluta; linux-iio@xxxxxxxxxxxxxxx > > > > Subject: Re: BBB IIO ADC access not working > > > > > > > > On Tue, Aug 18, 2015 at 03:11:13PM -0700, Greg > > Wilson-Lindberg wrote: > > > > > > > > > > > > > > > > I found that handling the IRQENB_EOS interrupt in the ADC > > > > is causing > > > > > > an undesired effect. After enabling the ADC buffer mode and > > > > > > disabling it the coordinate readings work but the touch > > > > release is > > > > > > no longer detected. > > > > > > > > > > Can we put your code in the touch screen handler? The tsc > > > > code is writing to the IRQSTATUS register, not the IRQCLR > > register. > > > > > > > > > > > > > Actually using the IRQCLR disables the IRQ instead of clearing it > > > > and that was not my intent. This is why the pen releases > > where not > > > > working, the tsc driver relies on the EOS interrupt to write the > > > > step register because it is using a one shot hardware mode. > > > > > > > > Since the IRQENB_EOS is not used by the ADC driver it can be > > > > disabled when in buffered mode which is triggering faster > > than the > > > > isr can handle it. > > > > > > > > See patch below. > > > > > > > > Though it allows for the repeated enabling and disabling of the > > > > buffer the touchscreen gets a bunch of unexpected > > releases and the > > > > readings are very jittery. > > > > > > > > diff --git a/drivers/iio/adc/ti_am335x_adc.c > > > > b/drivers/iio/adc/ti_am335x_adc.c index a0e7161..9945e4a 100644 > > > > --- a/drivers/iio/adc/ti_am335x_adc.c > > > > +++ b/drivers/iio/adc/ti_am335x_adc.c > > > > @@ -177,6 +177,7 @@ static int > > tiadc_buffer_preenable(struct iio_dev > > > > *indio_dev) > > > > IRQENB_FIFO1OVRRUN | > > > > IRQENB_FIFO1UNDRFLW)); > > > > > > > > + tiadc_writel(adc_dev, REG_IRQCLR, IRQENB_EOS); > > > > /* Flush FIFO. Needed in corner cases in simultaneous > > tsc/adc use > > > > */ > > > > fifo1count = tiadc_readl(adc_dev, REG_FIFO1CNT); > > > > for (i = 0; i < fifo1count; i++) > > > > @@ -213,6 +214,7 @@ static int tiadc_buffer_predisable(struct > > > > iio_dev *indio_dev) > > > > > > > > tiadc_writel(adc_dev, REG_IRQCLR, (IRQENB_FIFO1THRES | > > > > IRQENB_FIFO1OVRRUN | > > > > IRQENB_FIFO1UNDRFLW)); > > > > + tiadc_writel(adc_dev, REG_IRQENABLE, IRQENB_EOS); > > > > am335x_tsc_se_clr(adc_dev->mfd_tscadc, > > > > adc_dev->buffer_en_ch_steps); > > > > adc_dev->buffer_en_ch_steps = 0; > > > > > > > > > > > > > > I'm not sure that it's better, but it is different. The > > touch screen still locks up, but mouse clicks work. > > > > This is very disappointing. > > > > Have you tried reading the ADCs using one shot mode recently? > > > > IE cat /sys/bus/iio/devices/iio:device0/in_voltageX_raw > > I tried that after the system had locked up and what I get back is the Device > or resource is busy. I restarted the BBB and tried before starting my application > and it worked just fine. I started up the app and the touch screen was > locked up immediately, mouse clicks delayed about 1/2 second. And I get Device or resource busy from the cat. > Is the using while using /sys/bus/iio/devices/iio:device0/in_voltageX_raw in your program? > > > > > > > > > > > > > > > > > > > -- 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