| 1 | From 7dfd2bd70228d1f8d468d58cb3d12ecd618479ed Mon Sep 17 00:00:00 2001 |
| 2 | From: Shubhrajyoti D <shubhrajyoti@ti.com> |
| 3 | Date: Thu, 10 May 2012 19:20:41 +0530 |
| 4 | Subject: [PATCH] spi: Dont call prepare/unprepare transfer if not populated |
| 5 | |
| 6 | Currently the prepare/unprepare transfer are called unconditionally. |
| 7 | The assumption is that every driver using the spi core queue infrastructure |
| 8 | has to populate the prepare and unprepare functions. This encourages |
| 9 | drivers to populate empty functions to prevent crashing. |
| 10 | This patch prevents the call to prepare/unprepare if not populated. |
| 11 | |
| 12 | Signed-off-by: Shubhrajyoti D <shubhrajyoti@ti.com> |
| 13 | Acked-by: Linus Walleij <linus.walleij@linaro.org> |
| 14 | [grant.likely: fix whitespace defect] |
| 15 | Signed-off-by: Grant Likely <grant.likely@secretlab.ca> |
| 16 | --- |
| 17 | drivers/spi/spi.c | 4 ++-- |
| 18 | 1 files changed, 2 insertions(+), 2 deletions(-) |
| 19 | |
| 20 | --- a/drivers/spi/spi.c |
| 21 | +++ b/drivers/spi/spi.c |
| 22 | @@ -530,7 +530,7 @@ static void spi_pump_messages(struct kth |
| 23 | /* Lock queue and check for queue work */ |
| 24 | spin_lock_irqsave(&master->queue_lock, flags); |
| 25 | if (list_empty(&master->queue) || !master->running) { |
| 26 | - if (master->busy) { |
| 27 | + if (master->busy && master->unprepare_transfer_hardware) { |
| 28 | ret = master->unprepare_transfer_hardware(master); |
| 29 | if (ret) { |
| 30 | dev_err(&master->dev, |
| 31 | @@ -559,7 +559,7 @@ static void spi_pump_messages(struct kth |
| 32 | master->busy = true; |
| 33 | spin_unlock_irqrestore(&master->queue_lock, flags); |
| 34 | |
| 35 | - if (!was_busy) { |
| 36 | + if (!was_busy && master->prepare_transfer_hardware) { |
| 37 | ret = master->prepare_transfer_hardware(master); |
| 38 | if (ret) { |
| 39 | dev_err(&master->dev, |
| 40 | |