stable-tracking test image
werner at openmoko.org
Tue Nov 18 02:21:13 CET 2008
Andy Green wrote:
> Ah... where can this be coming from though, I would have thought that
> just the sdio stack and s3c2442 sdio peripheral suspend / resume actions
> would have just worked with nothing from the ar6001 driver part.
As if things were ever that easy ;-) Everything works nicely as far
as the SDIO stack is concerned, with the stack removing the HIF. But
the ar6k stack doesn't know that its communication layer is gone.
Thus, the ar6k stack may call the HIF while it has still not been
resurrected, passing stale pointers.
The tricky bit is to find out how to inform the ar6k stack that the
HIF has been disconnected. Removal works fine if it comes through
the module unloading mechanism, which is exposed to the ar6k stack,
but the ar6k stack itself has no notion of getting suspended. (Or,
rather, there are callbacks for this, but they're not implemented.)
So I have to make sdio_ar6000_remove make this look like a module
removal while preventing the ar6k side from actually trying to
perform the usual remove procedure (which would cause the HIF to
be removed from the SDIO stack, which is already in progress).
After that, there's also the issue of faking card insertion on
resume, but that should be easy in comparison.
More information about the openmoko-kernel