linux-spi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Getting alot of zero values from ads7846 using atmel_spi
@ 2011-03-08  9:44 Niclas Karlsson
  2011-03-10 14:41 ` David Lamparter
  0 siblings, 1 reply; 6+ messages in thread
From: Niclas Karlsson @ 2011-03-08  9:44 UTC (permalink / raw)
  To: spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f

Hi,
I'm not sure this is the right mailinglist for my question, but I give
it a shot.

I'm working on a custom hardware running Linux kernel 2.6.32.3. The
hardware is based on the AT91SAM9263-ek evaluation board and have touch
screen attached to it. The touch screen controller is ads7846 and is
connected to SPI.

I'm in some trouble using the SPI (driver: atmel_spi).

ads7846 have two extra inputs that I want to use. The problem is that
when reading these inputs from sysfs I get a lot of zeroes when it
should read ( when no sensor is connected) ~3300 mV, e.g. 
~# cat /sys/bus/spi/devices/spi0.1/in0_input
0
~# cat /sys/bus/spi/devices/spi0.1/in0_input
0
~# cat /sys/bus/spi/devices/spi0.1/in0_input
0
~# cat /sys/bus/spi/devices/spi0.1/in0_input
0
~# cat /sys/bus/spi/devices/spi0.1/in0_input
0
~# cat /sys/bus/spi/devices/spi0.1/in0_input
0
~# cat /sys/bus/spi/devices/spi0.1/in0_input
0
~# cat /sys/bus/spi/devices/spi0.1/in0_input
0
~# cat /sys/bus/spi/devices/spi0.1/in0_input
0
~# cat /sys/bus/spi/devices/spi0.1/in0_input
0
~# cat /sys/bus/spi/devices/spi0.1/in0_input
0
~# cat /sys/bus/spi/devices/spi0.1/in0_input
0
~# cat /sys/bus/spi/devices/spi0.1/in0_input
0
~# cat /sys/bus/spi/devices/spi0.1/in0_input
0
~# cat /sys/bus/spi/devices/spi0.1/in0_input
3299 <-- This one is correct.
~# cat /sys/bus/spi/devices/spi0.1/in0_input
0

I have measured the input and it's stable at 3.3V.

Do anyone know why I read so many zeroes?

I have made some printk in ads7846.c to trace the problem. It seemed to
read more correct values when I added the printks.

Thank you for the help,
Niclas

------------------------------------------------------------------------------
What You Don't Know About Data Connectivity CAN Hurt You
This paper provides an overview of data connectivity, details
its effect on application quality, and explores various alternative
solutions. http://p.sf.net/sfu/progress-d2d

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Getting alot of zero values from ads7846 using atmel_spi
  2011-03-08  9:44 Getting alot of zero values from ads7846 using atmel_spi Niclas Karlsson
@ 2011-03-10 14:41 ` David Lamparter
       [not found]   ` <20110310144145.GB4093601-sd4rSCkhOesKVZNVnti56SRbHCANfdcW@public.gmane.org>
  0 siblings, 1 reply; 6+ messages in thread
From: David Lamparter @ 2011-03-10 14:41 UTC (permalink / raw)
  To: Niclas Karlsson; +Cc: spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f

On Tue, Mar 08, 2011 at 10:44:56AM +0100, Niclas Karlsson wrote:
> Do anyone know why I read so many zeroes?

You're probably reading values faster than the chip supports. Check the
chip documentation for a maximum readout frequency or a ready flag.

> I have made some printk in ads7846.c to trace the problem. It seemed to
> read more correct values when I added the printks.

A printk takes quite some time on an ARM like yours. The throttle makes
it work...


David

P.S.: you're lucky to not get crap values - seems they got the chip
design right...


------------------------------------------------------------------------------
Colocation vs. Managed Hosting
A question and answer guide to determining the best fit
for your organization - today and in the future.
http://p.sf.net/sfu/internap-sfd2d

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Getting alot of zero values from ads7846 using atmel_spi
       [not found]   ` <20110310144145.GB4093601-sd4rSCkhOesKVZNVnti56SRbHCANfdcW@public.gmane.org>
@ 2011-04-18  9:21     ` Niclas Karlsson
  2011-04-19 20:40       ` Kenneth Heitke
  0 siblings, 1 reply; 6+ messages in thread
From: Niclas Karlsson @ 2011-04-18  9:21 UTC (permalink / raw)
  To: David Lamparter; +Cc: spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f

tor 2011-03-10 klockan 15:41 +0100 skrev David Lamparter:
> On Tue, Mar 08, 2011 at 10:44:56AM +0100, Niclas Karlsson wrote:
> > Do anyone know why I read so many zeroes?
> 
> You're probably reading values faster than the chip supports. Check the
> chip documentation for a maximum readout frequency or a ready flag.
> > I have made some printk in ads7846.c to trace the problem. It seemed to
> > read more correct values when I added the printks.
> 
> A printk takes quite some time on an ARM like yours. The throttle makes
> it work...

I've made som further investigations. The atmel_spi.c driver utilize PDC
(Peripheral DMA Controller) and when I was tracing the problem I
discovered that the interrupt indicating the PDC has written the data to
memory is fired before the data actually is written to memory. If a
small delay is added after the interrupt (like a trace printk("The value
is\n")) the PDC have enough time to write the data to the memory and I
get correct values from the ADC connected to the SPI.
Thoughts how to solve this?
> 
> 
> David
> 
> P.S.: you're lucky to not get crap values - seems they got the chip
> design right...
> 
/Niclas
------------------------------------------------------------------------------
Benefiting from Server Virtualization: Beyond Initial Workload 
Consolidation -- Increasing the use of server virtualization is a top
priority.Virtualization can reduce costs, simplify management, and improve 
application availability and disaster protection. Learn more about boosting 
the value of server virtualization. http://p.sf.net/sfu/vmware-sfdev2dev

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Getting alot of zero values from ads7846 using atmel_spi
  2011-04-18  9:21     ` Niclas Karlsson
@ 2011-04-19 20:40       ` Kenneth Heitke
       [not found]         ` <4DADF35B.2000600-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
  0 siblings, 1 reply; 6+ messages in thread
From: Kenneth Heitke @ 2011-04-19 20:40 UTC (permalink / raw)
  To: Niclas Karlsson
  Cc: spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f,
	David Lamparter

On 04/18/2011 03:21 AM, Niclas Karlsson wrote:
> tor 2011-03-10 klockan 15:41 +0100 skrev David Lamparter:
>> On Tue, Mar 08, 2011 at 10:44:56AM +0100, Niclas Karlsson wrote:
>>> Do anyone know why I read so many zeroes?
>>
>> You're probably reading values faster than the chip supports. Check the
>> chip documentation for a maximum readout frequency or a ready flag.
>>> I have made some printk in ads7846.c to trace the problem. It seemed to
>>> read more correct values when I added the printks.
>>
>> A printk takes quite some time on an ARM like yours. The throttle makes
>> it work...
>
> I've made som further investigations. The atmel_spi.c driver utilize PDC
> (Peripheral DMA Controller) and when I was tracing the problem I
> discovered that the interrupt indicating the PDC has written the data to
> memory is fired before the data actually is written to memory. If a
> small delay is added after the interrupt (like a trace printk("The value
> is\n")) the PDC have enough time to write the data to the memory and I
> get correct values from the ADC connected to the SPI.
> Thoughts how to solve this?

Is it really the interrupt firing early or is it possible that you are 
still reading cached data.  I'm not familiar with the device or driver 
so I'm just throwing that out as a possibility.

>>
>>
>> David
>>
>> P.S.: you're lucky to not get crap values - seems they got the chip
>> design right...
>>
> /Niclas
> ------------------------------------------------------------------------------
> Benefiting from Server Virtualization: Beyond Initial Workload
> Consolidation -- Increasing the use of server virtualization is a top
> priority.Virtualization can reduce costs, simplify management, and improve
> application availability and disaster protection. Learn more about boosting
> the value of server virtualization. http://p.sf.net/sfu/vmware-sfdev2dev
> _______________________________________________
> spi-devel-general mailing list
> spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
> https://lists.sourceforge.net/lists/listinfo/spi-devel-general
>


-- 
Sent by an employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.

------------------------------------------------------------------------------
Benefiting from Server Virtualization: Beyond Initial Workload 
Consolidation -- Increasing the use of server virtualization is a top
priority.Virtualization can reduce costs, simplify management, and improve 
application availability and disaster protection. Learn more about boosting 
the value of server virtualization. http://p.sf.net/sfu/vmware-sfdev2dev

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Getting alot of zero values from ads7846 using atmel_spi
       [not found]         ` <4DADF35B.2000600-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
@ 2011-04-20 14:34           ` Niclas Karlsson
  2011-04-20 21:11             ` Kenneth Heitke
  0 siblings, 1 reply; 6+ messages in thread
From: Niclas Karlsson @ 2011-04-20 14:34 UTC (permalink / raw)
  To: Kenneth Heitke; +Cc: spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f

tis 2011-04-19 klockan 14:40 -0600 skrev Kenneth Heitke:
> On 04/18/2011 03:21 AM, Niclas Karlsson wrote:
> > tor 2011-03-10 klockan 15:41 +0100 skrev David Lamparter:
> >> On Tue, Mar 08, 2011 at 10:44:56AM +0100, Niclas Karlsson wrote:
> >>> Do anyone know why I read so many zeroes?
> >>
> >> You're probably reading values faster than the chip supports. Check the
> >> chip documentation for a maximum readout frequency or a ready flag.
> >>> I have made some printk in ads7846.c to trace the problem. It seemed to
> >>> read more correct values when I added the printks.
> >>
> >> A printk takes quite some time on an ARM like yours. The throttle makes
> >> it work...
> >
> > I've made som further investigations. The atmel_spi.c driver utilize PDC
> > (Peripheral DMA Controller) and when I was tracing the problem I
> > discovered that the interrupt indicating the PDC has written the data to
> > memory is fired before the data actually is written to memory. If a
> > small delay is added after the interrupt (like a trace printk("The value
> > is\n")) the PDC have enough time to write the data to the memory and I
> > get correct values from the ADC connected to the SPI.
> > Thoughts how to solve this?
> 
> Is it really the interrupt firing early or is it possible that you are 
> still reading cached data.  I'm not familiar with the device or driver 
> so I'm just throwing that out as a possibility.
I have thought about it but I don't know how to test it. I disabled the
 whole d-cache in the kernel configuration, but everything ran so slow
that I don't know if it was the disabled of d-cache or if the timing
became so much different.
If I want to bring the d-cache up to sync, how do I do that?
Is it possible to allocate memory which never will be stored in d-cache?
/Niclas
> >>
> >>
> >> David
> >>
> >> P.S.: you're lucky to not get crap values - seems they got the chip
> >> design right...
> >>
> > /Niclas
> > ------------------------------------------------------------------------------
> > Benefiting from Server Virtualization: Beyond Initial Workload
> > Consolidation -- Increasing the use of server virtualization is a top
> > priority.Virtualization can reduce costs, simplify management, and improve
> > application availability and disaster protection. Learn more about boosting
> > the value of server virtualization. http://p.sf.net/sfu/vmware-sfdev2dev
> > _______________________________________________
> > spi-devel-general mailing list
> > spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
> > https://lists.sourceforge.net/lists/listinfo/spi-devel-general
> >
> 
> 


------------------------------------------------------------------------------
Benefiting from Server Virtualization: Beyond Initial Workload 
Consolidation -- Increasing the use of server virtualization is a top
priority.Virtualization can reduce costs, simplify management, and improve 
application availability and disaster protection. Learn more about boosting 
the value of server virtualization. http://p.sf.net/sfu/vmware-sfdev2dev

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Getting alot of zero values from ads7846 using atmel_spi
  2011-04-20 14:34           ` Niclas Karlsson
@ 2011-04-20 21:11             ` Kenneth Heitke
  0 siblings, 0 replies; 6+ messages in thread
From: Kenneth Heitke @ 2011-04-20 21:11 UTC (permalink / raw)
  To: Niclas Karlsson; +Cc: spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f

On 04/20/2011 08:34 AM, Niclas Karlsson wrote:
> tis 2011-04-19 klockan 14:40 -0600 skrev Kenneth Heitke:
>> On 04/18/2011 03:21 AM, Niclas Karlsson wrote:
>>> tor 2011-03-10 klockan 15:41 +0100 skrev David Lamparter:
>>>> On Tue, Mar 08, 2011 at 10:44:56AM +0100, Niclas Karlsson wrote:
>>>>> Do anyone know why I read so many zeroes?
>>>>
>>>> You're probably reading values faster than the chip supports. Check the
>>>> chip documentation for a maximum readout frequency or a ready flag.
>>>>> I have made some printk in ads7846.c to trace the problem. It seemed to
>>>>> read more correct values when I added the printks.
>>>>
>>>> A printk takes quite some time on an ARM like yours. The throttle makes
>>>> it work...
>>>
>>> I've made som further investigations. The atmel_spi.c driver utilize PDC
>>> (Peripheral DMA Controller) and when I was tracing the problem I
>>> discovered that the interrupt indicating the PDC has written the data to
>>> memory is fired before the data actually is written to memory. If a
>>> small delay is added after the interrupt (like a trace printk("The value
>>> is\n")) the PDC have enough time to write the data to the memory and I
>>> get correct values from the ADC connected to the SPI.
>>> Thoughts how to solve this?
>>
>> Is it really the interrupt firing early or is it possible that you are
>> still reading cached data.  I'm not familiar with the device or driver
>> so I'm just throwing that out as a possibility.
> I have thought about it but I don't know how to test it. I disabled the
>   whole d-cache in the kernel configuration, but everything ran so slow
> that I don't know if it was the disabled of d-cache or if the timing
> became so much different.
> If I want to bring the d-cache up to sync, how do I do that?
> Is it possible to allocate memory which never will be stored in d-cache?
> /Niclas


You might want to take a look at dma_alloc_coherent()

>>>>
>>>>
>>>> David
>>>>
>>>> P.S.: you're lucky to not get crap values - seems they got the chip
>>>> design right...
>>>>
>>> /Niclas
>>> ------------------------------------------------------------------------------
>>> Benefiting from Server Virtualization: Beyond Initial Workload
>>> Consolidation -- Increasing the use of server virtualization is a top
>>> priority.Virtualization can reduce costs, simplify management, and improve
>>> application availability and disaster protection. Learn more about boosting
>>> the value of server virtualization. http://p.sf.net/sfu/vmware-sfdev2dev
>>> _______________________________________________
>>> spi-devel-general mailing list
>>> spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
>>> https://lists.sourceforge.net/lists/listinfo/spi-devel-general
>>>
>>
>>
>
>


-- 
Sent by an employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.

------------------------------------------------------------------------------
Benefiting from Server Virtualization: Beyond Initial Workload 
Consolidation -- Increasing the use of server virtualization is a top
priority.Virtualization can reduce costs, simplify management, and improve 
application availability and disaster protection. Learn more about boosting 
the value of server virtualization. http://p.sf.net/sfu/vmware-sfdev2dev

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2011-04-20 21:11 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-03-08  9:44 Getting alot of zero values from ads7846 using atmel_spi Niclas Karlsson
2011-03-10 14:41 ` David Lamparter
     [not found]   ` <20110310144145.GB4093601-sd4rSCkhOesKVZNVnti56SRbHCANfdcW@public.gmane.org>
2011-04-18  9:21     ` Niclas Karlsson
2011-04-19 20:40       ` Kenneth Heitke
     [not found]         ` <4DADF35B.2000600-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2011-04-20 14:34           ` Niclas Karlsson
2011-04-20 21:11             ` Kenneth Heitke

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).