On Tuesday 12 October 2010 03:51:10 Jassi Brar wrote:
> On Tue, Oct 12, 2010 at 1:22 AM, Sergii Kovalchuk
> 
> <[email protected]> wrote:
> > On Thursday 07 October 2010 19:36:18 Grant Likely wrote:
> >> On Wed, Oct 6, 2010 at 7:49 AM, Sergii Kovalchuk
> >> 
> >> > I'm implementing an SPI protocol driver for TI WL12xx combo chip.
> >> > According to the spec, for write transaction I should complete the
> >> > following sequence:
> >> > 
> >> > 1. Assert CS
> >> > 2. Wait until chip will trigger IRQ
> >> > 3. Write data
> >> > 
> >> > Looking at spi_transfer structure I wondering, how I can implement
> >> > such logic - there is no explicit ways to implement "wait for an
> >> > event" within single spi_message processing.
> >> > 
> >> > As current workarround I use a simple delay in 5 us, but for sleep
> >> > states it might be not sufficient, since wake-up time are ususally
> >> > greater.
> >> 
> >> Wow.  That's nasty.  The SPI layer really doesn't have a mechanism for
> >> handling that.  What you *could* do is lock the spi bus; assert CS
> >> manually; wait for the irq, and then issue the transfer.  Not exactly
> >> pretty, but it would work within the existing infrastructure.
> >> 
> >> g.
> > 
> > Yes, seems to be nasty. This is what I'm doing now - locking the bus and
> > waiting for IRQ, but this is really ugly. Just wondered, if there is some
> > hidden way.
> > 
> > Not sure, if it more or less common situation. If so, may be it will be
> > worth to extend spi_tranfer to handle "timed wait for IRQ/event" in some
> > kind of busy loop or completion - depending of context?
> 
> By constraints of your bus controller, you can't possibly do anything
> more useful than
> waiting 'decently'. After all, only one CS can be active at any time
> on the bus and
> your h/w expects that while it prepares to send/recv data.
> Or am I being naive?

Almost certainly, there is no way to do something more useful. If I can 
manually assert CS (and prevent controller from serving others), then wait for 
IRQ, continue transfer and manually deassert CS (and unlock controller) - it 
will work. But this moves some controller functionality into protocol layer 
and probably needs some "improuvements" into controller driver - to lock it.

Thanks,

------------------------------------------------------------------------------
Beautiful is writing same markup. Internet Explorer 9 supports
standards for HTML5, CSS3, SVG 1.1,  ECMAScript5, and DOM L2 & L3.
Spend less time writing and  rewriting code and more time creating great
experiences on the web. Be a part of the beta today.
http://p.sf.net/sfu/beautyoftheweb
_______________________________________________
spi-devel-general mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/spi-devel-general

Reply via email to