aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/brcm63xx/patches-4.4/001-4.12-03-spi-bcm63xx-add-support-for-probing-through-devicetr.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/brcm63xx/patches-4.4/001-4.12-03-spi-bcm63xx-add-support-for-probing-through-devicetr.patch')
-rw-r--r--target/linux/brcm63xx/patches-4.4/001-4.12-03-spi-bcm63xx-add-support-for-probing-through-devicetr.patch98
1 files changed, 0 insertions, 98 deletions
diff --git a/target/linux/brcm63xx/patches-4.4/001-4.12-03-spi-bcm63xx-add-support-for-probing-through-devicetr.patch b/target/linux/brcm63xx/patches-4.4/001-4.12-03-spi-bcm63xx-add-support-for-probing-through-devicetr.patch
deleted file mode 100644
index 51054625ee..0000000000
--- a/target/linux/brcm63xx/patches-4.4/001-4.12-03-spi-bcm63xx-add-support-for-probing-through-devicetr.patch
+++ /dev/null
@@ -1,98 +0,0 @@
-From 3353228a04a004ec67073871f40cf58dc4e209aa Mon Sep 17 00:00:00 2001
-From: Jonas Gorski <jonas.gorski@gmail.com>
-Date: Mon, 7 Sep 2015 21:01:38 +0200
-Subject: [PATCH 4/8] spi/bcm63xx: add support for probing through devicetree
-
-Add required binding support to probe through device tree.
-
-Use the compatible instead of the resource size for identifiying the
-block type, and allow reducing the number of cs lines through OF.
-
-Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
----
- drivers/spi/spi-bcm63xx.c | 42 ++++++++++++++++++++++++++++++++++++------
- 1 file changed, 36 insertions(+), 6 deletions(-)
-
---- a/drivers/spi/spi-bcm63xx.c
-+++ b/drivers/spi/spi-bcm63xx.c
-@@ -26,6 +26,7 @@
- #include <linux/completion.h>
- #include <linux/err.h>
- #include <linux/pm_runtime.h>
-+#include <linux/of.h>
-
- /* BCM 6338/6348 SPI core */
- #define SPI_6348_RSET_SIZE 64
-@@ -485,21 +486,48 @@ static const struct platform_device_id b
- },
- };
-
-+static const struct of_device_id bcm63xx_spi_of_match[] = {
-+ { .compatible = "brcm,bcm6348-spi", .data = &bcm6348_spi_reg_offsets },
-+ { .compatible = "brcm,bcm6358-spi", .data = &bcm6358_spi_reg_offsets },
-+ { },
-+};
-+
- static int bcm63xx_spi_probe(struct platform_device *pdev)
- {
- struct resource *r;
- const unsigned long *bcm63xx_spireg;
- struct device *dev = &pdev->dev;
-- int irq;
-+ int irq, bus_num;
- struct spi_master *master;
- struct clk *clk;
- struct bcm63xx_spi *bs;
- int ret;
-+ u32 num_cs = BCM63XX_SPI_MAX_CS;
-
-- if (!pdev->id_entry->driver_data)
-- return -EINVAL;
-+ if (dev->of_node) {
-+ const struct of_device_id *match;
-
-- bcm63xx_spireg = (const unsigned long *)pdev->id_entry->driver_data;
-+ match = of_match_node(bcm63xx_spi_of_match, dev->of_node);
-+ if (!match)
-+ return -EINVAL;
-+ bcm63xx_spireg = match->data;
-+
-+ of_property_read_u32(dev->of_node, "num-cs", &num_cs);
-+ if (num_cs > BCM63XX_SPI_MAX_CS) {
-+ dev_warn(dev, "unsupported number of cs (%i), reducing to 8\n",
-+ num_cs);
-+ num_cs = BCM63XX_SPI_MAX_CS;
-+ }
-+
-+ bus_num = -1;
-+ } else if (pdev->id_entry->driver_data) {
-+ const struct platform_device_id *match = pdev->id_entry;
-+
-+ bcm63xx_spireg = (const unsigned long *)match->driver_data;
-+ bus_num = BCM63XX_SPI_BUS_NUM;
-+ } else {
-+ return -EINVAL;
-+ }
-
- irq = platform_get_irq(pdev, 0);
- if (irq < 0) {
-@@ -544,8 +572,9 @@ static int bcm63xx_spi_probe(struct plat
- goto out_err;
- }
-
-- master->bus_num = BCM63XX_SPI_BUS_NUM;
-- master->num_chipselect = BCM63XX_SPI_MAX_CS;
-+ master->dev.of_node = dev->of_node;
-+ master->bus_num = bus_num;
-+ master->num_chipselect = num_cs;
- master->transfer_one_message = bcm63xx_spi_transfer_one;
- master->mode_bits = MODEBITS;
- master->bits_per_word_mask = SPI_BPW_MASK(8);
-@@ -634,6 +663,7 @@ static struct platform_driver bcm63xx_sp
- .driver = {
- .name = "bcm63xx-spi",
- .pm = &bcm63xx_spi_pm_ops,
-+ .of_match_table = bcm63xx_spi_of_match,
- },
- .id_table = bcm63xx_spi_dev_match,
- .probe = bcm63xx_spi_probe,