spi-topcliff-pch: add recovery processing in case wait-event timeout
authorTomoya MORINAGA <tomoya.rohm@gmail.com>
Fri, 9 Dec 2011 04:13:29 +0000 (13:13 +0900)
committerBen Hutchings <ben@decadent.org.uk>
Sun, 20 May 2012 21:56:45 +0000 (22:56 +0100)
commit 0f57e168aa109775430c76cc663fb64909813d84 upstream.

Currently, pch_spi_start_transfer failure is not anticipated.
This patch adds the processing.

Signed-off-by: Tomoya MORINAGA <tomoya.rohm@gmail.com>
Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
drivers/spi/spi-topcliff-pch.c

index 0c4efed..1590dbd 100644 (file)
@@ -1266,8 +1266,16 @@ static void pch_spi_process_messages(struct work_struct *pwork)
                        char *save_rx_buf = data->cur_trans->rx_buf;
                        for (i = 0; i < cnt; i ++) {
                                pch_spi_handle_dma(data, &bpw);
-                               if (!pch_spi_start_transfer(data))
+                               if (!pch_spi_start_transfer(data)) {
+                                       data->transfer_complete = true;
+                                       data->current_msg->status = -EIO;
+                                       data->current_msg->complete
+                                                  (data->current_msg->context);
+                                       data->bcurrent_msg_processing = false;
+                                       data->current_msg = NULL;
+                                       data->cur_trans = NULL;
                                        goto out;
+                               }
                                pch_spi_copy_rx_data_for_dma(data, bpw);
                        }
                        data->cur_trans->rx_buf = save_rx_buf;