hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/drivers/spi/spi-rb4xx.c
....@@ -1,3 +1,4 @@
1
+// SPDX-License-Identifier: GPL-2.0-only
12 /*
23 * SPI controller driver for the Mikrotik RB4xx boards
34 *
....@@ -6,11 +7,6 @@
67 *
78 * This file was based on the patches for Linux 2.6.27.39 published by
89 * MikroTik for their RouterBoard 4xx series devices.
9
- *
10
- * This program is free software; you can redistribute it and/or modify
11
- * it under the terms of the GNU General Public License version 2 as
12
- * published by the Free Software Foundation.
13
- *
1410 */
1511
1612 #include <linux/kernel.h>
....@@ -18,6 +14,7 @@
1814 #include <linux/platform_device.h>
1915 #include <linux/clk.h>
2016 #include <linux/spi/spi.h>
17
+#include <linux/of.h>
2118
2219 #include <asm/mach-ath79/ar71xx_regs.h>
2320
....@@ -139,12 +136,10 @@
139136 struct spi_master *master;
140137 struct clk *ahb_clk;
141138 struct rb4xx_spi *rbspi;
142
- struct resource *r;
143139 int err;
144140 void __iomem *spi_base;
145141
146
- r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
147
- spi_base = devm_ioremap_resource(&pdev->dev, r);
142
+ spi_base = devm_platform_ioremap_resource(pdev, 0);
148143 if (IS_ERR(spi_base))
149144 return PTR_ERR(spi_base);
150145
....@@ -156,13 +151,19 @@
156151 if (IS_ERR(ahb_clk))
157152 return PTR_ERR(ahb_clk);
158153
154
+ master->dev.of_node = pdev->dev.of_node;
159155 master->bus_num = 0;
160156 master->num_chipselect = 3;
161157 master->mode_bits = SPI_TX_DUAL;
162
- master->bits_per_word_mask = BIT(7);
158
+ master->bits_per_word_mask = SPI_BPW_MASK(8);
163159 master->flags = SPI_MASTER_MUST_TX;
164160 master->transfer_one = rb4xx_transfer_one;
165161 master->set_cs = rb4xx_set_cs;
162
+
163
+ rbspi = spi_master_get_devdata(master);
164
+ rbspi->base = spi_base;
165
+ rbspi->clk = ahb_clk;
166
+ platform_set_drvdata(pdev, rbspi);
166167
167168 err = devm_spi_register_master(&pdev->dev, master);
168169 if (err) {
....@@ -173,11 +174,6 @@
173174 err = clk_prepare_enable(ahb_clk);
174175 if (err)
175176 return err;
176
-
177
- rbspi = spi_master_get_devdata(master);
178
- rbspi->base = spi_base;
179
- rbspi->clk = ahb_clk;
180
- platform_set_drvdata(pdev, rbspi);
181177
182178 /* Enable SPI */
183179 rb4xx_write(rbspi, AR71XX_SPI_REG_FS, AR71XX_SPI_FS_GPIO);
....@@ -194,11 +190,18 @@
194190 return 0;
195191 }
196192
193
+static const struct of_device_id rb4xx_spi_dt_match[] = {
194
+ { .compatible = "mikrotik,rb4xx-spi" },
195
+ { },
196
+};
197
+MODULE_DEVICE_TABLE(of, rb4xx_spi_dt_match);
198
+
197199 static struct platform_driver rb4xx_spi_drv = {
198200 .probe = rb4xx_spi_probe,
199201 .remove = rb4xx_spi_remove,
200202 .driver = {
201203 .name = "rb4xx-spi",
204
+ .of_match_table = of_match_ptr(rb4xx_spi_dt_match),
202205 },
203206 };
204207