Title: [7843] trunk/drivers/spi/spi_bfin5xx.c: bug [#5687], reset SPI_CTL and SPI_FLG registers while executing PM
Revision
7843
Author
bhsong
Date
2009-11-18 04:43:21 -0500 (Wed, 18 Nov 2009)

Log Message

bug [#5687], reset SPI_CTL and SPI_FLG registers while executing PM

Modified Paths

Diff

Modified: trunk/drivers/spi/spi_bfin5xx.c (7842 => 7843)


--- trunk/drivers/spi/spi_bfin5xx.c	2009-11-18 09:35:57 UTC (rev 7842)
+++ trunk/drivers/spi/spi_bfin5xx.c	2009-11-18 09:43:21 UTC (rev 7843)
@@ -103,6 +103,9 @@
 	size_t rx_map_len;
 	size_t tx_map_len;
 	u8 n_bytes;
+	u16 ctrl_reg;
+	u16 flag_reg;
+
 	int cs_change;
 	struct transfer_ops *ops;
 };
@@ -1522,9 +1525,15 @@
 	if (status != 0)
 		return status;
 
-	/* stop hardware */
-	bfin_spi_disable(drv_data);
+	drv_data->ctrl_reg = read_CTRL(drv_data);
+	drv_data->flag_reg = read_FLAG(drv_data);
 
+	/*
+	 * reset SPI_CTL and SPI_FLG registers
+	 */
+	write_FLAG(drv_data, 0xFF00);
+	write_CTRL(drv_data, 0x400);
+
 	return 0;
 }
 
@@ -1533,8 +1542,8 @@
 	struct master_data *drv_data = platform_get_drvdata(pdev);
 	int status = 0;
 
-	/* Enable the SPI interface */
-	bfin_spi_enable(drv_data);
+	write_CTRL(drv_data, drv_data->ctrl_reg);
+	write_FLAG(drv_data, drv_data->flag_reg);
 
 	/* Start the queue running */
 	status = bfin_spi_start_queue(drv_data);
_______________________________________________
Linux-kernel-commits mailing list
[email protected]
https://blackfin.uclinux.org/mailman/listinfo/linux-kernel-commits

Reply via email to