summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2016-08-03 08:08:23 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2016-08-03 08:08:23 +0200
commit14e04d019b70cb8711b005bc316ac6a52d61db39 (patch)
tree0ea694070006e8de3ab372a67cf7c51b6ce9b259 /drivers
parent6a86c6d40468a04c94b859b8b497e6dcff6dcc83 (diff)
parent74102fdf730b89cbc6dd0fe34c0d9b5f86ed7d8c (diff)
downloadbarebox-14e04d019b70cb8711b005bc316ac6a52d61db39.tar.gz
barebox-14e04d019b70cb8711b005bc316ac6a52d61db39.tar.xz
Merge branch 'for-next/imx'
Diffstat (limited to 'drivers')
-rw-r--r--drivers/mfd/mc13xxx.c3
-rw-r--r--drivers/spi/Kconfig2
-rw-r--r--drivers/spi/imx_spi.c15
3 files changed, 15 insertions, 5 deletions
diff --git a/drivers/mfd/mc13xxx.c b/drivers/mfd/mc13xxx.c
index 68d70c53d5..b2fcd95516 100644
--- a/drivers/mfd/mc13xxx.c
+++ b/drivers/mfd/mc13xxx.c
@@ -330,7 +330,8 @@ static int __init mc13xxx_probe(struct device_d *dev)
mc_dev->spi = dev->type_data;
mc_dev->spi->mode = SPI_MODE_0 | SPI_CS_HIGH;
mc_dev->spi->bits_per_word = 32;
- mc_dev->spi->max_speed_hz = 20000000;
+ mc_dev->spi->max_speed_hz = mc_dev->spi->max_speed_hz ?
+ mc_dev->spi->max_speed_hz : 20000000;
mc_dev->map = regmap_init(dev, &regmap_mc13xxx_spi_bus,
mc_dev, &mc13xxx_regmap_spi_config);
}
diff --git a/drivers/spi/Kconfig b/drivers/spi/Kconfig
index 738b88ea5e..9a71b3bc25 100644
--- a/drivers/spi/Kconfig
+++ b/drivers/spi/Kconfig
@@ -33,7 +33,7 @@ config DRIVER_SPI_IMX_0_0
config DRIVER_SPI_IMX_0_7
bool
- depends on ARCH_IMX25 || ARCH_IMX35 || ARCH_IMX53
+ depends on ARCH_IMX25 || ARCH_IMX31 || ARCH_IMX35 || ARCH_IMX53
default y
config DRIVER_SPI_IMX_2_3
diff --git a/drivers/spi/imx_spi.c b/drivers/spi/imx_spi.c
index dc7a8c89f3..806ca67bda 100644
--- a/drivers/spi/imx_spi.c
+++ b/drivers/spi/imx_spi.c
@@ -206,7 +206,12 @@ static void cspi_0_7_chipselect(struct spi_device *spi, int is_active)
reg |= spi_imx_clkdiv_2(clk_get_rate(imx->clk), spi->max_speed_hz) <<
CSPI_0_7_CTRL_DR_SHIFT;
- reg |= (spi->bits_per_word - 1) << CSPI_0_7_CTRL_BL_SHIFT;
+ if (cpu_is_mx31())
+ reg |= ((spi->bits_per_word - 1) & CSPI_0_4_CTRL_BL_MASK)
+ << CSPI_0_4_CTRL_BL_SHIFT;
+ else
+ reg |= (spi->bits_per_word - 1) << CSPI_0_7_CTRL_BL_SHIFT;
+
reg |= CSPI_0_7_CTRL_SSCTL;
if (spi->mode & SPI_CPHA)
@@ -215,8 +220,12 @@ static void cspi_0_7_chipselect(struct spi_device *spi, int is_active)
reg |= CSPI_0_7_CTRL_POL;
if (spi->mode & SPI_CS_HIGH)
reg |= CSPI_0_7_CTRL_SSPOL;
- if (gpio < 0)
- reg |= (gpio + 32) << CSPI_0_7_CTRL_CS_SHIFT;
+ if (gpio < 0) {
+ if (cpu_is_mx31())
+ reg |= (gpio + 32) << CSPI_0_4_CTRL_CS_SHIFT;
+ else
+ reg |= (gpio + 32) << CSPI_0_7_CTRL_CS_SHIFT;
+ }
writel(reg, base + CSPI_0_7_CTRL);