Messages in this thread | | | From | Mike Frysinger <> | Date | Mon, 21 Sep 2009 09:36:25 -0400 | Subject | Re: [PATCH 1/2] spi: new SPI bus lock/unlock functions |
| |
On Mon, Sep 21, 2009 at 02:33, Li Yi wrote: > On Fri, 2009-09-18 at 14:29 -0700, Andrew Morton wrote: >> On Thu, 17 Sep 2009 18:03:16 -0400 >> Mike Frysinger <vapier@gentoo.org> wrote: >> >> > From: Yi Li <yi.li@analog.com> >> > >> > For some MMC cards over SPI bus, it needs to lock the SPI bus for its own >> > use. The SPI transfer must not be interrupted by other SPI devices that >> > share the SPI bus with SPI MMC card. >> > >> > This patch introduces 2 APIs for SPI bus locking operation. >> > >> > Signed-off-by: Yi Li <yi.li@analog.com> >> > Signed-off-by: Bryan Wu <cooloney@kernel.org> >> > Signed-off-by: Mike Frysinger <vapier@gentoo.org> >> > --- >> > Andrew: we've posted these in the past with no response. could you pick >> > them up please ? >> > >> > drivers/spi/spi.c | 48 +++++++++++++++++++++++++++++++++++++++++++++++ >> > include/linux/spi/spi.h | 7 ++++++ >> > 2 files changed, 55 insertions(+), 0 deletions(-) >> > >> > diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c >> > index 70845cc..b82b8ad 100644 >> > --- a/drivers/spi/spi.c >> > +++ b/drivers/spi/spi.c >> > @@ -653,6 +653,54 @@ static void spi_complete(void *arg) >> > } >> > >> > /** >> > + * spi_lock_bus - lock SPI bus for exclusive access >> > + * @spi: device which want to lock the bus >> > + * Context: any >> > + * >> > + * Once the caller owns exclusive access to the SPI bus, >> > + * only messages for this device will be transferred. >> > + * Messages for other devices are queued but not transferred until >> > + * the bus owner unlock the bus. >> > + * >> > + * The caller may call spi_lock_bus() before spi_sync() or spi_async(). >> > + * So this call may be used in irq and other contexts which can't sleep, >> > + * as well as from task contexts which can sleep. >> >> Hence spi_lock_bus() basically has to use a spinning lock? >> >> So code which has called spi_lock_bus() cannot sleep until it calls >> spi_unlock_bus()? >> >> That's worth mentioning in the description. >> > Code called spi_lock_bus() _can_ sleep. This is mentioned in the > comments.
should add might_sleep() to the common spi_lock_bus() function then. -mike -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |