Loading Documentation/devicetree/bindings/net/micrel-ks8851.txt 0 → 100644 +9 −0 Original line number Diff line number Diff line Micrel KS8851 Ethernet mac Required properties: - compatible = "micrel,ks8851-ml" of parallel interface - reg : 2 physical address and size of registers for data and command - interrupts : interrupt connection Optional properties: - local-mac-address : Ethernet mac address to use drivers/net/ethernet/micrel/ks8851_mll.c +26 −7 Original line number Diff line number Diff line Loading @@ -35,6 +35,9 @@ #include <linux/delay.h> #include <linux/slab.h> #include <linux/ks8851_mll.h> #include <linux/of.h> #include <linux/of_device.h> #include <linux/of_net.h> #define DRV_NAME "ks8851_mll" Loading Loading @@ -1524,6 +1527,13 @@ static int ks_hw_init(struct ks_net *ks) return true; } #if defined(CONFIG_OF) static const struct of_device_id ks8851_ml_dt_ids[] = { { .compatible = "micrel,ks8851-mll" }, { /* sentinel */ } }; MODULE_DEVICE_TABLE(of, ks8851_ml_dt_ids); #endif static int ks8851_probe(struct platform_device *pdev) { Loading @@ -1532,7 +1542,7 @@ static int ks8851_probe(struct platform_device *pdev) struct net_device *netdev; struct ks_net *ks; u16 id, data; struct ks8851_mll_platform_data *pdata; const char *mac; io_d = platform_get_resource(pdev, IORESOURCE_MEM, 0); io_c = platform_get_resource(pdev, IORESOURCE_MEM, 1); Loading Loading @@ -1619,13 +1629,21 @@ static int ks8851_probe(struct platform_device *pdev) ks_wrreg16(ks, KS_OBCR, data | OBCR_ODS_16MA); /* overwriting the default MAC address */ if (pdev->dev.of_node) { mac = of_get_mac_address(pdev->dev.of_node); if (mac) memcpy(ks->mac_addr, mac, ETH_ALEN); } else { struct ks8851_mll_platform_data *pdata; pdata = pdev->dev.platform_data; if (!pdata) { netdev_err(netdev, "No platform data\n"); err = -ENODEV; goto err_pdata; } memcpy(ks->mac_addr, pdata->mac_addr, 6); memcpy(ks->mac_addr, pdata->mac_addr, ETH_ALEN); } if (!is_valid_ether_addr(ks->mac_addr)) { /* Use random MAC address if none passed */ eth_random_addr(ks->mac_addr); Loading Loading @@ -1679,6 +1697,7 @@ static struct platform_driver ks8851_platform_driver = { .driver = { .name = DRV_NAME, .owner = THIS_MODULE, .of_match_table = of_match_ptr(ks8851_ml_dt_ids), }, .probe = ks8851_probe, .remove = ks8851_remove, Loading Loading
Documentation/devicetree/bindings/net/micrel-ks8851.txt 0 → 100644 +9 −0 Original line number Diff line number Diff line Micrel KS8851 Ethernet mac Required properties: - compatible = "micrel,ks8851-ml" of parallel interface - reg : 2 physical address and size of registers for data and command - interrupts : interrupt connection Optional properties: - local-mac-address : Ethernet mac address to use
drivers/net/ethernet/micrel/ks8851_mll.c +26 −7 Original line number Diff line number Diff line Loading @@ -35,6 +35,9 @@ #include <linux/delay.h> #include <linux/slab.h> #include <linux/ks8851_mll.h> #include <linux/of.h> #include <linux/of_device.h> #include <linux/of_net.h> #define DRV_NAME "ks8851_mll" Loading Loading @@ -1524,6 +1527,13 @@ static int ks_hw_init(struct ks_net *ks) return true; } #if defined(CONFIG_OF) static const struct of_device_id ks8851_ml_dt_ids[] = { { .compatible = "micrel,ks8851-mll" }, { /* sentinel */ } }; MODULE_DEVICE_TABLE(of, ks8851_ml_dt_ids); #endif static int ks8851_probe(struct platform_device *pdev) { Loading @@ -1532,7 +1542,7 @@ static int ks8851_probe(struct platform_device *pdev) struct net_device *netdev; struct ks_net *ks; u16 id, data; struct ks8851_mll_platform_data *pdata; const char *mac; io_d = platform_get_resource(pdev, IORESOURCE_MEM, 0); io_c = platform_get_resource(pdev, IORESOURCE_MEM, 1); Loading Loading @@ -1619,13 +1629,21 @@ static int ks8851_probe(struct platform_device *pdev) ks_wrreg16(ks, KS_OBCR, data | OBCR_ODS_16MA); /* overwriting the default MAC address */ if (pdev->dev.of_node) { mac = of_get_mac_address(pdev->dev.of_node); if (mac) memcpy(ks->mac_addr, mac, ETH_ALEN); } else { struct ks8851_mll_platform_data *pdata; pdata = pdev->dev.platform_data; if (!pdata) { netdev_err(netdev, "No platform data\n"); err = -ENODEV; goto err_pdata; } memcpy(ks->mac_addr, pdata->mac_addr, 6); memcpy(ks->mac_addr, pdata->mac_addr, ETH_ALEN); } if (!is_valid_ether_addr(ks->mac_addr)) { /* Use random MAC address if none passed */ eth_random_addr(ks->mac_addr); Loading Loading @@ -1679,6 +1697,7 @@ static struct platform_driver ks8851_platform_driver = { .driver = { .name = DRV_NAME, .owner = THIS_MODULE, .of_match_table = of_match_ptr(ks8851_ml_dt_ids), }, .probe = ks8851_probe, .remove = ks8851_remove, Loading