commit: http://blackfin.uclinux.org/git/?p=linux-kernel;a=commitdiff;h=c3028c1ca58c0dcfd646ab69cca3473703fcda44 branch: http://blackfin.uclinux.org/git/?p=linux-kernel;a=shortlog;h=refs/heads/trunk
clk_get() might sleep so we can't use it in softirq context. We can get system clk1 at probe process. Signed-off-by: Scott Jiang <[email protected]> --- drivers/spi/spi-bfin6xx.c | 8 +++++++- 1 files changed, 7 insertions(+), 1 deletions(-) diff --git a/drivers/spi/spi-bfin6xx.c b/drivers/spi/spi-bfin6xx.c index 25b99a0..d75a698 100644 --- a/drivers/spi/spi-bfin6xx.c +++ b/drivers/spi/spi-bfin6xx.c @@ -114,10 +114,10 @@ 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) { - u_long sclk = get_sclk1(); u32 spi_clock = sclk / speed_hz; if (spi_clock) @@ -813,6 +813,12 @@ static int bfin_spi_probe(struct platform_device *pdev) return -ENODEV; } + sclk = get_sclk1(); + if (!sclk) { + dev_err(dev, "can not get sclk1\n"); + return -ENXIO; + } + /* get register base and tx/rx dma */ mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (!mem) {
_______________________________________________ Linux-kernel-commits mailing list [email protected] https://blackfin.uclinux.org/mailman/listinfo/linux-kernel-commits
