diff --git a/software/spi-ocores/drivers/spi/spi-ocores.c b/software/spi-ocores/drivers/spi/spi-ocores.c
index 57551687adeb3ea5580dfe50a45d75682264ce34..1351d8f1021d2a6ee595723f9c664ffd842aa7a3 100644
--- a/software/spi-ocores/drivers/spi/spi-ocores.c
+++ b/software/spi-ocores/drivers/spi/spi-ocores.c
@@ -467,9 +467,11 @@ static int spi_ocores_sw_xfer_next_init(struct spi_ocores *sp)
 
 	ctrl = sp->ctrl_base;
 	if (sp->master->cur_msg->spi->mode & SPI_CPHA) {
-		ctrl |= SPI_OCORES_CTRL_Tx_NEG;
 		ctrl |= SPI_OCORES_CTRL_Rx_NEG;
 	}
+	else
+		ctrl |= SPI_OCORES_CTRL_Tx_NEG;	
+
 	if (sp->master->cur_msg->spi->mode & SPI_LSB_FIRST)
 		ctrl |= SPI_OCORES_CTRL_LSB;
 	ctrl |= nbits;
@@ -596,7 +598,7 @@ static int spi_ocores_process(struct spi_ocores *sp)
 			spi_ocores_finalize_current_message(sp);
 	}
 
-	return 0;
+	return err;
 }
 
 /**