diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2016-08-03 08:08:23 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2016-08-03 08:08:23 +0200 |
commit | 14e04d019b70cb8711b005bc316ac6a52d61db39 (patch) | |
tree | 0ea694070006e8de3ab372a67cf7c51b6ce9b259 /drivers | |
parent | 6a86c6d40468a04c94b859b8b497e6dcff6dcc83 (diff) | |
parent | 74102fdf730b89cbc6dd0fe34c0d9b5f86ed7d8c (diff) | |
download | barebox-14e04d019b70cb8711b005bc316ac6a52d61db39.tar.gz barebox-14e04d019b70cb8711b005bc316ac6a52d61db39.tar.xz |
Merge branch 'for-next/imx'
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/mfd/mc13xxx.c | 3 | ||||
-rw-r--r-- | drivers/spi/Kconfig | 2 | ||||
-rw-r--r-- | drivers/spi/imx_spi.c | 15 |
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, ®map_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); |