#include <linux/module.h>
 #include <linux/delay.h>
 #include <linux/netdevice.h>
+#include <linux/of.h>
 #include <linux/of_net.h>
-#include <linux/of_device.h>
 #include <linux/spi/spi.h>
 
 #include "w5100.h"
 
 static int w5100_spi_probe(struct spi_device *spi)
 {
-       const struct of_device_id *of_id;
        const struct w5100_ops *ops;
        kernel_ulong_t driver_data;
        const void *mac = NULL;
        if (!ret)
                mac = tmpmac;
 
-       if (spi->dev.of_node) {
-               of_id = of_match_device(w5100_of_match, &spi->dev);
-               if (!of_id)
-                       return -ENODEV;
-               driver_data = (kernel_ulong_t)of_id->data;
-       } else {
-               driver_data = spi_get_device_id(spi)->driver_data;
-       }
+       driver_data = (uintptr_t)spi_get_device_match_data(spi);
 
        switch (driver_data) {
        case W5100: