Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> Cc: netdev@vger.kernel.org Signed-off-by: David S. Miller <davem@davemloft.net>
···11+Micrel KS8851 Ethernet mac22+33+Required properties:44+- compatible = "micrel,ks8851-ml" of parallel interface55+- reg : 2 physical address and size of registers for data and command66+- interrupts : interrupt connection77+88+Optional properties:99+- local-mac-address : Ethernet mac address to use
+26-7
drivers/net/ethernet/micrel/ks8851_mll.c
···3535#include <linux/delay.h>3636#include <linux/slab.h>3737#include <linux/ks8851_mll.h>3838+#include <linux/of.h>3939+#include <linux/of_device.h>4040+#include <linux/of_net.h>38413942#define DRV_NAME "ks8851_mll"4043···15271524 return true;15281525}1529152615271527+#if defined(CONFIG_OF)15281528+static const struct of_device_id ks8851_ml_dt_ids[] = {15291529+ { .compatible = "micrel,ks8851-mll" },15301530+ { /* sentinel */ }15311531+};15321532+MODULE_DEVICE_TABLE(of, ks8851_ml_dt_ids);15331533+#endif1530153415311535static int ks8851_probe(struct platform_device *pdev)15321536{···15421532 struct net_device *netdev;15431533 struct ks_net *ks;15441534 u16 id, data;15451545- struct ks8851_mll_platform_data *pdata;15351535+ const char *mac;1546153615471537 io_d = platform_get_resource(pdev, IORESOURCE_MEM, 0);15481538 io_c = platform_get_resource(pdev, IORESOURCE_MEM, 1);···16291619 ks_wrreg16(ks, KS_OBCR, data | OBCR_ODS_16MA);1630162016311621 /* overwriting the default MAC address */16321632- pdata = pdev->dev.platform_data;16331633- if (!pdata) {16341634- netdev_err(netdev, "No platform data\n");16351635- err = -ENODEV;16361636- goto err_pdata;16221622+ if (pdev->dev.of_node) {16231623+ mac = of_get_mac_address(pdev->dev.of_node);16241624+ if (mac)16251625+ memcpy(ks->mac_addr, mac, ETH_ALEN);16261626+ } else {16271627+ struct ks8851_mll_platform_data *pdata;16281628+16291629+ pdata = pdev->dev.platform_data;16301630+ if (!pdata) {16311631+ netdev_err(netdev, "No platform data\n");16321632+ err = -ENODEV;16331633+ goto err_pdata;16341634+ }16351635+ memcpy(ks->mac_addr, pdata->mac_addr, ETH_ALEN);16371636 }16381638- memcpy(ks->mac_addr, pdata->mac_addr, 6);16391637 if (!is_valid_ether_addr(ks->mac_addr)) {16401638 /* Use random MAC address if none passed */16411639 eth_random_addr(ks->mac_addr);···16971679 .driver = {16981680 .name = DRV_NAME,16991681 .owner = THIS_MODULE,16821682+ .of_match_table = of_match_ptr(ks8851_ml_dt_ids),17001683 },17011684 .probe = ks8851_probe,17021685 .remove = ks8851_remove,