9
0
Fork 0

spi: mvebu: fix baudrate selection for Armada 370/XP

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@pengutronix.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
Uwe Kleine-König 2016-12-07 16:59:00 +01:00 committed by Sascha Hauer
parent b101cb2149
commit 76fd7b6404
1 changed files with 5 additions and 3 deletions

View File

@ -317,16 +317,18 @@ static int mvebu_spi_transfer(struct spi_device *spi, struct spi_message *msg)
}
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 },
{ }
};