From: Ned Forrester <nforrester-/d+BM93fTQY@public.gmane.org>
To: Daniel Ribeiro <drwyrm-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
David Brownell <david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
Cc: spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
Subject: Re: pxa2xx_spi suspend/resume
Date: Thu, 12 Mar 2009 23:35:24 -0400 [thread overview]
Message-ID: <49B9D47C.8050105@whoi.edu> (raw)
In-Reply-To: <1236880051.4605.37.camel@brutus>
Daniel Ribeiro wrote:
> Em Qui, 2009-03-12 Ã s 10:38 -0400, Ned Forrester escreveu:
>> You may want to check DCSR to make sure the run bits are set for the
>> assigned dma channels. You will probably need more printk's just to
>> find out what channels were assigned; they are assigned in
>> pxa2xx_spi_probe(). It's hard to believe that these would not be set,
>> as it is done pump_transfers(), and you know execution is going there.
>
> Indeed, i tried using the driver on PIO mode, and suspend/resume works!
>
> Here is what i get with a little more debug and DMA enabled..
>
> SUSPEND DRCMR_TX=00000084 DRCMR_RX=00000084
> RESUME DRCMR_TX=00000000 DRCMR_RX=00000000
>
> Should i cook a patch to store DRCMR on suspend and restore on resume?
> Or is the proper fix something else?
Hmmm... This looks scary. If the DRCMR registers went to zero, what
else has changed in the DMA setup? A call to pxa2xx_spi_remove() would
have cleared these, but that should not be called for suspend/resume.
Have you checked all the other DMA related registers that are assigned
to the SSP device? Are these the only ones that are anomalous, or are
these just the first ones you found?
Actually, I don't think there are any other registers, save the ones
that will be set up by pump_transfers(), anyway. The PXA270 has a few
more DMA related registers than the PXA255, but I don't see anything
that looks like trouble, other than what you found above.
I would not jump to the conclusion (perhaps you haven't, but I don't
have the whole picture) that we just need to restore these two
registers. You need to make sure that the assigned DMA channels are
still allocated. I wonder what process cleared these registers and what
that might mean about the possibility that DMA channel assignments were
purged on resume.
There is code in arch/arm/mach-pxa/ssp.c ssp_probe() that assigns DMA
request numbers for each SSP channel. I think, but I am not sure, that
these are really fixed numbers determined by the hardware wiring of
peripheral devices to DMA requests (see tables 5-9 and 5-21 of the dev
man). If so, then the value passed is a constant anyway, and thus it
must still be valid.
In drivers/spi/pxa2xx_spi.c pxa2xx_spi_probe(), the DMA channel numbers
are allocated. These are definitely not constants, as they are a
limited resource. The channel numbers are then loaded into the DRCMR
registers to map the request to the channel. I don't know how to check
that the previous assignment of DMA channels is still valid.
You could try a patch to restore DRCMR registers to see if that fixes
the problem or just makes things worse. I don't recommend submitting
such a patch without guidance from someone more knowledgeable about DMA
and suspend/resume.
David, do you have any knowledge of what is happening to the DMA
request-to-channel assignment registers in the PXA, during suspend/resume?
--
In the process of searching for inspiration on this matter, I was
reminded of another poster who has tried getting suspend/resume to work.
I don't think that the thread:
http://osdir.com/ml/linux.kernel.spi.devel/2008-02/msg00075.html
has any useful info for you, unless you find that the problem you
discovered has the same symptoms as Zeke described. He was on the wrong
track to fix, but maybe you have found the cause. Unfortunately he had
to drop the problem before it got fixed.
--
Ned Forrester nforrester-/d+BM93fTQY@public.gmane.org
Oceanographic Systems Lab 508-289-2226
Applied Ocean Physics and Engineering Dept.
Woods Hole Oceanographic Institution Woods Hole, MA 02543, USA
http://www.whoi.edu/sbl/liteSite.do?litesiteid=7212
http://www.whoi.edu/hpb/Site.do?id=1532
http://www.whoi.edu/page.do?pid=10079
------------------------------------------------------------------------------
Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are
powering Web 2.0 with engaging, cross-platform capabilities. Quickly and
easily build your RIAs with Flex Builder, the Eclipse(TM)based development
software that enables intelligent coding and step-through debugging.
Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com
next prev parent reply other threads:[~2009-03-13 3:35 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-03-11 11:30 pxa2xx_spi suspend/resume Daniel Ribeiro
2009-03-11 13:53 ` Ned Forrester
[not found] ` <49B7C260.40906-/d+BM93fTQY@public.gmane.org>
2009-03-11 12:09 ` Daniel Ribeiro
2009-03-11 12:59 ` Daniel Ribeiro
2009-03-12 14:38 ` Ned Forrester
[not found] ` <49B91E76.3090309-/d+BM93fTQY@public.gmane.org>
2009-03-12 17:47 ` Daniel Ribeiro
2009-03-13 3:35 ` Ned Forrester [this message]
[not found] ` <49B9D47C.8050105-/d+BM93fTQY@public.gmane.org>
2009-03-13 9:11 ` Daniel Ribeiro
2009-03-13 13:32 ` Ned Forrester
[not found] ` <49BA607A.5020509-/d+BM93fTQY@public.gmane.org>
2009-03-14 4:08 ` Daniel Ribeiro
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=49B9D47C.8050105@whoi.edu \
--to=nforrester-/d+bm93ftqy@public.gmane.org \
--cc=david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org \
--cc=drwyrm-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.