Commit b052fd0a authored by Barry Song's avatar Barry Song Committed by Mike Frysinger

spi/bfin_spi: save/restore state when suspending/resuming

We can't rely on the SPI_CTL/SPI_FLG registers retaining their state when
suspending, so save/restore their entire values.
Signed-off-by: default avatarBarry Song <barry.song@analog.com>
Signed-off-by: default avatarMike Frysinger <vapier@gentoo.org>
parent d3cc71f7
...@@ -101,6 +101,9 @@ struct master_data { ...@@ -101,6 +101,9 @@ struct master_data {
size_t rx_map_len; size_t rx_map_len;
size_t tx_map_len; size_t tx_map_len;
u8 n_bytes; u8 n_bytes;
u16 ctrl_reg;
u16 flag_reg;
int cs_change; int cs_change;
const struct transfer_ops *ops; const struct transfer_ops *ops;
}; };
...@@ -1426,8 +1429,14 @@ static int bfin_spi_suspend(struct platform_device *pdev, pm_message_t state) ...@@ -1426,8 +1429,14 @@ static int bfin_spi_suspend(struct platform_device *pdev, pm_message_t state)
if (status != 0) if (status != 0)
return status; return status;
/* stop hardware */ drv_data->ctrl_reg = read_CTRL(drv_data);
bfin_spi_disable(drv_data); drv_data->flag_reg = read_FLAG(drv_data);
/*
* reset SPI_CTL and SPI_FLG registers
*/
write_CTRL(drv_data, BIT_CTL_CPHA | BIT_CTL_MASTER);
write_FLAG(drv_data, 0xFF00);
return 0; return 0;
} }
...@@ -1437,8 +1446,8 @@ static int bfin_spi_resume(struct platform_device *pdev) ...@@ -1437,8 +1446,8 @@ static int bfin_spi_resume(struct platform_device *pdev)
struct master_data *drv_data = platform_get_drvdata(pdev); struct master_data *drv_data = platform_get_drvdata(pdev);
int status = 0; int status = 0;
/* Enable the SPI interface */ write_CTRL(drv_data, drv_data->ctrl_reg);
bfin_spi_enable(drv_data); write_FLAG(drv_data, drv_data->flag_reg);
/* Start the queue running */ /* Start the queue running */
status = bfin_spi_start_queue(drv_data); status = bfin_spi_start_queue(drv_data);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment