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)
committerGrant Likely <grant.likely@secretlab.ca>
Sat, 10 Mar 2012 03:58:36 +0000 (20:58 -0700)
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>
drivers/spi/spi-topcliff-pch.c

index 5a477e9..c9e1fcc 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;