|
@@ -504,7 +504,7 @@ static int mpc512x_psc_spi_do_probe(struct device *dev, u32 regaddr,
|
|
master->cleanup = mpc512x_psc_spi_cleanup;
|
|
master->cleanup = mpc512x_psc_spi_cleanup;
|
|
master->dev.of_node = dev->of_node;
|
|
master->dev.of_node = dev->of_node;
|
|
|
|
|
|
- tempp = ioremap(regaddr, size);
|
|
|
|
|
|
+ tempp = devm_ioremap(dev, regaddr, size);
|
|
if (!tempp) {
|
|
if (!tempp) {
|
|
dev_err(dev, "could not ioremap I/O port range\n");
|
|
dev_err(dev, "could not ioremap I/O port range\n");
|
|
ret = -EFAULT;
|
|
ret = -EFAULT;
|
|
@@ -513,9 +513,8 @@ static int mpc512x_psc_spi_do_probe(struct device *dev, u32 regaddr,
|
|
mps->psc = tempp;
|
|
mps->psc = tempp;
|
|
mps->fifo =
|
|
mps->fifo =
|
|
(struct mpc512x_psc_fifo *)(tempp + sizeof(struct mpc52xx_psc));
|
|
(struct mpc512x_psc_fifo *)(tempp + sizeof(struct mpc52xx_psc));
|
|
-
|
|
|
|
- ret = request_irq(mps->irq, mpc512x_psc_spi_isr, IRQF_SHARED,
|
|
|
|
- "mpc512x-psc-spi", mps);
|
|
|
|
|
|
+ ret = devm_request_irq(dev, mps->irq, mpc512x_psc_spi_isr, IRQF_SHARED,
|
|
|
|
+ "mpc512x-psc-spi", mps);
|
|
if (ret)
|
|
if (ret)
|
|
goto free_master;
|
|
goto free_master;
|
|
init_completion(&mps->txisrdone);
|
|
init_completion(&mps->txisrdone);
|
|
@@ -525,11 +524,11 @@ static int mpc512x_psc_spi_do_probe(struct device *dev, u32 regaddr,
|
|
clk = devm_clk_get(dev, clk_name);
|
|
clk = devm_clk_get(dev, clk_name);
|
|
if (IS_ERR(clk)) {
|
|
if (IS_ERR(clk)) {
|
|
ret = PTR_ERR(clk);
|
|
ret = PTR_ERR(clk);
|
|
- goto free_irq;
|
|
|
|
|
|
+ goto free_master;
|
|
}
|
|
}
|
|
ret = clk_prepare_enable(clk);
|
|
ret = clk_prepare_enable(clk);
|
|
if (ret)
|
|
if (ret)
|
|
- goto free_irq;
|
|
|
|
|
|
+ goto free_master;
|
|
mps->clk_mclk = clk;
|
|
mps->clk_mclk = clk;
|
|
mps->mclk_rate = clk_get_rate(clk);
|
|
mps->mclk_rate = clk_get_rate(clk);
|
|
|
|
|
|
@@ -545,11 +544,7 @@ static int mpc512x_psc_spi_do_probe(struct device *dev, u32 regaddr,
|
|
|
|
|
|
free_clock:
|
|
free_clock:
|
|
clk_disable_unprepare(mps->clk_mclk);
|
|
clk_disable_unprepare(mps->clk_mclk);
|
|
-free_irq:
|
|
|
|
- free_irq(mps->irq, mps);
|
|
|
|
free_master:
|
|
free_master:
|
|
- if (mps->psc)
|
|
|
|
- iounmap(mps->psc);
|
|
|
|
spi_master_put(master);
|
|
spi_master_put(master);
|
|
|
|
|
|
return ret;
|
|
return ret;
|
|
@@ -561,9 +556,6 @@ static int mpc512x_psc_spi_do_remove(struct device *dev)
|
|
struct mpc512x_psc_spi *mps = spi_master_get_devdata(master);
|
|
struct mpc512x_psc_spi *mps = spi_master_get_devdata(master);
|
|
|
|
|
|
clk_disable_unprepare(mps->clk_mclk);
|
|
clk_disable_unprepare(mps->clk_mclk);
|
|
- free_irq(mps->irq, mps);
|
|
|
|
- if (mps->psc)
|
|
|
|
- iounmap(mps->psc);
|
|
|
|
|
|
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|