#include <linux/kernel.h>
 #include <linux/module.h>
 #include <linux/netdevice.h>
-#include <linux/of.h>
-#include <linux/of_device.h>
+#include <linux/property.h>
 #include <linux/platform_device.h>
 #include <linux/slab.h>
 #include <linux/spi/spi.h>
        priv->tx_skb = NULL;
        priv->tx_len = 0;
 
-       if (!spi->dev.of_node)
+       if (!dev_fwnode(&spi->dev))
                flags = IRQF_TRIGGER_FALLING;
 
        ret = request_threaded_irq(spi->irq, NULL, mcp251x_can_ist,
 
 static int mcp251x_can_probe(struct spi_device *spi)
 {
-       const struct of_device_id *of_id = of_match_device(mcp251x_of_match,
-                                                          &spi->dev);
+       const void *match = device_get_match_data(&spi->dev);
        struct mcp251x_platform_data *pdata = dev_get_platdata(&spi->dev);
        struct net_device *net;
        struct mcp251x_priv *priv;
        priv->can.clock.freq = freq / 2;
        priv->can.ctrlmode_supported = CAN_CTRLMODE_3_SAMPLES |
                CAN_CTRLMODE_LOOPBACK | CAN_CTRLMODE_LISTENONLY;
-       if (of_id)
-               priv->model = (enum mcp251x_model)of_id->data;
+       if (match)
+               priv->model = (enum mcp251x_model)match;
        else
                priv->model = spi_get_device_id(spi)->driver_data;
        priv->net = net;