diff options
| -rw-r--r-- | drivers/spi/spi-imx.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/drivers/spi/spi-imx.c b/drivers/spi/spi-imx.c index 08124b29665e..32ced64a5bb9 100644 --- a/drivers/spi/spi-imx.c +++ b/drivers/spi/spi-imx.c | |||
| @@ -173,15 +173,16 @@ static int mxc_clkdivs[] = {0, 3, 4, 6, 8, 12, 16, 24, 32, 48, 64, 96, 128, 192, | |||
| 173 | 173 | ||
| 174 | /* MX21, MX27 */ | 174 | /* MX21, MX27 */ |
| 175 | static unsigned int spi_imx_clkdiv_1(unsigned int fin, | 175 | static unsigned int spi_imx_clkdiv_1(unsigned int fin, |
| 176 | unsigned int fspi, unsigned int max) | 176 | unsigned int fspi, unsigned int max, unsigned int *fres) |
| 177 | { | 177 | { |
| 178 | int i; | 178 | int i; |
| 179 | 179 | ||
| 180 | for (i = 2; i < max; i++) | 180 | for (i = 2; i < max; i++) |
| 181 | if (fspi * mxc_clkdivs[i] >= fin) | 181 | if (fspi * mxc_clkdivs[i] >= fin) |
| 182 | return i; | 182 | break; |
| 183 | 183 | ||
| 184 | return max; | 184 | *fres = fin / mxc_clkdivs[i]; |
| 185 | return i; | ||
| 185 | } | 186 | } |
| 186 | 187 | ||
| 187 | /* MX1, MX31, MX35, MX51 CSPI */ | 188 | /* MX1, MX31, MX35, MX51 CSPI */ |
| @@ -589,9 +590,12 @@ static int mx21_config(struct spi_device *spi, struct spi_imx_config *config) | |||
| 589 | struct spi_imx_data *spi_imx = spi_master_get_devdata(spi->master); | 590 | struct spi_imx_data *spi_imx = spi_master_get_devdata(spi->master); |
| 590 | unsigned int reg = MX21_CSPICTRL_ENABLE | MX21_CSPICTRL_MASTER; | 591 | unsigned int reg = MX21_CSPICTRL_ENABLE | MX21_CSPICTRL_MASTER; |
| 591 | unsigned int max = is_imx27_cspi(spi_imx) ? 16 : 18; | 592 | unsigned int max = is_imx27_cspi(spi_imx) ? 16 : 18; |
| 593 | unsigned int clk; | ||
| 594 | |||
| 595 | reg |= spi_imx_clkdiv_1(spi_imx->spi_clk, config->speed_hz, max, &clk) | ||
| 596 | << MX21_CSPICTRL_DR_SHIFT; | ||
| 597 | spi_imx->spi_bus_clk = clk; | ||
| 592 | 598 | ||
| 593 | reg |= spi_imx_clkdiv_1(spi_imx->spi_clk, config->speed_hz, max) << | ||
| 594 | MX21_CSPICTRL_DR_SHIFT; | ||
| 595 | reg |= config->bpw - 1; | 599 | reg |= config->bpw - 1; |
| 596 | 600 | ||
| 597 | if (spi->mode & SPI_CPHA) | 601 | if (spi->mode & SPI_CPHA) |
