commit: http://blackfin.uclinux.org/git/?p=linux-kernel;a=commitdiff;h=81ca6b4c5fd44c03dd7dbc5ed233a35d86b26a3d
branch: http://blackfin.uclinux.org/git/?p=linux-kernel;a=shortlog;h=refs/heads/trunk

Signed-off-by: Scott Jiang <[email protected]>
---
 drivers/spi/spi-bfin6xx.c |   13 ++++++++-----
 1 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/drivers/spi/spi-bfin6xx.c b/drivers/spi/spi-bfin6xx.c
index bd38ff4..816522a 100644
--- a/drivers/spi/spi-bfin6xx.c
+++ b/drivers/spi/spi-bfin6xx.c
@@ -89,6 +89,8 @@ struct bfin_spi_master {
 	u32 control;
 	u32 ssel;
 
+	unsigned long sclk;
+
 	const struct bfin_spi_transfer_ops *ops;
 };
 
@@ -115,9 +117,8 @@ static void bfin_spi_disable(struct bfin_spi_master *drv_data)
 	bfin_write_and(&drv_data->regs->control, ~SPI_CTL_EN);
 }
 
-static unsigned long sclk;
 /* Caculate the SPI_CLOCK register value based on input HZ */
-static u32 hz_to_spi_clock(u32 speed_hz)
+static u32 hz_to_spi_clock(u32 sclk, u32 speed_hz)
 {
 	u32 spi_clock = sclk / speed_hz;
 
@@ -470,7 +471,8 @@ static void bfin_spi_pump_transfers(unsigned long data)
 
 	/* Speed setup (surely valid because already checked) */
 	if (transfer->speed_hz)
-		bfin_write(&drv_data->regs->clock, hz_to_spi_clock(transfer->speed_hz));
+		bfin_write(&drv_data->regs->clock,
+			hz_to_spi_clock(drv_data->sclk, transfer->speed_hz));
 	else
 		bfin_write(&drv_data->regs->clock, chip->clock);
 
@@ -715,7 +717,7 @@ static int bfin_spi_setup(struct spi_device *spi)
 	/* we choose software to controll cs */
 	chip->control &= ~SPI_CTL_ASSEL;
 
-	chip->clock = hz_to_spi_clock(spi->max_speed_hz);
+	chip->clock = hz_to_spi_clock(drv_data->sclk, spi->max_speed_hz);
 
 	bfin_spi_cs_enable(drv_data, chip);
 	bfin_spi_cs_deactive(drv_data, chip);
@@ -807,6 +809,7 @@ static int bfin_spi_probe(struct platform_device *pdev)
 	struct bfin_spi_master *drv_data;
 	struct resource *mem, *res;
 	unsigned int tx_dma, rx_dma;
+	unsigned long sclk;
 	int ret;
 
 	if (!info) {
@@ -863,6 +866,7 @@ static int bfin_spi_probe(struct platform_device *pdev)
 	drv_data->tx_dma = tx_dma;
 	drv_data->rx_dma = rx_dma;
 	drv_data->pin_req = info->pin_req;
+	drv_data->sclk = sclk;
 
 	drv_data->regs = devm_ioremap_resource(dev, mem);
 	if (IS_ERR(drv_data->regs)) {
@@ -906,7 +910,6 @@ static int bfin_spi_probe(struct platform_device *pdev)
 		goto err_free_peripheral;
 	}
 
-	dev_info(dev, "bfin-spi probe success\n");
 	return ret;
 
 err_free_peripheral:
_______________________________________________
Linux-kernel-commits mailing list
[email protected]
https://blackfin.uclinux.org/mailman/listinfo/linux-kernel-commits

Reply via email to