[PATCH] spi: mvebu: fix baudrate selection for Armada 370/XP

Uwe Kleine-König u.kleine-koenig at pengutronix.de
Wed Dec 7 07:59:00 PST 2016


There are two problems that made the driver choose the wrong baudrate
calculation algorithm:

a) The compatible used on 370/XP isn't marvell,armada-370-xp-spi but
   marvell,armada-370-spi or marvell,armada-xp-spi respectively.
b) The probe function uses
   	match = of_match_node(mvebu_spi_dt_ids, dev->device_node);
   to determine the right algorithm. As the devices are also compatible
   to marvell,orion-spi and this comes first in mvebu_spi_dt_ids[]
   it's always the older Orion algorithm that is used.

This patch fixes both problems.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig at pengutronix.de>
---
 drivers/spi/mvebu_spi.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/spi/mvebu_spi.c b/drivers/spi/mvebu_spi.c
index ee7b212962f7..e340686bd676 100644
--- a/drivers/spi/mvebu_spi.c
+++ b/drivers/spi/mvebu_spi.c
@@ -317,16 +317,18 @@ err_transfer:
 }
 
 static struct of_device_id mvebu_spi_dt_ids[] = {
-	{ .compatible = "marvell,orion-spi",
-	  .data = &mvebu_spi_set_baudrate },
 #if defined(CONFIG_ARCH_ARMADA_370) || defined(CONFIG_ARCH_ARMADA_XP)
-	{ .compatible = "marvell,armada-370-xp-spi",
+	{ .compatible = "marvell,armada-370-spi",
+	  .data = &armada_370_xp_spi_set_baudrate },
+	{ .compatible = "marvell,armada-xp-spi",
 	  .data = &armada_370_xp_spi_set_baudrate },
 #endif
 #if defined(CONFIG_ARCH_DOVE)
 	{ .compatible = "marvell,dove-spi",
 	  .data = &dove_spi_set_baudrate },
 #endif
+	{ .compatible = "marvell,orion-spi",
+	  .data = &mvebu_spi_set_baudrate },
 	{ }
 };
 
-- 
2.10.2




More information about the barebox mailing list