> -----Original Message----- > From: Michael Welling [mailto:mwelling79@xxxxxxxxx] On Behalf > Of Michael Welling > Sent: Wednesday, August 19, 2015 1:49 PM > To: Greg Wilson-Lindberg > Cc: Daniel Baluta; linux-iio@xxxxxxxxxxxxxxx > Subject: Re: BBB IIO ADC access not working > > 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? I'm not using /sys/bus/iio/devices/iio:device0/in_voltageX_raw in my program, I'm using the iio buffer system. I tried using cat /sys/bus/iio/devices/iio:device0/in_voltageX_raw while my program was running and it worked a couple of times, and got busy a bit also, then the touch screen locked up. I have not tried to use /sys/bus/iio/devices/iio:device0/in_voltageX_raw from in my program, I was hoping for a lighter weight access that didn't require so many opens & closes. I'm under the impression that I can only get one reading per open if I try to read /sys/bus/iio/devices/iio:device0/in_voltageX_raw. Or can I get multiple readings if I do multiple reads. > > > > > > > > > > > > > > > > > > > > > > > > > > > -- 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