diff options
author | Sifan Naeem <sifan.naeem@imgtec.com> | 2015-06-18 08:27:12 -0400 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2015-07-07 07:56:36 -0400 |
commit | 93e3a9e9993ef018522b7005d97d8124b7e73385 (patch) | |
tree | 49d514d05357faffd6c64e54757e59da536d06d3 /drivers/spi | |
parent | d770e558e21961ad6cfdf0ff7df0eb5d7d4f0754 (diff) |
spi: img-spfi: check for max speed supported by the spfi block
Maximum speed supported by spfi is limited to 1/4 of the spfi clock.
But in some SoCs the maximum speed supported by the spfi block can
be limited to less than 1/4 of the spfi clock. In such cases we have
to define the limit in the device tree so that the driver can pick
it up.
Signed-off-by: Sifan Naeem <sifan.naeem@imgtec.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'drivers/spi')
-rw-r--r-- | drivers/spi/spi-img-spfi.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/spi/spi-img-spfi.c b/drivers/spi/spi-img-spfi.c index 788e2b176a4f..f31d792a4662 100644 --- a/drivers/spi/spi-img-spfi.c +++ b/drivers/spi/spi-img-spfi.c | |||
@@ -546,6 +546,7 @@ static int img_spfi_probe(struct platform_device *pdev) | |||
546 | struct img_spfi *spfi; | 546 | struct img_spfi *spfi; |
547 | struct resource *res; | 547 | struct resource *res; |
548 | int ret; | 548 | int ret; |
549 | u32 max_speed_hz; | ||
549 | 550 | ||
550 | master = spi_alloc_master(&pdev->dev, sizeof(*spfi)); | 551 | master = spi_alloc_master(&pdev->dev, sizeof(*spfi)); |
551 | if (!master) | 552 | if (!master) |
@@ -610,6 +611,19 @@ static int img_spfi_probe(struct platform_device *pdev) | |||
610 | master->max_speed_hz = clk_get_rate(spfi->spfi_clk) / 4; | 611 | master->max_speed_hz = clk_get_rate(spfi->spfi_clk) / 4; |
611 | master->min_speed_hz = clk_get_rate(spfi->spfi_clk) / 512; | 612 | master->min_speed_hz = clk_get_rate(spfi->spfi_clk) / 512; |
612 | 613 | ||
614 | /* | ||
615 | * Maximum speed supported by spfi is limited to the lower value | ||
616 | * between 1/4 of the SPFI clock or to "spfi-max-frequency" | ||
617 | * defined in the device tree. | ||
618 | * If no value is defined in the device tree assume the maximum | ||
619 | * speed supported to be 1/4 of the SPFI clock. | ||
620 | */ | ||
621 | if (!of_property_read_u32(spfi->dev->of_node, "spfi-max-frequency", | ||
622 | &max_speed_hz)) { | ||
623 | if (master->max_speed_hz > max_speed_hz) | ||
624 | master->max_speed_hz = max_speed_hz; | ||
625 | } | ||
626 | |||
613 | master->setup = img_spfi_setup; | 627 | master->setup = img_spfi_setup; |
614 | master->cleanup = img_spfi_cleanup; | 628 | master->cleanup = img_spfi_cleanup; |
615 | master->transfer_one = img_spfi_transfer_one; | 629 | master->transfer_one = img_spfi_transfer_one; |