Commit f856cf01 authored by Wolfram Sang's avatar Wolfram Sang Committed by Grant Likely

spi/mpc52xx-psc-spi: check for valid PSC

This driver calls mpc52xx_set_psc_clkdiv() but doesn't check its return value
to see if the PSC is actually valid for SPI use. Add the check and a hint for
the user.
Signed-off-by: default avatarWolfram Sang <w.sang@pengutronix.de>
Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
parent 3c9059d7
...@@ -314,11 +314,13 @@ static int mpc52xx_psc_spi_port_config(int psc_id, struct mpc52xx_psc_spi *mps) ...@@ -314,11 +314,13 @@ static int mpc52xx_psc_spi_port_config(int psc_id, struct mpc52xx_psc_spi *mps)
struct mpc52xx_psc __iomem *psc = mps->psc; struct mpc52xx_psc __iomem *psc = mps->psc;
struct mpc52xx_psc_fifo __iomem *fifo = mps->fifo; struct mpc52xx_psc_fifo __iomem *fifo = mps->fifo;
u32 mclken_div; u32 mclken_div;
int ret = 0; int ret;
/* default sysclk is 512MHz */ /* default sysclk is 512MHz */
mclken_div = (mps->sysclk ? mps->sysclk : 512000000) / MCLK; mclken_div = (mps->sysclk ? mps->sysclk : 512000000) / MCLK;
mpc52xx_set_psc_clkdiv(psc_id, mclken_div); ret = mpc52xx_set_psc_clkdiv(psc_id, mclken_div);
if (ret)
return ret;
/* Reset the PSC into a known state */ /* Reset the PSC into a known state */
out_8(&psc->command, MPC52xx_PSC_RST_RX); out_8(&psc->command, MPC52xx_PSC_RST_RX);
...@@ -342,7 +344,7 @@ static int mpc52xx_psc_spi_port_config(int psc_id, struct mpc52xx_psc_spi *mps) ...@@ -342,7 +344,7 @@ static int mpc52xx_psc_spi_port_config(int psc_id, struct mpc52xx_psc_spi *mps)
mps->bits_per_word = 8; mps->bits_per_word = 8;
return ret; return 0;
} }
static irqreturn_t mpc52xx_psc_spi_isr(int irq, void *dev_id) static irqreturn_t mpc52xx_psc_spi_isr(int irq, void *dev_id)
...@@ -411,8 +413,10 @@ static int __init mpc52xx_psc_spi_do_probe(struct device *dev, u32 regaddr, ...@@ -411,8 +413,10 @@ static int __init mpc52xx_psc_spi_do_probe(struct device *dev, u32 regaddr,
goto free_master; goto free_master;
ret = mpc52xx_psc_spi_port_config(master->bus_num, mps); ret = mpc52xx_psc_spi_port_config(master->bus_num, mps);
if (ret < 0) if (ret < 0) {
dev_err(dev, "can't configure PSC! Is it capable of SPI?\n");
goto free_irq; goto free_irq;
}
spin_lock_init(&mps->lock); spin_lock_init(&mps->lock);
init_completion(&mps->done); init_completion(&mps->done);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment