.. | .. |
---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-only |
---|
1 | 2 | /* |
---|
2 | 3 | * Marvell Armada-3700 SPI controller driver |
---|
3 | 4 | * |
---|
.. | .. |
---|
5 | 6 | * |
---|
6 | 7 | * Author: Wilson Ding <dingwei@marvell.com> |
---|
7 | 8 | * Author: Romain Perier <romain.perier@free-electrons.com> |
---|
8 | | - * |
---|
9 | | - * This program is free software; you can redistribute it and/or modify |
---|
10 | | - * it under the terms of the GNU General Public License version 2 as |
---|
11 | | - * published by the Free Software Foundation. |
---|
12 | 9 | */ |
---|
13 | 10 | |
---|
14 | 11 | #include <linux/clk.h> |
---|
.. | .. |
---|
279 | 276 | return -ETIMEDOUT; |
---|
280 | 277 | } |
---|
281 | 278 | |
---|
282 | | -static int a3700_spi_init(struct a3700_spi *a3700_spi) |
---|
| 279 | +static void a3700_spi_init(struct a3700_spi *a3700_spi) |
---|
283 | 280 | { |
---|
284 | 281 | struct spi_master *master = a3700_spi->master; |
---|
285 | 282 | u32 val; |
---|
286 | | - int i, ret = 0; |
---|
| 283 | + int i; |
---|
287 | 284 | |
---|
288 | 285 | /* Reset SPI unit */ |
---|
289 | 286 | val = spireg_read(a3700_spi, A3700_SPI_IF_CFG_REG); |
---|
.. | .. |
---|
314 | 311 | /* Mask the interrupts and clear cause bits */ |
---|
315 | 312 | spireg_write(a3700_spi, A3700_SPI_INT_MASK_REG, 0); |
---|
316 | 313 | spireg_write(a3700_spi, A3700_SPI_INT_STAT_REG, ~0U); |
---|
317 | | - |
---|
318 | | - return ret; |
---|
319 | 314 | } |
---|
320 | 315 | |
---|
321 | 316 | static irqreturn_t a3700_spi_interrupt(int irq, void *dev_id) |
---|
.. | .. |
---|
820 | 815 | { |
---|
821 | 816 | struct device *dev = &pdev->dev; |
---|
822 | 817 | struct device_node *of_node = dev->of_node; |
---|
823 | | - struct resource *res; |
---|
824 | 818 | struct spi_master *master; |
---|
825 | 819 | struct a3700_spi *spi; |
---|
826 | 820 | u32 num_cs = 0; |
---|
.. | .. |
---|
854 | 848 | platform_set_drvdata(pdev, master); |
---|
855 | 849 | |
---|
856 | 850 | spi = spi_master_get_devdata(master); |
---|
857 | | - memset(spi, 0, sizeof(struct a3700_spi)); |
---|
858 | 851 | |
---|
859 | 852 | spi->master = master; |
---|
860 | 853 | |
---|
861 | | - res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
---|
862 | | - spi->base = devm_ioremap_resource(dev, res); |
---|
| 854 | + spi->base = devm_platform_ioremap_resource(pdev, 0); |
---|
863 | 855 | if (IS_ERR(spi->base)) { |
---|
864 | 856 | ret = PTR_ERR(spi->base); |
---|
865 | 857 | goto error; |
---|
.. | .. |
---|
867 | 859 | |
---|
868 | 860 | irq = platform_get_irq(pdev, 0); |
---|
869 | 861 | if (irq < 0) { |
---|
870 | | - dev_err(dev, "could not get irq: %d\n", irq); |
---|
871 | 862 | ret = -ENXIO; |
---|
872 | 863 | goto error; |
---|
873 | 864 | } |
---|
.. | .. |
---|
892 | 883 | master->min_speed_hz = DIV_ROUND_UP(clk_get_rate(spi->clk), |
---|
893 | 884 | A3700_SPI_MAX_PRESCALE); |
---|
894 | 885 | |
---|
895 | | - ret = a3700_spi_init(spi); |
---|
896 | | - if (ret) |
---|
897 | | - goto error_clk; |
---|
| 886 | + a3700_spi_init(spi); |
---|
898 | 887 | |
---|
899 | 888 | ret = devm_request_irq(dev, spi->irq, a3700_spi_interrupt, 0, |
---|
900 | 889 | dev_name(dev), master); |
---|